Skip to content

Commit cd17c09

Browse files
authored
Merge pull request #466 from github/kh-use-literal-prop-for-class
Use `getLiteralPropValue` for sr-only class
2 parents 0c0441f + c2ea115 commit cd17c09

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

Diff for: lib/rules/a11y-no-visually-hidden-interactive-element.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const {getProp, getPropValue} = require('jsx-ast-utils')
1+
const {getProp, getLiteralPropValue} = require('jsx-ast-utils')
22
const {getElementType} = require('../utils/get-element-type')
33
const {generateObjSchema} = require('eslint-plugin-jsx-a11y/lib/util/schemas')
44

@@ -32,9 +32,12 @@ const checkIfInteractiveElement = (context, node) => {
3232
const checkIfVisuallyHiddenAndInteractive = (context, options, node, isParentVisuallyHidden) => {
3333
const {className, componentName} = options
3434
if (node.type === 'JSXElement') {
35-
const classes = getPropValue(getProp(node.openingElement.attributes, 'className'))
35+
const classes = getLiteralPropValue(getProp(node.openingElement.attributes, 'className'))
3636
const isVisuallyHiddenElement = node.openingElement.name.name === componentName
37-
const hasSROnlyClass = typeof classes !== 'undefined' && classes.includes(className)
37+
let hasSROnlyClass = false
38+
if (classes != null) {
39+
hasSROnlyClass = classes.includes(className)
40+
}
3841
let isHidden = false
3942
if (hasSROnlyClass || isVisuallyHiddenElement || !!isParentVisuallyHidden) {
4043
if (checkIfInteractiveElement(context, node)) {

Diff for: tests/a11y-no-visually-hidden-interactive-element.js

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ ruleTester.run('a11y-no-visually-hidden-interactive-element', rule, {
2323
{code: "<span className='sr-only'>Text</span>;"},
2424
{code: "<button className='other'>Submit</button>"},
2525
{code: "<input className='sr-only' />"},
26+
{
27+
code: "<Foo className={({isOn}) => { return isOn || isOnProps ? `${className} selected`.trim() : className ?? ''}}/>",
28+
},
2629
{code: "<a className='other show-on-focus'>skip to main content</a>"},
2730
{code: '<button>Submit</button>'},
2831
{

0 commit comments

Comments
 (0)