Skip to content

Commit

Permalink
Match arbitrary properties even when followed by square bracketed text (
Browse files Browse the repository at this point in the history
#10212)

* Match arbitrary properties even when followed by square bracketed text

* Update changelog
  • Loading branch information
thecrypticace committed Jan 2, 2023
1 parent 5594c3b commit 3a8e95d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Properly handle subtraction followed by a variable ([#10074](https://github.com/tailwindlabs/tailwindcss/pull/10074))
- Fix missing `string[]` in the `theme.dropShadow` types ([#10072](https://github.com/tailwindlabs/tailwindcss/pull/10072))
- Update list of length units ([#10100](https://github.com/tailwindlabs/tailwindcss/pull/10100))
- Fix not matching arbitrary properties when closely followed by square brackets ([#10212](https://github.com/tailwindlabs/tailwindcss/pull/10212))

### Changed

Expand Down
10 changes: 8 additions & 2 deletions src/lib/defaultExtractor.js
Expand Up @@ -28,8 +28,14 @@ function* buildRegExps(context) {
: ''

let utility = regex.any([
// Arbitrary properties
/\[[^\s:'"`]+:[^\s]+\]/,
// Arbitrary properties (without square brackets)
/\[[^\s:'"`]+:[^\s\[\]]+\]/,

// Arbitrary properties with balanced square brackets
// This is a targeted fix to continue to allow theme()
// with square brackets to work in arbitrary properties
// while fixing a problem with the regex matching too much
/\[[^\s:'"`]+:[^\s]+?\[[^\s]+?\][^\s]+?\]/,

// Utilities
regex.pattern([
Expand Down
8 changes: 8 additions & 0 deletions tests/default-extractor.test.js
Expand Up @@ -488,3 +488,11 @@ test('ruby percent string array', () => {

expect(extractions).toContain(`text-[#bada55]`)
})

test('arbitrary properties followed by square bracketed stuff', () => {
let extractions = defaultExtractor(
'<div class="h-16 items-end border border-white [display:inherit]">[foo]</div>'
)

expect(extractions).toContain(`[display:inherit]`)
})

0 comments on commit 3a8e95d

Please sign in to comment.