3.0.0 -> 3.0.1
[bootswatch] / bower_components / bootstrap / js / alert.js
1 /* ========================================================================
2  * Bootstrap: alert.js v3.0.0
3  * http://getbootstrap.com/javascript/#alerts
4  * ========================================================================
5  * Copyright 2013 Twitter, Inc.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ======================================================================== */
19
20
21 +function ($) { "use strict";
22
23   // ALERT CLASS DEFINITION
24   // ======================
25
26   var dismiss = '[data-dismiss="alert"]'
27   var Alert   = function (el) {
28     $(el).on('click', dismiss, this.close)
29   }
30
31   Alert.prototype.close = function (e) {
32     var $this    = $(this)
33     var selector = $this.attr('data-target')
34
35     if (!selector) {
36       selector = $this.attr('href')
37       selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
38     }
39
40     var $parent = $(selector)
41
42     if (e) e.preventDefault()
43
44     if (!$parent.length) {
45       $parent = $this.hasClass('alert') ? $this : $this.parent()
46     }
47
48     $parent.trigger(e = $.Event('close.bs.alert'))
49
50     if (e.isDefaultPrevented()) return
51
52     $parent.removeClass('in')
53
54     function removeElement() {
55       $parent.trigger('closed.bs.alert').remove()
56     }
57
58     $.support.transition && $parent.hasClass('fade') ?
59       $parent
60         .one($.support.transition.end, removeElement)
61         .emulateTransitionEnd(150) :
62       removeElement()
63   }
64
65
66   // ALERT PLUGIN DEFINITION
67   // =======================
68
69   var old = $.fn.alert
70
71   $.fn.alert = function (option) {
72     return this.each(function () {
73       var $this = $(this)
74       var data  = $this.data('bs.alert')
75
76       if (!data) $this.data('bs.alert', (data = new Alert(this)))
77       if (typeof option == 'string') data[option].call($this)
78     })
79   }
80
81   $.fn.alert.Constructor = Alert
82
83
84   // ALERT NO CONFLICT
85   // =================
86
87   $.fn.alert.noConflict = function () {
88     $.fn.alert = old
89     return this
90   }
91
92
93   // ALERT DATA-API
94   // ==============
95
96   $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
97
98 }(window.jQuery);