From ed10962814c4f76e08b64ddbbc8ed7f095fb0be3 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Tue, 17 Aug 2021 10:19:15 -0400 Subject: [PATCH] fix SCSS theme mixin when multiple selectors are being set --- assets/sass/abstracts/_functions.scss | 24 ++++++++++++++++++++++++ assets/sass/abstracts/_themes.scss | 12 ++++++++++-- assets/sass/components/_syntax.scss | 13 ++++++++++--- yarn.lock | 12 ++++++------ 4 files changed, 50 insertions(+), 11 deletions(-) diff --git a/assets/sass/abstracts/_functions.scss b/assets/sass/abstracts/_functions.scss index 7855a3c3..ce5d3965 100644 --- a/assets/sass/abstracts/_functions.scss +++ b/assets/sass/abstracts/_functions.scss @@ -1,4 +1,5 @@ @use "sass:math"; +@use "sass:list"; @use "sass:string"; @use "settings"; @@ -19,6 +20,29 @@ @return linear-gradient($color-opaque-alpha, $color-opaque-alpha); } +// https://stackoverflow.com/a/65853667/1438024 +@function str-split($str, $substr: ",") { + // return immediately if this function isn't necessary + @if (string.index("#{$str}", "#{$substr}") == null) { + @return $str; + } + + $list: (); + + @while string.index("#{$str}", "#{$substr}") != null { + @if (string.index("#{$str}", "#{$substr}") > 1) { + $list: list.append($list, string.slice("#{$str}", 1, string.index("#{$str}", "#{$substr}") - 1)); + } + $str: string.slice("#{$str}", string.index("#{$str}", "#{$substr}") + 1, string.length("#{$str}")); + } + + @if (string.slice("#{$str}", 1, string.length("#{$str}")) != "") { + $list: list.append($list, string.slice("#{$str}", 1, string.length("#{$str}"))); + } + + @return $list; +} + // Web fonts (see components/_typography.scss) @mixin font-face( $family, diff --git a/assets/sass/abstracts/_themes.scss b/assets/sass/abstracts/_themes.scss index 3f461ba7..e0f7908f 100644 --- a/assets/sass/abstracts/_themes.scss +++ b/assets/sass/abstracts/_themes.scss @@ -1,4 +1,7 @@ @use "sass:map"; +@use "sass:string"; + +@use "../abstracts/functions"; // Dark & Light Themes $themes: ( @@ -165,9 +168,14 @@ $icon-wand: 'data:image/svg+xml;charset=utf-8,