Skip to content

Commit 880f5f5

Browse files
committed
refactor: use isMAtchingElement
1 parent f843307 commit 880f5f5

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

Diff for: src/rules/form-control-has-label.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import {
1111
getElementType,
1212
hasAriaLabel,
1313
isAriaHidden,
14+
isMatchingElement,
1415
makeDocsURL,
15-
makeKebabCase,
1616
} from "../utils";
1717

1818
function isLabelElement(
@@ -23,8 +23,8 @@ function isLabelElement(
2323
| AST.VExpressionContainer,
2424
{ labelComponents = [] }: FormControlHasLabelOptions
2525
) {
26-
const allLabelComponents = labelComponents.map(makeKebabCase).concat("label");
27-
return node.type === "VElement" && allLabelComponents.includes(getElementType(node));
26+
const allLabelComponents = labelComponents.concat("label");
27+
return isMatchingElement(node, allLabelComponents);
2828
}
2929

3030
function hasLabelElement(node: AST.VElement, options: FormControlHasLabelOptions): boolean {

Diff for: src/utils.ts

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export { default as isAriaHidden } from "./utils/isAriaHidden";
1414
export { default as isAttribute } from "./utils/isAttribute";
1515
export { default as isHiddenFromScreenReader } from "./utils/isHiddenFromScreenReader";
1616
export { default as isInteractiveElement } from "./utils/isInteractiveElement";
17+
export { default as isMatchingElement } from "./utils/isMatchingElement";
1718
export { default as isPresentationRole } from "./utils/isPresentationRole";
1819
export { default as makeDocsURL } from "./utils/makeDocsURL";
1920
export { default as makeKebabCase } from "./utils/makeKebabCase";

Diff for: src/utils/isMatchingElement.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type { AST } from "vue-eslint-parser";
2+
3+
import getElementType from "./getElementType";
4+
import makeKebabCase from "./makeKebabCase";
5+
6+
function isMatchingElement(
7+
node:
8+
| AST.VElement
9+
| AST.VDocumentFragment
10+
| AST.VText
11+
| AST.VExpressionContainer,
12+
searchArray: string[]
13+
) {
14+
if (!(node.type === "VElement")) return false;
15+
16+
const elementType = getElementType(node);
17+
18+
return searchArray.some((item: string) => {
19+
return makeKebabCase(item) === elementType;
20+
});
21+
}
22+
23+
export default isMatchingElement;

0 commit comments

Comments
 (0)