Skip to content

Commit 2d80867

Browse files
authored
Merge pull request #409 from dev-five-git/style-order-rule
Implement Style Order rule
2 parents 686e9ca + 0862c91 commit 2d80867

File tree

8 files changed

+580
-0
lines changed

8 files changed

+580
-0
lines changed

.changeset/early-lies-sell.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@devup-ui/eslint-plugin': patch
3+
---
4+
5+
Implement style order rule

packages/eslint-plugin/src/configs/__tests__/__snapshots__/recommended.test.ts.snap

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,22 @@ exports[`recommended > export recommended config 1`] = `
7373
},
7474
"name": "no-useless-tailing-nulls",
7575
},
76+
"style-order-range": {
77+
"create": [Function],
78+
"defaultOptions": [],
79+
"meta": {
80+
"docs": {
81+
"description": "Ensures styleOrder prop is within valid range (0 < value < 255).",
82+
"url": "https://github.com/dev-five-git/devup-ui/tree/main/packages/eslint-plugin/src/rules/style-order-range",
83+
},
84+
"messages": {
85+
"styleOrderRange": "styleOrder prop must be a number greater than 0 and less than 255.",
86+
},
87+
"schema": [],
88+
"type": "problem",
89+
},
90+
"name": "style-order-range",
91+
},
7692
},
7793
},
7894
},
@@ -81,6 +97,7 @@ exports[`recommended > export recommended config 1`] = `
8197
"@devup-ui/no-duplicate-value": "error",
8298
"@devup-ui/no-useless-responsive": "error",
8399
"@devup-ui/no-useless-tailing-nulls": "error",
100+
"@devup-ui/style-order-range": "error",
84101
},
85102
},
86103
]

packages/eslint-plugin/src/configs/recommended.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
noDuplicateValue,
44
noUselessResponsive,
55
noUselessTailingNulls,
6+
styleOrderRange,
67
} from '../rules'
78

89
export default [
@@ -14,6 +15,7 @@ export default [
1415
'css-utils-literal-only': cssUtilsLiteralOnly,
1516
'no-duplicate-value': noDuplicateValue,
1617
'no-useless-responsive': noUselessResponsive,
18+
'style-order-range': styleOrderRange,
1719
},
1820
},
1921
},
@@ -22,6 +24,7 @@ export default [
2224
'@devup-ui/css-utils-literal-only': 'error',
2325
'@devup-ui/no-duplicate-value': 'error',
2426
'@devup-ui/no-useless-responsive': 'error',
27+
'@devup-ui/style-order-range': 'error',
2528
},
2629
},
2730
]

packages/eslint-plugin/src/rules/__tests__/index.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ describe('export index', () => {
66
cssUtilsLiteralOnly: expect.any(Object),
77
noDuplicateValue: expect.any(Object),
88
noUselessResponsive: expect.any(Object),
9+
styleOrderRange: expect.any(Object),
910
})
1011
})
1112
})

packages/eslint-plugin/src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ export * from './css-utils-literal-only'
22
export * from './no-duplicate-value'
33
export * from './no-useless-responsive'
44
export * from './no-useless-tailing-nulls'
5+
export * from './style-order-range'
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# style-order-range
2+
3+
Ensures `styleOrder` prop is within valid range (0 < value < 255).
4+
5+
## Rule Details
6+
7+
This rule enforces that the `styleOrder` prop must be a number greater than 0 and less than 255.
8+
9+
### Examples of **incorrect** code for this rule:
10+
11+
```jsx
12+
// Zero and negative values
13+
<div styleOrder={0} />
14+
<div styleOrder={-1} />
15+
<div styleOrder="-5" />
16+
17+
// Values greater than or equal to 255
18+
<div styleOrder={255} />
19+
<div styleOrder={256} />
20+
<div styleOrder="300" />
21+
22+
// Non-numeric values
23+
<div styleOrder="abc" />
24+
<div styleOrder={undefined} />
25+
```
26+
27+
### Examples of **correct** code for this rule:
28+
29+
```jsx
30+
// Valid range values (0 < value < 255)
31+
<div styleOrder={1} />
32+
<div styleOrder={254} />
33+
<div styleOrder={128} />
34+
<div styleOrder="100" />
35+
<div styleOrder="1" />
36+
<div styleOrder="254" />
37+
```
38+
39+
## When Not To Use It
40+
41+
If you don't use `styleOrder` props or want to allow any value range, you can disable this rule.

0 commit comments

Comments
 (0)