From 8a1e1c0c4cac3034bf6caada0004680942b04703 Mon Sep 17 00:00:00 2001 From: Dhruv Patel Date: Tue, 23 Jun 2020 10:10:40 +0000 Subject: [FIX] web: daterangepicker not working in firefox A recent commit [1] made the daterangepicker automatically close itself on scroll events. However, in firefox, a scroll event is triggered when the daterangepicker opens. This event is triggered inside the picker itself. As a consequence, the picker is closed directly. This commit solves the issue by only closing it on scroll events occurring outside the picker. [1] https://github.com/odoo/odoo/commit/e6730c6e928587cd7438340cc101c57fee34220b closes odoo/odoo#53497 Task: 2282571 Signed-off-by: Aaron Bohy (aab) --- addons/web/static/src/js/fields/basic_fields.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 7ef6a10368d..0a58d9e4895 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -595,10 +595,6 @@ 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', @@ -702,6 +698,8 @@ var FieldDateRange = InputField.extend({ this.$el.daterangepicker(this.dateRangePickerOptions); this.$el.on('apply.daterangepicker', this._applyChanges.bind(this)); + this.$el.on('show.daterangepicker', this._onDateRangePickerShow.bind(this)); + this.$el.on('hide.daterangepicker', this._onDateRangePickerHide.bind(this)); this.$el.off('keyup.daterangepicker'); this.$pickerContainer = this.$el.data('daterangepicker').container; @@ -740,7 +738,7 @@ var FieldDateRange = InputField.extend({ */ _onDateRangePickerShow() { this._onScroll = ev => { - if (ev.target !== this.$el.data('daterangepicker').element.get(0)) { + if (!this.$pickerContainer.get(0).contains(ev.target)) { this.$el.data('daterangepicker').hide(); } }; -- cgit v1.2.3