From 933296030b0b0ed4c7efdd742778e8c64eb6c3ae Mon Sep 17 00:00:00 2001 From: Miles Malerba Date: Tue, 29 Jan 2019 09:56:09 -0800 Subject: [PATCH] feat(elevation): add feature targeting for styles --- packages/mdc-button/_mixins.scss | 22 ++++++++++------------ packages/mdc-elevation/_mixins.scss | 19 +++++++++++++------ test/scss/feature-targeting.scss | 5 +++++ 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/packages/mdc-button/_mixins.scss b/packages/mdc-button/_mixins.scss index 9ae47dde319..c757e9c9036 100644 --- a/packages/mdc-button/_mixins.scss +++ b/packages/mdc-button/_mixins.scss @@ -303,21 +303,19 @@ $feat-animation: mdc-feature-create-target($query, animation); $feat-color: mdc-feature-create-target($query, color); - @include mdc-feature-targets($feat-color) { - @include mdc-elevation(2); + @include mdc-elevation(2, $query: $query); - &:hover, - &:focus { - @include mdc-elevation(4); - } + &:hover, + &:focus { + @include mdc-elevation(4, $query: $query); + } - &:active { - @include mdc-elevation(8); - } + &:active { + @include mdc-elevation(8, $query: $query); + } - &:disabled { - @include mdc-elevation(0); - } + &:disabled { + @include mdc-elevation(0, $query: $query); } @include mdc-feature-targets($feat-animation) { diff --git a/packages/mdc-elevation/_mixins.scss b/packages/mdc-elevation/_mixins.scss index 7c9573e2f7a..fc600d8ee34 100644 --- a/packages/mdc-elevation/_mixins.scss +++ b/packages/mdc-elevation/_mixins.scss @@ -20,6 +20,8 @@ // THE SOFTWARE. // +@import "@material/feature-targeting/functions"; +@import "@material/feature-targeting/mixins"; @import "@material/theme/variables"; @import "./variables"; @@ -27,7 +29,7 @@ // The $z-value must be between 0 and 24. // If $color has an alpha channel, it will be ignored and overridden. To increase the opacity of the shadow, use // $opacity-boost. -@mixin mdc-elevation($z-value, $color: $mdc-elevation-baseline-color, $opacity-boost: 0) { +@mixin mdc-elevation($z-value, $color: $mdc-elevation-baseline-color, $opacity-boost: 0, $query: mdc-feature-all()) { @if type-of($z-value) != number or not unitless($z-value) { @error "$z-value must be a unitless number, but received '#{$z-value}'"; } @@ -36,6 +38,8 @@ @error "$z-value must be between 0 and 24, but received '#{$z-value}'"; } + $feat-color: mdc-feature-create-target($query, color); + $color: mdc-theme-prop-value($color); $umbra-z-value: map-get($mdc-elevation-umbra-map, $z-value); @@ -46,10 +50,12 @@ $penumbra-color: rgba($color, $mdc-elevation-penumbra-opacity + $opacity-boost); $ambient-color: rgba($color, $mdc-elevation-ambient-opacity + $opacity-boost); - box-shadow: - #{"#{$umbra-z-value} #{$umbra-color}"}, - #{"#{$penumbra-z-value} #{$penumbra-color}"}, - #{$ambient-z-value} $ambient-color; + @include mdc-feature-targets($feat-color) { + box-shadow: + #{"#{$umbra-z-value} #{$umbra-color}"}, + #{"#{$penumbra-z-value} #{$penumbra-color}"}, + #{$ambient-z-value} $ambient-color; + } } // Returns a string that can be used as the value for a `transition` property for elevation. @@ -64,6 +70,7 @@ // ``` @function mdc-elevation-transition-value( $duration: $mdc-elevation-transition-duration, - $easing: $mdc-elevation-transition-timing-function) { + $easing: $mdc-elevation-transition-timing-function +) { @return #{$mdc-elevation-property} #{$duration} #{$easing}; } diff --git a/test/scss/feature-targeting.scss b/test/scss/feature-targeting.scss index d29bd266c8b..f82c2a5f045 100644 --- a/test/scss/feature-targeting.scss +++ b/test/scss/feature-targeting.scss @@ -1,5 +1,6 @@ @import "@material/button/mixins"; @import "@material/checkbox/mixins"; +@import "@material/elevation/mixins"; @import "@material/feature-targeting/functions"; @import "@material/menu/mixins"; @import "@material/radio/mixins"; @@ -13,6 +14,10 @@ @include mdc-checkbox($query: mdc-feature-any()); +// Elevation + +@include mdc-elevation(0, $query: mdc-feature-any()); + // Menu @include mdc-menu($query: mdc-feature-any());