195 lines
4.4 KiB
SCSS
195 lines
4.4 KiB
SCSS
// Foundation for Sites by ZURB
|
|
// foundation.zurb.com
|
|
// Licensed under MIT Open Source
|
|
|
|
////
|
|
/// @group button-group
|
|
////
|
|
|
|
/// Margin for button groups.
|
|
/// @type Number
|
|
$buttongroup-margin: 1rem !default;
|
|
|
|
/// Margin between buttons in a button group.
|
|
/// @type Border
|
|
$buttongroup-spacing: 1px !default;
|
|
|
|
/// Selector for the buttons inside a button group.
|
|
/// @type String
|
|
$buttongroup-child-selector: '.button' !default;
|
|
|
|
/// Maximum number of buttons that can be in an even-width button group.
|
|
/// @type Number
|
|
$buttongroup-expand-max: 6 !default;
|
|
|
|
/// Add styles for a button group container.
|
|
/// @param {String} $child-selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.
|
|
@mixin button-group(
|
|
$child-selector: $buttongroup-child-selector
|
|
) {
|
|
@include clearfix;
|
|
margin-bottom: $buttongroup-margin;
|
|
|
|
@if $global-flexbox {
|
|
display: flex;
|
|
flex-wrap: nowrap;
|
|
align-items: stretch;
|
|
}
|
|
@else {
|
|
font-size: 0;
|
|
}
|
|
|
|
#{$child-selector} {
|
|
margin: 0;
|
|
margin-#{$global-right}: $buttongroup-spacing;
|
|
margin-bottom: $buttongroup-spacing;
|
|
font-size: map-get($button-sizes, default);
|
|
|
|
@if $global-flexbox {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
&:last-child {
|
|
margin-#{$global-right}: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Creates a full-width button group, making each button equal width.
|
|
/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.
|
|
@mixin button-group-expand(
|
|
$selector: $buttongroup-child-selector,
|
|
$count: null
|
|
) {
|
|
@if not $global-flexbox {
|
|
margin-#{$global-right}: -$buttongroup-spacing;
|
|
|
|
&::before,
|
|
&::after {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
// scss-lint:disable ZeroUnit
|
|
#{$selector} {
|
|
@if $global-flexbox {
|
|
flex: 1 1 0px;
|
|
}
|
|
@else {
|
|
@for $i from 2 through $buttongroup-expand-max {
|
|
&:first-child:nth-last-child(#{$i}) {
|
|
&, &:first-child:nth-last-child(#{$i}) ~ #{$selector} {
|
|
display: inline-block;
|
|
width: calc(#{percentage(1 / $i)} - #{$buttongroup-spacing});
|
|
margin-#{$global-right}: $buttongroup-spacing;
|
|
|
|
&:last-child {
|
|
margin-#{$global-right}: $buttongroup-spacing * -$buttongroup-expand-max;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Stacks the buttons in a button group.
|
|
/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.
|
|
@mixin button-group-stack(
|
|
$selector: $buttongroup-child-selector
|
|
) {
|
|
@if $global-flexbox {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
#{$selector} {
|
|
@if $global-flexbox {
|
|
flex: 0 0 100%;
|
|
}
|
|
@else {
|
|
width: 100%;
|
|
}
|
|
|
|
&:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Un-stacks the buttons in a button group.
|
|
/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.
|
|
@mixin button-group-unstack(
|
|
$selector: $buttongroup-child-selector
|
|
) {
|
|
// scss-lint:disable ZeroUnit
|
|
#{$selector} {
|
|
@if $global-flexbox {
|
|
flex: 1 1 0px;
|
|
}
|
|
@else {
|
|
width: auto;
|
|
}
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
@mixin foundation-button-group {
|
|
.button-group {
|
|
@include button-group;
|
|
|
|
// Sizes
|
|
@each $size, $value in map-remove($button-sizes, default) {
|
|
&.#{$size} #{$buttongroup-child-selector} {
|
|
font-size: $value;
|
|
}
|
|
}
|
|
|
|
// Even-width Group
|
|
&.expanded { @include button-group-expand; }
|
|
|
|
// Colors
|
|
@each $name, $color in $foundation-palette {
|
|
@if $button-fill != hollow {
|
|
&.#{$name} #{$buttongroup-child-selector} {
|
|
@include button-style($color, auto, auto);
|
|
}
|
|
}
|
|
@else {
|
|
&.#{$name} #{$buttongroup-child-selector} {
|
|
@include button-hollow;
|
|
@include button-hollow-style($color);
|
|
}
|
|
}
|
|
}
|
|
|
|
&.stacked,
|
|
&.stacked-for-small,
|
|
&.stacked-for-medium {
|
|
@include button-group-stack;
|
|
}
|
|
|
|
&.stacked-for-small {
|
|
@include breakpoint(medium) {
|
|
@include button-group-unstack;
|
|
}
|
|
}
|
|
|
|
&.stacked-for-medium {
|
|
@include breakpoint(large) {
|
|
@include button-group-unstack;
|
|
}
|
|
}
|
|
|
|
// scss-lint:disable MergeableSelector
|
|
&.stacked-for-small.expanded {
|
|
@include breakpoint(small only) {
|
|
display: block;
|
|
|
|
#{$buttongroup-child-selector} {
|
|
display: block;
|
|
margin-#{$global-right}: 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|