Skip to content

Commit 6f99abd

Browse files
authored
Merge pull request #20 from primer/jfuchs/variant-prop
Updates no-system-props rule to always exclude the 'variant' prop
2 parents cbc5e8e + b0824f6 commit 6f99abd

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

.changeset/orange-tools-begin.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'eslint-plugin-primer-react': minor
3+
---
4+
5+
Updates no-system-props rule to always exclude the 'variant' prop no matter which component.

src/rules/__tests__/no-system-props.test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ ruleTester.run('no-system-props', rule, {
1818
`import {Button} from '@primer/components'; <Button someOtherProp="foo" />`,
1919
`import {Box} from '@primer/components'; <Box width={200} />`,
2020
`import {ProgressBar} from '@primer/components'; <ProgressBar bg="howdy" />`,
21-
`import {Button} from '@primer/components'; <Button {...someExpression()} />`
21+
`import {Button} from '@primer/components'; <Button {...someExpression()} />`,
22+
`import {Button} from '@primer/components'; <Button variant="large" />`
2223
],
2324
invalid: [
2425
{

src/rules/no-system-props.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ const excludedComponentProps = new Map([
1515
['AnchoredOverlay', new Set(['width', 'height'])],
1616
['Avatar', new Set(['size'])],
1717
['Dialog', new Set(['width', 'height'])],
18-
['Flash', new Set(['variant'])],
19-
['Label', new Set(['variant'])],
2018
['ProgressBar', new Set(['bg'])],
2119
['Spinner', new Set(['size'])],
2220
['StyledOcticon', new Set(['size'])]
2321
])
2422

23+
const alwaysExcludedProps = new Set(['variant'])
24+
2525
module.exports = {
2626
meta: {
2727
type: 'suggestion',
@@ -65,12 +65,12 @@ module.exports = {
6565
// Create an array of system prop attribute nodes
6666
let systemProps = Object.values(pick(propsByNameObject))
6767

68+
let excludedProps = excludedComponentProps.has(jsxNode.name.name)
69+
? new Set([...alwaysExcludedProps, ...excludedComponentProps.get(jsxNode.name.name)])
70+
: alwaysExcludedProps
71+
6872
// Filter out our exceptional props
6973
systemProps = systemProps.filter(prop => {
70-
const excludedProps = excludedComponentProps.get(jsxNode.name.name)
71-
if (!excludedProps) {
72-
return true
73-
}
7474
return !excludedProps.has(prop.name.name)
7575
})
7676

0 commit comments

Comments
 (0)