diff --git a/src/language-css/parser-postcss.js b/src/language-css/parser-postcss.js index 6827d39f..634b11b3 100644 --- a/src/language-css/parser-postcss.js +++ b/src/language-css/parser-postcss.js @@ -161,6 +161,8 @@ function parseMediaQuery(value) { return addTypePrefix(result, "media-"); } +const DEFAULT_SCSS_DIRECTIVE = "!default"; + function parseNestedCSS(node) { if (node && typeof node === "object") { delete node.parent; @@ -189,6 +191,11 @@ function parseNestedCSS(node) { } if (node.type && typeof node.value === "string") { try { + if (node.value.endsWith(DEFAULT_SCSS_DIRECTIVE)) { + node.default = true; + node.value = node.value.slice(0, -DEFAULT_SCSS_DIRECTIVE.length); + } + node.value = parseValue(node.value); } catch (e) { throw createError( diff --git a/src/language-css/printer-postcss.js b/src/language-css/printer-postcss.js index b2d4afdb..59919d5b 100644 --- a/src/language-css/printer-postcss.js +++ b/src/language-css/printer-postcss.js @@ -96,6 +96,7 @@ function genericPrint(path, options, print) { ? removeLines(path.call(print, "value")) : path.call(print, "value"), n.important ? " !important" : "", + n.default ? " !default" : "", n.nodes ? concat([ " {", diff --git a/tests/css_scss/__snapshots__/jsfmt.spec.js.snap b/tests/css_scss/__snapshots__/jsfmt.spec.js.snap index f0175c57..1b4591de 100644 --- a/tests/css_scss/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_scss/__snapshots__/jsfmt.spec.js.snap @@ -19,6 +19,20 @@ div { } a { margin: 0 { left: 10px; } } $map: (color: #111111, text-shadow: 1px 1px 0 salmon); +$theme-checkbox-colors: ( + default: $theme-color-border, + checked: $theme-color-checked, + disabled: $theme-color-disabled, + disabled-font: $theme-color-font-secondary, +) !default; +$default: #111111 !default; +$default: #111111 !default; +$default: #111111 +!default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" +!default; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @media #{$g-breakpoint-tiny} { } @@ -43,5 +57,17 @@ $map: ( color: #111111, text-shadow: 1px 1px 0 salmon ); +$theme-checkbox-colors: ( + default: $theme-color-border, + checked: $theme-color-checked, + disabled: $theme-color-disabled, + disabled-font: $theme-color-font-secondary +) !default; +$default: #111111 !default; +$default: #111111 !default; +$default: #111111 !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; `; diff --git a/tests/css_scss/scss.css b/tests/css_scss/scss.css index f55a7f72..6a65789c 100644 --- a/tests/css_scss/scss.css +++ b/tests/css_scss/scss.css @@ -9,3 +9,17 @@ div { } a { margin: 0 { left: 10px; } } $map: (color: #111111, text-shadow: 1px 1px 0 salmon); +$theme-checkbox-colors: ( + default: $theme-color-border, + checked: $theme-color-checked, + disabled: $theme-color-disabled, + disabled-font: $theme-color-font-secondary, +) !default; +$default: #111111 !default; +$default: #111111 !default; +$default: #111111 +!default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$default: "very-long-long-long-long-long-long-long-long-long-long-long-value" +!default;