diff options
| author | Bobby <[email protected]> | 2024-08-16 20:47:33 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-08-16 20:47:33 -0400 |
| commit | 6b28433d9cfde435be8ec2bd6cf91e6324d08865 (patch) | |
| tree | 8343c27b8b95ff5639233e81cf157f92e5688466 /js/src/toast.js | |
| parent | d53094ec16ba385faae2973ddee648698b32ab24 (diff) | |
| parent | 048f56f51460df75e92a2f7b472e1c56baeb68f7 (diff) | |
| download | bootstrap-main.tar.xz bootstrap-main.zip | |
Diffstat (limited to 'js/src/toast.js')
| -rw-r--r-- | js/src/toast.js | 62 |
1 files changed, 26 insertions, 36 deletions
diff --git a/js/src/toast.js b/js/src/toast.js index c45721c8f..d5d9c0ee0 100644 --- a/js/src/toast.js +++ b/js/src/toast.js @@ -1,19 +1,14 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): toast.js + * Bootstrap toast.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ -import { - defineJQueryPlugin, - reflow, - typeCheckConfig -} from './util/index' -import EventHandler from './dom/event-handler' -import Manipulator from './dom/manipulator' -import BaseComponent from './base-component' -import { enableDismissTrigger } from './util/component-functions' +import BaseComponent from './base-component.js' +import EventHandler from './dom/event-handler.js' +import { enableDismissTrigger } from './util/component-functions.js' +import { defineJQueryPlugin, reflow } from './util/index.js' /** * Constants @@ -55,9 +50,8 @@ const Default = { class Toast extends BaseComponent { constructor(element, config) { - super(element) + super(element, config) - this._config = this._getConfig(config) this._timeout = null this._hasMouseInteraction = false this._hasKeyboardInteraction = false @@ -65,14 +59,14 @@ class Toast extends BaseComponent { } // Getters - static get DefaultType() { - return DefaultType - } - static get Default() { return Default } + static get DefaultType() { + return DefaultType + } + static get NAME() { return NAME } @@ -100,14 +94,13 @@ class Toast extends BaseComponent { this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated reflow(this._element) - this._element.classList.add(CLASS_NAME_SHOW) - this._element.classList.add(CLASS_NAME_SHOWING) + this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING) this._queueCallback(complete, this._element, this._config.animation) } hide() { - if (!this._element.classList.contains(CLASS_NAME_SHOW)) { + if (!this.isShown()) { return } @@ -119,8 +112,7 @@ class Toast extends BaseComponent { const complete = () => { this._element.classList.add(CLASS_NAME_HIDE) // @deprecated - this._element.classList.remove(CLASS_NAME_SHOWING) - this._element.classList.remove(CLASS_NAME_SHOW) + this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW) EventHandler.trigger(this._element, EVENT_HIDDEN) } @@ -131,26 +123,19 @@ class Toast extends BaseComponent { dispose() { this._clearTimeout() - if (this._element.classList.contains(CLASS_NAME_SHOW)) { + if (this.isShown()) { this._element.classList.remove(CLASS_NAME_SHOW) } super.dispose() } - // Private - _getConfig(config) { - config = { - ...Default, - ...Manipulator.getDataAttributes(this._element), - ...(typeof config === 'object' && config ? config : {}) - } - - typeCheckConfig(NAME, config, this.constructor.DefaultType) - - return config + isShown() { + return this._element.classList.contains(CLASS_NAME_SHOW) } + // Private + _maybeScheduleHide() { if (!this._config.autohide) { return @@ -168,15 +153,20 @@ class Toast extends BaseComponent { _onInteraction(event, isInteracting) { switch (event.type) { case 'mouseover': - case 'mouseout': + case 'mouseout': { this._hasMouseInteraction = isInteracting break + } + case 'focusin': - case 'focusout': + case 'focusout': { this._hasKeyboardInteraction = isInteracting break - default: + } + + default: { break + } } if (isInteracting) { |
