diff --git a/web_advanced_search/static/src/js/AdvancedFilterItem.esm.js b/web_advanced_search/static/src/js/legacy/AdvancedFilterItem.esm.js
similarity index 97%
rename from web_advanced_search/static/src/js/AdvancedFilterItem.esm.js
rename to web_advanced_search/static/src/js/legacy/AdvancedFilterItem.esm.js
index 73360f387..0a837abda 100644
--- a/web_advanced_search/static/src/js/AdvancedFilterItem.esm.js
+++ b/web_advanced_search/static/src/js/legacy/AdvancedFilterItem.esm.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import {getHumanDomain} from "./utils.esm";
+import {getHumanDomain} from "../utils.esm";
import config from "web.config";
import DomainSelectorDialog from "web.DomainSelectorDialog";
diff --git a/web_advanced_search/static/src/js/legacy/FilterMenu.esm.js b/web_advanced_search/static/src/js/legacy/FilterMenu.esm.js
index 8f11ad0f8..578e88e08 100644
--- a/web_advanced_search/static/src/js/legacy/FilterMenu.esm.js
+++ b/web_advanced_search/static/src/js/legacy/FilterMenu.esm.js
@@ -2,7 +2,7 @@
import {patch} from "@web/core/utils/patch";
import FilterMenu from "web.FilterMenu";
-import AdvancedFilterItem from "../AdvancedFilterItem.esm";
+import AdvancedFilterItem from "./AdvancedFilterItem.esm";
/**
* Patches the FilterMenu for legacy widgets.
diff --git a/web_advanced_search/static/src/js/owl/AdvancedFilterItem.esm.js b/web_advanced_search/static/src/js/owl/AdvancedFilterItem.esm.js
new file mode 100644
index 000000000..71b740bbe
--- /dev/null
+++ b/web_advanced_search/static/src/js/owl/AdvancedFilterItem.esm.js
@@ -0,0 +1,57 @@
+/** @odoo-module **/
+
+import {getHumanDomain} from "../utils.esm";
+
+import config from "web.config";
+import DomainSelectorDialog from "web.DomainSelectorDialog";
+import Domain from "web.Domain";
+import {ComponentAdapter} from "web.OwlCompatibility";
+
+const {Component, hooks} = owl;
+const {useRef} = hooks;
+
+export default class AdvancedFilterItem extends Component {
+ setup() {
+ this.itemRef = useRef("dropdown-item");
+ }
+ /**
+ * Prevent propagation of dropdown-item-selected event, so that it
+ * doesn't reaches the FilterMenu onFilterSelected event handler.
+ */
+ mounted() {
+ $(this.itemRef.el).on("dropdown-item-selected", (event) =>
+ event.stopPropagation()
+ );
+ }
+ /**
+ * Open advanced search dialog
+ *
+ * @returns {DomainSelectorDialog} The opened dialog itself.
+ */
+ onClick() {
+ const adapterParent = new ComponentAdapter(null, {Component});
+ const dialog = new DomainSelectorDialog(
+ adapterParent,
+ this.env.searchModel.resModel,
+ "[]",
+ {
+ debugMode: config.isDebug(),
+ readonly: false,
+ }
+ );
+ // Add 1st domain node by default
+ dialog.opened(() => dialog.domainSelector._onAddFirstButtonClick());
+ // Configure handler
+ dialog.on("domain_selected", this, function (e) {
+ const preFilter = {
+ description: getHumanDomain(dialog.domainSelector),
+ domain: Domain.prototype.arrayToString(e.data.domain),
+ type: "filter",
+ };
+ this.env.searchModel.createNewFilters([preFilter]);
+ });
+ return dialog.open();
+ }
+}
+
+AdvancedFilterItem.template = "web_advanced_search.AdvancedFilterItem";
diff --git a/web_advanced_search/static/src/js/owl/FilterMenu.esm.js b/web_advanced_search/static/src/js/owl/FilterMenu.esm.js
index 4afecd8c9..1e22fbb70 100644
--- a/web_advanced_search/static/src/js/owl/FilterMenu.esm.js
+++ b/web_advanced_search/static/src/js/owl/FilterMenu.esm.js
@@ -2,7 +2,7 @@
import {patch} from "@web/core/utils/patch";
import {FilterMenu} from "@web/search/filter_menu/filter_menu";
-import AdvancedFilterItem from "../AdvancedFilterItem.esm";
+import AdvancedFilterItem from "./AdvancedFilterItem.esm";
/**
* Patches the FilterMenu for owl widgets.
diff --git a/web_advanced_search/static/src/xml/FilterMenu.xml b/web_advanced_search/static/src/xml/FilterMenu.xml
index 34dd3d4b8..058a9b17b 100644
--- a/web_advanced_search/static/src/xml/FilterMenu.xml
+++ b/web_advanced_search/static/src/xml/FilterMenu.xml
@@ -10,4 +10,9 @@
+
+
+
+
+