File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -65,25 +65,12 @@ const numberFormatter = useNumberFormatter()
6565 >
6666 </component >
6767
68- <div class =" relative z-1" >
69- <label >
70- <span class =" sr-only" > {{ $t('package.card.select') }}: {{ result.package.name }} </span >
71-
72- <input
73- data-package-card-checkbox
74- class =" md:opacity-0 group-focus-within:opacity-100 checked:opacity-100 md:group-hover:opacity-100 size-4 cursor-pointer accent-accent border border-fg-muted/30 hover:border-accent transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
75- type =" checkbox"
76- :checked =" isSelected"
77- :disabled =" isMaxSelected && !isSelected"
78- :title ="
79- isMaxSelected && !isSelected
80- ? $t('package.card.select_maximum', MAX_PACKAGE_SELECTION)
81- : undefined
82- "
83- @change =" togglePackageSelection(result.package.name)"
84- />
85- </label >
86- </div >
68+ <PackageSelectionCheckbox
69+ :package-name =" result.package.name"
70+ :disabled =" isMaxSelected && !isSelected"
71+ :checked =" isSelected"
72+ @change =" togglePackageSelection"
73+ />
8774 </header >
8875
8976 <div class =" flex flex-col sm:flex-row sm:justify-start sm:items-start gap-6 sm:gap-8" >
Original file line number Diff line number Diff line change 1+ <script setup lang="ts">
2+ const props = defineProps <{
3+ packageName: string
4+ checked: boolean
5+ disabled? : boolean
6+ }>()
7+
8+ const emit = defineEmits <{
9+ (e : ' change' , packageName : string ): void
10+ }>()
11+
12+ const { t } = useI18n ()
13+ const disabledText = t (' package.card.select_maximum' , MAX_PACKAGE_SELECTION )
14+ </script >
15+
16+ <template >
17+ <div class =" relative z-1" >
18+ <label >
19+ <span class =" sr-only" v-if =" disabled" >{{ disabledText }}</span >
20+ <span class =" sr-only" v-else > {{ $t('package.card.select') }}: {{ packageName }} </span >
21+
22+ <TooltipApp v-if =" disabled" :text =" disabledText" position =" top" >
23+ <input
24+ class =" opacity-0 group-hover:opacity-100 size-4 accent-accent border border-fg-muted/30 hover:cursor-not-allowed"
25+ :class =" { 'opacity-100! disabled:opacity-30!': isTouchDevice() }"
26+ type =" checkbox"
27+ :disabled
28+ />
29+ </TooltipApp >
30+
31+ <input
32+ v-else
33+ data-package-card-checkbox
34+ class =" opacity-0 group-focus-within:opacity-100 checked:opacity-100 group-hover:opacity-100 size-4 cursor-pointer accent-accent border border-fg-muted/30 hover:border-accent transition-colors disabled:group-hover:opacity-30 disabled:hover:cursor-not-allowed"
35+ :class =" { 'opacity-100! disabled:opacity-30!': isTouchDevice() }"
36+ type =" checkbox"
37+ :checked
38+ :disabled
39+ @change =" emit('change', packageName)"
40+ />
41+ </label >
42+ </div >
43+ </template >
Original file line number Diff line number Diff line change @@ -11,13 +11,8 @@ const { data, pending } = useAsyncData(
1111 const results = await Promise .all (
1212 selectedPackages .value .map (name =>
1313 $fetch (` /api/registry/package-meta/${encodeURIComponent (name )} ` )
14- .then (response => {
15- return { package: response }
16- })
17- .catch (err => {
18- console .error (` Failed to fetch package ${name }: ` , err )
19- return null
20- }),
14+ .then (response => ({ package: response }))
15+ .catch (() => []),
2116 ),
2217 )
2318 return results as NpmSearchResult []
Original file line number Diff line number Diff line change @@ -201,27 +201,13 @@ const allMaintainersText = computed(() => {
201201 <span v-else class =" text-fg-subtle" > - </span >
202202 </td >
203203
204- <td class =" pe-2 relative z-1" >
205- <div class =" flex items-center justify-center h-full" >
206- <label >
207- <span class =" sr-only" >
208- {{ $t('package.card.select') }}
209- </span >
210- <input
211- data-package-card-checkbox
212- class =" md:opacity-0 group-focus-within:opacity-100 checked:opacity-100 md:group-hover:opacity-100 size-4 cursor-pointer accent-accent border border-fg-muted/30 hover:border-accent transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
213- type =" checkbox"
214- :checked =" isSelected"
215- :disabled =" isMaxSelected && !isSelected"
216- :title ="
217- isMaxSelected && !isSelected
218- ? $t('package.card.select_maximum', MAX_PACKAGE_SELECTION)
219- : undefined
220- "
221- @change =" togglePackageSelection(result.package.name)"
222- />
223- </label >
224- </div >
204+ <td class =" pe-2" >
205+ <PackageSelectionCheckbox
206+ :package-name =" result.package.name"
207+ :disabled =" isMaxSelected && !isSelected"
208+ :checked =" isSelected"
209+ @change =" togglePackageSelection"
210+ />
225211 </td >
226212 </tr >
227213</template >
You can’t perform that action at this time.
0 commit comments