From 4b99d9e5a4689760fabba19d6d424f08bf5897d0 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Mon, 28 Aug 2017 08:23:22 -0400 Subject: [PATCH] Add substituteHoverableAtRules, previously accidentally ignored --- src/lib/substituteHoverableAtRules.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/lib/substituteHoverableAtRules.js diff --git a/src/lib/substituteHoverableAtRules.js b/src/lib/substituteHoverableAtRules.js new file mode 100644 index 000000000..2199a60c4 --- /dev/null +++ b/src/lib/substituteHoverableAtRules.js @@ -0,0 +1,27 @@ +import _ from 'lodash' +import postcss from 'postcss' +import cloneNodes from '../util/cloneNodes' + +export default function(options) { + return function(css) { + css.walkAtRules('hoverable', atRule => { + + atRule.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, + `.\\@${rule.selector.slice(1)}:hover`, + `.\\@${rule.selector.slice(1)}:focus` + ] + }) + + const nodes = atRule.nodes + const rules = cloneNodes(nodes) + + atRule.parent.insertBefore(atRule, nodes) + + atRule.remove() + }) + } +}