## Button toolbar
-Combine sets of button groups into button toolbars for more complex components.
+Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.
{% example html %}
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
- <div class="btn-group" role="group" aria-label="First group">
+ <div class="btn-group mr-2" role="group" aria-label="First group">
<button type="button" class="btn btn-secondary">1</button>
<button type="button" class="btn btn-secondary">2</button>
<button type="button" class="btn btn-secondary">3</button>
<button type="button" class="btn btn-secondary">4</button>
</div>
- <div class="btn-group" role="group" aria-label="Second group">
+ <div class="btn-group mr-2" role="group" aria-label="Second group">
<button type="button" class="btn btn-secondary">5</button>
<button type="button" class="btn btn-secondary">6</button>
<button type="button" class="btn btn-secondary">7</button>
Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**
+<div class="bd-example">
+ <div class="btn-group-vertical" role="group" aria-label="Vertical button group">
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ </div>
+</div>
+
+
<div class="bd-example">
<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
<button type="button" class="btn btn-secondary">Button</button>
.btn-group,
.btn-group-vertical {
position: relative;
- display: inline-block;
+ display: flex;
+ // display: inline-block;
vertical-align: middle; // match .btn alignment given font-size hack above
> .btn {
position: relative;
- float: left;
- margin-bottom: 0;
+ flex: 0 1 auto;
- // Bring the "active" button to the front
+ // Bring the hover, focused, and "active" buttons to the fron to overlay
+ // the borders properly
+ @include hover {
+ z-index: 2;
+ }
&:focus,
&:active,
&.active {
z-index: 2;
}
- @include hover {
- z-index: 2;
- }
}
-}
-// Prevent double borders when buttons are next to each other
-.btn-group {
+ // Prevent double borders when buttons are next to each other
.btn + .btn,
.btn + .btn-group,
.btn-group + .btn,
// Optional: Group multiple button groups together for a toolbar
.btn-toolbar {
- margin-left: -$btn-toolbar-margin; // Offset the first child's margin
- @include clearfix();
-
- .btn-group,
- .input-group {
- float: left;
- }
-
- > .btn,
- > .btn-group,
- > .input-group {
- margin-left: $btn-toolbar-margin;
- }
+ display: flex;
+ justify-content: flex-start;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
//
.btn-group-vertical {
- > .btn,
- > .btn-group,
- > .btn-group > .btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%;
- }
-
- // Clear floats so dropdown menus can be properly placed
- > .btn-group {
- @include clearfix();
-
- > .btn {
- float: none;
- }
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+
+ .btn,
+ .btn-group {
+ flex: 0 1 auto;
}
> .btn + .btn,