From fca90106b9d32aea4cd659987192478fc871401c Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Fri, 7 Jun 2019 15:20:01 +0200 Subject: [PATCH] FIX: select-kit events were sometimes not cleaned up (#7728) --- .../select-kit/mixins/events.js.es6 | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/select-kit/mixins/events.js.es6 b/app/assets/javascripts/select-kit/mixins/events.js.es6 index 519271942f3..76a60fbfc79 100644 --- a/app/assets/javascripts/select-kit/mixins/events.js.es6 +++ b/app/assets/javascripts/select-kit/mixins/events.js.es6 @@ -1,3 +1,5 @@ +import { on } from "ember-addons/ember-computed-decorators"; + export default Ember.Mixin.create({ init() { this._super(...arguments); @@ -15,9 +17,25 @@ export default Ember.Mixin.create({ }; }, - willDestroyElement() { - this._super(...arguments); + @on("didInsertElement") + _setupEvents() { + $(document).on("mousedown.select-kit", this._mouseDownHandler.bind(this)); + this.$header() + .on("blur.select-kit", this._blurHeaderHandler.bind(this)) + .on("focus.select-kit", this._focusHeaderHandler.bind(this)) + .on("keydown.select-kit", this._keydownHeaderHandler.bind(this)) + .on("keypress.select-kit", this._keypressHeaderHandler.bind(this)); + + this.$filterInput() + .on("change.select-kit", this._changeFilterInputHandler.bind(this)) + .on("keypress.select-kit", this._keypressFilterInputHandler.bind(this)) + .on("focusout.select-kit", this._focusoutFilterInputHandler.bind(this)) + .on("keydown.select-kit", this._keydownFilterInputHandler.bind(this)); + }, + + @on("willDestroyElement") + _cleanUpEvents() { $(document).off("mousedown.select-kit", this._mouseDownHandler); if (this.$header().length) { @@ -145,24 +163,6 @@ export default Ember.Mixin.create({ this.onFilterInputFocusout(event); }, - didInsertElement() { - this._super(...arguments); - - $(document).on("mousedown.select-kit", this._mouseDownHandler.bind(this)); - - this.$header() - .on("blur.select-kit", this._blurHeaderHandler.bind(this)) - .on("focus.select-kit", this._focusHeaderHandler.bind(this)) - .on("keydown.select-kit", this._keydownHeaderHandler.bind(this)) - .on("keypress.select-kit", this._keypressHeaderHandler.bind(this)); - - this.$filterInput() - .on("change.select-kit", this._changeFilterInputHandler.bind(this)) - .on("keypress.select-kit", this._keypressFilterInputHandler.bind(this)) - .on("focusout.select-kit", this._focusoutFilterInputHandler.bind(this)) - .on("keydown.select-kit", this._keydownFilterInputHandler.bind(this)); - }, - didPressTab(event) { if (this.$highlightedRow().length && this.isExpanded) { this.close(event);