alert.js 5.32 KB
Newer Older
Mark Otto's avatar
dist    
Mark Otto committed
1
2
'use strict';

Mark Otto's avatar
grunt    
Mark Otto committed
3
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; }; }();
fat's avatar
fat committed
4

Mark Otto's avatar
grunt    
Mark Otto committed
5
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
fat's avatar
fat committed
6
7
8

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
9
 * Bootstrap (v4.0.0-beta): alert.js
10
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
fat's avatar
fat committed
11
12
13
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
14
var Alert = function () {
fat's avatar
fat committed
15

16
17
18
19
20
21
22
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME = 'alert';
Mark Otto's avatar
Mark Otto committed
23
  var VERSION = '4.0.0-beta';
24
  var DATA_KEY = 'bs.alert';
fat's avatar
fat committed
25
26
  var EVENT_KEY = '.' + DATA_KEY;
  var DATA_API_KEY = '.data-api';
27
28
29
30
31
32
33
34
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 150;

  var Selector = {
    DISMISS: '[data-dismiss="alert"]'
  };

  var Event = {
fat's avatar
fat committed
35
36
    CLOSE: 'close' + EVENT_KEY,
    CLOSED: 'closed' + EVENT_KEY,
Jacob Thornton's avatar
Jacob Thornton committed
37
    CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
38
39
40
41
42
  };

  var ClassName = {
    ALERT: 'alert',
    FADE: 'fade',
Mark Otto's avatar
grunt    
Mark Otto committed
43
    SHOW: 'show'
44

Mark Otto's avatar
dist    
Mark Otto committed
45
46
47
48
49
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
50

Mark Otto's avatar
dist    
Mark Otto committed
51
  };
Mark Otto's avatar
grunt    
Mark Otto committed
52
  var Alert = function () {
53
54
55
    function Alert(element) {
      _classCallCheck(this, Alert);

fat's avatar
fat committed
56
      this._element = element;
fat's avatar
fat committed
57
58
    }

Jacob Thornton's avatar
Jacob Thornton committed
59
60
    // getters

Mark Otto's avatar
dist    
Mark Otto committed
61
62
    _createClass(Alert, [{
      key: 'close',
fat's avatar
fat committed
63

fat's avatar
fat committed
64

Mark Otto's avatar
dist    
Mark Otto committed
65
      // public
fat's avatar
fat committed
66

Mark Otto's avatar
dist    
Mark Otto committed
67
68
      value: function close(element) {
        element = element || this._element;
Mark Otto's avatar
grunt    
Mark Otto committed
69

Mark Otto's avatar
dist    
Mark Otto committed
70
71
        var rootElement = this._getRootElement(element);
        var customEvent = this._triggerCloseEvent(rootElement);
Mark Otto's avatar
grunt    
Mark Otto committed
72

Mark Otto's avatar
dist    
Mark Otto committed
73
74
75
        if (customEvent.isDefaultPrevented()) {
          return;
        }
fat's avatar
fat committed
76

Mark Otto's avatar
dist    
Mark Otto committed
77
        this._removeElement(rootElement);
fat's avatar
fat committed
78
      }
Mark Otto's avatar
dist    
Mark Otto committed
79
80
81
82
83
    }, {
      key: 'dispose',
      value: function dispose() {
        $.removeData(this._element, DATA_KEY);
        this._element = null;
fat's avatar
fat committed
84
      }
fat's avatar
fat committed
85

Mark Otto's avatar
dist    
Mark Otto committed
86
      // private
fat's avatar
fat committed
87

Mark Otto's avatar
dist    
Mark Otto committed
88
89
90
91
92
    }, {
      key: '_getRootElement',
      value: function _getRootElement(element) {
        var selector = Util.getSelectorFromElement(element);
        var parent = false;
fat's avatar
fat committed
93

Mark Otto's avatar
dist    
Mark Otto committed
94
95
96
        if (selector) {
          parent = $(selector)[0];
        }
Mark Otto's avatar
grunt    
Mark Otto committed
97

Mark Otto's avatar
dist    
Mark Otto committed
98
99
100
        if (!parent) {
          parent = $(element).closest('.' + ClassName.ALERT)[0];
        }
fat's avatar
fat committed
101

Mark Otto's avatar
dist    
Mark Otto committed
102
        return parent;
103
      }
Mark Otto's avatar
dist    
Mark Otto committed
104
105
106
107
    }, {
      key: '_triggerCloseEvent',
      value: function _triggerCloseEvent(element) {
        var closeEvent = $.Event(Event.CLOSE);
Mark Otto's avatar
Mark Otto committed
108

Mark Otto's avatar
dist    
Mark Otto committed
109
110
111
112
113
114
115
        $(element).trigger(closeEvent);
        return closeEvent;
      }
    }, {
      key: '_removeElement',
      value: function _removeElement(element) {
        var _this = this;
fat's avatar
fat committed
116

Mark Otto's avatar
dist    
Mark Otto committed
117
        $(element).removeClass(ClassName.SHOW);
fat's avatar
fat committed
118

Mark Otto's avatar
dist    
Mark Otto committed
119
120
121
        if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
          this._destroyElement(element);
          return;
Mark Otto's avatar
grunt    
Mark Otto committed
122
        }
fat's avatar
fat committed
123

Mark Otto's avatar
dist    
Mark Otto committed
124
125
126
127
128
129
130
131
132
        $(element).one(Util.TRANSITION_END, function (event) {
          return _this._destroyElement(element, event);
        }).emulateTransitionEnd(TRANSITION_DURATION);
      }
    }, {
      key: '_destroyElement',
      value: function _destroyElement(element) {
        $(element).detach().trigger(Event.CLOSED).remove();
      }
Mark Otto's avatar
grunt    
Mark Otto committed
133

Mark Otto's avatar
dist    
Mark Otto committed
134
135
136
137
138
139
140
141
      // static

    }], [{
      key: '_jQueryInterface',
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var $element = $(this);
          var data = $element.data(DATA_KEY);
Mark Otto's avatar
grunt    
Mark Otto committed
142

Mark Otto's avatar
dist    
Mark Otto committed
143
144
145
146
          if (!data) {
            data = new Alert(this);
            $element.data(DATA_KEY, data);
          }
Mark Otto's avatar
grunt    
Mark Otto committed
147

Mark Otto's avatar
dist    
Mark Otto committed
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
          if (config === 'close') {
            data[config](this);
          }
        });
      }
    }, {
      key: '_handleDismiss',
      value: function _handleDismiss(alertInstance) {
        return function (event) {
          if (event) {
            event.preventDefault();
          }

          alertInstance.close(this);
        };
      }
    }, {
Jacob Thornton's avatar
Jacob Thornton committed
165
166
167
168
      key: 'VERSION',
      get: function get() {
        return VERSION;
      }
169
    }]);
fat's avatar
fat committed
170

171
    return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
172
173
174
175
176
177
178
  }();

  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
179

Mark Otto's avatar
Mark Otto committed
180
  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
fat's avatar
fat committed
181

182
183
184
185
186
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
187

Mark Otto's avatar
Mark Otto committed
188
  $.fn[NAME] = Alert._jQueryInterface;
189
190
  $.fn[NAME].Constructor = Alert;
  $.fn[NAME].noConflict = function () {
fat's avatar
fat committed
191
    $.fn[NAME] = JQUERY_NO_CONFLICT;
192
193
    return Alert._jQueryInterface;
  };
fat's avatar
fat committed
194

195
  return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
196
}(jQuery);
Mark Otto's avatar
build    
Mark Otto committed
197
//# sourceMappingURL=alert.js.map