From b1447f4e578fad6d5603f5bd814518d46b537e05 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 14 Feb 2022 12:09:50 -0500 Subject: [PATCH 1/3] Support functions in pseudo variant list --- src/corePlugins.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/corePlugins.js b/src/corePlugins.js index fdcc673d8a14..2de92509c086 100644 --- a/src/corePlugins.js +++ b/src/corePlugins.js @@ -70,7 +70,12 @@ export let variantPlugins = { 'only-of-type', // State - 'visited', + [ + 'visited', + ({ container }) => { + return ':visited' + }, + ], 'target', ['open', '[open]'], @@ -100,15 +105,27 @@ export let variantPlugins = { ].map((variant) => (Array.isArray(variant) ? variant : [variant, `:${variant}`])) for (let [variantName, state] of pseudoVariants) { - addVariant(variantName, `&${state}`) + addVariant(variantName, (ctx) => { + let result = typeof state === 'function' ? state(ctx) : state + + return `&${result}` + }) } for (let [variantName, state] of pseudoVariants) { - addVariant(`group-${variantName}`, `:merge(.group)${state} &`) + addVariant(`group-${variantName}`, (ctx) => { + let result = typeof state === 'function' ? state(ctx) : state + + return `:merge(.group)${result} &` + }) } for (let [variantName, state] of pseudoVariants) { - addVariant(`peer-${variantName}`, `:merge(.peer)${state} ~ &`) + addVariant(`peer-${variantName}`, (ctx) => { + let result = typeof state === 'function' ? state(ctx) : state + + return `:merge(.peer)${result} ~ &` + }) } }, From 9346d4ccb7f4a2f8f4f45c3fdb9db58540b451bf Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 14 Feb 2022 12:10:11 -0500 Subject: [PATCH 2/3] Remove text/border/bg color from :visited --- src/corePlugins.js | 16 ++++++++++++++++ tests/variants.test.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/corePlugins.js b/src/corePlugins.js index 2de92509c086..1d4c3e25f315 100644 --- a/src/corePlugins.js +++ b/src/corePlugins.js @@ -73,6 +73,22 @@ export let variantPlugins = { [ 'visited', ({ container }) => { + let toRemove = ['--tw-text-opacity', '--tw-border-opacity', '--tw-bg-opacity'] + + container.walkDecls((decl) => { + if (toRemove.includes(decl.prop)) { + decl.remove() + + return + } + + for (const varName of toRemove) { + if (decl.value.includes(`/ var(${varName})`)) { + decl.value = decl.value.replace(`/ var(${varName})`, '') + } + } + }) + return ':visited' }, ], diff --git a/tests/variants.test.js b/tests/variants.test.js index 72defcfe0dcf..972801e2b700 100644 --- a/tests/variants.test.js +++ b/tests/variants.test.js @@ -539,3 +539,32 @@ it('variants for utilities should not be produced in a file without a utilities `) }) }) + +test('The visited variant removes opacity support', () => { + let config = { + content: [ + { + raw: html` + Look, it's a link! + `, + }, + ], + plugins: [], + } + + return run('@tailwind utilities', config).then((result) => { + return expect(result.css).toMatchFormattedCss(css` + .visited\:border-red-500:visited { + border-color: rgb(239 68 68); + } + .visited\:bg-red-500:visited { + background-color: rgb(239 68 68); + } + .visited\:text-red-500:visited { + color: rgb(239 68 68); + } + `) + }) +}) From 48c401102d93ff4b9ea0145557ae7b8e7e839495 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 14 Feb 2022 12:25:05 -0500 Subject: [PATCH 3/3] Update changelog --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08386e187eb6..26567a4de8b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- Nothing yet! +### Fixed + +- Remove opacity variables from `:visited` pseudo class ([#7458](https://github.com/tailwindlabs/tailwindcss/pull/7458)) ## [3.0.22] - 2022-02-11