diff --git a/src/processors/processor.ts b/src/processors/processor.ts index 6124098..02a7040 100644 --- a/src/processors/processor.ts +++ b/src/processors/processor.ts @@ -164,6 +164,22 @@ export default class Processor { const generatedClassName = this.createModuleClassname(node.name); this.addModule(node.name, generatedClassName); this.magicContent.overwrite(node.start, node.end, `.${generatedClassName}`); + return; + } + + if ( + node.type === 'PseudoClassSelector' && + node.name !== 'global' && + node.name !== 'local' && + node.args + ) { + node.args.children.forEach((complexSelector) => { + complexSelector.children.forEach((relativeSelector) => { + relativeSelector.selectors.forEach((item) => { + this.parseClassSelectors(item); + }); + }); + }); } }; diff --git a/test/nativeFixtures/stylesAttribute.test.js b/test/nativeFixtures/stylesAttribute.test.js index 3f7b2a5..e2dc560 100644 --- a/test/nativeFixtures/stylesAttribute.test.js +++ b/test/nativeFixtures/stylesAttribute.test.js @@ -96,4 +96,39 @@ describe('Native Mode', () => { expect(output).toBe(expectedOutput); }); + + test('Hash class selectors inside :not/:has/:is/:where arguments', async () => { + const source = + '' + + 'x'; + + const expectedOutput = + '' + + 'x'; + + const output = await compiler( + { + source, + }, + { + localIdentName: '[local]-123', + } + ); + + expect(output).toBe(expectedOutput); + }); }); diff --git a/test/scopedFixtures/stylesAttribute.test.js b/test/scopedFixtures/stylesAttribute.test.js index 010b936..626d648 100644 --- a/test/scopedFixtures/stylesAttribute.test.js +++ b/test/scopedFixtures/stylesAttribute.test.js @@ -216,4 +216,39 @@ describe('Scoped Mode', () => { `Red` ); }); + + test('Hash class selectors inside :not/:has/:is/:where arguments', async () => { + const source = + '' + + 'x'; + + const expectedOutput = + '' + + 'x'; + + const output = await compiler( + { + source, + }, + { + localIdentName: '[local]-123', + } + ); + + expect(output).toBe(expectedOutput); + }); });