@@ -983,7 +983,7 @@ defineTest({
983
983
} )
984
984
985
985
defineTest ( {
986
- name : 'Completions for outline and border utilities have simplified details' ,
986
+ name : 'Completions for several utilities have simplified details' ,
987
987
fs : {
988
988
'app.css' : css `
989
989
@import 'tailwindcss';
@@ -993,24 +993,59 @@ defineTest({
993
993
handle : async ( { client } ) => {
994
994
let document = await client . open ( {
995
995
lang : 'html' ,
996
- text : html `< div class ="border-0 outline-0 "> </ div > ` ,
996
+ text : html `< div class =""> </ div > ` ,
997
997
} )
998
998
999
- // <div class="border-0 outline-0"></div>
1000
- // ^
1001
- let completionA = await document . completions ( { line : 0 , character : 20 } )
999
+ // <div class=""></div>
1000
+ // ^
1001
+ let list = await document . completions ( { line : 0 , character : 12 } )
1002
+ let items = list ?. items ?? [ ]
1003
+
1004
+ let map = {
1005
+ 'border-0' : 'border-width: 0px;' ,
1006
+ 'outline-0' : 'outline-width: 0px;' ,
1007
+ 'leading-0' : 'line-height: 0rem /* 0px */;' ,
1008
+ 'duration-1000' : 'transition-duration: 1000ms;' ,
1009
+ 'font-bold' : 'font-weight: 700;' ,
1010
+ 'ease-linear' : 'transition-timing-function: linear;' ,
1011
+ 'ease-initial' : '--tw-ease: initial;' ,
1012
+
1013
+ 'space-x-0' :
1014
+ 'margin-inline-start: calc(0rem /* 0px */ * var(--tw-space-x-reverse)); margin-inline-end: calc(0rem /* 0px */ * calc(1 - var(--tw-space-x-reverse)));' ,
1015
+ 'space-y-0' :
1016
+ 'margin-block-start: calc(0rem /* 0px */ * var(--tw-space-y-reverse)); margin-block-end: calc(0rem /* 0px */ * calc(1 - var(--tw-space-y-reverse)));' ,
1017
+ 'divide-x-0' :
1018
+ 'border-inline-start-width: calc(0px * var(--tw-divide-x-reverse)); border-inline-end-width: calc(0px * calc(1 - var(--tw-divide-x-reverse)));' ,
1019
+ 'divide-y-0' :
1020
+ 'border-top-width: calc(0px * var(--tw-divide-y-reverse)); border-bottom-width: calc(0px * calc(1 - var(--tw-divide-y-reverse)));' ,
1021
+
1022
+ 'tracking-wide' : 'letter-spacing: 0.025em;' ,
1023
+
1024
+ 'from-red-500' : '--tw-gradient-from: oklch(63.7% 0.237 25.331);' ,
1025
+ 'via-red-500' : '--tw-gradient-via: oklch(63.7% 0.237 25.331);' ,
1026
+ 'to-red-500' : '--tw-gradient-to: oklch(63.7% 0.237 25.331);' ,
1027
+
1028
+ 'scale-100' : '--tw-scale-x: 100%; --tw-scale-y: 100%; --tw-scale-z: 100%;' ,
1029
+ 'scale-z-100' : '--tw-scale-z: 100%;' ,
1030
+
1031
+ 'translate-1' : '--tw-translate-x: 0.25rem /* 4px */; --tw-translate-y: 0.25rem /* 4px */;' ,
1032
+ 'translate-z-1' : '--tw-translate-z: 0.25rem /* 4px */;' ,
1033
+
1034
+ 'bg-conic-0' :
1035
+ '--tw-gradient-position: from 0deg in oklab; background-image: conic-gradient(var(--tw-gradient-stops));' ,
1036
+ }
1002
1037
1003
- // <div class="border-0 outline-0"></div>
1004
- // ^
1005
- let completionB = await document . completions ( { line : 0 , character : 30 } )
1038
+ let requests = await Promise . all (
1039
+ Object . keys ( map ) . map ( async ( label ) => {
1040
+ let item = items . find ( ( item ) => item . label === label )
1041
+ if ( ! item ) throw new Error ( `Item not found for label: ${ label } ` )
1006
1042
1007
- let border = completionA ?. items . find ( ( item ) => item . label === 'border-0' )
1008
- let outline = completionB ?. items . find ( ( item ) => item . label === 'outline-0' )
1043
+ let resolved = await client . conn . sendRequest ( 'completionItem/resolve' , item )
1009
1044
1010
- let borderResolved = await client . conn . sendRequest ( 'completionItem/resolve' , border )
1011
- let outlineResolved = await client . conn . sendRequest ( 'completionItem/resolve' , outline )
1045
+ return [ label , resolved . detail ]
1046
+ } ) ,
1047
+ )
1012
1048
1013
- expect ( borderResolved ) . toMatchObject ( { detail : 'border-width: 0px;' } )
1014
- expect ( outlineResolved ) . toMatchObject ( { detail : 'outline-width: 0px;' } )
1049
+ expect ( Object . fromEntries ( requests ) ) . toEqual ( map )
1015
1050
} ,
1016
1051
} )
0 commit comments