aboutsummaryrefslogtreecommitdiff
path: root/js/bootstrap-collapse.js
diff options
context:
space:
mode:
authorJacob Thornton <[email protected]>2012-04-24 02:21:45 -0700
committerJacob Thornton <[email protected]>2012-04-24 02:21:45 -0700
commite659dc7e1be2e09cec34703dce8c737496e3504e (patch)
treebe3caed12a3de1218e1fd548f2564302e6c8193a /js/bootstrap-collapse.js
parent6506ede6323ee60d4d7f8171937d92141a64e09e (diff)
parent839ef3a030b355d0f0c35d6c9e42ecba8b072036 (diff)
downloadbootstrap-e659dc7e1be2e09cec34703dce8c737496e3504e.tar.xz
bootstrap-e659dc7e1be2e09cec34703dce8c737496e3504e.zip
Merge branch '2.0.3-wip'
Conflicts: Makefile docs/assets/js/bootstrap.js docs/assets/js/bootstrap.min.js
Diffstat (limited to 'js/bootstrap-collapse.js')
-rw-r--r--js/bootstrap-collapse.js69
1 files changed, 44 insertions, 25 deletions
diff --git a/js/bootstrap-collapse.js b/js/bootstrap-collapse.js
index 9a364468b..4cd412c73 100644
--- a/js/bootstrap-collapse.js
+++ b/js/bootstrap-collapse.js
@@ -1,5 +1,5 @@
/* =============================================================
- * bootstrap-collapse.js v2.0.2
+ * bootstrap-collapse.js v2.0.3
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.
@@ -17,16 +17,21 @@
* limitations under the License.
* ============================================================ */
-!function( $ ){
- "use strict"
+!function ($) {
- var Collapse = function ( element, options ) {
- this.$element = $(element)
+ "use strict"; // jshint ;_;
+
+
+ /* COLLAPSE PUBLIC CLASS DEFINITION
+ * ================================ */
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
this.options = $.extend({}, $.fn.collapse.defaults, options)
- if (this.options["parent"]) {
- this.$parent = $(this.options["parent"])
+ if (this.options.parent) {
+ this.$parent = $(this.options.parent)
}
this.options.toggle && this.toggle()
@@ -42,31 +47,39 @@
}
, show: function () {
- var dimension = this.dimension()
- , scroll = $.camelCase(['scroll', dimension].join('-'))
- , actives = this.$parent && this.$parent.find('.in')
+ var dimension
+ , scroll
+ , actives
, hasData
+ if (this.transitioning) return
+
+ dimension = this.dimension()
+ scroll = $.camelCase(['scroll', dimension].join('-'))
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
+
if (actives && actives.length) {
hasData = actives.data('collapse')
+ if (hasData && hasData.transitioning) return
actives.collapse('hide')
hasData || actives.data('collapse', null)
}
this.$element[dimension](0)
- this.transition('addClass', 'show', 'shown')
+ this.transition('addClass', $.Event('show'), 'shown')
this.$element[dimension](this.$element[0][scroll])
-
}
, hide: function () {
- var dimension = this.dimension()
+ var dimension
+ if (this.transitioning) return
+ dimension = this.dimension()
this.reset(this.$element[dimension]())
- this.transition('removeClass', 'hide', 'hidden')
+ this.transition('removeClass', $.Event('hide'), 'hidden')
this.$element[dimension](0)
}
- , reset: function ( size ) {
+ , reset: function (size) {
var dimension = this.dimension()
this.$element
@@ -74,37 +87,43 @@
[dimension](size || 'auto')
[0].offsetWidth
- this.$element[size ? 'addClass' : 'removeClass']('collapse')
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
return this
}
- , transition: function ( method, startEvent, completeEvent ) {
+ , transition: function (method, startEvent, completeEvent) {
var that = this
, complete = function () {
if (startEvent == 'show') that.reset()
+ that.transitioning = 0
that.$element.trigger(completeEvent)
}
- this.$element
- .trigger(startEvent)
- [method]('in')
+ this.$element.trigger(startEvent)
+
+ if (startEvent.isDefaultPrevented()) return
+
+ this.transitioning = 1
+
+ this.$element[method]('in')
$.support.transition && this.$element.hasClass('collapse') ?
this.$element.one($.support.transition.end, complete) :
complete()
- }
+ }
, toggle: function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
- }
+ }
}
- /* COLLAPSIBLE PLUGIN DEFINITION
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
* ============================== */
- $.fn.collapse = function ( option ) {
+ $.fn.collapse = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('collapse')
@@ -135,4 +154,4 @@
})
})
-}( window.jQuery ); \ No newline at end of file
+}(window.jQuery); \ No newline at end of file