aboutsummaryrefslogtreecommitdiff
path: root/js/src/alert.js
diff options
context:
space:
mode:
authorfat <[email protected]>2015-05-07 16:34:28 -0700
committerfat <[email protected]>2015-05-07 16:34:28 -0700
commitc3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3 (patch)
tree06a02f216b801efdba5d920da89b2cad47fd2408 /js/src/alert.js
parent0724bd91ff81b5eca0addce0c336c72b3ec10be5 (diff)
downloadbootstrap-c3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3.tar.xz
bootstrap-c3a79b1a8c2fa8d7fc8edcd3e626dad8b45d5dc3.zip
change the export pattern to protect against leaking globals
Diffstat (limited to 'js/src/alert.js')
-rw-r--r--js/src/alert.js238
1 files changed, 124 insertions, 114 deletions
diff --git a/js/src/alert.js b/js/src/alert.js
index bd12b1a55..d69ad8910 100644
--- a/js/src/alert.js
+++ b/js/src/alert.js
@@ -1,3 +1,6 @@
+import Util from './util'
+
+
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0): alert.js
@@ -5,164 +8,171 @@
* --------------------------------------------------------------------------
*/
-import Util from 'util'
+const Alert = (() => {
-/**
- * --------------------------------------------------------------------------
- * Constants
- * --------------------------------------------------------------------------
- */
+ /**
+ * ------------------------------------------------------------------------
+ * Constants
+ * ------------------------------------------------------------------------
+ */
-const NAME = 'alert'
-const VERSION = '4.0.0'
-const DATA_KEY = 'bs.alert'
-const JQUERY_NO_CONFLICT = $.fn[NAME]
-const TRANSITION_DURATION = 150
+ const NAME = 'alert'
+ const VERSION = '4.0.0'
+ const DATA_KEY = 'bs.alert'
+ const JQUERY_NO_CONFLICT = $.fn[NAME]
+ const TRANSITION_DURATION = 150
-const Selector = {
- DISMISS : '[data-dismiss="alert"]'
-}
+ const Selector = {
+ DISMISS : '[data-dismiss="alert"]'
+ }
-const Event = {
- CLOSE : 'close.bs.alert',
- CLOSED : 'closed.bs.alert',
- CLICK : 'click.bs.alert.data-api'
-}
+ const Event = {
+ CLOSE : 'close.bs.alert',
+ CLOSED : 'closed.bs.alert',
+ CLICK : 'click.bs.alert.data-api'
+ }
-const ClassName = {
- ALERT : 'alert',
- FADE : 'fade',
- IN : 'in'
-}
+ const ClassName = {
+ ALERT : 'alert',
+ FADE : 'fade',
+ IN : 'in'
+ }
-/**
- * --------------------------------------------------------------------------
- * Class Definition
- * --------------------------------------------------------------------------
- */
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
-export class Alert {
+ class Alert {
- constructor(element) {
- if (element) {
- this.element = element
+ constructor(element) {
+ if (element) {
+ this.element = element
+ }
}
- }
- // public
+ // public
+
+ close(element) {
+ let rootElement = this._getRootElement(element)
+ let customEvent = this._triggerCloseEvent(rootElement)
- close(element) {
- let rootElement = this._getRootElement(element)
- let customEvent = this._triggerCloseEvent(rootElement)
+ if (customEvent.isDefaultPrevented()) {
+ return
+ }
- if (customEvent.isDefaultPrevented()) {
- return
+ this._removeElement(rootElement)
}
- this._removeElement(rootElement)
- }
+ // private
- // private
+ _getRootElement(element) {
+ let parent = false
+ let selector = Util.getSelectorFromElement(element)
- _getRootElement(element) {
- let parent = false
- let selector = Util.getSelectorFromElement(element)
+ if (selector) {
+ parent = $(selector)[0]
+ }
- if (selector) {
- parent = $(selector)[0]
+ if (!parent) {
+ parent = $(element).closest('.' + ClassName.ALERT)[0]
+ }
+
+ return parent
}
- if (!parent) {
- parent = $(element).closest('.' + ClassName.ALERT)[0]
+ _triggerCloseEvent(element) {
+ var closeEvent = $.Event(Event.CLOSE)
+ $(element).trigger(closeEvent)
+ return closeEvent
}
- return parent
- }
+ _removeElement(element) {
+ $(element).removeClass(ClassName.IN)
- _triggerCloseEvent(element) {
- var closeEvent = $.Event(Event.CLOSE)
- $(element).trigger(closeEvent)
- return closeEvent
- }
+ if (!Util.supportsTransitionEnd() ||
+ !$(element).hasClass(ClassName.FADE)) {
+ this._destroyElement(element)
+ return
+ }
- _removeElement(element) {
- $(element).removeClass(ClassName.IN)
+ $(element)
+ .one(Util.TRANSITION_END, this._destroyElement.bind(this, element))
+ .emulateTransitionEnd(TRANSITION_DURATION)
+ }
- if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
- this._destroyElement(element)
- return
+ _destroyElement(element) {
+ $(element)
+ .detach()
+ .trigger(Event.CLOSED)
+ .remove()
}
- $(element)
- .one(Util.TRANSITION_END, this._destroyElement.bind(this, element))
- .emulateTransitionEnd(TRANSITION_DURATION)
- }
- _destroyElement(element) {
- $(element)
- .detach()
- .trigger(Event.CLOSED)
- .remove()
- }
+ // static
+ static _jQueryInterface(config) {
+ return this.each(function () {
+ let $element = $(this)
+ let data = $element.data(DATA_KEY)
- // static
+ if (!data) {
+ data = new Alert(this)
+ $element.data(DATA_KEY, data)
+ }
- static _jQueryInterface(config) {
- return this.each(function () {
- let $element = $(this)
- let data = $element.data(DATA_KEY)
+ if (config === 'close') {
+ data[config](this)
+ }
+ })
+ }
- if (!data) {
- data = new Alert(this)
- $element.data(DATA_KEY, data)
- }
+ static _handleDismiss(alertInstance) {
+ return function (event) {
+ if (event) {
+ event.preventDefault()
+ }
- if (config === 'close') {
- data[config](this)
+ alertInstance.close(this)
}
- })
+ }
+
}
- static _handleDismiss(alertInstance) {
- return function (event) {
- if (event) {
- event.preventDefault()
- }
- alertInstance.close(this)
- }
- }
+ /**
+ * ------------------------------------------------------------------------
+ * Data Api implementation
+ * ------------------------------------------------------------------------
+ */
-}
+ $(document).on(
+ Event.CLICK,
+ Selector.DISMISS,
+ Alert._handleDismiss(new Alert())
+ )
-/**
- * --------------------------------------------------------------------------
- * Data Api implementation
- * --------------------------------------------------------------------------
- */
+ /**
+ * ------------------------------------------------------------------------
+ * jQuery
+ * ------------------------------------------------------------------------
+ */
-$(document).on(
- Event.CLICK,
- Selector.DISMISS,
- Alert._handleDismiss(new Alert())
-)
+ $.fn[NAME] = Alert._jQueryInterface
+ $.fn[NAME].Constructor = Alert
+ $.fn[NAME].noConflict = function () {
+ $.fn[NAME] = Alert._JQUERY_NO_CONFLICT
+ return Alert._jQueryInterface
+ }
+ return Alert
-/**
- * --------------------------------------------------------------------------
- * jQuery
- * --------------------------------------------------------------------------
- */
+})()
-$.fn[NAME] = Alert._jQueryInterface
-$.fn[NAME].Constructor = Alert
-$.fn[NAME].noConflict = function () {
- $.fn[NAME] = Alert._JQUERY_NO_CONFLICT
- return Alert._jQueryInterface
-}
+export default Alert