aboutsummaryrefslogtreecommitdiff
path: root/js/bootstrap-button.js
diff options
context:
space:
mode:
authorJacob Thornton <[email protected]>2011-11-27 17:31:12 -0800
committerJacob Thornton <[email protected]>2011-11-27 17:31:12 -0800
commit7eb340ec589acd56ad960a020969822636c2bc54 (patch)
tree83a2886faefd9c939c30a13e0d080d9f17b0610b /js/bootstrap-button.js
parent7522517b47521da731bf7a598d5e5a71721c4c44 (diff)
downloadbootstrap-7eb340ec589acd56ad960a020969822636c2bc54.tar.xz
bootstrap-7eb340ec589acd56ad960a020969822636c2bc54.zip
add code to reset data for collapsed element so that item can be intitialized with correct options
Diffstat (limited to 'js/bootstrap-button.js')
-rw-r--r--js/bootstrap-button.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/js/bootstrap-button.js b/js/bootstrap-button.js
new file mode 100644
index 000000000..1cafe4d68
--- /dev/null
+++ b/js/bootstrap-button.js
@@ -0,0 +1,96 @@
+/* ============================================================
+ * bootstrap-buttons.js v2.0.0
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * 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( $ ){
+
+ "use strict"
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.settings = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype = {
+
+ setState: function (state) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $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"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ $.fn.button = function ( option ) {
+ return this.each(function () {
+ 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)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Button = Button
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(function () {
+ $('body').delegate('[data-toggle^=button]', 'click.button.data-api', function (e) {
+ $(e.srcElement).button('toggle')
+ })
+ })
+
+}( window.jQuery || window.ender ) \ No newline at end of file