diff --git a/src/rules/__tests__/interactive-supports-focus.test.ts b/src/rules/__tests__/interactive-supports-focus.test.ts index d7658125..d0fbcb38 100644 --- a/src/rules/__tests__/interactive-supports-focus.test.ts +++ b/src/rules/__tests__/interactive-supports-focus.test.ts @@ -61,7 +61,8 @@ makeRuleTester("interactive-supports-focus", rule, { "
", "", "", - `` + ``, + "
", ], invalid: [ ...rule.interactiveRoles.flatMap((role) => diff --git a/src/utils/getAttributeValue.ts b/src/utils/getAttributeValue.ts index 0378ff36..e64e0d49 100644 --- a/src/utils/getAttributeValue.ts +++ b/src/utils/getAttributeValue.ts @@ -15,6 +15,22 @@ function getAttributeValue(node: AST.VAttribute | AST.VDirective) { return node.value.expression.value; } + if (node.value.expression.type === 'LogicalExpression') { + const operator = node.value.expression.operator; + let leftSideOfOperation; + let rightSideOfOperation; + + if (node.value.expression.left.type === 'Literal') { + leftSideOfOperation = node.value.expression.left.value; + } + + if (node.value.expression.right.type === 'Literal') { + rightSideOfOperation = node.value.expression.right.value; + } + + return eval(`${leftSideOfOperation} ${operator} ${rightSideOfOperation}`); + } + // TODO we're effectively using this as just a placeholder to let rules know // that a value has been passed in for this attribute. We should replace // this with a stronger API to either explicitly handle all of the different