Skip to content

Commit a4872f8

Browse files
committed
Fixed false positives when ignoreBEMModifier and captureClassesFromDoc were used together in no-unused-selector and require-selector-used-inside.
1 parent a435eda commit a4872f8

File tree

6 files changed

+61
-6
lines changed

6 files changed

+61
-6
lines changed

.vscode/settings.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,21 @@
22
"eslint.validate": [
33
"javascript",
44
"javascriptreact",
5-
{ "language": "vue", "autoFix": true },
6-
{ "autoFix": true, "language": "typescript" },
5+
"vue",
6+
"typescript"
77
],
88
"typescript.validate.enable": true,
99
"javascript.validate.enable": false,
10-
"eslint.autoFixOnSave": true,
1110
"eslint.workingDirectories": [
1211
{"directory": "./", "changeProcessCWD": true },
1312
{"directory": "./docs/.vuepress", "changeProcessCWD": true }
1413
],
1514
"vetur.validation.script": false,
1615
"vetur.validation.style": false,
1716
"css.validate": false,
18-
"typescript.tsdk": "node_modules/typescript/lib"
17+
"typescript.tsdk": "node_modules/typescript/lib",
18+
"editor.codeActionsOnSave": {
19+
"source.fixAll.eslint": true
20+
},
21+
"editor.codeActionsOnSaveTimeout": 7500
1922
}

lib/styles/selectors/query/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,12 @@ function* genElementsByClassName(
506506
// If the class name is documented, it is considered to match all elements.
507507
yield* elements
508508
return
509+
} else if (removeModifierClassName) {
510+
if (removeModifierClassName.matchString(modClassName)) {
511+
// If the class name is documented, it is considered to match all elements.
512+
yield* elements
513+
return
514+
}
509515
}
510516
}
511517

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-vue-scoped-css",
3-
"version": "0.3.1",
3+
"version": "0.3.2",
44
"description": "ESLint plugin for Scoped CSS in Vue.js",
55
"main": "dist/index.js",
66
"scripts": {

tests/lib/rules/no-unused-selector.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,29 @@ tester.run("no-unused-selector", rule, {
301301
},
302302
],
303303
},
304+
{
305+
code: `
306+
<template>
307+
<div></div>
308+
</template>
309+
<style scoped>
310+
/* .element - doc. */
311+
.element {
312+
color: green;
313+
}
314+
.element--mod {
315+
color: red;
316+
}
317+
</style>`,
318+
options: [
319+
{
320+
ignoreBEMModifier: true,
321+
captureClassesFromDoc: [
322+
"/(\\.[a-z-]+)(?::[a-z-]+)?\\s+-\\s*[^\\r\\n]+/i",
323+
],
324+
},
325+
],
326+
},
304327
// ignore nodes
305328
`
306329
<template>

tests/lib/rules/require-selector-used-inside.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,29 @@ tester.run("require-selector-used-inside", rule, {
262262
},
263263
],
264264
},
265+
{
266+
code: `
267+
<template>
268+
<div></div>
269+
</template>
270+
<style scoped>
271+
/* .element - doc. */
272+
.element {
273+
color: green;
274+
}
275+
.element--mod {
276+
color: red;
277+
}
278+
</style>`,
279+
options: [
280+
{
281+
ignoreBEMModifier: true,
282+
captureClassesFromDoc: [
283+
"/(\\.[a-z-]+)(?::[a-z-]+)?\\s+-\\s*[^\\r\\n]+/i",
284+
],
285+
},
286+
],
287+
},
265288
// ignore nodes
266289
`
267290
<template>

0 commit comments

Comments
 (0)