From 962d4ea258e021193bd85bf3768b5e7df412e48c Mon Sep 17 00:00:00 2001 From: Javier Ugarte Date: Thu, 31 Jul 2025 20:07:38 -0300 Subject: [PATCH 1/2] Fix class name matching in javascript right after opening square brackets --- .../src/util/find.test.ts | 27 +++++++++++++++++++ .../src/util/find.ts | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/tailwindcss-language-service/src/util/find.test.ts b/packages/tailwindcss-language-service/src/util/find.test.ts index 52fea620..75934987 100644 --- a/packages/tailwindcss-language-service/src/util/find.test.ts +++ b/packages/tailwindcss-language-service/src/util/find.test.ts @@ -1081,3 +1081,30 @@ test('class functions work inside astro code fences', async ({ expect }) => { }, ]) }) + +test('classFunctions are detected inside of arrays in javascript just after opening bracket', async ({ expect }) => { + let file = createDocument({ + name: 'file.js', + lang: 'javascript', + settings: { + tailwindCSS: { + classFunctions: ['cn'], + }, + }, + content: js` + const list = [cn('relative')] + `, + }) + + let classLists = await findClassListsInHtmlRange(file.state, file.doc, 'js') + + expect(classLists).toEqual([ + { + classList: 'relative', + range: { + start: { line: 0, character: 18 }, + end: { line: 0, character: 26 }, + }, + }, + ]) +}) diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts index 11f5946f..fd2156f5 100644 --- a/packages/tailwindcss-language-service/src/util/find.ts +++ b/packages/tailwindcss-language-service/src/util/find.ts @@ -179,7 +179,7 @@ export function matchClassFunctions(text: string, fnNames: string[]): RegExpMatc // - It needs to be in an expression position — so it must be preceded by // whitespace, parens, curlies, commas, whitespace, etc… // - It must look like a fn call or a tagged template literal - let FN_NAMES = /(?<=^|[:=,;\s{()])([\p{ID_Start}$_][\p{ID_Continue}$_.]*)[(`]/dgiu + let FN_NAMES = /(?<=^|[:=,;\s{()\[])([\p{ID_Start}$_][\p{ID_Continue}$_.]*)[(`]/dgiu let foundFns = findAll(FN_NAMES, text) // 3. Match against the function names in the document From 4b6666da0098309ea642e417fec538c2ec0d8672 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Thu, 31 Jul 2025 22:23:13 -0400 Subject: [PATCH 2/2] Update changelog --- packages/vscode-tailwindcss/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vscode-tailwindcss/CHANGELOG.md b/packages/vscode-tailwindcss/CHANGELOG.md index deb0d341..747b5930 100644 --- a/packages/vscode-tailwindcss/CHANGELOG.md +++ b/packages/vscode-tailwindcss/CHANGELOG.md @@ -2,7 +2,7 @@ ## Prerelease -- Nothing yet! +- Match class functions that appear after an opening square bracket ([#1428](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1428)) ## 0.14.25