diff --git a/addons/web/static/src/js/widgets/dropdown_menu.js b/addons/web/static/src/js/widgets/dropdown_menu.js index fdab9b82ebf..e92c714d838 100644 --- a/addons/web/static/src/js/widgets/dropdown_menu.js +++ b/addons/web/static/src/js/widgets/dropdown_menu.js @@ -15,6 +15,7 @@ var DropdownMenu = Widget.extend({ 'click .o_item_option': '_onOptionClick', 'click span.o_trash_button': '_onTrashClick', 'hidden.bs.dropdown': '_onBootstrapClose', + 'click .dropdown-item-text': '_onDropDownItemTextClick', }, /** @@ -199,6 +200,15 @@ var DropdownMenu = Widget.extend({ }); this._renderMenuItems(); }, + /** + * Reacts to click on bootstrap's dropdown-item-text + * Protects against Bootstrap dropdown close from inside click + * + * @private + */ + _onDropDownItemTextClick: function (ev) { + ev.stopPropagation(); + }, /** * @private * @param {MouseEvent} event diff --git a/addons/web/static/tests/views/search_view_tests.js b/addons/web/static/tests/views/search_view_tests.js index 2bd52ccdbc1..c5c46311c65 100644 --- a/addons/web/static/tests/views/search_view_tests.js +++ b/addons/web/static/tests/views/search_view_tests.js @@ -975,5 +975,66 @@ QUnit.module('Search View', { form.destroy(); }); + QUnit.test('Customizing filter does not close the filter dropdown', function (assert) { + assert.expect(4); + var self = this; + + _.each(this.data.partner.records.slice(), function (rec) { + var copy = _.defaults({}, rec, {id: rec.id + 10 }); + self.data.partner.records.push(copy); + }); + + this.data.partner.fields.date_field.searchable = true; + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
', + viewOptions: { + mode: 'edit', + }, + archs: { + 'partner,false,list': '