diff options
Diffstat (limited to 'addons/web/static/src/js/fields')
| -rw-r--r-- | addons/web/static/src/js/fields/basic_fields.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 553a79cad20..7ef6a10368d 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -595,6 +595,10 @@ var LinkButton = AbstractField.extend({ var FieldDateRange = InputField.extend({ className: 'o_field_date_range', + events: Object.assign({}, InputField.prototype.events, { + 'show.daterangepicker': '_onDateRangePickerShow', + 'hide.daterangepicker': '_onDateRangePickerHide', + }), tagName: 'span', jsLibs: [ '/web/static/lib/daterangepicker/daterangepicker.js', @@ -633,6 +637,9 @@ var FieldDateRange = InputField.extend({ if (this.$pickerContainer) { this.$pickerContainer.remove(); } + if (this._onScroll) { + window.removeEventListener('scroll', this._onScroll, true); + } this._super.apply(this, arguments); }, @@ -711,6 +718,34 @@ var FieldDateRange = InputField.extend({ ev.stopPropagation(); }); }, + + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * Unbind the scroll event handler when the daterangepicker is closed. + * + * @private + */ + _onDateRangePickerHide() { + if (this._onScroll) { + window.removeEventListener('scroll', this._onScroll, true); + } + }, + /** + * Bind the scroll event handle when the daterangepicker is open. + * + * @private + */ + _onDateRangePickerShow() { + this._onScroll = ev => { + if (ev.target !== this.$el.data('daterangepicker').element.get(0)) { + this.$el.data('daterangepicker').hide(); + } + }; + window.addEventListener('scroll', this._onScroll, true); + }, }); var FieldDate = InputField.extend({ |
