@import "../../ionic.globals"; $button-font-size: 1.6rem !default; $button-margin: 0.4rem 0.2rem !default; $button-padding: 0 1em !default; $button-height: 2.8em !default; $button-border-radius: 4px !default; $button-round-padding: 0 2.6rem !default; $button-round-border-radius: 64px !default; $button-color: color(primary) !default; $button-color-activated: color-shade($button-color) !default; $button-text-color: inverse($button-color) !default; $button-hover-opacity: 0.8 !default; .button { position: relative; display: inline-flex; flex-shrink: 0; flex-flow: row nowrap; align-items: center; justify-content: center; transition: background-color, opacity 100ms linear; margin: $button-margin; padding: $button-padding; min-height: $button-height; line-height: 1; border: 1px solid #ccc; border: transparent; border-radius: $button-border-radius; font-size: $button-font-size; font-family: inherit; font-variant: inherit; font-style: inherit; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; text-align: center; text-transform: none; vertical-align: top; // the better option for most scenarios vertical-align: -webkit-baseline-middle; // the best for those that support it cursor: pointer; @include user-select-none(); @include appearance(none); background: $button-color; color: $button-text-color; &:hover:not(.disable-hover) { opacity: $button-hover-opacity; text-decoration: none; } &.activated { opacity: 1; background-color: $button-color-activated; } // Button Types // -------------------------------------------------- .button-block { display: flex; clear: both; margin-right: 0; margin-left: 0; width: 100%; &:after { clear: both; } } .button-full { width: 100%; margin-right: 0; margin-left: 0; border-radius: 0; border-right-width: 0; border-left-width: 0; } .button-round { border-radius: $button-round-border-radius; padding: $button-round-padding; } .button-disabled { opacity: 0.4; cursor: default !important; pointer-events: none; } } a[button] { text-decoration: none; } // TODO // button should have classes: // button, button-primary, button-secondary, etc. // button holds all styling with default primary color(will this affect outline/clear?) and // the other classes change the color // // button-clear should have classes: // button-clear, button-clear-primary, button-clear-secondary, etc. // button-clear holds all clear styling with default primary color and // the other classes change the color // // button-outline should have classes: // button-outline, button-outline-primary, button-outline-secondary, etc. // button-outline holds all outline styling with default primary color and // the other classes change the color // // button-block should stand alone // button-full should stand alone // button-round should stand alone // button-disabled should stand alone(?) // button-sizes should stand alone (button-small, button-large, etc) // button-fab errrrr // Default Button Color Mixin // -------------------------------------------------- @mixin button-default($bg-color, $bg-color-activated, $text-color) { background-color: $bg-color; color: $text-color; &.activated { background-color: $bg-color-activated; } } // Generate Default Button Colors // -------------------------------------------------- @each $color-name, $color-value in $colors { .button-#{$color-name} { $bg-color: $color-value; $bg-color-activated: color-shade($bg-color); $text-color: inverse($bg-color); @include button-default($bg-color, $bg-color-activated, $text-color); } }