summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js35
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({