alert.js 5.07 KB
Newer Older
Mark Otto's avatar
grunt    
Mark Otto committed
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; }; }();
fat's avatar
fat committed
2

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

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

Mark Otto's avatar
grunt    
Mark Otto committed
12
var Alert = function ($) {
fat's avatar
fat committed
13

14
15
16
17
18
19
20
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

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

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

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

  var ClassName = {
    ALERT: 'alert',
    FADE: 'fade',
Mark Otto's avatar
grunt    
Mark Otto committed
41
    SHOW: 'show'
Mark Otto's avatar
dist    
Mark Otto committed
42
  };
43

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

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

fat's avatar
fat committed
54
      this._element = element;
fat's avatar
fat committed
55
56
    }

Jacob Thornton's avatar
Jacob Thornton committed
57
58
    // getters

Mark Otto's avatar
grunt    
Mark Otto committed
59
    // public
60

Mark Otto's avatar
grunt    
Mark Otto committed
61
62
    Alert.prototype.close = function close(element) {
      element = element || this._element;
fat's avatar
fat committed
63

Mark Otto's avatar
grunt    
Mark Otto committed
64
65
      var rootElement = this._getRootElement(element);
      var customEvent = this._triggerCloseEvent(rootElement);
fat's avatar
fat committed
66

Mark Otto's avatar
grunt    
Mark Otto committed
67
68
69
      if (customEvent.isDefaultPrevented()) {
        return;
      }
fat's avatar
fat committed
70

Mark Otto's avatar
grunt    
Mark Otto committed
71
72
73
74
75
76
77
78
79
80
81
82
83
      this._removeElement(rootElement);
    };

    Alert.prototype.dispose = function dispose() {
      $.removeData(this._element, DATA_KEY);
      this._element = null;
    };

    // private

    Alert.prototype._getRootElement = function _getRootElement(element) {
      var selector = Util.getSelectorFromElement(element);
      var parent = false;
fat's avatar
fat committed
84

Mark Otto's avatar
grunt    
Mark Otto committed
85
86
      if (selector) {
        parent = $(selector)[0];
fat's avatar
fat committed
87
      }
Mark Otto's avatar
grunt    
Mark Otto committed
88
89
90

      if (!parent) {
        parent = $(element).closest('.' + ClassName.ALERT)[0];
fat's avatar
fat committed
91
      }
fat's avatar
fat committed
92

Mark Otto's avatar
grunt    
Mark Otto committed
93
94
      return parent;
    };
fat's avatar
fat committed
95

Mark Otto's avatar
grunt    
Mark Otto committed
96
97
    Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) {
      var closeEvent = $.Event(Event.CLOSE);
fat's avatar
fat committed
98

Mark Otto's avatar
grunt    
Mark Otto committed
99
100
101
      $(element).trigger(closeEvent);
      return closeEvent;
    };
fat's avatar
fat committed
102

Mark Otto's avatar
grunt    
Mark Otto committed
103
    Alert.prototype._removeElement = function _removeElement(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
104
105
      var _this = this;

Mark Otto's avatar
grunt    
Mark Otto committed
106
      $(element).removeClass(ClassName.SHOW);
fat's avatar
fat committed
107

Mark Otto's avatar
grunt    
Mark Otto committed
108
109
110
      if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
        this._destroyElement(element);
        return;
111
      }
Mark Otto's avatar
Mark Otto committed
112

Mark Otto's avatar
grunt    
Mark Otto committed
113
114
115
      $(element).one(Util.TRANSITION_END, function (event) {
        return _this._destroyElement(element, event);
      }).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
116
    };
fat's avatar
fat committed
117

Mark Otto's avatar
grunt    
Mark Otto committed
118
119
120
    Alert.prototype._destroyElement = function _destroyElement(element) {
      $(element).detach().trigger(Event.CLOSED).remove();
    };
fat's avatar
fat committed
121

Mark Otto's avatar
grunt    
Mark Otto committed
122
    // static
fat's avatar
fat committed
123

Mark Otto's avatar
grunt    
Mark Otto committed
124
125
126
127
    Alert._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var $element = $(this);
        var data = $element.data(DATA_KEY);
fat's avatar
fat committed
128

Mark Otto's avatar
grunt    
Mark Otto committed
129
130
131
132
        if (!data) {
          data = new Alert(this);
          $element.data(DATA_KEY, data);
        }
fat's avatar
fat committed
133

Mark Otto's avatar
grunt    
Mark Otto committed
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
        if (config === 'close') {
          data[config](this);
        }
      });
    };

    Alert._handleDismiss = function _handleDismiss(alertInstance) {
      return function (event) {
        if (event) {
          event.preventDefault();
        }

        alertInstance.close(this);
      };
    };

    _createClass(Alert, null, [{
Jacob Thornton's avatar
Jacob Thornton committed
151
152
153
154
      key: 'VERSION',
      get: function get() {
        return VERSION;
      }
155
    }]);
fat's avatar
fat committed
156

157
    return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
158
159
160
161
162
163
164
  }();

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

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

168
169
170
171
172
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
173

Mark Otto's avatar
Mark Otto committed
174
  $.fn[NAME] = Alert._jQueryInterface;
175
176
  $.fn[NAME].Constructor = Alert;
  $.fn[NAME].noConflict = function () {
fat's avatar
fat committed
177
    $.fn[NAME] = JQUERY_NO_CONFLICT;
178
179
    return Alert._jQueryInterface;
  };
fat's avatar
fat committed
180

181
  return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
182
}(jQuery);
Mark Otto's avatar
build    
Mark Otto committed
183
//# sourceMappingURL=alert.js.map