From 88ccec5b1a1478bf20ce990f4e1370ef48550e79 Mon Sep 17 00:00:00 2001 From: Adrien Foulon <6115458+Tofandel@users.noreply.github.com> Date: Wed, 26 Aug 2020 17:20:33 +0200 Subject: [PATCH 1/2] Add support for ordering css variables declaration Css variables are not property declarations but considered customProperties by the parser adding this allows for custom properties like ``` --my-var: #123; ``` To be sorted as well --- src/resolvers/property-sort-order.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resolvers/property-sort-order.ts b/src/resolvers/property-sort-order.ts index f7850b5d..ab8816e3 100644 --- a/src/resolvers/property-sort-order.ts +++ b/src/resolvers/property-sort-order.ts @@ -23,7 +23,7 @@ export default class PropertySortOrder extends BaseResolver { const collectedDecl: SortNode[] = []; const matchingIndices: number[] = []; block.forEach('declaration', (declaration: Node, index: number) => { - const prop = declaration.first('property'); + const prop = declaration.first('property') || declaration.first('customProperty'); if (prop) { let nodeContainingName = prop.first('ident'); From f4cc5ea0f4b2400147d208659656738d034e1259 Mon Sep 17 00:00:00 2001 From: Adrien Foulon Date: Thu, 27 Aug 2020 10:17:11 +0200 Subject: [PATCH 2/2] feat(custom properties order): add tests --- src/helpers/get-config.ts | 1 + test/sass/property-sort-order.sass | 5 +++++ test/sass/property-sort-order.scss | 6 ++++++ test/src/resolvers/property-sort-order.ts | 12 ++++++------ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/helpers/get-config.ts b/src/helpers/get-config.ts index 16db34d2..74459c1d 100644 --- a/src/helpers/get-config.ts +++ b/src/helpers/get-config.ts @@ -16,6 +16,7 @@ const defaultSearchPlaces = (moduleName: string) => [ ]; export function loadDefaults(): ConfigOpts { + // @ts-ignore return safeLoad( readFileSync(require.resolve('../config/default.yml'), { encoding: 'utf8', diff --git a/test/sass/property-sort-order.sass b/test/sass/property-sort-order.sass index 892590b1..ae98c3ac 100644 --- a/test/sass/property-sort-order.sass +++ b/test/sass/property-sort-order.sass @@ -61,3 +61,8 @@ .disable-line-test display: block border: none // sass-lint:disable-line border-zero + +.css-vars + --baz: 3px + background: #111 + --bar: 1px diff --git a/test/sass/property-sort-order.scss b/test/sass/property-sort-order.scss index 52a09f14..c3a29a4c 100644 --- a/test/sass/property-sort-order.scss +++ b/test/sass/property-sort-order.scss @@ -74,3 +74,9 @@ } .empty-block-does-not-throw {} + +.css-vars { + --baz: 3px; + background: #111; + --bar: 1px; +} diff --git a/test/src/resolvers/property-sort-order.ts b/test/src/resolvers/property-sort-order.ts index 6a3449a7..4cd6edd6 100644 --- a/test/src/resolvers/property-sort-order.ts +++ b/test/src/resolvers/property-sort-order.ts @@ -17,7 +17,7 @@ describe('property-sort-order', () => { const preResolve = lint(filename, options); const postResolve = detect(ast.toString(), ValidFileType.scss, options); - expect(preResolve.warningCount).toBe(21); + expect(preResolve.warningCount).toBe(24); expect(postResolve.warningCount).toBe(0); }); @@ -62,7 +62,7 @@ describe('property-sort-order', () => { const preResolve = lint(filename, options); const postResolve = detect(ast.toString(), ValidFileType.scss, options); - expect(preResolve.warningCount).toBe(12); + expect(preResolve.warningCount).toBe(13); expect(postResolve.warningCount).toBe(0); }); }); @@ -83,7 +83,7 @@ describe('property-sort-order', () => { const preResolve = lint(filename, options); const postResolve = detect(ast.toString(), ValidFileType.scss, options); - expect(preResolve.warningCount).toBe(12); + expect(preResolve.warningCount).toBe(13); expect(postResolve.warningCount).toBe(0); }); }); @@ -137,7 +137,7 @@ describe('property-sort-order', () => { const preResolve = lint(filename, options); const postResolve = detect(ast.toString(), ValidFileType.sass, options); - expect(preResolve.warningCount).toBe(17); + expect(preResolve.warningCount).toBe(20); expect(postResolve.warningCount).toBe(0); }); @@ -180,7 +180,7 @@ describe('property-sort-order', () => { const preResolve = lint(filename, options); const postResolve = detect(ast.toString(), ValidFileType.sass, options); - expect(preResolve.warningCount).toBe(16); + expect(preResolve.warningCount).toBe(17); expect(postResolve.warningCount).toBe(0); }); }); @@ -201,7 +201,7 @@ describe('property-sort-order', () => { const preResolve = lint(filename, options); const postResolve = detect(ast.toString(), ValidFileType.sass, options); - expect(preResolve.warningCount).toBe(16); + expect(preResolve.warningCount).toBe(17); expect(postResolve.warningCount).toBe(0); }); });