@@ -64,25 +64,43 @@ export function completionsFromClassList(
6464 }
6565
6666 if ( state . jit ) {
67+ let { variants : existingVariants , offset } = getVariantsFromClassName ( state , partialClassName )
68+
6769 if (
6870 context &&
6971 ( context . triggerKind === 1 ||
7072 ( context . triggerKind === 2 && context . triggerCharacter === '/' ) ) &&
7173 partialClassName . includes ( '/' )
7274 ) {
73- // opacity modifiers
75+ // modifiers
76+ let modifiers : string [ ]
7477 let beforeSlash = partialClassName . split ( '/' ) . slice ( 0 , - 1 ) . join ( '/' )
75- let testClass = beforeSlash + '/[0]'
76- let { rules } = jit . generateRules ( state , [ testClass ] )
77- if ( rules . length > 0 ) {
78- let opacities = dlv ( state . config , 'theme.opacity' , { } )
79- if ( ! isObject ( opacities ) ) {
80- opacities = { }
78+ let classListContainsModifiers = state . classList . some (
79+ ( cls ) => Array . isArray ( cls ) && cls [ 1 ] . modifiers
80+ )
81+
82+ if ( classListContainsModifiers ) {
83+ let baseClassName = beforeSlash . slice ( offset )
84+ modifiers = state . classList . find (
85+ ( cls ) => Array . isArray ( cls ) && cls [ 0 ] === baseClassName
86+ ) ?. [ 1 ] . modifiers
87+ } else {
88+ let testClass = beforeSlash + '/[0]'
89+ let { rules } = jit . generateRules ( state , [ testClass ] )
90+ if ( rules . length > 0 ) {
91+ let opacities = dlv ( state . config , 'theme.opacity' , { } )
92+ if ( ! isObject ( opacities ) ) {
93+ opacities = { }
94+ }
95+ modifiers = Object . keys ( opacities )
8196 }
97+ }
98+
99+ if ( modifiers ) {
82100 return {
83101 isIncomplete : false ,
84- items : Object . keys ( opacities ) . map ( ( opacity , index ) => {
85- let className = `${ beforeSlash } /${ opacity } `
102+ items : modifiers . map ( ( modifier , index ) => {
103+ let className = `${ beforeSlash } /${ modifier } `
86104 let kind : CompletionItemKind = 21
87105 let documentation : string = null
88106
@@ -110,8 +128,6 @@ export function completionsFromClassList(
110128 }
111129 }
112130
113- let { variants : existingVariants , offset } = getVariantsFromClassName ( state , partialClassName )
114-
115131 replacementRange . start . character += offset
116132
117133 let important = partialClassName . substr ( offset ) . startsWith ( '!' )
0 commit comments