diff --git a/web_widget_domain_editor_dialog/static/src/js/basic_fields.js b/web_widget_domain_editor_dialog/static/src/js/basic_fields.js index f7e55fff2..3179bd271 100644 --- a/web_widget_domain_editor_dialog/static/src/js/basic_fields.js +++ b/web_widget_domain_editor_dialog/static/src/js/basic_fields.js @@ -25,7 +25,9 @@ odoo.define("web_widget_domain_editor_dialog.basic_fields", function (require) { readonly: false, disable_multiple_selection: false, no_create: true, + on_selected: function (selected_ids) { + _this.inDomainEditor = true; _this.domainSelector .setDomain(this.get_domain(selected_ids)) .then(_this._replaceContent.bind(_this)); @@ -40,5 +42,14 @@ odoo.define("web_widget_domain_editor_dialog.basic_fields", function (require) { this.trigger("dialog_opened", dialog); return dialog; }, + _onDomainSelectorValueChange: function () { + // This allows the domain editor to work with in dialog mode + const inDialog = this.inDialog; + if (this.inDomainEditor) { + this.inDialog = false; + } + this._super.apply(this, arguments); + this.inDialog = inDialog; + }, }); }); diff --git a/web_widget_domain_editor_dialog/static/src/js/widget_domain_editor_dialog.js b/web_widget_domain_editor_dialog/static/src/js/widget_domain_editor_dialog.js index f48c8abca..8590abc94 100644 --- a/web_widget_domain_editor_dialog/static/src/js/widget_domain_editor_dialog.js +++ b/web_widget_domain_editor_dialog/static/src/js/widget_domain_editor_dialog.js @@ -11,13 +11,25 @@ odoo.define("web_widget_domain_editor_dialog.DomainEditorDialog", function (requ const DomainEditorDialog = SelectCreateDialog.extend({ init: function () { this._super.apply(this, arguments); + const _this = this; + let domain = Domain.prototype.stringToArray(_this.options.default_domain); + // HACK: dynamicFilters don't work fine with booleans as they pass through + // pyeval as a jason domain. This way, they're full compatible and we avoid + // making an _rpc call. + domain = domain.map((tuple) => { + if (tuple[2] === true) { + tuple[2] = 1; + } + if (tuple[2] === false) { + tuple[2] = 0; + } + return tuple; + }); this.options = _.defaults(this.options, { dynamicFilters: [ { description: _t("Selected domain"), - domain: Domain.prototype.stringToArray( - this.options.default_domain - ), + domain: domain, }, ], });