diff --git a/lib/config/groups.js b/lib/config/groups.js index 8ab91d5..d9a6053 100644 --- a/lib/config/groups.js +++ b/lib/config/groups.js @@ -1412,84 +1412,108 @@ module.exports.groups = [ }, { type: 'Scroll Margin', - members: 'scroll\\-(?${scrollMargin})', - configKey: 'scrollMargin', members: [ { type: 'scroll-m', members: 'scroll-m\\-(?${scrollMargin})|\\-scroll-m\\-(?${-scrollMargin})', + shorthand: 'all', + body: 'scroll-m', configKey: 'scrollMargin', }, { type: 'scroll-my', members: 'scroll-my\\-(?${scrollMargin})|\\-scroll-my\\-(?${-scrollMargin})', + shorthand: 'y', + body: 'scroll-my', configKey: 'scrollMargin', }, { type: 'scroll-mx', members: 'scroll-mx\\-(?${scrollMargin})|\\-scroll-mx\\-(?${-scrollMargin})', + shorthand: 'x', + body: 'scroll-mx', configKey: 'scrollMargin', }, { type: 'scroll-mt', members: 'scroll-mt\\-(?${scrollMargin})|\\-scroll-mt\\-(?${-scrollMargin})', + shorthand: 't', + body: 'scroll-mt', configKey: 'scrollMargin', }, { type: 'scroll-mr', members: 'scroll-mr\\-(?${scrollMargin})|\\-scroll-mr\\-(?${-scrollMargin})', + shorthand: 'r', + body: 'scroll-mr', configKey: 'scrollMargin', }, { type: 'scroll-mb', members: 'scroll-mb\\-(?${scrollMargin})|\\-scroll-mb\\-(?${-scrollMargin})', + shorthand: 'b', + body: 'scroll-mb', configKey: 'scrollMargin', }, { type: 'scroll-ml', members: 'scroll-ml\\-(?${scrollMargin})|\\-scroll-ml\\-(?${-scrollMargin})', + shorthand: 'l', + body: 'scroll-ml', configKey: 'scrollMargin', }, ], }, { type: 'Scroll Padding', - members: 'scroll\\-(?${scrollPadding})', - configKey: 'scrollPadding', members: [ { type: 'scroll-p', members: 'scroll-p\\-(?${scrollPadding})', + shorthand: 'all', + body: 'scroll-p', configKey: 'scrollPadding', }, { type: 'scroll-py', members: 'scroll-py\\-(?${scrollPadding})', + shorthand: 'y', + body: 'scroll-py', configKey: 'scrollPadding', }, { type: 'scroll-px', members: 'scroll-px\\-(?${scrollPadding})', + shorthand: 'x', + body: 'scroll-px', configKey: 'scrollPadding', }, { type: 'scroll-pt', members: 'scroll-pt\\-(?${scrollPadding})', + shorthand: 't', + body: 'scroll-pt', configKey: 'scrollPadding', }, { type: 'scroll-pr', members: 'scroll-pr\\-(?${scrollPadding})', + shorthand: 'r', + body: 'scroll-pr', configKey: 'scrollPadding', }, { type: 'scroll-pb', members: 'scroll-pb\\-(?${scrollPadding})', + shorthand: 'b', + body: 'scroll-pb', configKey: 'scrollPadding', }, { type: 'scroll-pl', members: 'scroll-pl\\-(?${scrollPadding})', + shorthand: 'l', + body: 'scroll-pl', configKey: 'scrollPadding', }, ], diff --git a/lib/rules/enforces-shorthand.js b/lib/rules/enforces-shorthand.js index ebe2f19..6830903 100644 --- a/lib/rules/enforces-shorthand.js +++ b/lib/rules/enforces-shorthand.js @@ -121,6 +121,7 @@ module.exports = { Tables: ['Border Spacing'], Transforms: ['Scale'], Typography: ['Text Overflow', 'Whitespace'], + Interactivity: ['Scroll Padding', 'Scroll Margin'], }; // We don't want to affect other rules by object reference diff --git a/tests/lib/rules/enforces-shorthand.js b/tests/lib/rules/enforces-shorthand.js index bf2e7c1..75417b2 100644 --- a/tests/lib/rules/enforces-shorthand.js +++ b/tests/lib/rules/enforces-shorthand.js @@ -199,6 +199,15 @@ ruleTester.run("shorthands", rule, { code: `
h-custom & w-custom don't exist... no size-*
`, options: customSizeOnlyOptions, }, + { + code: `
Already using scroll-padding shorthand
`, + }, + { + code: `
Different scroll-padding values
`, + }, + { + code: `
Different variants for scroll-margin
`, + }, ], invalid: [ @@ -832,5 +841,40 @@ ruleTester.run("shorthands", rule, { generateError(["md:self-end", "md:justify-self-end"], "md:place-self-end"), ], }, + { + code: `
Possible shorthand for scroll-padding-x
`, + output: `
Possible shorthand for scroll-padding-x
`, + errors: [generateError(["scroll-pl-3", "scroll-pr-3"], "scroll-px-3")], + }, + { + code: `
Possible shorthand for scroll-padding-y
`, + output: `
Possible shorthand for scroll-padding-y
`, + errors: [generateError(["scroll-pt-4", "scroll-pb-4"], "scroll-py-4")], + }, + { + code: `
Possible shorthand for scroll-padding
`, + output: `
Possible shorthand for scroll-padding
`, + errors: [generateError(["scroll-px-3", "scroll-py-3"], "scroll-p-3")], + }, + { + code: `
Possible shorthand for scroll-margin-x
`, + output: `
Possible shorthand for scroll-margin-x
`, + errors: [generateError(["scroll-ml-2", "scroll-mr-2"], "scroll-mx-2")], + }, + { + code: `
Possible shorthand for scroll-margin-y
`, + output: `
Possible shorthand for scroll-margin-y
`, + errors: [generateError(["scroll-mt-1", "scroll-mb-1"], "scroll-my-1")], + }, + { + code: `
Possible shorthand for scroll-margin
`, + output: `
Possible shorthand for scroll-margin
`, + errors: [generateError(["scroll-mx-2", "scroll-my-2"], "scroll-m-2")], + }, + { + code: `
All scroll-padding directions
`, + output: `
All scroll-padding directions
`, + errors: [generateError(["scroll-pt-5", "scroll-pr-5", "scroll-pb-5", "scroll-pl-5"], "scroll-p-5")], + }, ], });