diff --git a/.changeset/silver-baboons-dress.md b/.changeset/silver-baboons-dress.md new file mode 100644 index 0000000000..dfd5423f35 --- /dev/null +++ b/.changeset/silver-baboons-dress.md @@ -0,0 +1,5 @@ +--- +"stylelint": minor +--- + +Added: regex support for `ignorePseudoElements` option of `selector-pseudo-element-no-unknown` diff --git a/lib/rules/selector-pseudo-element-no-unknown/README.md b/lib/rules/selector-pseudo-element-no-unknown/README.md index d13932b921..fcebc0db17 100644 --- a/lib/rules/selector-pseudo-element-no-unknown/README.md +++ b/lib/rules/selector-pseudo-element-no-unknown/README.md @@ -58,27 +58,27 @@ input::-moz-placeholder {} ## Optional secondary options -### `ignorePseudoElements: ["/regex/", "string"]` +### `ignorePseudoElements: ["/regex/", /regex/, "non-regex"]` Given: ```json -["/^my-/", "pseudo-element"] +["/^--my-/", "--pseudo-element"] ``` The following patterns are _not_ considered problems: ```css -a::pseudo-element {} +a::--my-pseudo {} ``` ```css -a::my-pseudo {} +a::--my-other-pseudo {} ``` ```css -a::my-other-pseudo {} +a::--pseudo-element {} ``` diff --git a/lib/rules/selector-pseudo-element-no-unknown/__tests__/index.js b/lib/rules/selector-pseudo-element-no-unknown/__tests__/index.js index 60db5af8d3..d9e2f23f6d 100644 --- a/lib/rules/selector-pseudo-element-no-unknown/__tests__/index.js +++ b/lib/rules/selector-pseudo-element-no-unknown/__tests__/index.js @@ -189,7 +189,7 @@ testRule({ testRule({ ruleName, - config: [true, { ignorePseudoElements: ['pseudo', '/^my-/'] }], + config: [true, { ignorePseudoElements: ['pseudo', '/^my-/', /foo/i] }], accept: [ { @@ -204,6 +204,9 @@ testRule({ { code: 'a::my-pseudo { }', }, + { + code: 'a::FOO-pseudo { }', + }, ], reject: [ diff --git a/lib/rules/selector-pseudo-element-no-unknown/index.js b/lib/rules/selector-pseudo-element-no-unknown/index.js index a8855af77b..25e98ddd5e 100644 --- a/lib/rules/selector-pseudo-element-no-unknown/index.js +++ b/lib/rules/selector-pseudo-element-no-unknown/index.js @@ -9,7 +9,7 @@ const report = require('../../utils/report'); const ruleMessages = require('../../utils/ruleMessages'); const validateOptions = require('../../utils/validateOptions'); const vendor = require('../../utils/vendor'); -const { isString } = require('../../utils/validateTypes'); +const { isString, isRegExp } = require('../../utils/validateTypes'); const ruleName = 'selector-pseudo-element-no-unknown'; @@ -31,7 +31,7 @@ const rule = (primary, secondaryOptions) => { { actual: secondaryOptions, possible: { - ignorePseudoElements: [isString], + ignorePseudoElements: [isString, isRegExp], }, optional: true, },