summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2019-04-11 13:35:49 +0000
committerAaron Bohy <aab@odoo.com>2019-04-23 06:58:16 +0000
commit3c40d732bf03c8b656ab170319425f02fddfb2f4 (patch)
treee59428c195f15fef590215f4da4f32f3665052ab /addons/web/static/src/js
parentb130b35f048c6fbe9dd0ee1b076541e47b5788ad (diff)
[FIX] web: crash in editable lists with date field
Backport of 7bc53ac30e. Assume an editable list view with a date(time) widget, click to edit a line, focus the date field (the datepicker opens), press ESC: there is a crash in the lib, and the datepicker remains open forever. This fix is twofold: - we added a check in the lib to prevent it from crashing (it is easily reproducible: it crashes when an opened datepicker is removed from the DOM). - we added an event handler of ESC keydown event to hide the datepicker before the field is removed from the DOM. closes odoo/odoo#32647 Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/widgets/date_picker.js12
1 files changed, 12 insertions, 0 deletions
diff --git a/addons/web/static/src/js/widgets/date_picker.js b/addons/web/static/src/js/widgets/date_picker.js
index 367ab23178d..57c935905e5 100644
--- a/addons/web/static/src/js/widgets/date_picker.js
+++ b/addons/web/static/src/js/widgets/date_picker.js
@@ -15,6 +15,7 @@ var DateWidget = Widget.extend({
'change.datetimepicker': 'changeDatetime',
'change .o_datepicker_input': 'changeDatetime',
'input input': '_onInput',
+ 'keydown': '_onKeydown',
'show.datetimepicker': '_onDateTimePickerShow',
},
/**
@@ -240,6 +241,17 @@ var DateWidget = Widget.extend({
}
},
/**
+ * @private
+ * @param {KeyEvent} ev
+ */
+ _onKeydown: function (ev) {
+ if (ev.which === $.ui.keyCode.ESCAPE) {
+ this.__libInput++;
+ this.$el.datetimepicker('hide');
+ this.__libInput--;
+ }
+ },
+ /**
* Prevents 'input' events triggered by the library to bubble up, as they
* might have unwanted effects (like triggering 'field_changed' events in
* the context of field widgets)