Skip to content

Commit

Permalink
star work on bootstrap-buttons.js
Browse files Browse the repository at this point in the history
  • Loading branch information
fat committed Oct 30, 2011
1 parent 9a30b8c commit e8b66a9
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 0 deletions.
50 changes: 50 additions & 0 deletions docs/javascript.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<script src="../js/bootstrap-dropdown.js"></script>
<script src="../js/bootstrap-scrollspy.js"></script>
<script src="../js/bootstrap-tabs.js"></script>
<script src="../js/bootstrap-buttons.js"></script>

<!-- Le styles -->
<link href="../bootstrap.css" rel="stylesheet">
Expand All @@ -48,6 +49,7 @@ <h3><a href="#">Bootstrap JS</a></h3>
<li><a href="#modal">Modals</a></li>
<li><a href="#dropdown">Dropdown</a></li>
<li><a href="#scrollspy">ScrollSpy</a></li>
<li><a href="#buttons">Buttons</a></li>
<li><a href="#tabs">Tabs</a></li>
<li><a href="#twipsy">Twipsy</a></li>
<li><a href="#popover">Popover</a></li>
Expand Down Expand Up @@ -312,6 +314,54 @@ <h3>Demo</h3>
</div>
</section>

<!-- Tabs
================================================== -->

<section id="buttons">
<div class="page-header">
<h1>Buttons <small>bootstrap-buttons.js</small></h1>
</div>
<div class="row">
<div class="span4 columns">
<p>This plugin offers additional functionality for managing button state.</p>
<a href="../js/bootstrap-buttons.js" target="_blank" class="btn primary">Download</a>
</div>
<div class="span12 columns">
<h3>Using bootstrap-buttons.js</h3>
<pre class="prettyprint linenums">$('.tabs').button()</pre>
<h3>Markup</h3>
<p>You can leverage bootstraps button toggle helper without writing any javascript by using the <code>data-toggle</code> attribute.</p>
<pre class="prettyprint linenums">&lt;button class="btn" data-toggle="toggle" &gt;...&lt;/button&gt;</pre>
<h3>Methods</h3>
<h4>$().button('loading')</h4>
<p>Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute <code>data-loading-text</code>.
</p>
<pre class="prettyprint linenums">&lt;button class="btn" data-loading-text="loading stuff..." &gt;...&lt;/button&gt;</pre>
<h4>$().button('reset')</h4>
<p>Resets button state - swaps text to original text.</p>
<h4>$().button(string)</h4>
<p>Resets button state - swaps text to any data defined text state.</p>
<pre class="prettyprint linenums">&lt;button class="btn" data-complete-text="finished!" &gt;...&lt;/button&gt;
&lt;script&gt;
$('.btn').button('complete')
&lt;/scrip&gt;</pre>
<h3>Demo</h3>
<button id="fat-btn" class="btn danger">Click me</button>
<script>
$(function() {
var btn = $('#fat-btn').click(function () {
btn.button('loading')
setTimeout(function () {
btn.button('reset')
}, 3000)
})
})
</script>
</div>
</div>
</section>


<!-- Tabs
================================================== -->

Expand Down
50 changes: 50 additions & 0 deletions js/bootstrap-buttons.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/* ============================================================
* bootstrap-dropdown.js v1.3.0
* http://twitter.github.com/bootstrap/javascript.html#dropdown
* ============================================================
* 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"

function setState(el, state) {
var d = 'disabled'
, $el = $(el)
, data = $el.data()

state = state + 'Text'
data.resetText || $el.data('resetText', $el.html())

$el.html( data[state] || $.fn.button.defaults[state] )

state == 'loadingText' ?
$el.addClass(d).attr(d, d) :
$el.removeClass(d).removeAttr(d)
}

$.fn.button = function(state) {
var d = 'disabled'
return this.each(function () {
state && setState(this, state)
})
}

$.fn.button.defaults = {
loadingText: 'loading...'
}

}( window.jQuery || window.ender );

0 comments on commit e8b66a9

Please sign in to comment.