OSDN Git Service

new repo
[bytom/vapor.git] / tools / side_chain_tool / web / node_modules / bootstrap / js / tab.js
1 /* ========================================================================
2  * Bootstrap: tab.js v3.3.7
3  * http://getbootstrap.com/javascript/#tabs
4  * ========================================================================
5  * Copyright 2011-2016 Twitter, Inc.
6  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7  * ======================================================================== */
8
9
10 +function ($) {
11   'use strict';
12
13   // TAB CLASS DEFINITION
14   // ====================
15
16   var Tab = function (element) {
17     // jscs:disable requireDollarBeforejQueryAssignment
18     this.element = $(element)
19     // jscs:enable requireDollarBeforejQueryAssignment
20   }
21
22   Tab.VERSION = '3.3.7'
23
24   Tab.TRANSITION_DURATION = 150
25
26   Tab.prototype.show = function () {
27     var $this    = this.element
28     var $ul      = $this.closest('ul:not(.dropdown-menu)')
29     var selector = $this.data('target')
30
31     if (!selector) {
32       selector = $this.attr('href')
33       selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
34     }
35
36     if ($this.parent('li').hasClass('active')) return
37
38     var $previous = $ul.find('.active:last a')
39     var hideEvent = $.Event('hide.bs.tab', {
40       relatedTarget: $this[0]
41     })
42     var showEvent = $.Event('show.bs.tab', {
43       relatedTarget: $previous[0]
44     })
45
46     $previous.trigger(hideEvent)
47     $this.trigger(showEvent)
48
49     if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
50
51     var $target = $(selector)
52
53     this.activate($this.closest('li'), $ul)
54     this.activate($target, $target.parent(), function () {
55       $previous.trigger({
56         type: 'hidden.bs.tab',
57         relatedTarget: $this[0]
58       })
59       $this.trigger({
60         type: 'shown.bs.tab',
61         relatedTarget: $previous[0]
62       })
63     })
64   }
65
66   Tab.prototype.activate = function (element, container, callback) {
67     var $active    = container.find('> .active')
68     var transition = callback
69       && $.support.transition
70       && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
71
72     function next() {
73       $active
74         .removeClass('active')
75         .find('> .dropdown-menu > .active')
76           .removeClass('active')
77         .end()
78         .find('[data-toggle="tab"]')
79           .attr('aria-expanded', false)
80
81       element
82         .addClass('active')
83         .find('[data-toggle="tab"]')
84           .attr('aria-expanded', true)
85
86       if (transition) {
87         element[0].offsetWidth // reflow for transition
88         element.addClass('in')
89       } else {
90         element.removeClass('fade')
91       }
92
93       if (element.parent('.dropdown-menu').length) {
94         element
95           .closest('li.dropdown')
96             .addClass('active')
97           .end()
98           .find('[data-toggle="tab"]')
99             .attr('aria-expanded', true)
100       }
101
102       callback && callback()
103     }
104
105     $active.length && transition ?
106       $active
107         .one('bsTransitionEnd', next)
108         .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
109       next()
110
111     $active.removeClass('in')
112   }
113
114
115   // TAB PLUGIN DEFINITION
116   // =====================
117
118   function Plugin(option) {
119     return this.each(function () {
120       var $this = $(this)
121       var data  = $this.data('bs.tab')
122
123       if (!data) $this.data('bs.tab', (data = new Tab(this)))
124       if (typeof option == 'string') data[option]()
125     })
126   }
127
128   var old = $.fn.tab
129
130   $.fn.tab             = Plugin
131   $.fn.tab.Constructor = Tab
132
133
134   // TAB NO CONFLICT
135   // ===============
136
137   $.fn.tab.noConflict = function () {
138     $.fn.tab = old
139     return this
140   }
141
142
143   // TAB DATA-API
144   // ============
145
146   var clickHandler = function (e) {
147     e.preventDefault()
148     Plugin.call($(this), 'show')
149   }
150
151   $(document)
152     .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
153     .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
154
155 }(jQuery);