diff options
author | Ryan Ramage <ryan.ramage@gmail.com> | 2013-05-10 09:10:02 -0600 |
---|---|---|
committer | Ryan Ramage <ryan.ramage@gmail.com> | 2013-05-10 23:41:32 -0600 |
commit | 4615a788dcc1ab00d0f63b43530aa6921654c538 (patch) | |
tree | a79e3cae544a4768269e3fa9c933f6d71cfbd776 /src/fauxton/jam/bootstrap/docs/assets/js/bootstrap-tab.js | |
parent | 65107660fa11b05d69476b76e69c66486b44bfea (diff) | |
download | couchdb-4615a788dcc1ab00d0f63b43530aa6921654c538.tar.gz |
Restructure to simpler jam/erica style.
- compile less files, templates into compiled requirejs
- Add simple rebuild command, to control minification,
- Add simple push command, to eash couchapp push.
Slight readme improvement
Diffstat (limited to 'src/fauxton/jam/bootstrap/docs/assets/js/bootstrap-tab.js')
-rw-r--r-- | src/fauxton/jam/bootstrap/docs/assets/js/bootstrap-tab.js | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/src/fauxton/jam/bootstrap/docs/assets/js/bootstrap-tab.js b/src/fauxton/jam/bootstrap/docs/assets/js/bootstrap-tab.js new file mode 100644 index 000000000..84d4834a2 --- /dev/null +++ b/src/fauxton/jam/bootstrap/docs/assets/js/bootstrap-tab.js @@ -0,0 +1,144 @@ +/* ======================================================== + * bootstrap-tab.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#tabs + * ======================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TAB CLASS DEFINITION + * ==================== */ + + var Tab = function (element) { + this.element = $(element) + } + + Tab.prototype = { + + constructor: Tab + + , show: function () { + var $this = this.element + , $ul = $this.closest('ul:not(.dropdown-menu)') + , selector = $this.attr('data-target') + , previous + , $target + , e + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if ( $this.parent('li').hasClass('active') ) return + + previous = $ul.find('.active:last a')[0] + + e = $.Event('show', { + relatedTarget: previous + }) + + $this.trigger(e) + + if (e.isDefaultPrevented()) return + + $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function () { + $this.trigger({ + type: 'shown' + , relatedTarget: previous + }) + }) + } + + , activate: function ( element, container, callback) { + var $active = container.find('> .active') + , transition = callback + && $.support.transition + && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if ( element.parent('.dropdown-menu') ) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active.one($.support.transition.end, next) : + next() + + $active.removeClass('in') + } + } + + + /* TAB PLUGIN DEFINITION + * ===================== */ + + var old = $.fn.tab + + $.fn.tab = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tab') + if (!data) $this.data('tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + /* TAB NO CONFLICT + * =============== */ + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + /* TAB DATA-API + * ============ */ + + $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { + e.preventDefault() + $(this).tab('show') + }) + +}(window.jQuery);
\ No newline at end of file |