[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) <aab@odoo.com>
This commit is contained in:
Dhruv Patel
2020-06-23 12:45:10 +00:00
committed by Aaron Bohy
parent f1b7a2b147
commit 8a1e1c0c4c
@@ -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();
}
};