0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-01 13:24:25 +01:00

Remove element event listeners through base component (#33429)

After some research, I found out that EventHandler saves all the custom events per element using namespace, and is capable of removing handlers using only the element and its namespace (`DATA_KEY`).

So, probably is better to utilize the base-component to do the same job.
This commit is contained in:
GeoSot 2021-04-11 09:54:48 +03:00 committed by GitHub
parent bac0b0c899
commit 566451230f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 3 additions and 7 deletions

View File

@ -6,6 +6,7 @@
*/
import Data from './dom/data'
import EventHandler from './dom/event-handler'
/**
* ------------------------------------------------------------------------
@ -29,6 +30,7 @@ class BaseComponent {
dispose() {
Data.remove(this._element, this.constructor.DATA_KEY)
EventHandler.off(this._element, `.${this.constructor.DATA_KEY}`)
this._element = null
}

View File

@ -216,8 +216,6 @@ class Carousel extends BaseComponent {
}
dispose() {
EventHandler.off(this._element, EVENT_KEY)
this._items = null
this._config = null
this._interval = null

View File

@ -237,7 +237,6 @@ class Dropdown extends BaseComponent {
}
dispose() {
EventHandler.off(this._element, EVENT_KEY)
this._menu = null
if (this._popper) {

View File

@ -187,7 +187,7 @@ class Modal extends BaseComponent {
}
dispose() {
[window, this._element, this._dialog]
[window, this._dialog]
.forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))
super.dispose()

View File

@ -156,8 +156,6 @@ class Toast extends BaseComponent {
this._element.classList.remove(CLASS_NAME_SHOW)
}
EventHandler.off(this._element, EVENT_CLICK_DISMISS)
super.dispose()
this._config = null
}

View File

@ -215,7 +215,6 @@ class Tooltip extends BaseComponent {
dispose() {
clearTimeout(this._timeout)
EventHandler.off(this._element, this.constructor.EVENT_KEY)
EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)
if (this.tip && this.tip.parentNode) {