From 2ce0447cfe738a2aee45e6395190a3f96a50ef16 Mon Sep 17 00:00:00 2001 From: "n.mikhaylov" Date: Mon, 19 Jul 2021 15:32:39 +0300 Subject: [PATCH 1/2] add check require fields for Utilities API --- scss/_functions.scss | 6 ++++++ scss/mixins/_utilities.scss | 18 +++++++++++++++--- scss/utilities/_api.scss | 6 +++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/scss/_functions.scss b/scss/_functions.scss index 883375bf81..0a76aca5d1 100644 --- a/scss/_functions.scss +++ b/scss/_functions.scss @@ -300,3 +300,9 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 } @return $result; } + +@mixin validate-utilities-field($utility, $utility-name, $field) { + @if (not map-has-key($utility, $field)) { + @warn "Required field «#{$field}» is empty. Check the field name for the «#{$utility-name}» utility"; + } +} diff --git a/scss/mixins/_utilities.scss b/scss/mixins/_utilities.scss index b02013709a..0453f7f854 100644 --- a/scss/mixins/_utilities.scss +++ b/scss/mixins/_utilities.scss @@ -1,6 +1,20 @@ // Utility generator // Used to generate utilities & print utilities -@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) { +@mixin generate-utility($utility, $utility-name, $infix, $is-rfs-media-query: false) { + // Check Requires Fields + + $required-fields: ( + "property", + "values", + ); + + @each $field in $required-fields { + @include validate-utilities-field($utility, $utility-name, $field); + } + + // End Check Requires Fields + + $properties: map-get($utility, property); $values: map-get($utility, values); // If the values are a list or string, convert it into a map @@ -9,8 +23,6 @@ } @each $key, $value in $values { - $properties: map-get($utility, property); - // Multiple properties are possible, for example with vertical or horizontal margins or paddings @if type-of($properties) == "string" { $properties: append((), $properties); diff --git a/scss/utilities/_api.scss b/scss/utilities/_api.scss index 62e1d398e3..841f6e0465 100644 --- a/scss/utilities/_api.scss +++ b/scss/utilities/_api.scss @@ -10,7 +10,7 @@ // The utility can be disabled with `false`, thus check if the utility is a map first // Only proceed if responsive media queries are enabled or if it's the base media query @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") { - @include generate-utility($utility, $infix); + @include generate-utility($utility, $key, $infix); } } } @@ -27,7 +27,7 @@ // The utility can be disabled with `false`, thus check if the utility is a map first // Only proceed if responsive media queries are enabled or if it's the base media query @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") { - @include generate-utility($utility, $infix, true); + @include generate-utility($utility, $key, $infix, true); } } } @@ -41,7 +41,7 @@ // The utility can be disabled with `false`, thus check if the utility is a map first // Then check if the utility needs print styles @if type-of($utility) == "map" and map-get($utility, print) == true { - @include generate-utility($utility, "-print"); + @include generate-utility($utility, $key, "-print"); } } } From b162865fade506fbc02242d9887b19f3305f2189 Mon Sep 17 00:00:00 2001 From: "n.mikhaylov" Date: Tue, 20 Jul 2021 13:37:34 +0300 Subject: [PATCH 2/2] rewrite required fields check --- scss/_functions.scss | 4 ++-- scss/mixins/_utilities.scss | 17 +++++++++-------- scss/utilities/_api.scss | 6 +++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/scss/_functions.scss b/scss/_functions.scss index 0a76aca5d1..803468a49c 100644 --- a/scss/_functions.scss +++ b/scss/_functions.scss @@ -301,8 +301,8 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 @return $result; } -@mixin validate-utilities-field($utility, $utility-name, $field) { +@mixin _validate-utilities-field($utility, $utility-name, $field) { @if (not map-has-key($utility, $field)) { - @warn "Required field «#{$field}» is empty. Check the field name for the «#{$utility-name}» utility"; + @warn "Missing '#{$field}' for '#{$utility-name}' utility"; } } diff --git a/scss/mixins/_utilities.scss b/scss/mixins/_utilities.scss index 0453f7f854..8b6cae00a2 100644 --- a/scss/mixins/_utilities.scss +++ b/scss/mixins/_utilities.scss @@ -1,15 +1,16 @@ // Utility generator // Used to generate utilities & print utilities -@mixin generate-utility($utility, $utility-name, $infix, $is-rfs-media-query: false) { +@mixin generate-utility($utility, $infix, $is-rfs-media-query: false, $utility-name: null) { // Check Requires Fields + @if ($utility-name) { + $required-fields: ( + "property", + "values", + ); - $required-fields: ( - "property", - "values", - ); - - @each $field in $required-fields { - @include validate-utilities-field($utility, $utility-name, $field); + @each $field in $required-fields { + @include _validate-utilities-field($utility, $utility-name, $field); + } } // End Check Requires Fields diff --git a/scss/utilities/_api.scss b/scss/utilities/_api.scss index 841f6e0465..db84000cd2 100644 --- a/scss/utilities/_api.scss +++ b/scss/utilities/_api.scss @@ -10,7 +10,7 @@ // The utility can be disabled with `false`, thus check if the utility is a map first // Only proceed if responsive media queries are enabled or if it's the base media query @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") { - @include generate-utility($utility, $key, $infix); + @include generate-utility($utility, $infix, $utility-name: $key); } } } @@ -27,7 +27,7 @@ // The utility can be disabled with `false`, thus check if the utility is a map first // Only proceed if responsive media queries are enabled or if it's the base media query @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") { - @include generate-utility($utility, $key, $infix, true); + @include generate-utility($utility, $infix, true, $utility-name: $key); } } } @@ -41,7 +41,7 @@ // The utility can be disabled with `false`, thus check if the utility is a map first // Then check if the utility needs print styles @if type-of($utility) == "map" and map-get($utility, print) == true { - @include generate-utility($utility, $key, "-print"); + @include generate-utility($utility, "-print", $utility-name: $key); } } }