]>
git.ipfire.org Git - ipfire.org.git/blob - src/scss/bootstrap-4.0.0-alpha.6/js/src/alert.js
1 import Util
from './util'
5 * --------------------------------------------------------------------------
6 * Bootstrap (v4.0.0-alpha.6): alert.js
7 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
8 * --------------------------------------------------------------------------
11 const Alert
= (($) => {
15 * ------------------------------------------------------------------------
17 * ------------------------------------------------------------------------
21 const VERSION
= '4.0.0-alpha.6'
22 const DATA_KEY
= 'bs.alert'
23 const EVENT_KEY
= `.${DATA_KEY}`
24 const DATA_API_KEY
= '.data-api'
25 const JQUERY_NO_CONFLICT
= $.fn
[NAME
]
26 const TRANSITION_DURATION
= 150
29 DISMISS
: '[data-dismiss="alert"]'
33 CLOSE
: `close${EVENT_KEY}`,
34 CLOSED
: `closed${EVENT_KEY}`,
35 CLICK_DATA_API
: `click${EVENT_KEY}${DATA_API_KEY}`
46 * ------------------------------------------------------------------------
48 * ------------------------------------------------------------------------
53 constructor(element
) {
54 this._element
= element
60 static get VERSION() {
68 element
= element
|| this._element
70 const rootElement
= this._getRootElement(element
)
71 const customEvent
= this._triggerCloseEvent(rootElement
)
73 if (customEvent
.isDefaultPrevented()) {
77 this._removeElement(rootElement
)
81 $.removeData(this._element
, DATA_KEY
)
88 _getRootElement(element
) {
89 const selector
= Util
.getSelectorFromElement(element
)
93 parent
= $(selector
)[0]
97 parent
= $(element
).closest(`.${ClassName.ALERT}`)[0]
103 _triggerCloseEvent(element
) {
104 const closeEvent
= $.Event(Event
.CLOSE
)
106 $(element
).trigger(closeEvent
)
110 _removeElement(element
) {
111 $(element
).removeClass(ClassName
.SHOW
)
113 if (!Util
.supportsTransitionEnd() ||
114 !$(element
).hasClass(ClassName
.FADE
)) {
115 this._destroyElement(element
)
120 .one(Util
.TRANSITION_END
, (event
) => this._destroyElement(element
, event
))
121 .emulateTransitionEnd(TRANSITION_DURATION
)
124 _destroyElement(element
) {
127 .trigger(Event
.CLOSED
)
134 static _jQueryInterface(config
) {
135 return this.each(function () {
136 const $element
= $(this)
137 let data
= $element
.data(DATA_KEY
)
140 data
= new Alert(this)
141 $element
.data(DATA_KEY
, data
)
144 if (config
=== 'close') {
150 static _handleDismiss(alertInstance
) {
151 return function (event
) {
153 event
.preventDefault()
156 alertInstance
.close(this)
164 * ------------------------------------------------------------------------
165 * Data Api implementation
166 * ------------------------------------------------------------------------
170 Event
.CLICK_DATA_API
,
172 Alert
._handleDismiss(new Alert())
177 * ------------------------------------------------------------------------
179 * ------------------------------------------------------------------------
182 $.fn
[NAME
] = Alert
._jQueryInterface
183 $.fn
[NAME
].Constructor
= Alert
184 $.fn
[NAME
].noConflict = function () {
185 $.fn
[NAME
] = JQUERY_NO_CONFLICT
186 return Alert
._jQueryInterface