Skip to content

Commit

Permalink
Changes:
Browse files Browse the repository at this point in the history
* Allow the Button component to work with elements other than `<div class="btn-group">`
* doc updates
  • Loading branch information
thednp committed Oct 13, 2017
1 parent e8263cf commit 9cc6d3c
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 30 deletions.
21 changes: 10 additions & 11 deletions dist/bootstrap-native-v4.js
Original file line number Diff line number Diff line change
Expand Up @@ -389,18 +389,17 @@
};

// init
if ( hasClass(element,'btn-group') ) {
if ( !( stringButton in element ) ) { // prevent adding event handlers twice
on( element, clickEvent, toggle );
}
// activate items on load
var labelsToACtivate = getElementsByClassName(element, 'btn'), lbll = labelsToACtivate[length];
for (var i=0; i<lbll; i++) {
!hasClass(labelsToACtivate[i],active) && queryElement('input:checked',labelsToACtivate[i])
&& addClass(labelsToACtivate[i],active);
}
element[stringButton] = this;
if ( !( stringButton in element ) ) { // prevent adding event handlers twice
on( element, clickEvent, toggle );
}

// activate items on load
var labelsToACtivate = getElementsByClassName(element, 'btn'), lbll = labelsToACtivate[length];
for (var i=0; i<lbll; i++) {
!hasClass(labelsToACtivate[i],active) && queryElement('input:checked',labelsToACtivate[i])
&& addClass(labelsToACtivate[i],active);
}
element[stringButton] = this;
};

// BUTTON DATA API
Expand Down
2 changes: 1 addition & 1 deletion dist/bootstrap-native-v4.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions dist/bootstrap-native.js
Original file line number Diff line number Diff line change
Expand Up @@ -545,16 +545,16 @@
if ( option !== reset ) { setState(); }
else { resetState(); }
}
}
if ( hasClass(element,'btn-group') ) {
} else { // if ( hasClass(element,'btn-group') ) // we allow the script to work outside btn-group component
if ( !( stringButton in element ) ) { // prevent adding event handlers twice
on( element, clickEvent, toggle );
}

// activate items on load
var labelsToACtivate = getElementsByClassName(element, 'btn'), lbll = labelsToACtivate[length];
for (var i=0; i<lbll; i++) {
!hasClass(labelsToACtivate[l],active) && queryElement('input',labelsToACtivate[l])[getAttribute](checked)
!hasClass(labelsToACtivate[i],active) && queryElement('input',labelsToACtivate[i])[getAttribute](checked)
&& addClass(labelsToACtivate[i],active);
}
element[stringButton] = this;
Expand Down
2 changes: 1 addition & 1 deletion dist/bootstrap-native.min.js

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2230,6 +2230,24 @@ <h5>Radios / Checkboxes Toggling</h5>
</span>
</p>

<p>In addition, the component will also work outside the <code>&lt;div class="btn-group"&gt;</code>.</p>
<p>
<span data-toggle="buttons">
<label class="btn btn-default">
<span class="glyphicon glyphicon-ok-sign"></span>
<input type="radio" name="options" id="option1" autocomplete="off"> Radio 1
</label>
<label class="btn btn-default active">
<span class="glyphicon glyphicon-ok-sign"></span>
<input type="radio" name="options" id="option2" autocomplete="off" checked> Radio 2 (preselected)
</label>
<label class="btn btn-default">
<span class="glyphicon glyphicon-ok-sign"></span>
<input type="radio" name="options" id="option3" autocomplete="off"> Radio 3
</label>
</span>
</p>

</section>
</section>

Expand Down
6 changes: 3 additions & 3 deletions lib/V3/button-native.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,16 @@ var Button = function( element, option ) {
if ( option !== reset ) { setState(); }
else { resetState(); }
}
}
if ( hasClass(element,'btn-group') ) {
} else { // if ( hasClass(element,'btn-group') ) // we allow the script to work outside btn-group component
if ( !( stringButton in element ) ) { // prevent adding event handlers twice
on( element, clickEvent, toggle );
}

// activate items on load
var labelsToACtivate = getElementsByClassName(element, 'btn'), lbll = labelsToACtivate[length];
for (var i=0; i<lbll; i++) {
!hasClass(labelsToACtivate[l],active) && queryElement('input',labelsToACtivate[l])[getAttribute](checked)
!hasClass(labelsToACtivate[i],active) && queryElement('input',labelsToACtivate[i])[getAttribute](checked)
&& addClass(labelsToACtivate[i],active);
}
element[stringButton] = this;
Expand Down
21 changes: 10 additions & 11 deletions lib/V4/button-native.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,17 @@ var Button = function( element ) {
};

// init
if ( hasClass(element,'btn-group') ) {
if ( !( stringButton in element ) ) { // prevent adding event handlers twice
on( element, clickEvent, toggle );
}
// activate items on load
var labelsToACtivate = getElementsByClassName(element, 'btn'), lbll = labelsToACtivate[length];
for (var i=0; i<lbll; i++) {
!hasClass(labelsToACtivate[i],active) && queryElement('input:checked',labelsToACtivate[i])
&& addClass(labelsToACtivate[i],active);
}
element[stringButton] = this;
if ( !( stringButton in element ) ) { // prevent adding event handlers twice
on( element, clickEvent, toggle );
}

// activate items on load
var labelsToACtivate = getElementsByClassName(element, 'btn'), lbll = labelsToACtivate[length];
for (var i=0; i<lbll; i++) {
!hasClass(labelsToACtivate[i],active) && queryElement('input:checked',labelsToACtivate[i])
&& addClass(labelsToACtivate[i],active);
}
element[stringButton] = this;
};

// BUTTON DATA API
Expand Down

0 comments on commit 9cc6d3c

Please sign in to comment.