eslint-plugin-primer-react 5.2.0 → 5.2.1-rc.1fbdfd0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# eslint-plugin-primer-react
|
|
2
2
|
|
|
3
|
+
## 5.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#195](https://github.com/primer/eslint-plugin-primer-react/pull/195) [`ccc2e99`](https://github.com/primer/eslint-plugin-primer-react/commit/ccc2e995a3f46bb4842468188b91c0bd641da390) Thanks [@khiga8](https://github.com/khiga8)! - Clean up docs for link lint rule
|
|
8
|
+
|
|
9
|
+
- [#193](https://github.com/primer/eslint-plugin-primer-react/pull/193) [`5fc19f6`](https://github.com/primer/eslint-plugin-primer-react/commit/5fc19f63a4916add7b3c335ac661119c50af17af) Thanks [@khiga8](https://github.com/khiga8)! - Update link lint rule to skip Link with className
|
|
10
|
+
|
|
3
11
|
## 5.2.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -33,7 +33,8 @@ ESLint rules for Primer React
|
|
|
33
33
|
|
|
34
34
|
- [direct-slot-children](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/direct-slot-children.md)
|
|
35
35
|
- [no-system-props](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/no-system-props.md)
|
|
36
|
-
- [a11y-tooltip-interactive-trigger](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/a11y-tooltip-interactive-trigger.md)
|
|
37
|
-
- [a11y-explicit-heading](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/a11y-explicit-heading.md)
|
|
38
36
|
- [new-css-color-vars](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/new-css-color-vars.md)
|
|
39
37
|
- [no-deprecated-props](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/no-deprecated-props.md)
|
|
38
|
+
- [a11y-tooltip-interactive-trigger](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/a11y-tooltip-interactive-trigger.md)
|
|
39
|
+
- [a11y-explicit-heading](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/a11y-explicit-heading.md)
|
|
40
|
+
- [a11y-link-in-text-block](https://github.com/primer/eslint-plugin-primer-react/blob/main/docs/rules/a11y-link-in-text-block.md)
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
# EXPERIMENTAL: Require `inline` prop on `<Link>` in text block
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This is an experimental rule. If you suspect any false positives reported by this rule, please file an issue so we can make this rule better.
|
|
4
4
|
|
|
5
5
|
## Rule Details
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The `Link` component should have the `inline` prop when it is used within a text block and has no styles (aside from color) to distinguish itself from surrounding plain text.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Related: [WCAG 1.4.1 Use of Color issues](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The lint rule will flag any `<Link>` without the `inline` property (equal to `true`) detected with string nodes on either side.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
There are certain edge cases that the linter skips to avoid false positives including:
|
|
14
14
|
|
|
15
|
+
- `<Link className="...">` because there may be distinguishing styles applied.
|
|
15
16
|
- `<Link sx={{fontWeight:...}}>` or `<Link sx={{fontFamily:...}}>` because these technically may provide sufficient distinguishing styling.
|
|
16
17
|
- `<Link>` where the only adjacent text is a period, since that can't really be considered a text block.
|
|
17
18
|
- `<Link>` where the children is a JSX component, rather than a string literal, because then it might be an icon link rather than a text link.
|
|
18
19
|
- `<Link>` that are nested inside of headings as these have often been breadcrumbs.
|
|
19
20
|
|
|
21
|
+
This rule will not catch all instances of link in text block due to the limitations of static analysis, so be sure to also have in-browser checks in place such as the [link-in-text-block Axe rule](https://dequeuniversity.com/rules/axe/4.9/link-in-text-block) for additional coverage.
|
|
22
|
+
|
|
20
23
|
👎 Examples of **incorrect** code for this rule
|
|
21
24
|
|
|
22
25
|
```jsx
|
|
@@ -93,8 +96,18 @@ function ExampleComponent() {
|
|
|
93
96
|
}
|
|
94
97
|
```
|
|
95
98
|
|
|
99
|
+
This rule will skip `Link`s with a `className`.
|
|
100
|
+
|
|
101
|
+
```jsx
|
|
102
|
+
function ExampleComponent() {
|
|
103
|
+
return (
|
|
104
|
+
Learn more at <Link className={styles.someDistinguishingStyle}>GitHub</Link>
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
96
109
|
## Options
|
|
97
110
|
|
|
98
111
|
- `skipImportCheck` (default: `false`)
|
|
99
112
|
|
|
100
|
-
By default, the `a11y-
|
|
113
|
+
By default, the `a11y-link-in-text-block` rule will only check for `<Link>` components imported directly from `@primer/react`. You can disable this behavior by setting `skipImportCheck` to `true`.
|