docs(SelectMenu): improve

This commit is contained in:
Benjamin Canac
2023-12-12 16:27:31 +01:00
parent 0129e2db40
commit 781365a5ed
4 changed files with 35 additions and 46 deletions

View File

@@ -28,11 +28,9 @@ const selected = ref(people[0])
<template>
<USelectMenu v-model="selected" :options="people">
<template #label>
<UIcon v-if="selected.icon" :name="selected.icon" class="w-4 h-4" />
<UAvatar v-else-if="selected.avatar" v-bind="selected.avatar" size="3xs" />
{{ selected.label }}
<template #leading>
<UIcon v-if="selected.icon" :name="selected.icon" class="w-4 h-4 mx-0.5" />
<UAvatar v-else-if="selected.avatar" v-bind="selected.avatar" size="3xs" class="mx-0.5" />
</template>
</USelectMenu>
</template>

View File

@@ -13,9 +13,7 @@ const people = [{
name: 'Tom Cook'
}]
const selected = ref(people[0].id)
const current = computed(() => people.find(person => person.id === selected.value))
const selected = ref(people[0].name)
</script>
<template>
@@ -23,11 +21,7 @@ const current = computed(() => people.find(person => person.id === selected.valu
v-model="selected"
:options="people"
placeholder="Select people"
value-attribute="id"
value-attribute="name"
option-attribute="name"
>
<template #label>
{{ current.name }}
</template>
</USelectMenu>
/>
</template>

View File

@@ -1,11 +1,11 @@
<script setup>
const options = [
{ id: 1, name: 'Wade Cooper', favoriteColors: ['red', 'yellow'] },
{ id: 2, name: 'Arlene Mccoy', favoriteColors: ['blue', 'yellow'] },
{ id: 3, name: 'Devon Webb', favoriteColors: ['green', 'blue'] },
{ id: 4, name: 'Tom Cook', favoriteColors: ['blue', 'red'] },
{ id: 5, name: 'Tanya Fox', favoriteColors: ['green', 'red'] },
{ id: 5, name: 'Hellen Schmidt', favoriteColors: ['green', 'yellow'] }
{ id: 1, name: 'Wade Cooper', colors: ['red', 'yellow'] },
{ id: 2, name: 'Arlene Mccoy', colors: ['blue', 'yellow'] },
{ id: 3, name: 'Devon Webb', colors: ['green', 'blue'] },
{ id: 4, name: 'Tom Cook', colors: ['blue', 'red'] },
{ id: 5, name: 'Tanya Fox', colors: ['green', 'red'] },
{ id: 5, name: 'Hellen Schmidt', colors: ['green', 'yellow'] }
]
const selected = ref(options[1])
@@ -15,16 +15,15 @@ const selected = ref(options[1])
<USelectMenu
v-model="selected"
:options="options"
class="w-full lg:w-96"
placeholder="Select an user"
placeholder="Select a person"
searchable
searchable-placeholder="Search by name or favorite colors"
searchable-placeholder="Search by name or color"
option-attribute="name"
by="id"
:search-attributes="['name', 'favoriteColors']"
:search-attributes="['name', 'colors']"
>
<template #option="{ option: person }">
<span v-for="color in person.favoriteColors" :key="color.id" class="h-2 w-2 rounded-full" :class="`bg-${color}-500 dark:bg-${color}-400`" />
<span v-for="color in person.colors" :key="color.id" class="h-2 w-2 rounded-full" :class="`bg-${color}-500 dark:bg-${color}-400`" />
<span class="truncate">{{ person.name }}</span>
</template>
</USelectMenu>