Files
Brandy Carney ff1a8ac6c7 feat(sass): add the ability to pass a contrast color in the colors map to iOS
this adds the functions necessary for the other modes as well

BREAKING CHANGE:

Can now pass contrast to the colors map:

```
$colors-ios: (

  primary: (
    base: #327eff,
    contrast: yellow
  ),
  secondary: (
    base: #32db64,
    contrast: hotpink
  ),
  danger: #d91e18,
  light: #f4f4f4,
  dark: #222
) !default;
```

references #5445
2016-03-22 17:14:39 -04:00

152 lines
4.5 KiB
SCSS

@import "../../globals.ios";
@import "./segment";
// iOS Segment
// --------------------------------------------------
$segment-button-ios-background-color: transparent !default;
$segment-button-ios-background-color-activated: $toolbar-ios-active-color !default;
$segment-button-ios-text-color: color-contrast($colors-ios, $segment-button-ios-background-color-activated) !default;
$segment-button-ios-activated-transition: 100ms all linear !default;
$segment-button-ios-hover-transition: 100ms all linear !default;
$segment-button-ios-active-transition: 100ms all linear !default;
$segment-button-ios-hover-opacity: .1 !default;
$segment-button-ios-active-opacity: .16 !default;
$segment-button-ios-border-width: 1px !default;
$segment-button-ios-height: 3.2rem !default;
$segment-button-ios-line-height: 3rem !default;
$segment-button-ios-font-size: 1.3rem !default;
$segment-button-ios-border-radius: 4px !default;
$segment-button-ios-icon-size: 2.6rem !default;
$segment-button-ios-icon-line-height: 2.8rem !default;
$segment-button-ios-toolbar-button-max-width: 100px !default;
$segment-button-ios-toolbar-button-height: 2.6rem !default;
$segment-button-ios-toolbar-line-height: 2.5rem !default;
$segment-button-ios-toolbar-font-size: 1.2rem !default;
$segment-button-ios-toolbar-icon-size: 2.2rem !default;
$segment-button-ios-toolbar-icon-line-height: 2.4rem !default;
.segment-button {
flex: 1;
width: 0;
height: $segment-button-ios-height;
border-width: $segment-button-ios-border-width;
border-style: solid;
border-color: $segment-button-ios-background-color-activated;
font-size: $segment-button-ios-font-size;
line-height: $segment-button-ios-line-height;
color: $segment-button-ios-background-color-activated;
background-color: $segment-button-ios-background-color;
ion-icon {
font-size: $segment-button-ios-icon-size;
line-height: $segment-button-ios-icon-line-height;
}
&.segment-activated {
color: $segment-button-ios-text-color;
background-color: $segment-button-ios-background-color-activated;
opacity: 1;
transition: $segment-button-ios-activated-transition;
}
&:hover:not(.segment-activated) {
background-color: rgba($segment-button-ios-background-color-activated, $segment-button-ios-hover-opacity);
transition: $segment-button-ios-hover-transition;
}
&:active:not(.segment-activated) {
background-color: rgba($segment-button-ios-background-color-activated, $segment-button-ios-active-opacity);
transition: $segment-button-ios-active-transition;
}
&:first-of-type {
margin-right: 0;
border-radius: $segment-button-ios-border-radius 0 0 $segment-button-ios-border-radius;
}
&:not(:first-of-type) {
border-left-width: 0;
}
&:last-of-type {
margin-left: 0;
border-left-width: 0;
border-radius: 0 $segment-button-ios-border-radius $segment-button-ios-border-radius 0;
}
}
.toolbar {
ion-segment {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.segment-button {
max-width: $segment-button-ios-toolbar-button-max-width;
height: $segment-button-ios-toolbar-button-height;
font-size: $segment-button-ios-toolbar-font-size;
line-height: $segment-button-ios-toolbar-line-height;
ion-icon {
font-size: $segment-button-ios-toolbar-icon-size;
line-height: $segment-button-ios-toolbar-icon-line-height;
}
}
}
// iOS Segment Button Mixin
// --------------------------------------------------
@mixin ios-segment-button($color-name, $color-base, $color-contrast) {
ion-segment[#{$color-name}] .segment-button {
border-color: $color-base;
color: $color-base;
&:hover:not(.segment-activated) {
background-color: rgba($color-base, $segment-button-ios-hover-opacity);
}
&:active:not(.segment-activated) {
background-color: rgba($color-base, $segment-button-ios-active-opacity);
}
&.segment-activated {
color: $color-contrast;
background-color: $color-base;
}
}
}
// iOS Segment Color Generation
// --------------------------------------------------
@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) {
@include ios-segment-button($color-name, $color-base, $color-contrast);
.toolbar[#{$color-name}] .segment-button.segment-activated {
color: $color-base;
}
}