Skip to content

Commit a7679ec

Browse files
committed
ensure peer variants don't include multiple ~ characters
Fixes: #4726
1 parent 8da840f commit a7679ec

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

src/jit/corePlugins.js

+2-5
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,8 @@ export default {
201201
return null
202202
}
203203

204-
return applyPseudoToMarker(
205-
variantSelector,
206-
peerMarker,
207-
state,
208-
(marker, selector) => `${marker} ~ ${selector}`
204+
return applyPseudoToMarker(variantSelector, peerMarker, state, (marker, selector) =>
205+
selector.trim().startsWith('~') ? `${marker}${selector}` : `${marker} ~ ${selector}`
209206
)
210207
})
211208
)

tests/jit/variants.test.js

+26
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,29 @@ test('variants', () => {
3232
expect(result.css).toMatchFormattedCss(expected)
3333
})
3434
})
35+
36+
test('stacked peer variants', async () => {
37+
let config = {
38+
mode: 'jit',
39+
purge: [{ raw: 'peer-disabled:peer-focus:peer-hover:border-blue-500' }],
40+
corePlugins: { preflight: false },
41+
theme: {},
42+
plugins: [],
43+
}
44+
45+
let css = `
46+
@tailwind base;
47+
@tailwind components;
48+
@tailwind utilities;
49+
`
50+
51+
let expected = `
52+
.peer:disabled:focus:hover ~ .peer-disabled\\:peer-focus\\:peer-hover\\:border-blue-500 {
53+
--tw-border-opacity: 1;
54+
border-color: rgba(59, 130, 246, var(--tw-border-opacity));
55+
}
56+
`
57+
58+
let result = await run(css, config)
59+
expect(result.css).toIncludeCss(expected)
60+
})

0 commit comments

Comments
 (0)