Generate focus variants as separate declarations

This commit is contained in:
Adam Wathan 2017-11-22 15:52:32 -05:00
parent 7746f64806
commit 37b06c8dc9
4 changed files with 36 additions and 8 deletions

View file

@ -1,15 +1,16 @@
import cloneNodes from '../util/cloneNodes'
export default function() {
return function(css) {
css.walkAtRules('focusable', atRule => {
atRule.walkRules(rule => {
const clonedRule = atRule.clone()
clonedRule.walkRules(rule => {
// Might be wise to error if the rule has multiple selectors,
// or weird compound selectors like .bg-blue>p>h1
rule.selectors = [rule.selector, `.focus\\:${rule.selector.slice(1)}:focus`]
rule.selector = `.focus\\:${rule.selector.slice(1)}:focus`
})
atRule.before(cloneNodes(atRule.nodes))
atRule.before(atRule.clone().nodes)
atRule.after(clonedRule.nodes)
atRule.remove()
})