]>
Commit | Line | Data |
---|---|---|
91e44d91 S |
1 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); |
2 | ||
3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | |
4 | ||
5 | /** | |
6 | * -------------------------------------------------------------------------- | |
7 | * Bootstrap (v4.0.0-alpha.6): alert.js | |
8 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | |
9 | * -------------------------------------------------------------------------- | |
10 | */ | |
11 | ||
12 | var Alert = function ($) { | |
13 | ||
14 | /** | |
15 | * ------------------------------------------------------------------------ | |
16 | * Constants | |
17 | * ------------------------------------------------------------------------ | |
18 | */ | |
19 | ||
20 | var NAME = 'alert'; | |
21 | var VERSION = '4.0.0-alpha.6'; | |
22 | var DATA_KEY = 'bs.alert'; | |
23 | var EVENT_KEY = '.' + DATA_KEY; | |
24 | var DATA_API_KEY = '.data-api'; | |
25 | var JQUERY_NO_CONFLICT = $.fn[NAME]; | |
26 | var TRANSITION_DURATION = 150; | |
27 | ||
28 | var Selector = { | |
29 | DISMISS: '[data-dismiss="alert"]' | |
30 | }; | |
31 | ||
32 | var Event = { | |
33 | CLOSE: 'close' + EVENT_KEY, | |
34 | CLOSED: 'closed' + EVENT_KEY, | |
35 | CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY | |
36 | }; | |
37 | ||
38 | var ClassName = { | |
39 | ALERT: 'alert', | |
40 | FADE: 'fade', | |
41 | SHOW: 'show' | |
42 | }; | |
43 | ||
44 | /** | |
45 | * ------------------------------------------------------------------------ | |
46 | * Class Definition | |
47 | * ------------------------------------------------------------------------ | |
48 | */ | |
49 | ||
50 | var Alert = function () { | |
51 | function Alert(element) { | |
52 | _classCallCheck(this, Alert); | |
53 | ||
54 | this._element = element; | |
55 | } | |
56 | ||
57 | // getters | |
58 | ||
59 | // public | |
60 | ||
61 | Alert.prototype.close = function close(element) { | |
62 | element = element || this._element; | |
63 | ||
64 | var rootElement = this._getRootElement(element); | |
65 | var customEvent = this._triggerCloseEvent(rootElement); | |
66 | ||
67 | if (customEvent.isDefaultPrevented()) { | |
68 | return; | |
69 | } | |
70 | ||
71 | this._removeElement(rootElement); | |
72 | }; | |
73 | ||
74 | Alert.prototype.dispose = function dispose() { | |
75 | $.removeData(this._element, DATA_KEY); | |
76 | this._element = null; | |
77 | }; | |
78 | ||
79 | // private | |
80 | ||
81 | Alert.prototype._getRootElement = function _getRootElement(element) { | |
82 | var selector = Util.getSelectorFromElement(element); | |
83 | var parent = false; | |
84 | ||
85 | if (selector) { | |
86 | parent = $(selector)[0]; | |
87 | } | |
88 | ||
89 | if (!parent) { | |
90 | parent = $(element).closest('.' + ClassName.ALERT)[0]; | |
91 | } | |
92 | ||
93 | return parent; | |
94 | }; | |
95 | ||
96 | Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) { | |
97 | var closeEvent = $.Event(Event.CLOSE); | |
98 | ||
99 | $(element).trigger(closeEvent); | |
100 | return closeEvent; | |
101 | }; | |
102 | ||
103 | Alert.prototype._removeElement = function _removeElement(element) { | |
104 | var _this = this; | |
105 | ||
106 | $(element).removeClass(ClassName.SHOW); | |
107 | ||
108 | if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { | |
109 | this._destroyElement(element); | |
110 | return; | |
111 | } | |
112 | ||
113 | $(element).one(Util.TRANSITION_END, function (event) { | |
114 | return _this._destroyElement(element, event); | |
115 | }).emulateTransitionEnd(TRANSITION_DURATION); | |
116 | }; | |
117 | ||
118 | Alert.prototype._destroyElement = function _destroyElement(element) { | |
119 | $(element).detach().trigger(Event.CLOSED).remove(); | |
120 | }; | |
121 | ||
122 | // static | |
123 | ||
124 | Alert._jQueryInterface = function _jQueryInterface(config) { | |
125 | return this.each(function () { | |
126 | var $element = $(this); | |
127 | var data = $element.data(DATA_KEY); | |
128 | ||
129 | if (!data) { | |
130 | data = new Alert(this); | |
131 | $element.data(DATA_KEY, data); | |
132 | } | |
133 | ||
134 | if (config === 'close') { | |
135 | data[config](this); | |
136 | } | |
137 | }); | |
138 | }; | |
139 | ||
140 | Alert._handleDismiss = function _handleDismiss(alertInstance) { | |
141 | return function (event) { | |
142 | if (event) { | |
143 | event.preventDefault(); | |
144 | } | |
145 | ||
146 | alertInstance.close(this); | |
147 | }; | |
148 | }; | |
149 | ||
150 | _createClass(Alert, null, [{ | |
151 | key: 'VERSION', | |
152 | get: function get() { | |
153 | return VERSION; | |
154 | } | |
155 | }]); | |
156 | ||
157 | return Alert; | |
158 | }(); | |
159 | ||
160 | /** | |
161 | * ------------------------------------------------------------------------ | |
162 | * Data Api implementation | |
163 | * ------------------------------------------------------------------------ | |
164 | */ | |
165 | ||
166 | $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); | |
167 | ||
168 | /** | |
169 | * ------------------------------------------------------------------------ | |
170 | * jQuery | |
171 | * ------------------------------------------------------------------------ | |
172 | */ | |
173 | ||
174 | $.fn[NAME] = Alert._jQueryInterface; | |
175 | $.fn[NAME].Constructor = Alert; | |
176 | $.fn[NAME].noConflict = function () { | |
177 | $.fn[NAME] = JQUERY_NO_CONFLICT; | |
178 | return Alert._jQueryInterface; | |
179 | }; | |
180 | ||
181 | return Alert; | |
182 | }(jQuery); | |
183 | //# sourceMappingURL=alert.js.map |