From e4253075f43e42ca3833f8185b86a2350c0bca16 Mon Sep 17 00:00:00 2001 From: Kevin Ross Date: Tue, 3 Nov 2015 08:21:39 -0600 Subject: [PATCH] Attempt at passing mixin name for variations (no-go so far) --- Gruntfile.js | 2 +- sass/_mixins-fullpalette.scss | 58 ++++++++++++-------- sass/_mixins.scss | 100 ++++++++++++++++++++-------------- 3 files changed, 93 insertions(+), 67 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 039ea0d2..567aaa79 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -17,7 +17,7 @@ module.exports = function(grunt) { }], options: { replacements: [ - { // bad conversions to @include instead of @extend + { // bad conversions of shadow-z-* to @include instead of @extend pattern: /@include shadow-z-(\d+)\(\);/gi, replacement: '@extend .shadow-z-$1;', order: 2 diff --git a/sass/_mixins-fullpalette.scss b/sass/_mixins-fullpalette.scss index a86f528b..7cef96ae 100644 --- a/sass/_mixins-fullpalette.scss +++ b/sass/_mixins-fullpalette.scss @@ -1,26 +1,27 @@ // usage: @include variations(unquote(" .check"), color, transparent); -@mixin variations($extra, $property, $default){ +@mixin variations($extra, $property, $default) { @include generic-variations($extra, $default) { #{$property}: $material-color !default; - }; + } +; } -@mixin background-variations($extra, $default){ +@mixin background-variations($extra, $default) { @include generic-variations($extra, $default) { background-color: $material-color; - & when ($material-color = $btn-default) { - color: $lightbg-text; - } - & when not ($material-color = $btn-default) { - color: $material-text-color; - } + @if ($material-color == $btn-default) { + color: $lightbg-text; + } @else { + color: $material-text-color; + } }; } -@mixin text-variations($extra, $default){ +@mixin text-variations($extra, $default) { @include generic-variations($extra, $default) { color: $material-color; - }; + } +; } // @@ -33,7 +34,7 @@ // $material-text-color ---> rgba(255,255,255,0.84), rgba(0,0,0,0.84), rgba(255,255,255,0.84) ... // -@mixin generic-variations($extra, $default){ +@mixin generic-variations($extra, $default) { $contrast-factor: 40% !default; @@ -102,19 +103,28 @@ @content } - // given a color build multiples depths - $material-color-names: "red" "pink" "purple" "deep-purple" "indigo" "blue" "light-blue" "cyan" "teal" "green" "light-green" "lime" "yellow" "amber" "orange" "deep-orange" "brown" "grey" "blue-grey"; - @each $material-color-name in $material-color-names - - $material-color-numbers: "" "-50" "-100" "-200" "-300" "-400" "-500" "-600" "-700" "-800" "-900" "-A100" "-A200" "-A400" "-A700"; - @each $material-color-number in $material-color-numbers - &-material-#{$material-color-name}#{unquote($material-color-number)}#{$extra} { - $material-color-full-name: "#{$material-color-name}#{$material-color-number}" !default; - $material-color: $material-color-full-name !default; - $material-text-color: contrast($material-color, $lightbg-text, $darkbg-text, $contrast-factor) !default; - @content - } + @include generic-variations-colors($extra, $default, $contrast-factor) } +@mixin generic-variations-colors($extra, $default, $contrast-factor) { + + $material-color-names: "red" "pink" "purple" "deep-purple" "indigo" "blue" "light-blue" "cyan" "teal" "green" "light-green" "lime" "yellow" "amber" "orange" "deep-orange" "brown" "grey" "blue-grey"; + @each $material-color-name in $material-color-names { + // given a color build multiples depths + $material-color-numbers: "" "-50" "-100" "-200" "-300" "-400" "-500" "-600" "-700" "-800" "-900" "-A100" "-A200" "-A400" "-A700"; + @each $material-color-number in $material-color-numbers { + @include generic-variations-color($extra, $default, $contrast-factor, $material-color-name, $material-color-number) + } + } +} + +@mixin generic-variations-color($extra, $default, $contrast-factor, $material-color-name, $material-color-number) { + & -material-#{$material-color-name}#{unquote($material-color-number)}#{$extra} { + $material-color-full-name: "#{$material-color-name}#{$material-color-number}" !default; + $material-color: $material-color-full-name !default; + $material-text-color: contrast($material-color, $lightbg-text, $darkbg-text, $contrast-factor) !default; + @content + } +} $all-variations: unquote("-default, -primary, -info, -success, -warning, -danger") !default; diff --git a/sass/_mixins.scss b/sass/_mixins.scss index a5995092..aa7036c1 100644 --- a/sass/_mixins.scss +++ b/sass/_mixins.scss @@ -1,26 +1,31 @@ +@mixin variations-content($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property) { + #{$property}: $material-color; +} + +@mixin background-variations-content($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property) { + background-color: $material-color; + @if ($material-color == $btn-default) { + color: $lightbg-text; + } @else { + color: $material-text-color; + } +} + +@mixin text-variations-content($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property) { + color: $material-color; +} + // usage: @include variations(unquote(" .check"), color, transparent); -@mixin variations($extra, $property, $default){ - @include generic-variations($extra, $default) { - #{$property}: $material-color; - }; +@mixin variations($extra, $property, $default) { + @include generic-variations($extra, $default, "variations-content", $property); } -@mixin background-variations($extra, $default){ - @include generic-variations($extra, $default) { - background-color: $material-color; - & when ($material-color = $btn-default) { - color: $lightbg-text; - } - & when not ($material-color = $btn-default) { - color: $material-text-color; - } - }; +@mixin background-variations($extra, $default) { + @include generic-variations($extra, $default, "background-variations-content", null); } -@mixin text-variations($extra, $default){ - @include generic-variations($extra, $default) { - color: $material-color; - }; +@mixin text-variations($extra, $default) { + @include generic-variations($extra, $default, "text-variations-content", null); } // @@ -33,8 +38,7 @@ // $material-text-color ---> rgba(255,255,255,0.84), rgba(0,0,0,0.84), rgba(255,255,255,0.84) ... // - -@mixin generic-variations($extra, $default){ +@mixin generic-variations($extra, $default, $mixin-name, $property) { $contrast-factor: 40% !default; @@ -44,79 +48,91 @@ $material-color-full-name: $material-color-name !default; $material-color: $default !default; $material-text-color: $darkbg-text !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-black#{$extra} { $material-color-name: "black" !default; $material-color-full-name: $material-color-name !default; $material-color: $black !default; $material-text-color: $darkbg-text !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-white#{$extra} { $material-color-name: "white" !default; $material-color-full-name: $material-color-name !default; $material-color: $white !default; $material-text-color: $lightbg-text !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-inverse#{$extra} { $material-color-name: "inverse" !default; $material-color-full-name: $material-color-name !default; $material-color: $inverse !default; $material-text-color: contrast($inverse, $lightbg-text, $darkbg-text, $contrast-factor) !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-primary#{$extra} { $material-color-name: "primary" !default; $material-color-full-name: $material-color-name !default; $material-color: $primary !default; $material-text-color: $darkbg-text !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-success#{$extra} { $material-color-name: "success" !default; $material-color-full-name: $material-color-name !default; $material-color: $success !default; $material-text-color: $darkbg-text !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-info#{$extra} { $material-color-name: "info" !default; $material-color-full-name: $material-color-name !default; $material-color: $info !default; $material-text-color: $darkbg-text !default; - @content + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); } &-warning#{$extra} { $material-color-name: "warning" !default; $material-color-full-name: $material-color-name !default; $material-color: $warning !default; $material-text-color: $darkbg-text !default; - @content + @include#{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property) } &-danger#{$extra} { $material-color-name: "danger" !default; $material-color-full-name: $material-color-name !default; $material-color: $danger !default; $material-text-color: $darkbg-text !default; - @content + @include#{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property) } - // given a color build multiples depths - $material-color-names: "red" "pink" "purple" "deep-purple" "indigo" "blue" "light-blue" "cyan" "teal" "green" "light-green" "lime" "yellow" "amber" "orange" "deep-orange" "brown" "grey" "blue-grey"; - @each $material-color-name in $material-color-names - - //$material-color-numbers: ""; // single element empty string - //@each $material-color-number in $material-color-numbers - //&-material-#{$material-color-name}#{unquote($material-color-number)}#{$extra} { - &-material-#{$material-color-name}#{$extra} { - $material-color-full-name: "#{$material-color-name}#{$material-color-number}" !default; - $material-color: $material-color-full-name !default; - $material-text-color: contrast($material-color, $lightbg-text, $darkbg-text, $contrast-factor) !default; - @content - } + @include generic-variations-colors($extra, $default, $contrast-factor) } +@mixin generic-variations-colors($extra, $default, $contrast-factor) { + + $material-color-names: "red" "pink" "purple" "deep-purple" "indigo" "blue" "light-blue" "cyan" "teal" "green" "light-green" "lime" "yellow" "amber" "orange" "deep-orange" "brown" "grey" "blue-grey"; + @each $material-color-name in $material-color-names { + //// given a color build multiples depths + //$material-color-numbers: "" "-50" "-100" "-200" "-300" "-400" "-500" "-600" "-700" "-800" "-900" "-A100" "-A200" "-A400" "-A700"; + //@each $material-color-number in $material-color-numbers { + // @include generic-variations-color($extra, $default, $contrast-factor, $material-color-name, $material-color-number) + //} + + // build a single depth color palette + $material-color-number: ""; + @include generic-variations-color($extra, $default, $contrast-factor, $material-color-name, $material-color-number) + } +} + +@mixin generic-variations-color($extra, $default, $contrast-factor, $material-color-name, $material-color-number) { + & -material-#{$material-color-name}#{unquote($material-color-number)}#{$extra} { + $material-color-full-name: "#{$material-color-name}#{$material-color-number}" !default; + $material-color: $material-color-full-name !default; + $material-text-color: contrast($material-color, $lightbg-text, $darkbg-text, $contrast-factor) !default; + @include #{unquote($mixin-name)}($material-color-name, $material-color-full-name, $material-color, $material-text-color, $property); + } +} $all-variations: unquote("-default, -primary, -info, -success, -warning, -danger") !default;