summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields/basic_fields_tests.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2019-04-11 08:01:13 +0000
committerAaron Bohy <aab@odoo.com>2019-04-12 06:14:08 +0000
commitb94c87c28d22384c65488ce4f8f944e6a8272912 (patch)
tree68ef785c8526e924838ed96b6e83e7a2c886aa39 /addons/web/static/tests/fields/basic_fields_tests.js
parent6722e66517bbbc9123bd2e87d8625bf3004c35c8 (diff)
[FIX] web: list: update buttons when removing a search facet
In an editable list view with at least a facet (e.g. filter) in the search view, start editing a row, then click on the 'x' to remove the facet. The view being updated and re-rendered, the row in edition (if still present) is back in readonly. However, the buttons in the control panel are not updated ('Save' and 'Discard' are still displayed, instead of 'Create' and 'Import'). Normally, when the user clicks outside the list, the edition is left smoothly. However, this scenario is a corner-case because the element we clicked on (the 'x' in the facet), is no longer in the DOM when we enter the list '_onWindowClicked' handler, being in charge of deciding whether or not we should leave the edition. For this specific case, this handler doesn't leave the edition, because it assumes that we have clicked on an sub-element of the list that is no longer in the DOM (e.g. a modal opened from a field widget). Since it's no longer in the DOM, there is no way to determine whether it was in the list or not. This whole '_onWindowClicked' logic is problematic, but we don't have any better solution for now. So this rev. fixes the issue by always resetting the buttons to 'readonly' when the view is updated, which is valid in the case of the list view. Unfortunately, we couldn't reproduce the bug in a test, because of a difference between user clicks (with the mouse) in the browser, and programmatical clicks (triggered in JS) as we do in the tests. For natural clicks, there is a delay between the (different level of) handlers call (probably a nextTick) whereas all handlers are executed in the same tick for programmatically triggered clicks. For instance, when the user clicks on the 'x' to remove the facet, the 'click' handler on '.o_facet_remove' is executed, and the searchbar is re-rendered (new Widget, so next micro-task tick, but still before the next tick), and in the next tick, the 'click' handler on 'html' is executed (and the event is triggered on core.bus, followed by the execution on '_onWindowClicked'). In the test, both handlers are executed directly, and thus when in executing '_onWinowClicked', the searchbar hasn't been replaced by the new one yet, and the clicked '.o_facet_remove' is still in the DOM. The row is then unselected, and the buttons are correctly updated.
Diffstat (limited to 'addons/web/static/tests/fields/basic_fields_tests.js')
0 files changed, 0 insertions, 0 deletions