Dashboardsuche
Bearbeiten
Die Komponente DashboardSearch erweitert die Komponente CommandPalette, sodass Sie jede Eigenschaft wie icon, placeholder usw. übergeben können.
Verwenden Sie es innerhalb des Standardsteckplatzes der Komponente DashboardGroup:
<template>
<UDashboardGroup>
<UDashboardSidebar>
<UDashboardSearchButton />
</UDashboardSidebar>
<UDashboardSearch />
<slot />
</UDashboardGroup>
</template>
v-model:open-Direktive verwenden.shortcut (englisch)
Verwenden Sie die shortcut-Prop, um die Verknüpfung zu ändern, die in defineShortcuts verwendet wird, um die ContentSearch-Komponente zu öffnen. Standardmäßig auf meta_k (: kbd{value="meta"}: kbd{value="K"}).
<template>
<UDashboardSearch
v-model:search-term="searchTerm"
shortcut="meta_k"
:groups="groups"
:fuse="{ resultLimit: 42 }"
/>
</template>
Color Mode (englisch)
Standardmäßig wird der Befehlspalette eine Gruppe von Befehlen hinzugefügt, sodass Sie zwischen dem hellen und dunklen Modus wechseln können. Dies wird nur wirksam, wenn der colorMode nicht in einer bestimmten Seite erzwungen wird, was durch definePageMeta erreicht werden kann:
<script setup lang="ts">
definePageMeta({
colorMode: 'dark'
})
</script>
Sie können dieses Verhalten deaktivieren, indem Sie die color-mode-prop auf false setzen:
<template>
<UDashboardSearch
v-model:search-term="searchTerm"
:color-mode="false"
:groups="groups"
:fuse="{ resultLimit: 42 }"
/>
</template>
API (englisch)
Props (englisch)
| Prop | Default | Type |
|---|---|---|
size | 'md' | "sm" | "md" | "xs" | "lg" | "xl" |
close | true | boolean | Omit<ButtonProps, LinkPropsKeys> Display a close button in the input (useful when inside a Modal for example).
|
input | true | boolean | Omit<InputProps<AcceptableValue, ModelModifiers>, "modelValue" | "defaultValue"> Configure the input or hide it with |
shortcut | 'meta_k' | stringKeyboard shortcut to open the search (used by |
fuse | { fuseOptions: { ignoreLocation: true, useTokenSearch: true, threshold: 0.1, keys: ['label', 'description', 'suffix'] }, resultLimit: 12, matchAllWhenSearchEmpty: true } | UseFuseOptions<CommandPaletteItem>Options for useFuse passed to the CommandPalette. |
searchDelay | 100 | numberDelay (in milliseconds) before the search term is passed to Fuse (debounced).
Useful for large datasets where running fuzzy search on every keystroke is the bottleneck — the input stays responsive while Fuse only re-runs after typing settles.
Set to |
colorMode | true | boolean When |
title | string | |
transition | true | boolean Animate the modal when opening or closing. |
description | string | |
overlay | true | boolean Render an overlay behind the modal. |
content | DialogContentProps & Partial<EmitsToProps<DialogContentImplEmits>>The content of the modal. | |
dismissible | true | boolean When |
fullscreen | false | boolean When |
modal | boolean The modality of the dialog When set to | |
portal | true | string | false | true | HTMLElementRender the modal in a portal. |
unmountOnHide | true | boolean When set to |
icon | appConfig.ui.icons.search | anyThe icon displayed in the input. Set to |
autofocus | true | boolean Automatically focus the input when component is mounted. |
disabled | boolean When | |
trailingIcon | appConfig.ui.icons.search | anyThe icon displayed on the right side of the input. |
loading | boolean When | |
loadingIcon | appConfig.ui.icons.loading | anyThe icon when the |
selectedIcon | appConfig.ui.icons.check | anyThe icon displayed when an item is selected. |
childrenIcon | appConfig.ui.icons.chevronRight | anyThe icon displayed when an item has children. |
placeholder | t('commandPalette.placeholder') | stringThe placeholder text for the input. |
closeIcon | appConfig.ui.icons.close | anyThe icon displayed in the close button. |
back | true | boolean | Omit<ButtonProps, LinkPropsKeys> Display a button to navigate back in history.
|
backIcon | appConfig.ui.icons.arrowLeft | anyThe icon displayed in the back button. |
highlightOnHover | boolean When | |
labelKey | 'label' | stringThe key used to get the label from the item. |
descriptionKey | 'description' | stringThe key used to get the description from the item. |
preserveGroupOrder | false | boolean Whether to preserve the order of groups as defined in the |
virtualize | false | boolean | { overscan?: number ; estimateSize?: number | ((index: number) => number) | undefined; } | undefinedEnable virtualization for large lists. Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885). |
groups | CommandPaletteGroup<CommandPaletteItem>[] | |
open | false | boolean |
searchTerm | '' | string |
ui | { modal?: SlotClass; input?: SlotClass; } & { root?: SlotClass; input?: SlotClass; close?: SlotClass; back?: SlotClass; content?: SlotClass; footer?: SlotClass; viewport?: SlotClass; group?: SlotClass; empty?: SlotClass; label?: SlotClass; item?: SlotClass; itemLeadingIcon?: SlotClass; itemLeadingAvatar?: SlotClass; itemLeadingAvatarSize?: SlotClass; itemLeadingChip?: SlotClass; itemLeadingChipSize?: SlotClass; itemTrailing?: SlotClass; itemTrailingIcon?: SlotClass; itemTrailingHighlightedIcon?: SlotClass; itemTrailingKbds?: SlotClass; itemTrailingKbdsSize?: SlotClass; itemWrapper?: SlotClass; itemLabel?: SlotClass; itemLabelBase?: SlotClass; itemLabelPrefix?: SlotClass; itemLabelSuffix?: SlotClass; itemDescription?: SlotClass; } |
Slots Bearbeiten
| Slot | Type |
|---|---|
empty | { searchTerm: string; } |
footer | { ui: object; } |
back | { ui: object; } |
close | { ui: object; } |
item | { item: CommandPaletteItem; index: number; ui: object; } |
item-leading | { item: CommandPaletteItem; index: number; ui: object; } |
item-label | { item: CommandPaletteItem; index: number; ui: object; } |
item-description | { item: CommandPaletteItem; index: number; ui: object; } |
item-trailing | { item: CommandPaletteItem; index: number; ui: object; } |
group-label | { group: CommandPaletteGroup<CommandPaletteItem>; label: string; ui: object; } |
content | { close: () => void; } |
Emits (englisch)
| Event | Type |
|---|---|
update:open | [value: boolean] |
update:searchTerm | [value: string] |
Expose (englisch)
Beim Zugriff auf die Komponente über eine Template-Referenz können Sie Folgendes verwenden:
| Vorname | Typ |
|---|---|
commandPaletteRef nicht | Ref<InstanceType<typeof UCommandPalette> | null> nicht |
Theme Bearbeiten
export default defineAppConfig({
ui: {
dashboardSearch: {
slots: {
modal: '',
input: ''
},
variants: {
fullscreen: {
false: {
modal: 'sm:max-w-3xl h-full sm:h-[28rem]'
}
},
size: {
xs: {},
sm: {},
md: {},
lg: {},
xl: {}
}
},
defaultVariants: {
size: 'md'
}
}
}
})import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
dashboardSearch: {
slots: {
modal: '',
input: ''
},
variants: {
fullscreen: {
false: {
modal: 'sm:max-w-3xl h-full sm:h-[28rem]'
}
},
size: {
xs: {},
sm: {},
md: {},
lg: {},
xl: {}
}
},
defaultVariants: {
size: 'md'
}
}
}
})
]
})