]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Merge remote-tracking branch 'bootstrap/3.0.0-wip' into 3.0.0-wip
authorIvan Khalopik <ikhalopik@gmail.com>
Mon, 27 May 2013 08:06:31 +0000 (11:06 +0300)
committerIvan Khalopik <ikhalopik@gmail.com>
Mon, 27 May 2013 08:06:31 +0000 (11:06 +0300)
Conflicts:
js/bootstrap-collapse.js

1  2 
js/collapse.js
js/tests/unit/collapse.js

diff --cc js/collapse.js
index 0000000000000000000000000000000000000000,f8b65b393f8bae8459929ad8621ccc22ab71427a..7a179653276987a3ec690155bcb9647ffd6d2eac
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,153 +1,156 @@@
+ /* ========================================================================
+  * Bootstrap: collapse.js v3.0.0
+  * http://twitter.github.com/bootstrap/javascript.html#collapse
+  * ========================================================================
+  * 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";
+   // COLLAPSE PUBLIC CLASS DEFINITION
+   // ================================
+   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()
+   }
+   Collapse.DEFAULTS = {
+     toggle: true
+   }
+   Collapse.prototype.dimension = function () {
+     var hasWidth = this.$element.hasClass('width')
+     return hasWidth ? 'width' : 'height'
+   }
+   Collapse.prototype.show = function () {
+     if (this.transitioning || this.$element.hasClass('in')) return
+     var dimension = this.dimension()
+     var scroll    = $.camelCase(['scroll', dimension].join('-'))
+     var actives   = this.$parent && this.$parent.find('> .accordion-group > .in')
+     if (actives && actives.length) {
+       var hasData = actives.data('collapse')
+       if (hasData && hasData.transitioning) return
+       actives.collapse('hide')
+       hasData || actives.data('collapse', null)
+     }
+     this.$element[dimension](0)
+     this.transition('addClass', $.Event('show.bs.collapse'), 'shown.bs.collapse')
+     if ($.support.transition) this.$element[dimension](this.$element[0][scroll])
+   }
+   Collapse.prototype.hide = function () {
+     if (this.transitioning || !this.$element.hasClass('in')) return
+     var dimension = this.dimension()
+     this.reset(this.$element[dimension]())
+     this.transition('removeClass', $.Event('hide.bs.collapse'), 'hidden')
+     this.$element[dimension](0)
+   }
+   Collapse.prototype.reset = function (size) {
+     var dimension = this.dimension()
+     this.$element
+       .removeClass('collapse')
+       [dimension](size || 'auto')
+       [0].offsetWidth
+     this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+     return this
+   }
+   Collapse.prototype.transition = function (method, startEvent, completeEvent) {
+     var that     = this
+     var complete = function () {
+       if (startEvent.type == 'show') that.reset()
+       that.transitioning = 0
+       that.$element.trigger(completeEvent)
+     }
+     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()
+   }
+   Collapse.prototype.toggle = function () {
+     this[this.$element.hasClass('in') ? 'hide' : 'show']()
+   }
+   // COLLAPSE PLUGIN DEFINITION
+   // ==========================
+   var old = $.fn.collapse
+   $.fn.collapse = function (option) {
+     return this.each(function () {
+       var $this   = $(this)
+       var data    = $this.data('collapse')
+       var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+       if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+       if (typeof option == 'string') data[option]()
+     })
+   }
+   $.fn.collapse.Constructor = Collapse
+   // COLLAPSE NO CONFLICT
+   // ====================
+   $.fn.collapse.noConflict = function () {
+     $.fn.collapse = old
+     return this
+   }
+   // COLLAPSE DATA-API
+   // =================
+   $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
+     var $this  = $(this), href
+     var target = $this.attr('data-target')
+         || e.preventDefault()
+         || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+     var option = $(target).data('collapse') ? 'toggle' : $this.data()
++    var parent = $this.attr('data-parent')
++    var $parent = parent && $(parent)
++    if ($parent) $parent.find('[data-toggle=collapse][data-parent=' + parent + ']').not($this).addClass('collapsed')
+     $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+     $(target).collapse(option)
+   })
+ }(window.jQuery);
index dbbf5dcf1fad8eb6db5093a3af919aef2edc4473,dd2cee27dbb51068cf295b572d343000c1e61789..73799c75dd55febf439e40bacb4bffaa03aba80f
@@@ -91,39 -91,4 +91,39 @@@ $(function () 
          target.click()
        })
  
-           .on('show', function () {
 +      test("should remove active class from inactive accordion targets", function () {
 +        $.support.transition = false
 +        stop()
 +
 +        var accordion = $('<div id="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
 +          .appendTo($('#qunit-fixture'))
 +
 +        var target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"></a>')
 +          .appendTo(accordion.find('.accordion-group').eq(0))
 +
 +        var collapsible1 = $('<div id="body1" class="in"></div>')
 +          .appendTo(accordion.find('.accordion-group').eq(0))
 +
 +        var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent="#accordion"></a>')
 +          .appendTo(accordion.find('.accordion-group').eq(1))
 +
 +        var collapsible2 = $('<div id="body2"></div>')
 +          .appendTo(accordion.find('.accordion-group').eq(1))
 +
 +        var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent="#accordion"></a>')
 +          .appendTo(accordion.find('.accordion-group').eq(2))
 +
 +        var collapsible3 = $('<div id="body3"></div>')
 +          .appendTo(accordion.find('.accordion-group').eq(2))
- })
++          .on('show.bs.collapse', function () {
 +            ok(target1.hasClass('collapsed'))
 +            ok(target2.hasClass('collapsed'))
 +            ok(!target3.hasClass('collapsed'))
 +
 +            start()
 +          })
 +
 +        target3.click()
 +      })
 +
+ })