diff --git a/scss.scss b/scss.scss index aa1f82b9..5d4221f7 100644 --- a/scss.scss +++ b/scss.scss @@ -6,6 +6,12 @@ // // Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE) +@use "sass:map"; +@use "sass:math"; +@use "sass:meta"; +@use "sass:list"; +@use "sass:string"; + // Configuration // Base value @@ -30,7 +36,7 @@ $rfs-two-dimensional: false !default; // Factor of decrease $rfs-factor: 10 !default; -@if type-of($rfs-factor) != number or $rfs-factor <= 1 { +@if meta.type-of($rfs-factor) != number or $rfs-factor <= 1 { @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1."; } @@ -50,7 +56,7 @@ $rfs-safari-iframe-resize-bug-fix: false !default; $enable-rfs: true !default; // Cache $rfs-base-value unit -$rfs-base-value-unit: unit($rfs-base-value); +$rfs-base-value-unit: math.unit($rfs-base-value); @function divide($dividend, $divisor, $precision: 10) { $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1); @@ -80,16 +86,16 @@ $rfs-base-value-unit: unit($rfs-base-value); } } $result: $result * $factor * $sign; - $dividend-unit: unit($dividend); - $divisor-unit: unit($divisor); + $dividend-unit: math.unit($dividend); + $divisor-unit: math.unit($divisor); $unit-map: ( "px": 1px, "rem": 1rem, "em": 1em, "%": 1% ); - @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) { - $result: $result * map-get($unit-map, $dividend-unit); + @if ($dividend-unit != $divisor-unit and map.has-key($unit-map, $dividend-unit)) { + $result: $result * map.get($unit-map, $dividend-unit); } @return $result; } @@ -103,7 +109,7 @@ $rfs-base-value-unit: unit($rfs-base-value); } // Cache $rfs-breakpoint unit to prevent multiple calls -$rfs-breakpoint-unit-cache: unit($rfs-breakpoint); +$rfs-breakpoint-unit-cache: math.unit($rfs-breakpoint); // Remove unit from $rfs-breakpoint for calculations @if $rfs-breakpoint-unit-cache == px { @@ -155,7 +161,9 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height @content; } } @else { - @content; + & { + @content; + } } } @@ -190,7 +198,7 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height // Helper function to get the formatted non-responsive value @function rfs-value($values) { // Convert to list - $values: if(type-of($values) != list, ($values,), $values); + $values: if(meta.type-of($values) != list, ($values,), $values); $val: ""; @@ -201,7 +209,7 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height } @else { // Cache $value unit - $unit: if(type-of($value) == "number", unit($value), false); + $unit: if(meta.type-of($value) == "number", math.unit($value), false); @if $unit == px { // Convert to rem if needed @@ -218,13 +226,13 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height } // Remove first space - @return unquote(str-slice($val, 2)); + @return string.unquote(string.slice($val, 2)); } // Helper function to get the responsive value calculated by RFS @function rfs-fluid-value($values) { // Convert to list - $values: if(type-of($values) != list, ($values,), $values); + $values: if(meta.type-of($values) != list, ($values,), $values); $val: ""; @@ -234,7 +242,7 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height $val: $val + " 0"; } @else { // Cache $value unit - $unit: if(type-of($value) == "number", unit($value), false); + $unit: if(meta.type-of($value) == "number", math.unit($value), false); // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value @if not $unit or $unit != px and $unit != rem { @@ -244,15 +252,15 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value))); // Only add the media query if the value is greater than the minimum value - @if abs($value) <= $rfs-base-value or not $enable-rfs { + @if math.abs($value) <= $rfs-base-value or not $enable-rfs { $val: $val + " " + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px); } @else { // Calculate the minimum value - $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor); + $value-min: $rfs-base-value + divide(math.abs($value) - $rfs-base-value, $rfs-factor); // Calculate difference between $value and the minimum value - $value-diff: abs($value) - $value-min; + $value-diff: math.abs($value) - $value-min; // Base value formatting $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px); @@ -274,7 +282,7 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height } // Remove first space - @return unquote(str-slice($val, 2)); + @return string.unquote(string.slice($val, 2)); } // RFS mixin @@ -285,7 +293,9 @@ $rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height // Do not print the media query if responsive & non-responsive values are the same @if $val == $fluid-val { - #{$property}: $val; + & { + #{$property}: $val; + } } @else { @include _rfs-rule () {