alert.js 5.01 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

/**
 * --------------------------------------------------------------------------
7
 * Bootstrap (v4.0.0-alpha.4): 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';
21
  var VERSION = '4.0.0-alpha.4';
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',
41
    IN: 'in'
42
43
44
45
46
47
48
49
  };

  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

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) {
104
      $(element).removeClass(ClassName.IN);
fat's avatar
fat committed
105

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

111
      $(element).one(Util.TRANSITION_END, $.proxy(this._destroyElement, this, element)).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
112
    };
fat's avatar
fat committed
113

Mark Otto's avatar
grunt    
Mark Otto committed
114
115
116
    Alert.prototype._destroyElement = function _destroyElement(element) {
      $(element).detach().trigger(Event.CLOSED).remove();
    };
fat's avatar
fat committed
117

Mark Otto's avatar
grunt    
Mark Otto committed
118
    // static
fat's avatar
fat committed
119

Mark Otto's avatar
grunt    
Mark Otto committed
120
121
122
123
    Alert._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var $element = $(this);
        var data = $element.data(DATA_KEY);
fat's avatar
fat committed
124

Mark Otto's avatar
grunt    
Mark Otto committed
125
126
127
128
        if (!data) {
          data = new Alert(this);
          $element.data(DATA_KEY, data);
        }
fat's avatar
fat committed
129

Mark Otto's avatar
grunt    
Mark Otto committed
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
        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
147
148
149
150
      key: 'VERSION',
      get: function get() {
        return VERSION;
      }
151
    }]);
fat's avatar
fat committed
152

153
    return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
154
155
156
157
158
159
160
  }();

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

fat's avatar
fat committed
162
  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
fat's avatar
fat committed
163

164
165
166
167
168
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
169

170
171
172
  $.fn[NAME] = Alert._jQueryInterface;
  $.fn[NAME].Constructor = Alert;
  $.fn[NAME].noConflict = function () {
fat's avatar
fat committed
173
    $.fn[NAME] = JQUERY_NO_CONFLICT;
174
175
    return Alert._jQueryInterface;
  };
fat's avatar
fat committed
176

177
  return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
178
}(jQuery);
Jacob Thornton's avatar
Jacob Thornton committed
179
//# sourceMappingURL=alert.js.map