Skip to content

Commit

Permalink
Support border-opacity with default border color (#4277)
Browse files Browse the repository at this point in the history
* Move border reset to borderColor plugin, support opacity

* Update JIT tests

* Don't use opacity variable for default border color when borderOpacity is disabled

* Fix tests
  • Loading branch information
adamwathan committed May 8, 2021
1 parent 2f100ef commit 4bfa21f
Show file tree
Hide file tree
Showing 25 changed files with 155 additions and 7 deletions.
18 changes: 17 additions & 1 deletion src/plugins/borderColor.js
Expand Up @@ -2,7 +2,23 @@ import flattenColorPalette from '../util/flattenColorPalette'
import withAlphaVariable from '../util/withAlphaVariable'

export default function () {
return function ({ matchUtilities, theme, variants, corePlugins }) {
return function ({ addBase, matchUtilities, theme, variants, corePlugins }) {
if (!corePlugins('borderOpacity')) {
addBase({
'*, ::before, ::after': {
'border-color': theme('borderColor.DEFAULT', 'currentColor'),
},
})
} else {
addBase({
'*, ::before, ::after': withAlphaVariable({
color: theme('borderColor.DEFAULT', 'currentColor'),
property: 'border-color',
variable: '--tw-border-opacity',
}),
})
}

matchUtilities(
{
border: (value) => {
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/css/preflight.css
Expand Up @@ -110,7 +110,7 @@ body {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: theme('borderColor.DEFAULT', currentColor); /* 2 */
border-color: currentColor; /* 2 */
}

/*
Expand Down
7 changes: 6 additions & 1 deletion tests/fixtures/tailwind-output-flagged.css
Expand Up @@ -410,7 +410,7 @@ body {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: #e5e7eb; /* 2 */
border-color: currentColor; /* 2 */
}

/*
Expand Down Expand Up @@ -539,6 +539,11 @@ video {
height: auto;
}

*, ::before, ::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}

.container {
width: 100%;
}
Expand Down
7 changes: 6 additions & 1 deletion tests/fixtures/tailwind-output-important.css
Expand Up @@ -410,7 +410,7 @@ body {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: #e5e7eb; /* 2 */
border-color: currentColor; /* 2 */
}

/*
Expand Down Expand Up @@ -539,6 +539,11 @@ video {
height: auto;
}

*, ::before, ::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}

.container {
width: 100%;
}
Expand Down
6 changes: 5 additions & 1 deletion tests/fixtures/tailwind-output-no-color-opacity.css
Expand Up @@ -410,7 +410,7 @@ body {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: #e5e7eb; /* 2 */
border-color: currentColor; /* 2 */
}

/*
Expand Down Expand Up @@ -539,6 +539,10 @@ video {
height: auto;
}

*, ::before, ::after {
border-color: #e5e7eb;
}

.container {
width: 100%;
}
Expand Down
7 changes: 6 additions & 1 deletion tests/fixtures/tailwind-output.css
Expand Up @@ -410,7 +410,7 @@ body {
box-sizing: border-box; /* 1 */
border-width: 0; /* 2 */
border-style: solid; /* 2 */
border-color: #e5e7eb; /* 2 */
border-color: currentColor; /* 2 */
}

/*
Expand Down Expand Up @@ -539,6 +539,11 @@ video {
height: auto;
}

*, ::before, ::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}

.container {
width: 100%;
}
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/apply.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/arbitrary-values.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/basic-usage.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/collapse-adjacent-rules.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/custom-extractors.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/import-syntax.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/important-boolean.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/important-modifier-prefix.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/important-modifier.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/important-selector.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/kitchen-sink.test.css
Expand Up @@ -126,6 +126,12 @@
}
}
}
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
5 changes: 5 additions & 0 deletions tests/jit/opacity.test.css
@@ -1,3 +1,8 @@
*,
::before,
::after {
border-color: #e5e7eb;
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
8 changes: 7 additions & 1 deletion tests/jit/prefix.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down Expand Up @@ -73,7 +79,7 @@
.tw-group:hover .group-hover\:focus-within\:tw-text-left:focus-within {
text-align: left;
}
[dir="rtl"] .rtl\:active\:tw-text-center:active {
[dir='rtl'] .rtl\:active\:tw-text-center:active {
text-align: center;
}
@media (prefers-reduced-motion: no-preference) {
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/raw-content.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/raw-content.test.js
Expand Up @@ -71,6 +71,12 @@ test('raw content with extension', () => {

return run(tailwind, css, config).then((result) => {
expect(result.css).toMatchFormattedCss(`
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/relative-purge-paths.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/responsive-and-variants-atrules.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/svelte-syntax.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down
6 changes: 6 additions & 0 deletions tests/jit/variants.test.css
@@ -1,3 +1,9 @@
*,
::before,
::after {
--tw-border-opacity: 1;
border-color: rgba(229, 231, 235, var(--tw-border-opacity));
}
* {
--tw-shadow: 0 0 #0000;
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
Expand Down

0 comments on commit 4bfa21f

Please sign in to comment.