Skip to content

Commit

Permalink
[Fix] no-unknown-property support new precedence prop
Browse files Browse the repository at this point in the history
  • Loading branch information
acusti committed Oct 22, 2024
1 parent 9668ee0 commit 500112b
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange

## Unreleased

### Fixed
* [`no-unknown-property`]: support `precedence` prop ([#3829][] @acusti)

[#3829]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3829

## [7.36.1] - 2024.09.12

### Fixed
Expand Down
14 changes: 9 additions & 5 deletions lib/rules/no-unknown-property.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ const DOM_PROPERTY_NAMES_ONE_WORD = [
// OpenGraph meta tag attributes
'property',
// React specific attributes
'ref', 'key', 'children',
'ref', 'key', 'children', 'precedence',
// Non-standard
'results', 'security',
// Video specific
Expand Down Expand Up @@ -363,16 +363,20 @@ const REACT_ON_PROPS = [
];

function getDOMPropertyNames(context) {
const ALL_DOM_PROPERTY_NAMES = DOM_PROPERTY_NAMES_TWO_WORDS.concat(DOM_PROPERTY_NAMES_ONE_WORD);
let domPropertyNames = DOM_PROPERTY_NAMES_TWO_WORDS.concat(DOM_PROPERTY_NAMES_ONE_WORD);
// this was removed in React v16.1+, see https://github.com/facebook/react/pull/10823
if (!testReactVersion(context, '>= 16.1.0')) {
return ALL_DOM_PROPERTY_NAMES.concat('allowTransparency');
return domPropertyNames.concat('allowTransparency');
}
// these were added in React v16.4.0, see https://reactjs.org/blog/2018/05/23/react-v-16-4.html and https://github.com/facebook/react/pull/12507
if (testReactVersion(context, '>= 16.4.0')) {
return ALL_DOM_PROPERTY_NAMES.concat(REACT_ON_PROPS);
domPropertyNames = domPropertyNames.concat(REACT_ON_PROPS);
// precedence was added in React v19, see https://react.dev/blog/2024/04/25/react-19#support-for-stylesheets
if (testReactVersion(context, '>= 19.0.0-0')) {
domPropertyNames = domPropertyNames.concat('precedence');
}
}
return ALL_DOM_PROPERTY_NAMES;
return domPropertyNames;
}

// ------------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions tests/lib/rules/no-unknown-property.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ ruleTester.run('no-unknown-property', rule, {
{ code: '<div onPointerDown={this.onDown} onPointerUp={this.onUp} />' },
{ code: '<input type="checkbox" defaultChecked={this.state.checkbox} />' },
{ code: '<div onTouchStart={this.startAnimation} onTouchEnd={this.stopAnimation} onTouchCancel={this.cancel} onTouchMove={this.move} onMouseMoveCapture={this.capture} onTouchCancelCapture={this.log} />' },
{ code: '<link precedence="medium" href="https://foo.bar" rel="canonical" />' },
// Case ignored attributes, for `charset` discussion see https://github.com/jsx-eslint/eslint-plugin-react/pull/1863
{ code: '<meta charset="utf-8" />;' },
{ code: '<meta charSet="utf-8" />;' },
Expand Down

0 comments on commit 500112b

Please sign in to comment.