diff options
| author | James Friend <[email protected]> | 2014-08-28 09:32:08 +0800 |
|---|---|---|
| committer | James Friend <[email protected]> | 2014-08-28 09:32:08 +0800 |
| commit | 9aeaf19b1dca68ee71e916ae415a0c270a47d301 (patch) | |
| tree | bc8385acb8ec7a46bba03ff2ef7e4283cd9f1146 /js/collapse.js | |
| parent | e7991a9a1e2f474c8f1d8a2e0ed113816f1c5e82 (diff) | |
| parent | 35f09315ed543a0479719afa2143240952c215db (diff) | |
| download | bootstrap-9aeaf19b1dca68ee71e916ae415a0c270a47d301.tar.xz bootstrap-9aeaf19b1dca68ee71e916ae415a0c270a47d301.zip | |
Merge remote-tracking branch 'upstream/master' into node-requirable
Conflicts:
Gruntfile.js
Diffstat (limited to 'js/collapse.js')
| -rw-r--r-- | js/collapse.js | 243 |
1 files changed, 119 insertions, 124 deletions
diff --git a/js/collapse.js b/js/collapse.js index d37b8898c..db89804cb 100644 --- a/js/collapse.js +++ b/js/collapse.js @@ -1,5 +1,5 @@ /* ======================================================================== - * Bootstrap: collapse.js v3.1.1 + * Bootstrap: collapse.js v3.2.0 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2014 Twitter, Inc. @@ -7,170 +7,165 @@ * ======================================================================== */ -+function () { 'use strict'; ++function ($) { + 'use strict'; - (function (o_o) { - typeof define == 'function' && define.amd ? define(['jquery'], o_o) : - typeof exports == 'object' ? o_o(require('jquery')) : o_o(jQuery) - })(function ($) { + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.transitioning = null + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } - if (this.options.parent) this.$parent = $(this.options.parent) - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.1.1' - - Collapse.DEFAULTS = { - toggle: true - } + Collapse.VERSION = '3.2.0' - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } + Collapse.TRANSITION_DURATION = 350 - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return + Collapse.DEFAULTS = { + toggle: true + } - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } - var actives = this.$parent && this.$parent.find('> .panel > .in') + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return - if (actives && actives.length) { - var hasData = actives.data('bs.collapse') - if (hasData && hasData.transitioning) return - Plugin.call(actives, 'hide') - hasData || actives.data('bs.collapse', null) - } + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return - var dimension = this.dimension() + var actives = this.$parent && this.$parent.find('> .panel > .in') - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - - this.transitioning = 1 + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + Plugin.call(actives, 'hide') + hasData || actives.data('bs.collapse', null) + } - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } + var dimension = this.dimension() - if (!$.support.transition) return complete.call(this) + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) - var scrollSize = $.camelCase(['scroll', dimension].join('-')) + this.transitioning = 1 + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) + .trigger('shown.bs.collapse') } - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return + if (!$.support.transition) return complete.call(this) - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return + var scrollSize = $.camelCase(['scroll', dimension].join('-')) - var dimension = this.dimension() + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } - this.$element[dimension](this.$element[dimension]())[0].offsetHeight + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return - this.$element - .addClass('collapsing') - .removeClass('collapse') - .removeClass('in') + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() - this.transitioning = 1 + this.$element[dimension](this.$element[dimension]())[0].offsetHeight - var complete = function () { - this.transitioning = 0 - this.$element - .trigger('hidden.bs.collapse') - .removeClass('collapsing') - .addClass('collapse') - } + this.$element + .addClass('collapsing') + .removeClass('collapse in') - if (!$.support.transition) return complete.call(this) + this.transitioning = 1 + var complete = function () { + this.transitioning = 0 this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(350) + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') } - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } + if (!$.support.transition) return complete.call(this) + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } - // COLLAPSE PLUGIN DEFINITION - // ========================== + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - if (!data && options.toggle && option == 'show') option = !option - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } + // COLLAPSE PLUGIN DEFINITION + // ========================== - var old = $.fn.collapse + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + var old = $.fn.collapse - // COLLAPSE NO CONFLICT - // ==================== + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } + // COLLAPSE NO CONFLICT + // ==================== - // COLLAPSE DATA-API - // ================= + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var href - var $this = $(this) - var target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $target = $(target) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - var parent = $this.attr('data-parent') - var $parent = parent && $(parent) - - if (!data || !data.transitioning) { - if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - } - - Plugin.call($target, option) - }) + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var href + var $this = $(this) + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this.toggleClass('collapsed', $target.hasClass('in')) + } + + Plugin.call($target, option) }) -}(); +}(jQuery); |
