Mercurial > wikked
comparison static/bootstrap/js/bootstrap-button.js @ 61:130eccd396d8
Now using Boostrap with LESS.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 06 Feb 2013 08:22:31 -0800 |
parents | |
children | a5a3d454eac9 |
comparison
equal
deleted
inserted
replaced
60:8250c977bc50 | 61:130eccd396d8 |
---|---|
1 /* ============================================================ | |
2 * bootstrap-button.js v2.2.2 | |
3 * http://twitter.github.com/bootstrap/javascript.html#buttons | |
4 * ============================================================ | |
5 * Copyright 2012 Twitter, Inc. | |
6 * | |
7 * Licensed under the Apache License, Version 2.0 (the "License"); | |
8 * you may not use this file except in compliance with the License. | |
9 * You may obtain a copy of the License at | |
10 * | |
11 * http://www.apache.org/licenses/LICENSE-2.0 | |
12 * | |
13 * Unless required by applicable law or agreed to in writing, software | |
14 * distributed under the License is distributed on an "AS IS" BASIS, | |
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
16 * See the License for the specific language governing permissions and | |
17 * limitations under the License. | |
18 * ============================================================ */ | |
19 | |
20 | |
21 !function ($) { | |
22 | |
23 "use strict"; // jshint ;_; | |
24 | |
25 | |
26 /* BUTTON PUBLIC CLASS DEFINITION | |
27 * ============================== */ | |
28 | |
29 var Button = function (element, options) { | |
30 this.$element = $(element) | |
31 this.options = $.extend({}, $.fn.button.defaults, options) | |
32 } | |
33 | |
34 Button.prototype.setState = function (state) { | |
35 var d = 'disabled' | |
36 , $el = this.$element | |
37 , data = $el.data() | |
38 , val = $el.is('input') ? 'val' : 'html' | |
39 | |
40 state = state + 'Text' | |
41 data.resetText || $el.data('resetText', $el[val]()) | |
42 | |
43 $el[val](data[state] || this.options[state]) | |
44 | |
45 // push to event loop to allow forms to submit | |
46 setTimeout(function () { | |
47 state == 'loadingText' ? | |
48 $el.addClass(d).attr(d, d) : | |
49 $el.removeClass(d).removeAttr(d) | |
50 }, 0) | |
51 } | |
52 | |
53 Button.prototype.toggle = function () { | |
54 var $parent = this.$element.closest('[data-toggle="buttons-radio"]') | |
55 | |
56 $parent && $parent | |
57 .find('.active') | |
58 .removeClass('active') | |
59 | |
60 this.$element.toggleClass('active') | |
61 } | |
62 | |
63 | |
64 /* BUTTON PLUGIN DEFINITION | |
65 * ======================== */ | |
66 | |
67 var old = $.fn.button | |
68 | |
69 $.fn.button = function (option) { | |
70 return this.each(function () { | |
71 var $this = $(this) | |
72 , data = $this.data('button') | |
73 , options = typeof option == 'object' && option | |
74 if (!data) $this.data('button', (data = new Button(this, options))) | |
75 if (option == 'toggle') data.toggle() | |
76 else if (option) data.setState(option) | |
77 }) | |
78 } | |
79 | |
80 $.fn.button.defaults = { | |
81 loadingText: 'loading...' | |
82 } | |
83 | |
84 $.fn.button.Constructor = Button | |
85 | |
86 | |
87 /* BUTTON NO CONFLICT | |
88 * ================== */ | |
89 | |
90 $.fn.button.noConflict = function () { | |
91 $.fn.button = old | |
92 return this | |
93 } | |
94 | |
95 | |
96 /* BUTTON DATA-API | |
97 * =============== */ | |
98 | |
99 $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { | |
100 var $btn = $(e.target) | |
101 if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') | |
102 $btn.button('toggle') | |
103 }) | |
104 | |
105 }(window.jQuery); |