diff --git a/lib/rules/selector-type-no-unknown/__tests__/index.js b/lib/rules/selector-type-no-unknown/__tests__/index.js index 609cd81ae5..e063b5ed15 100644 --- a/lib/rules/selector-type-no-unknown/__tests__/index.js +++ b/lib/rules/selector-type-no-unknown/__tests__/index.js @@ -422,6 +422,10 @@ testRule({ code: 'x-foo {}', description: 'custom element', }, + { + code: 'custom-element::part(foo) {}', + description: 'shadow parts', + }, ], reject: [ diff --git a/lib/utils/__tests__/isStandardSyntaxTypeSelector.test.js b/lib/utils/__tests__/isStandardSyntaxTypeSelector.test.js index 156872455e..21b7fb25da 100644 --- a/lib/utils/__tests__/isStandardSyntaxTypeSelector.test.js +++ b/lib/utils/__tests__/isStandardSyntaxTypeSelector.test.js @@ -75,6 +75,11 @@ describe('isStandardSyntaxTypeSelector', () => { expect(isStandardSyntaxTypeSelector(func)).toBeFalsy(); }); }); + it('shadow-parts ident', () => { + rules('::part(foo) {}', (func) => { + expect(isStandardSyntaxTypeSelector(func)).toBeFalsy(); + }); + }); it('lowercase reference combinators', () => { rules('.foo /for/ .bar {}', (func) => { expect(isStandardSyntaxTypeSelector(func)).toBeFalsy(); diff --git a/lib/utils/isStandardSyntaxTypeSelector.js b/lib/utils/isStandardSyntaxTypeSelector.js index db728dd609..1275676272 100644 --- a/lib/utils/isStandardSyntaxTypeSelector.js +++ b/lib/utils/isStandardSyntaxTypeSelector.js @@ -27,7 +27,8 @@ module.exports = function (node) { if ( parentType === 'pseudo' && (keywordSets.aNPlusBNotationPseudoClasses.has(normalisedParentName) || - keywordSets.linguisticPseudoClasses.has(normalisedParentName)) + keywordSets.linguisticPseudoClasses.has(normalisedParentName) || + keywordSets.shadowTreePseudoElements.has(normalisedParentName)) ) { return false; }