diff --git a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js
index 2e93de492d..5f74c952f6 100644
--- a/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js
+++ b/packages/core/admin/admin/src/content-manager/components/AttributeFilter/Filters.js
@@ -12,6 +12,21 @@ const Filters = ({ displayedFilters }) => {
const buttonRef = useRef();
const { trackUsage } = useTracking();
+ const handleBlur = e => {
+ // TO FIX - select's modals prevent blur to work correctly
+ const notNull = e.currentTarget !== null && e.relatedTarget !== null;
+ const ulListBox = document.querySelector('[role="listbox"]');
+
+ if (
+ !e.currentTarget.contains(e.relatedTarget) &&
+ e.relatedTarget !== buttonRef.current &&
+ e.relatedTarget !== ulListBox &&
+ notNull
+ ) {
+ setIsVisible(false);
+ }
+ };
+
const handleToggle = () => {
if (!isVisible) {
trackUsage('willFilterEntries');
@@ -35,6 +50,7 @@ const Filters = ({ displayedFilters }) => {
diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/Users/ListPage/Filters/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/Users/ListPage/Filters/index.js
index d3e8beeff3..4f2e22e61c 100644
--- a/packages/core/admin/admin/src/pages/SettingsPage/pages/Users/ListPage/Filters/index.js
+++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/Users/ListPage/Filters/index.js
@@ -11,6 +11,21 @@ const Filters = ({ displayedFilters }) => {
const { formatMessage } = useIntl();
const buttonRef = useRef();
+ const handleBlur = e => {
+ // TO FIX - select's modals prevent blur to work correctly
+ const notNull = e.currentTarget !== null && e.relatedTarget !== null;
+ const ulListBox = document.querySelector('[role="listbox"]');
+
+ if (
+ !e.currentTarget.contains(e.relatedTarget) &&
+ e.relatedTarget !== buttonRef.current &&
+ e.relatedTarget !== ulListBox &&
+ notNull
+ ) {
+ setIsVisible(false);
+ }
+ };
+
const handleToggle = () => {
setIsVisible(prev => !prev);
};
@@ -31,6 +46,7 @@ const Filters = ({ displayedFilters }) => {
diff --git a/packages/core/helper-plugin/lib/src/components/FilterPopoverURLQuery/index.js b/packages/core/helper-plugin/lib/src/components/FilterPopoverURLQuery/index.js
index 8ca26d73cb..ded28f08f1 100644
--- a/packages/core/helper-plugin/lib/src/components/FilterPopoverURLQuery/index.js
+++ b/packages/core/helper-plugin/lib/src/components/FilterPopoverURLQuery/index.js
@@ -19,7 +19,7 @@ import useTracking from '../../hooks/useTracking';
import Inputs from './Inputs';
import getFilterList from './utils/getFilterList';
-const FilterPopoverURLQuery = ({ displayedFilters, isVisible, onToggle, source }) => {
+const FilterPopoverURLQuery = ({ displayedFilters, isVisible, onBlur, onToggle, source }) => {
const [{ query }, setQuery] = useQueryParams();
const { formatMessage } = useIntl();
const { trackUsage } = useTracking();
@@ -115,7 +115,7 @@ const FilterPopoverURLQuery = ({ displayedFilters, isVisible, onToggle, source }
const operator = modifiedData.filter;
return (
-
+