aboutsummaryrefslogtreecommitdiff
path: root/js/button.js
diff options
context:
space:
mode:
authorChris Rebert <[email protected]>2014-06-23 11:07:18 -0700
committerChris Rebert <[email protected]>2014-06-23 11:11:59 -0700
commitc2c19a4d2d45d8ccb5c84d293dea35a94148c9a4 (patch)
treef12ed485a1a3f84ce60c6a195e8efca27f418042 /js/button.js
parentbc895a4b43ecfd2ad8c3793fdd6d8bada9d93186 (diff)
downloadbootstrap-c2c19a4d2d45d8ccb5c84d293dea35a94148c9a4.tar.xz
bootstrap-c2c19a4d2d45d8ccb5c84d293dea35a94148c9a4.zip
Revert UMD (#13772 & friends) for now, due to #13812.
Will hopefully revert this reversion and land a fully-working version of UMD in v3.3.0. Revert "some changes from #13801 - add strict mode back and ==" This reverts commit 2b302f69eea416bc85e7827b7d7a74d49f879662. Revert "Fix regression of #10038 introduced by #13772" This reverts commit e9d6756a1ac76a9db31a41e8e03f663bedc41b70. Revert "MD/CommonJS/Globals #12909" This reverts commit 1c6fa9010daf0d0c21de9e20fe6ac4dba1788d90. Revert "address #13811" This reverts commit f347d7d955bbb17234b8e12c68efae7d516ce62c. Conflicts: js/carousel.js js/collapse.js js/dropdown.js js/modal.js js/tab.js js/tooltip.js
Diffstat (limited to 'js/button.js')
-rw-r--r--js/button.js154
1 files changed, 74 insertions, 80 deletions
diff --git a/js/button.js b/js/button.js
index e96788c05..aa7145072 100644
--- a/js/button.js
+++ b/js/button.js
@@ -7,110 +7,104 @@
* ======================================================================== */
-+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 ($) {
+ // BUTTON PUBLIC CLASS DEFINITION
+ // ==============================
- // BUTTON PUBLIC CLASS DEFINITION
- // ==============================
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, Button.DEFAULTS, options)
+ this.isLoading = false
+ }
- var Button = function (element, options) {
- this.$element = $(element)
- this.options = $.extend({}, Button.DEFAULTS, options)
- this.isLoading = false
- }
-
- Button.VERSION = '3.1.1'
-
- Button.DEFAULTS = {
- loadingText: 'loading...'
- }
+ Button.VERSION = '3.1.1'
- Button.prototype.setState = function (state) {
- var d = 'disabled'
- var $el = this.$element
- var val = $el.is('input') ? 'val' : 'html'
- var data = $el.data()
+ Button.DEFAULTS = {
+ loadingText: 'loading...'
+ }
- state = state + 'Text'
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ var $el = this.$element
+ var val = $el.is('input') ? 'val' : 'html'
+ var data = $el.data()
- if (data.resetText == null) $el.data('resetText', $el[val]())
+ state = state + 'Text'
- $el[val](data[state] == null ? this.options[state] : data[state])
+ if (data.resetText == null) $el.data('resetText', $el[val]())
- // push to event loop to allow forms to submit
- setTimeout($.proxy(function () {
- if (state == 'loadingText') {
- this.isLoading = true
- $el.addClass(d).attr(d, d)
- } else if (this.isLoading) {
- this.isLoading = false
- $el.removeClass(d).removeAttr(d)
- }
- }, this), 0)
- }
+ $el[val](data[state] == null ? this.options[state] : data[state])
- Button.prototype.toggle = function () {
- var changed = true
- var $parent = this.$element.closest('[data-toggle="buttons"]')
-
- if ($parent.length) {
- var $input = this.$element.find('input')
- if ($input.prop('type') == 'radio') {
- if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
- else $parent.find('.active').removeClass('active')
- }
- if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
+ // push to event loop to allow forms to submit
+ setTimeout($.proxy(function () {
+ if (state == 'loadingText') {
+ this.isLoading = true
+ $el.addClass(d).attr(d, d)
+ } else if (this.isLoading) {
+ this.isLoading = false
+ $el.removeClass(d).removeAttr(d)
}
-
- if (changed) this.$element.toggleClass('active')
+ }, this), 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var changed = true
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+ if ($parent.length) {
+ var $input = this.$element.find('input')
+ if ($input.prop('type') == 'radio') {
+ if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
+ else $parent.find('.active').removeClass('active')
+ }
+ if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
}
+ if (changed) this.$element.toggleClass('active')
+ }
- // BUTTON PLUGIN DEFINITION
- // ========================
- function Plugin(option) {
- return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.button')
- var options = typeof option == 'object' && option
+ // BUTTON PLUGIN DEFINITION
+ // ========================
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
+ function Plugin(option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.button')
+ var options = typeof option == 'object' && option
- if (option == 'toggle') data.toggle()
- else if (option) data.setState(option)
- })
- }
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
- var old = $.fn.button
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
- $.fn.button = Plugin
- $.fn.button.Constructor = Button
+ var old = $.fn.button
+ $.fn.button = Plugin
+ $.fn.button.Constructor = Button
- // BUTTON NO CONFLICT
- // ==================
- $.fn.button.noConflict = function () {
- $.fn.button = old
- return this
- }
+ // BUTTON NO CONFLICT
+ // ==================
+ $.fn.button.noConflict = function () {
+ $.fn.button = old
+ return this
+ }
- // BUTTON DATA-API
- // ===============
- $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
- var $btn = $(e.target)
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
- Plugin.call($btn, 'toggle')
- e.preventDefault()
- })
+ // BUTTON DATA-API
+ // ===============
+ $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ Plugin.call($btn, 'toggle')
+ e.preventDefault()
})
-}();
+}(jQuery);