From 50802e1aed1a8ed9b0eead1d45722793a86d3069 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Tue, 1 Feb 2022 11:54:03 -0500 Subject: [PATCH] Correctly parse shadow lengths without a leading zero (#7289) * Correctly parse shadow lengths without a leading zero * Update changelog * Fix code style --- CHANGELOG.md | 1 + src/util/parseBoxShadowValue.js | 2 +- tests/basic-usage.test.js | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 711cc14f94fd..f34be5d80f95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fix preflight border color fallback ([#7288](https://github.com/tailwindlabs/tailwindcss/pull/7288)) +- Correctly parse shadow lengths without a leading zero ([#7289](https://github.com/tailwindlabs/tailwindcss/pull/7289)) ## [3.0.18] - 2022-01-28 diff --git a/src/util/parseBoxShadowValue.js b/src/util/parseBoxShadowValue.js index eb4872c7e831..ceafe650918d 100644 --- a/src/util/parseBoxShadowValue.js +++ b/src/util/parseBoxShadowValue.js @@ -1,7 +1,7 @@ let KEYWORDS = new Set(['inset', 'inherit', 'initial', 'revert', 'unset']) let COMMA = /\,(?![^(]*\))/g // Comma separator that is not located between brackets. E.g.: `cubiz-bezier(a, b, c)` these don't count. let SPACE = /\ +(?![^(]*\))/g // Similar to the one above, but with spaces instead. -let LENGTH = /^-?(\d+)(.*?)$/g +let LENGTH = /^-?(\d+|\.\d+)(.*?)$/g export function parseBoxShadowValue(input) { let shadows = input.split(COMMA) diff --git a/tests/basic-usage.test.js b/tests/basic-usage.test.js index 9d7db9bf7eaa..2f43fa3c6cae 100644 --- a/tests/basic-usage.test.js +++ b/tests/basic-usage.test.js @@ -137,3 +137,38 @@ it('fasly config values still work', () => { `) }) }) + +it('shadows support values without a leading zero', () => { + let config = { + content: [{ raw: html`
` }], + theme: { + boxShadow: { + one: '0.5rem 0.5rem 0.5rem #0005', + two: '.5rem .5rem .5rem #0005', + }, + }, + plugins: [], + corePlugins: { preflight: false }, + } + + let input = css` + @tailwind utilities; + ` + + return run(input, config).then((result) => { + expect(result.css).toMatchFormattedCss(css` + .shadow-one { + --tw-shadow: 0.5rem 0.5rem 0.5rem #0005; + --tw-shadow-colored: 0.5rem 0.5rem 0.5rem var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), + var(--tw-shadow); + } + .shadow-two { + --tw-shadow: 0.5rem 0.5rem 0.5rem #0005; + --tw-shadow-colored: 0.5rem 0.5rem 0.5rem var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), + var(--tw-shadow); + } + `) + }) +})