]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
refactor dropdown in accordance with readme
authorJacob Thornton <jacobthornton@gmail.com>
Fri, 25 Nov 2011 03:40:25 +0000 (19:40 -0800)
committerJacob Thornton <jacobthornton@gmail.com>
Fri, 25 Nov 2011 03:40:25 +0000 (19:40 -0800)
js/bootstrap-accordion.js [deleted file]
js/bootstrap-alerts.js
js/bootstrap-buttons.js
js/bootstrap-dropdown.js

diff --git a/js/bootstrap-accordion.js b/js/bootstrap-accordion.js
deleted file mode 100644 (file)
index 9a24b5d..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* =============================================================
- * bootstrap-accordion.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#accordion
- * =============================================================
- * Copyright 2011 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( $ ){
-
-  var Accordion = function ( element, options ) {}
-
-  Accordion.prototype = {}
-
-  /* ALERT PLUGIN DEFINITION
-   * ======================= */
-
-  $.fn.accordion = function ( options ) {
-
-    if ( options === true ) {
-     return this.data('accordion')
-    }
-
-    return this.each(function () {
-      new Accordion(this, options)
-    })
-  }
-
-
-})( window.jQuery || window.ender )
\ No newline at end of file
index 565f83193640a8bb41cbc981ec62b48ad0b1d89a..fabafa4f921015623fac6d7e16fe4db015147b13 100644 (file)
@@ -26,7 +26,7 @@
   * ====================== */
 
   var dismiss = '[data-dismiss="alert"]'
-    , Alert = function ( el, close ) {
+    , Alert = function ( el ) {
         $(el).delegate(dismiss, 'click', this.close)
       }
 
@@ -36,7 +36,6 @@
       var $element = $(this)
 
       $element = $element.hasClass('alert-message') ? $element : $element.parent()
-
       e && e.preventDefault()
       $element.removeClass('in')
 
  /* ALERT PLUGIN DEFINITION
   * ======================= */
 
-  $.fn.alert = function ( options ) {
+  $.fn.alert = function ( option ) {
     return this.each(function () {
       var $this = $(this)
         , data = $this.data('alert')
       if (!data) $this.data('alert', (data = new Alert(this)))
-      if (typeof options == 'string') data[options].call($this)
+      if (typeof option == 'string') data[option].call($this)
     })
   }
 
index 5ca678df8bb745fe7e480915c3e0136383c6efe3..82d80df2d9acf1af347165f069b7187976d70501 100644 (file)
  /* BUTTON PUBLIC CLASS DEFINITION
   * ============================== */
 
-  var Button
+  var Button = function (element, options) {
+    this.$element = $(element)
+    this.settings = $.extend({}, $.fn.button.defaults, options)
+  }
 
-  function setState(el, state) {
-    var d = 'disabled'
-      , $el = $(el)
-      , data = $el.data()
-      , val = $el.is('input') ? 'val' : 'html'
+  Button.prototype = {
 
-    state = state + 'Text'
-    data.resetText || $el.data('resetText', $el[val]())
+      setState: function (state) {
+        var d = 'disabled'
+          , $el = this.$element
+          , data = $el.data()
+          , val = $el.is('input') ? 'val' : 'html'
 
-    $el[val]( data[state] || $.fn.button.defaults[state] )
+        state = state + 'Text'
+        data.resetText || $el.data('resetText', $el[val]())
 
-    setTimeout(function () {
-      state == 'loadingText' ?
-        $el.addClass(d).attr(d, d) :
-        $el.removeClass(d).removeAttr(d)
-    }, 0)
-  }
+        $el[val](data[state] || this.settings[state])
+
+        // push to event loop to allow forms to submit
+        setTimeout(function () {
+          state == 'loadingText' ?
+            $el.addClass(d).attr(d, d) :
+            $el.removeClass(d).removeAttr(d)
+        }, 0)
+      }
+
+    , toggle: function () {
+        var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
 
-  function toggle(el) {
-    var $el = $(el)
-      , $parent = $el.parent('[data-toggle="buttons-radio"]')
+        $parent && $parent
+          .find('.active')
+          .removeClass('active')
 
-    $parent && $parent
-      .find('.active')
-      .removeClass('active')
+        this.$element.toggleClass('active')
+      }
 
-    $el.toggleClass('active')
   }
 
 
  /* BUTTON PLUGIN DEFINITION
   * ======================== */
 
-  $.fn.button = function(options) {
+  $.fn.button = function ( option ) {
     return this.each(function () {
-      if (options == 'toggle') return toggle(this)
-      options && setState(this, options)
+      var $this = $(this)
+        , data = $this.data('button')
+        , options = typeof option == 'object' && option
+      if (!data) $this.data('button', (data = new Button(this, options)))
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
     })
   }
 
index ef243fc6f641d2af587fcbe16b3d95bc7caab17f..4526a9203b0a30a980cc3e9b360f463aeab690be 100644 (file)
 
   "use strict"
 
-  /* SIMPLE DROPDOWN LOGIC
-   * ===================== */
+ /* DROPDOWN CLASS DEFINITION
+  * ========================= */
 
-  var s = '[data-toggle="dropdown"]'
+  var toggle = '[data-toggle="dropdown"]'
+    , Dropdown = function ( element ) {
+        $(element).bind('click', this.toggle)
+      }
 
-  function clearMenus() {
-    $(s).parent('li').removeClass('open')
-  }
+  Dropdown.prototype = {
+
+    toggle: function ( e ) {
+      var li = $(this).parent('li')
+        , isActive = li.hasClass('open')
 
-  function toggle(e) {
-    var li = $(this).parent('li')
-      , isActive = li.hasClass('open')
+      clearMenus()
+      !isActive && li.toggleClass('open')
 
-    clearMenus()
-    !isActive && li.toggleClass('open')
+      return false
+    }
 
-    return false
+  }
+
+  function clearMenus() {
+    $(toggle).parent('li').removeClass('open')
   }
 
 
   /* DROPDOWN PLUGIN DEFINITION
    * ========================== */
 
-  $.fn.dropdown = function ( selector ) {
+  $.fn.dropdown = function ( option ) {
     return this.each(function () {
-      var args = ['click', toggle]
-        , $this = $(this)
-      selector && args.unshift(selector)
-      $this[selector ? 'delegate' : 'bind'].apply($this, args)
+      var $this = $(this)
+        , data = $this.data('dropdown')
+      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
     })
   }
 
@@ -59,8 +66,8 @@
    * =================================== */
 
   $(function () {
-    $('html').bind("click.dropdown.data-api", clearMenus)
-    $('body').dropdown(s)
+    $('html').bind('click.dropdown.data-api', clearMenus)
+    $('body').delegate(toggle, 'click.dropdown.data-api', Dropdown.prototype.toggle)
   })
 
 }( window.jQuery || window.ender );
\ No newline at end of file