Vuetify 自动完成菜单/芯片样式的下拉菜单
Vuetify Autocomplete Menu / Dropdown in chips style
我想更改自动完成框下拉菜单中项目的样式。 Vuetify-Autocomplete
目前它显示每个项目的标准样式:
Current
<v-autocomplete
chips
deletable-chips
multiple
v-model="selectedTags"
:items="tags"
></v-autocomplete>
但我希望它像这样显示筹码项目样式:
Chips-Style
如果可能,甚至可以为每个标签使用特定的颜色。
我目前在 Table 中使用正常的“v-chip”组件显示它们,效果很好!
Table with colored chips
我尝试对 CSS 和每次都会导致错误的 V-autocomplete 组件进行一些修补。
我试图找到类似
的内容
:menu-props="{
nudgeBottom: 15 + 'px',
zIndex: 2,
allowOverflow,
rounded: 'xl' // <-- Here ✅
}"
显示在本期 中。
但是对于 Menu 里面的 Props/Items 而不是 Menu.
另一个解决方案是自己做一个不使用下拉列表的版本,我只是检查字符串是否包含在我的 Chip-List 中的一个 Chip 中,并将它们显示在 Searchbar 下方.但是我需要拒绝自动完成的一些很酷的功能。
我还不能添加图片,因为我太新了。
抱歉!
我希望我包含了所有信息。
检查我制作的这个codesandbox:https://codesandbox.io/s/stack-70189718-eqwgl?file=/src/components/AutoChips.vue
一些 vuetify 组件有一个叫做 slots
的东西,你可以根据自己的需要自定义,如果 v-autocomplete
有一个 item
插槽,可以自定义显示的项目列表。您需要做的就是为列表中的项目创建一个自定义模板。
<v-autocomplete
v-model="values"
:items="items"
chips
deletable-chips
multiple
label="Autocomplete custom items"
>
<template v-slot:item="{ item, on, attrs }">
<v-list-item v-on="on" v-bind="attrs" #default="{ active }">
<v-list-item-action>
<v-checkbox :color="getChipColor(item)" :input-value="active"></v-checkbox>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
<v-chip dark :color="getChipColor(item)"> {{ item }} </v-chip>
</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-autocomplete>
您可以通过创建一个简单的方法并传递项目值来为每个 v-chip
设置自定义颜色。
getChipColor(item) {
switch (item) {
case 'foo':
return 'red darken-2'
case 'bar':
return 'green darken-2'
case 'fizz':
return 'orange darken-2'
case 'buzz':
return 'purple darken-2'
default:
return 'grey lighten-2'
}
}
如果您也想自定义所选芯片,只需修改 selection
插槽即可。您可以在其 API 文档页面上查看 v-autocomplete
的所有可用插槽。 https://vuetifyjs.com/en/api/v-autocomplete/#slots
我想更改自动完成框下拉菜单中项目的样式。 Vuetify-Autocomplete
目前它显示每个项目的标准样式: Current
<v-autocomplete
chips
deletable-chips
multiple
v-model="selectedTags"
:items="tags"
></v-autocomplete>
但我希望它像这样显示筹码项目样式:
Chips-Style
如果可能,甚至可以为每个标签使用特定的颜色。 我目前在 Table 中使用正常的“v-chip”组件显示它们,效果很好! Table with colored chips
我尝试对 CSS 和每次都会导致错误的 V-autocomplete 组件进行一些修补。
我试图找到类似
的内容:menu-props="{
nudgeBottom: 15 + 'px',
zIndex: 2,
allowOverflow,
rounded: 'xl' // <-- Here ✅
}"
显示在本期
另一个解决方案是自己做一个不使用下拉列表的版本,我只是检查字符串是否包含在我的 Chip-List 中的一个 Chip 中,并将它们显示在 Searchbar 下方.但是我需要拒绝自动完成的一些很酷的功能。
我还不能添加图片,因为我太新了。 抱歉!
我希望我包含了所有信息。
检查我制作的这个codesandbox:https://codesandbox.io/s/stack-70189718-eqwgl?file=/src/components/AutoChips.vue
一些 vuetify 组件有一个叫做 slots
的东西,你可以根据自己的需要自定义,如果 v-autocomplete
有一个 item
插槽,可以自定义显示的项目列表。您需要做的就是为列表中的项目创建一个自定义模板。
<v-autocomplete
v-model="values"
:items="items"
chips
deletable-chips
multiple
label="Autocomplete custom items"
>
<template v-slot:item="{ item, on, attrs }">
<v-list-item v-on="on" v-bind="attrs" #default="{ active }">
<v-list-item-action>
<v-checkbox :color="getChipColor(item)" :input-value="active"></v-checkbox>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
<v-chip dark :color="getChipColor(item)"> {{ item }} </v-chip>
</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-autocomplete>
您可以通过创建一个简单的方法并传递项目值来为每个 v-chip
设置自定义颜色。
getChipColor(item) {
switch (item) {
case 'foo':
return 'red darken-2'
case 'bar':
return 'green darken-2'
case 'fizz':
return 'orange darken-2'
case 'buzz':
return 'purple darken-2'
default:
return 'grey lighten-2'
}
}
如果您也想自定义所选芯片,只需修改 selection
插槽即可。您可以在其 API 文档页面上查看 v-autocomplete
的所有可用插槽。 https://vuetifyjs.com/en/api/v-autocomplete/#slots