diff --git a/__tests__/variantsAtRule.test.js b/__tests__/variantsAtRule.test.js index 8c25282353c6..6d32a5109c27 100644 --- a/__tests__/variantsAtRule.test.js +++ b/__tests__/variantsAtRule.test.js @@ -431,6 +431,27 @@ test('it can generate even variants', () => { }) }) +test('it can generate empty variants', () => { + const input = ` + @variants empty { + .banana { color: yellow; } + .chocolate { color: brown; } + } + ` + + const output = ` + .banana { color: yellow; } + .chocolate { color: brown; } + .empty\\:banana:empty { color: yellow; } + .empty\\:chocolate:empty { color: brown; } + ` + + return run(input).then((result) => { + expect(result.css).toMatchCss(output) + expect(result.warnings().length).toBe(0) + }) +}) + test('it can generate group-hover variants', () => { const input = ` @variants group-hover { diff --git a/src/lib/substituteVariantsAtRules.js b/src/lib/substituteVariantsAtRules.js index febd89d6f532..8f321385e71c 100644 --- a/src/lib/substituteVariantsAtRules.js +++ b/src/lib/substituteVariantsAtRules.js @@ -133,6 +133,7 @@ const defaultVariantGenerators = (config) => ({ last: generatePseudoClassVariant('last-child', 'last'), odd: generatePseudoClassVariant('nth-child(odd)', 'odd'), even: generatePseudoClassVariant('nth-child(even)', 'even'), + empty: generatePseudoClassVariant('empty'), }) function prependStackableVariants(atRule, variants, stackableVariants) { diff --git a/stubs/defaultConfig.stub.js b/stubs/defaultConfig.stub.js index 0c8eb73745d5..b97b56b35cd6 100644 --- a/stubs/defaultConfig.stub.js +++ b/stubs/defaultConfig.stub.js @@ -722,6 +722,7 @@ module.exports = { 'even', 'visited', 'checked', + 'empty', 'group-hover', 'group-focus', 'focus-within',