diff --git a/ionic/components/alert/alert.ios.scss b/ionic/components/alert/alert.ios.scss index 3f64748467..3f546b614f 100644 --- a/ionic/components/alert/alert.ios.scss +++ b/ionic/components/alert/alert.ios.scss @@ -41,7 +41,7 @@ $alert-ios-button-margin: 0 !default; $alert-ios-button-min-width: 50% !default; $alert-ios-button-min-height: 44px !default; $alert-ios-button-font-size: 17px !default; -$alert-ios-button-text-color: map-get($colors-ios, primary) !default; +$alert-ios-button-text-color: color($colors-ios, primary) !default; $alert-ios-button-background-color: transparent !default; $alert-ios-button-background-color-activated: #e9e9e9 !default; @@ -75,9 +75,9 @@ $alert-ios-checkbox-border-width: 1px !default; $alert-ios-checkbox-border-style: solid !default; $alert-ios-checkbox-border-radius: 50% !default; $alert-ios-checkbox-border-color-off: $list-ios-border-color !default; -$alert-ios-checkbox-border-color-on: map-get($colors-ios, primary) !default; +$alert-ios-checkbox-border-color-on: color($colors-ios, primary) !default; $alert-ios-checkbox-background-color-off: $list-ios-background-color !default; -$alert-ios-checkbox-background-color-on: map-get($colors-ios, primary) !default; +$alert-ios-checkbox-background-color-on: color($colors-ios, primary) !default; $alert-ios-checkbox-icon-top: 4px !default; $alert-ios-checkbox-icon-left: 7px !default; diff --git a/ionic/components/app/app.ios.scss b/ionic/components/app/app.ios.scss index df6f7e46b3..5a4d2a69d5 100644 --- a/ionic/components/app/app.ios.scss +++ b/ionic/components/app/app.ios.scss @@ -24,7 +24,8 @@ hr { height: $hairlines-width; } -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + h1, h2, h3, @@ -43,7 +44,7 @@ hr { sup, ion-icon { &[#{$color-name}] { - color: $color-value; + color: $color-base; } } } diff --git a/ionic/components/badge/badge.ios.scss b/ionic/components/badge/badge.ios.scss index ed77a9d640..372290a448 100644 --- a/ionic/components/badge/badge.ios.scss +++ b/ionic/components/badge/badge.ios.scss @@ -3,13 +3,14 @@ // iOS Badge // -------------------------------------------------- -$badge-ios-border-radius: 10px !default; -$badge-ios-background-color: map-get($colors-ios, primary) !default; +$badge-ios-border-radius: 10px !default; +$badge-ios-background-color: color($colors-ios, primary) !default; +$badge-ios-text-color: color-contrast($colors-ios, $badge-ios-background-color) !default; ion-badge { border-radius: $badge-ios-border-radius; - color: color-inverse($badge-ios-background-color); + color: $badge-ios-text-color; background-color: $badge-ios-background-color; } @@ -17,11 +18,11 @@ ion-badge { // Generate iOS Badge Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { .badge-#{$color-name} { - color: color-inverse($color-value); - background-color: $color-value; + color: $color-contrast; + background-color: $color-base; } } diff --git a/ionic/components/button/button.ios.scss b/ionic/components/button/button.ios.scss index 43993c11c2..e932ef5e86 100644 --- a/ionic/components/button/button.ios.scss +++ b/ionic/components/button/button.ios.scss @@ -8,9 +8,9 @@ $button-ios-margin: .4rem .2rem !default; $button-ios-padding: 0 1em !default; $button-ios-font-size: 1.6rem !default; $button-ios-height: 2.8em !default; -$button-ios-color: map-get($colors-ios, primary) !default; +$button-ios-color: color($colors-ios, primary) !default; $button-ios-color-activated: color-shade($button-ios-color) !default; -$button-ios-text-color: color-inverse($button-ios-color) !default; +$button-ios-text-color: color-contrast($colors-ios, $button-ios-color) !default; $button-ios-hover-opacity: .8 !default; $button-ios-border-radius: 4px !default; @@ -53,12 +53,12 @@ $button-ios-small-icon-font-size: 1.3em !default; // iOS Default Button Color Mixin // -------------------------------------------------- -@mixin ios-button-default($color-name, $color-value) { +@mixin ios-button-default($color-name, $color-base, $color-contrast) { .button-#{$color-name} { - $background-color: $color-value; + $background-color: $color-base; $background-color-activated: color-shade($background-color); - $fg-color: color-inverse($background-color); + $fg-color: $color-contrast; color: $fg-color; background-color: $background-color; @@ -126,7 +126,7 @@ $button-ios-small-icon-font-size: 1.3em !default; background-color: transparent; &.activated { - color: $background-ios-color; + color: color-contrast($colors-ios, $button-ios-color); background-color: $button-ios-color; opacity: 1; } @@ -139,17 +139,16 @@ $button-ios-small-icon-font-size: 1.3em !default; // iOS Outline Button Color Mixin // -------------------------------------------------- -@mixin ios-button-outline($color-name, $color-value) { +@mixin ios-button-outline($color-name, $color-base, $color-contrast) { .button-outline-#{$color-name} { - $fg-color: color-shade($color-value, 5%); - border-color: $fg-color; - color: $fg-color; + border-color: $color-base; + color: $color-base; background-color: transparent; &.activated { - color: $background-ios-color; - background-color: $fg-color; + color: $color-contrast; + background-color: $color-base; } } @@ -179,10 +178,10 @@ $button-ios-small-icon-font-size: 1.3em !default; // iOS Clear Button Color Mixin // -------------------------------------------------- -@mixin ios-button-clear($color-name, $color-value) { +@mixin ios-button-clear($color-name, $color-base, $color-contrast) { .button-clear-#{$color-name} { - $fg-color: $color-value; + $fg-color: $color-base; border-color: transparent; color: $fg-color; background-color: transparent; @@ -217,10 +216,10 @@ ion-button-effect { // Generate iOS Button Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { - @include ios-button-default($color-name, $color-value); - @include ios-button-outline($color-name, $color-value); - @include ios-button-clear($color-name, $color-value); +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include ios-button-default($color-name, $color-base, $color-contrast); + @include ios-button-outline($color-name, $color-base, $color-contrast); + @include ios-button-clear($color-name, $color-base, $color-contrast); } diff --git a/ionic/components/checkbox/checkbox.ios.scss b/ionic/components/checkbox/checkbox.ios.scss index 19255feae8..cb9e84a03d 100644 --- a/ionic/components/checkbox/checkbox.ios.scss +++ b/ionic/components/checkbox/checkbox.ios.scss @@ -4,18 +4,18 @@ // -------------------------------------------------- $checkbox-ios-background-color-off: $list-ios-background-color !default; -$checkbox-ios-background-color-on: map-get($colors-ios, primary) !default; +$checkbox-ios-background-color-on: color($colors-ios, primary) !default; $checkbox-ios-icon-size: 21px !default; -$checkbox-ios-icon-border-color-on: map-get($colors-ios, primary) !default; $checkbox-ios-icon-border-color-off: $list-ios-border-color !default; +$checkbox-ios-icon-border-color-on: $checkbox-ios-background-color-on !default; $checkbox-ios-icon-border-width: 1px !default; $checkbox-ios-icon-border-style: solid !default; $checkbox-ios-icon-border-radius: 50% !default; $checkbox-ios-icon-checkmark-width: 1px !default; $checkbox-ios-icon-checkmark-style: solid !default; -$checkbox-ios-icon-checkmark-color: $background-ios-color !default; +$checkbox-ios-icon-checkmark-color: color-contrast($colors-ios, $checkbox-ios-background-color-on) !default; $checkbox-ios-media-margin: $item-ios-padding-media-top $item-ios-padding-right $item-ios-padding-media-bottom 2px !default; @@ -99,14 +99,14 @@ ion-checkbox { // iOS Checkbox Color Mixin // -------------------------------------------------- -@mixin checkbox-theme-ios($color-name, $bg-on) { +@mixin checkbox-theme-ios($color-name, $color-base, $color-contrast) { ion-checkbox[#{$color-name}] .checkbox-checked { - border-color: $bg-on; - background-color: $bg-on; + border-color: $color-base; + background-color: $color-base; .checkbox-inner { - border-color: color-inverse($bg-on); + border-color: $color-contrast; } } @@ -116,6 +116,6 @@ ion-checkbox { // Generate iOS Checkbox Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { - @include checkbox-theme-ios($color-name, $color-value); +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include checkbox-theme-ios($color-name, $color-base, $color-contrast); } diff --git a/ionic/components/chip/chip.ios.scss b/ionic/components/chip/chip.ios.scss index 041977af13..617d5028c3 100644 --- a/ionic/components/chip/chip.ios.scss +++ b/ionic/components/chip/chip.ios.scss @@ -1,18 +1,18 @@ @import "./chip"; -// Material Design Chip +// iOS Chip // -------------------------------------------------- -// Generate Material Design Chip Colors +// Generate iOS Chip Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { ion-chip { ion-icon[#{$color-name}] { - color: color-inverse($color-value); - background-color: $color-value; + color: $color-contrast; + background-color: $color-base; } } diff --git a/ionic/components/item/item.ios.scss b/ionic/components/item/item.ios.scss index 0cece68592..536a79d1e6 100644 --- a/ionic/components/item/item.ios.scss +++ b/ionic/components/item/item.ios.scss @@ -207,10 +207,10 @@ ion-item-divider { // Generate iOS Item Divider Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { ion-item-divider[#{$color-name}] { - color: color-inverse($color-value); - background-color: $color-value; + color: $color-contrast; + background-color: $color-base; } } diff --git a/ionic/components/label/label.ios.scss b/ionic/components/label/label.ios.scss index bdbb55b6ec..343448112c 100644 --- a/ionic/components/label/label.ios.scss +++ b/ionic/components/label/label.ios.scss @@ -64,10 +64,10 @@ ion-label[floating] { // Generate iOS Label colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { ion-label[#{$color-name}] { - color: $color-value; + color: $color-base; } } diff --git a/ionic/components/radio/radio.ios.scss b/ionic/components/radio/radio.ios.scss index 324ac67d19..0c6eea8725 100644 --- a/ionic/components/radio/radio.ios.scss +++ b/ionic/components/radio/radio.ios.scss @@ -3,7 +3,7 @@ // iOS Radio // -------------------------------------------------- -$radio-ios-color-on: map-get($colors-ios, primary) !default; +$radio-ios-color-on: color($colors-ios, primary) !default; $radio-ios-icon-width: 16px !default; $radio-ios-icon-height: 21px !default; @@ -88,13 +88,13 @@ ion-radio { // iOS Radio Color Mixin // -------------------------------------------------- -@mixin radio-theme-ios($color-name, $color-value) { +@mixin radio-theme-ios($color-name, $color-base) { ion-radio[#{$color-name}] .radio-checked { - color: $color-value; + color: $color-base; .radio-inner { - border-color: $color-value; + border-color: $color-base; } } @@ -105,8 +105,8 @@ ion-radio { // Generate iOS Radio Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { - @include radio-theme-ios($color-name, $color-value); + @include radio-theme-ios($color-name, $color-base); } diff --git a/ionic/components/searchbar/searchbar.ios.scss b/ionic/components/searchbar/searchbar.ios.scss index 3aaac6e22e..b02be3e51a 100644 --- a/ionic/components/searchbar/searchbar.ios.scss +++ b/ionic/components/searchbar/searchbar.ios.scss @@ -194,21 +194,21 @@ ion-searchbar { // Generate Default Search Bar Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { ion-searchbar[#{$color-name}] { .searchbar-ios-cancel { - color: $color-value; + color: $color-base; &:hover:not(.disable-hover) { - color: color-shade($color-value); + color: color-shade($color-base); } } } .toolbar[#{$color-name}] ion-searchbar { .searchbar-ios-cancel { - color: color-inverse($color-value); + color: $color-contrast; } } diff --git a/ionic/components/segment/segment.ios.scss b/ionic/components/segment/segment.ios.scss index 441f9de93e..d96798279f 100644 --- a/ionic/components/segment/segment.ios.scss +++ b/ionic/components/segment/segment.ios.scss @@ -7,7 +7,7 @@ $segment-button-ios-background-color: transparent !default; $segment-button-ios-background-color-activated: $toolbar-ios-active-color !default; -$segment-button-ios-text-color: color-inverse($segment-button-ios-background-color-activated) !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; @@ -115,23 +115,23 @@ $segment-button-ios-toolbar-icon-line-height: 2.4rem !default; // iOS Segment Button Mixin // -------------------------------------------------- -@mixin ios-segment-button($color-name, $color-value) { +@mixin ios-segment-button($color-name, $color-base, $color-contrast) { ion-segment[#{$color-name}] .segment-button { - border-color: $color-value; - color: $color-value; + border-color: $color-base; + color: $color-base; &:hover:not(.segment-activated) { - background-color: rgba($color-value, $segment-button-ios-hover-opacity); + background-color: rgba($color-base, $segment-button-ios-hover-opacity); } &:active:not(.segment-activated) { - background-color: rgba($color-value, $segment-button-ios-active-opacity); + background-color: rgba($color-base, $segment-button-ios-active-opacity); } &.segment-activated { - color: color-inverse($color-value); - background-color: $color-value; + color: $color-contrast; + background-color: $color-base; } } @@ -141,10 +141,11 @@ $segment-button-ios-toolbar-icon-line-height: 2.4rem !default; // iOS Segment Color Generation // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { - @include ios-segment-button($color-name, $color-value); +@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-value; + color: $color-base; } } diff --git a/ionic/components/tabs/tabs.ios.scss b/ionic/components/tabs/tabs.ios.scss index 0990f27662..fb72679f48 100644 --- a/ionic/components/tabs/tabs.ios.scss +++ b/ionic/components/tabs/tabs.ios.scss @@ -114,19 +114,19 @@ ion-tabs[tabbarPlacement=top] tabbar { // iOS Tabbar Color Mixin // -------------------------------------------------- -@mixin tabbar-ios($color-name, $color-value) { +@mixin tabbar-ios($color-name, $color-base, $color-contrast) { ion-tabs[#{$color-name}] tabbar { - border-color: darken($color-value, 10%); - background-color: $color-value; + border-color: darken($color-base, 10%); + background-color: $color-base; .tab-button { - color: color-inverse($color-value); + color: $color-contrast; } .tab-button:hover:not(.disable-hover), .tab-button[aria-selected=true] { - color: color-inverse($color-value); + color: $color-contrast; } } @@ -136,6 +136,7 @@ ion-tabs[tabbarPlacement=top] tabbar { // iOS Tabbar Color Generation // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { - @include tabbar-ios($color-name, $color-value); +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + + @include tabbar-ios($color-name, $color-base, $color-contrast); } diff --git a/ionic/components/tabs/test/colors/e2e.ts b/ionic/components/tabs/test/colors/e2e.ts new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/ionic/components/tabs/test/colors/e2e.ts @@ -0,0 +1 @@ + diff --git a/ionic/components/tabs/test/colors/index.ts b/ionic/components/tabs/test/colors/index.ts new file mode 100644 index 0000000000..65cc21401b --- /dev/null +++ b/ionic/components/tabs/test/colors/index.ts @@ -0,0 +1,17 @@ +import {App, Page} from 'ionic-angular'; + + +@Page({template:'hi'}) +class E2EPage{} + + +@App({ + templateUrl: 'main.html' +}) +class E2EApp { + constructor() { + this.root = E2EPage; + } +} + +document.body.innerHTML += '' diff --git a/ionic/components/tabs/test/colors/main.html b/ionic/components/tabs/test/colors/main.html new file mode 100644 index 0000000000..f56b500c9b --- /dev/null +++ b/ionic/components/tabs/test/colors/main.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ionic/components/tabs/test/colors/styles.css b/ionic/components/tabs/test/colors/styles.css new file mode 100644 index 0000000000..b5b6cbf640 --- /dev/null +++ b/ionic/components/tabs/test/colors/styles.css @@ -0,0 +1,12 @@ + +ion-tabs { + position: relative; + top: auto; + height: auto; + margin-bottom: 20px; +} + +ion-navbar-section, +ion-content-section { + display: none !important; +} diff --git a/ionic/components/toggle/toggle.ios.scss b/ionic/components/toggle/toggle.ios.scss index 8dcb03899b..bacb44da9c 100644 --- a/ionic/components/toggle/toggle.ios.scss +++ b/ionic/components/toggle/toggle.ios.scss @@ -11,7 +11,7 @@ $toggle-ios-border-radius: $toggle-ios-height / 2 !default; $toggle-ios-background-color-off: $list-ios-background-color !default; $toggle-ios-border-color-off: grayscale(lighten($list-ios-border-color, 11%)) !default; -$toggle-ios-background-color-on: map-get($colors-ios, primary) !default; +$toggle-ios-background-color-on: color($colors-ios, primary) !default; $toggle-ios-handle-width: $toggle-ios-height - ($toggle-ios-border-width * 2) !default; $toggle-ios-handle-height: $toggle-ios-handle-width !default; @@ -171,10 +171,10 @@ ion-toggle { // iOS Toggle Color Mixin // -------------------------------------------------- -@mixin ios-toggle-theme($color-name, $color-value) { +@mixin ios-toggle-theme($color-name, $color-base) { ion-toggle[#{$color-name}] .toggle-checked { - background-color: $color-value; + background-color: $color-base; } } @@ -183,8 +183,8 @@ ion-toggle { // Generate iOS Toggle Colors // -------------------------------------------------- -@each $color-name, $color-value in $colors-ios { +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { - @include ios-toggle-theme($color-name, $color-value); + @include ios-toggle-theme($color-name, $color-base); } diff --git a/ionic/components/toolbar/test/colors/main.html b/ionic/components/toolbar/test/colors/main.html index 13b57159ae..298d21c3a9 100644 --- a/ionic/components/toolbar/test/colors/main.html +++ b/ionic/components/toolbar/test/colors/main.html @@ -147,6 +147,35 @@ Danger + + + + + + + + Light + + + + + + + + + Light + + diff --git a/ionic/components/toolbar/toolbar.ios.scss b/ionic/components/toolbar/toolbar.ios.scss index 20dde78d51..57351f42b2 100644 --- a/ionic/components/toolbar/toolbar.ios.scss +++ b/ionic/components/toolbar/toolbar.ios.scss @@ -86,17 +86,17 @@ ion-title { pointer-events: none; } -@mixin ios-toolbar-theme($color-name, $color-value) { +@mixin ios-toolbar-theme($color-name, $color-base, $color-contrast) { .toolbar[#{$color-name}] { .toolbar-background { - border-color: darken($color-value, 10%); - background: $color-value; + border-color: darken($color-base, 10%); + background: $color-base; } .toolbar-title, .bar-button-default { - color: color-inverse($color-value); + color: $color-contrast; } } } @@ -142,15 +142,14 @@ ion-buttons[right] { font-size: $toolbar-ios-button-font-size; } -@mixin ios-bar-button-default($color-name, $color-value) { +@mixin ios-bar-button-default($color-name, $color-base, $color-contrast) { .bar-button-#{$color-name} { - $fg-color: $color-value; - color: $fg-color; + color: $color-base; background-color: transparent; &:hover:not(.disable-hover) { - color: $fg-color; + color: $color-base; } &.activated { @@ -176,21 +175,21 @@ ion-buttons[right] { } &.activated { - color: color-inverse($bar-button-ios-color); + color: color-contrast($colors-ios, $bar-button-ios-color); background-color: $bar-button-ios-color; } } -@mixin ios-bar-button-outline($color-name, $color-value) { +@mixin ios-bar-button-outline($color-name, $color-base, $color-contrast) { .bar-button-outline-#{$color-name} { - $fg-color: color-shade($color-value); + $fg-color: color-shade($color-base); border-color: $fg-color; color: $fg-color; background-color: transparent; &.activated { - color: color-inverse($fg-color); + color: $color-contrast; background-color: $fg-color; } } @@ -202,29 +201,30 @@ ion-buttons[right] { // -------------------------------------------------- .bar-button-solid { - color: color-inverse($bar-button-ios-color); + color: color-contrast($colors-ios, $bar-button-ios-color); background-color: $bar-button-ios-color; &:hover:not(.disable-hover) { - color: color-inverse($bar-button-ios-color); + color: color-contrast($colors-ios, $bar-button-ios-color); opacity: .4; } &.activated { - color: color-inverse($bar-button-ios-color); + color: color-contrast($colors-ios, $bar-button-ios-color); background-color: color-shade($bar-button-ios-color); opacity: .4; } } -@mixin ios-bar-button-solid($color-name, $color-value) { +@mixin ios-bar-button-solid($color-name, $color-base, $color-contrast) { .bar-button-solid-#{$color-name} { - color: color-inverse($color-value); - background-color: $color-value; + color: $color-contrast; + background-color: $color-base; &.activated { - background-color: color-shade($color-value); + color: $color-contrast; + background-color: color-shade($color-base); } } @@ -327,11 +327,11 @@ ion-buttons[right] { // iOS Toolbar Color Generation // -------------------------------------------------- -@include ios-bar-button-default(default, $bar-button-ios-color); +@include ios-bar-button-default(default, $bar-button-ios-color, color-contrast($colors-ios, $bar-button-ios-color)); -@each $color-name, $color-value in $colors-ios { - @include ios-toolbar-theme($color-name, $color-value); - @include ios-bar-button-default($color-name, $color-value); - @include ios-bar-button-outline($color-name, $color-value); - @include ios-bar-button-solid($color-name, $color-value); +@each $color-name, $color-base, $color-contrast in get-colors($colors-ios) { + @include ios-toolbar-theme($color-name, $color-base, $color-contrast); + @include ios-bar-button-default($color-name, $color-base, $color-contrast); + @include ios-bar-button-outline($color-name, $color-base, $color-contrast); + @include ios-bar-button-solid($color-name, $color-base, $color-contrast); } diff --git a/ionic/themes/dark.ios.scss b/ionic/themes/dark.ios.scss index d22bef362e..ed19a0bba1 100644 --- a/ionic/themes/dark.ios.scss +++ b/ionic/themes/dark.ios.scss @@ -3,30 +3,34 @@ // iOS Dark Theme // ---------------------------------- -$colors-ios: map-merge($colors, ()) !default; +$colors-ios: copy-colors($colors) !default; $text-ios-color: $text-color !default; $paragraph-ios-color: $paragraph-color !default; -$link-ios-color: map-get($colors-ios, primary) !default; +$link-ios-color: color($colors-ios, primary) !default; $background-ios-color: $background-color !default; $subdued-text-ios-color: $subdued-text-color !default; $font-family-ios-base: $font-family-base !default; $font-size-ios-base: $font-size-base !default; + // iOS Outer content // -------------------------------------------------- -$outer-content-ios-background-color: $background-color !default; +$content-ios-outer-background: $background-color !default; + // iOS Card // -------------------------------------------------- $card-ios-header-color: #ddd !default; + // iOS Note // -------------------------------------------------- -$item-ios-note-color: map-get($colors-ios, light) !default; +$item-ios-note-color: color($colors-ios, light) !default; + // iOS Toolbar // -------------------------------------------------- @@ -46,15 +50,13 @@ $list-ios-border-color: $list-border-color !default; $list-ios-background-color: $list-background-color !default; $list-ios-activated-background-color: #d9d9d9 !default; + // iOS List header // -------------------------------------------------- $list-ios-header-color: $text-color !default; $item-ios-divider-background: #151515 !default; $item-ios-divider-color: $text-color !default; -ion-list-header { - background-color: $item-ios-divider-background; -} // iOS Item // -------------------------------------------------- @@ -68,10 +70,12 @@ $item-ios-padding-media-bottom: 10px !default; $item-ios-padding-icon-top: 10px !default; $item-ios-padding-icon-bottom: 9px !default; + // iOS Toggle // -------------------------------------------------- -$toggle-ios-handle-background-color: map-get($colors-ios, light) !default; +$toggle-ios-handle-background-color: color($colors-ios, light) !default; + // iOS Icon // -------------------------------------------------- diff --git a/ionic/themes/default.ios.scss b/ionic/themes/default.ios.scss index 92937a7142..aa5bbffcd2 100644 --- a/ionic/themes/default.ios.scss +++ b/ionic/themes/default.ios.scss @@ -8,7 +8,7 @@ $colors-ios: copy-colors($colors) !default; $text-ios-color: $text-color !default; $paragraph-ios-color: $paragraph-color !default; -$link-ios-color: map-get($colors-ios, primary) !default; +$link-ios-color: color($colors-ios, primary) !default; $background-ios-color: $background-color !default; $subdued-text-ios-color: $subdued-text-color !default; diff --git a/ionic/util/functions.scss b/ionic/util/functions.scss index c6cd0cc4a3..72fab2cf7a 100644 --- a/ionic/util/functions.scss +++ b/ionic/util/functions.scss @@ -74,3 +74,123 @@ @function url-encode($val) { @return str-replace($val, " ", "%20"); } + + +// Fetch nested keys +// @param {Map} $map - Map +// @param {Arglist} $keys - Keys to fetch +// @return {*} +// -------------------------------------------------- + +@function map-fetch($map, $keys...) { + @each $key in $keys { + $map: map-get($map, $key); + } + + @return $map; +} + + +// Fetch map color value +// @param {Map} $map - Map +// @param {String} $color-name - Color name to get +// @param {String} $color-key - Color key (optional), default base +// @return {Color} +// -------------------------------------------------- + +@function color($map, $color-name, $color-key:null) { + // Get the value from $color-name in the map + // this can be of type color or a map + $color-value: map-get($map, $color-name); + + // If we were given a map we need to grab the value + // of the key that is passed or the base key + @if(type-of($color-value) == map) { + @if($color-key) { + $color-value: map-fetch($map, $color-name, $color-key); + } @else { + $color-value: map-fetch($map, $color-name, base); + } + } + + // If it isn't a map then return the value + @return $color-value; +} + +// Get the color map key based on the value +// if it doesn't exist then return the value +// -------------------------------------------------- +@function color-key($colors, $value) { + @each $color-name, $color-value in $colors { + $base-value: color($colors, $color-name); + @if ($base-value == $value) { + @return map-get($colors, $color-name); + } + } + + @return $value; +} + +// Fetch map color contrast +// @param {Map} $colors - colors map +// @param {String} $value - color value or color name +// +// Example values +// -------------------------------------------------- +// primary | #327eff | #444 +// map key | map value | hex color not in map +// -------------------------------------------------- +// +// @return {Color} +// -------------------------------------------------- +@function color-contrast($colors, $value) { + $color-value: null; + + // If the value is a color (i.e. #fff) + // we need to call color-key to see if + // it exists in the color map or not + @if(type-of($value) == color) { + $color-value: color-key($colors, $value); + + // If the value is a string (i.e. primary) + // we want to get the value from the map + // where it is the key + } @else { + $color-value: map-get($colors, $value); + } + + // If the value is a map + @if(type-of($color-value) == map) { + $color-value: map-get($color-value, contrast); + } @else { + $color-value: color-inverse($color-value); + } + + @return $color-value; +} + + +// Create a list using the colors map +// @param {Map} $colors - colors map +// @return {List} $color-name, $color-base, $color-contrast +// ---------------------------------------------------------- +@function get-colors($colors) { + $colors-list: (); + + @each $color-name, $color-value in $colors { + $color-base: null; + $color-contrast: null; + + @if(type-of($color-value) == map) { + $color-base: map-get($color-value, base); + $color-contrast: map-get($color-value, contrast); + } @else { + $color-base: $color-value; + $color-contrast: color-inverse($color-value); + } + + $colors-list: append($colors-list, ( $color-name, $color-base, $color-contrast ), comma); + } + + @return $colors-list; +}