Extracteurs
@@ph000@@utilisation
Utilisez l'utilitaire extractShortcuts à importation automatique pour définir des raccourcis clavier à partir d'éléments de menu. Il extrait des raccourcis de composants tels que DropdownMenu,ContextMenu ou CommandPalette où les éléments ont kbds définis.
<script setup lang="ts">
const items = [{
label: 'Save',
icon: 'i-lucide-file-down',
kbds: ['meta', 'S'],
onSelect() {
save()
}
}, {
label: 'Copy',
icon: 'i-lucide-copy',
kbds: ['meta', 'C'],
onSelect() {
copy()
}
}]
defineShortcuts(extractShortcuts(items))
</script>
@@pH038@@api
@@
Extrait les raccourcis clavier d'un tableau d'éléments de menu et renvoie un objet de configuration compatible avec defineShortcuts.
@@ph042@@Paramètres
['meta', 'S']).onSelect n'est pas définie).'_' pour les combinaisons de touches (par exemple,meta_k) ou '-' pour les séquences de touches (par exemple,g-d). Par défaut à '_'.Retourne: Un objet qui peut être passé directement à defineShortcuts.
@@ph054@exemples
Avec éléments imbriqués
L'utilitaire parcourt récursivement les propriétés children et items pour extraire des raccourcis des structures de menu imbriquées.
<script setup lang="ts">
import type { DropdownMenuItem } from '@nuxt/ui'
const items: DropdownMenuItem[][] = [[{
label: 'Edit',
icon: 'i-lucide-pencil',
kbds: ['E'],
onSelect() {
edit()
}
}, {
label: 'Duplicate',
icon: 'i-lucide-copy',
kbds: ['D'],
onSelect() {
duplicate()
}
}], [{
label: 'Invite users',
icon: 'i-lucide-user-plus',
children: [[{
label: 'Invite by email',
icon: 'i-lucide-send-horizontal',
kbds: ['meta', 'E'],
onSelect() {
inviteByEmail()
}
}, {
label: 'Invite by link',
icon: 'i-lucide-link',
kbds: ['meta', 'I'],
onSelect() {
inviteByLink()
}
}]]
}], [{
label: 'Delete',
icon: 'i-lucide-trash',
kbds: ['meta', 'backspace'],
onSelect() {
remove()
}
}]]
defineShortcuts(extractShortcuts(items))
</script>
<template>
<UDropdownMenu :items="items">
<UButton label="Actions" />
</UDropdownMenu>
</template>
Avec des séquences clés
Utilisez le paramètre separator pour créer des séquences de touches au lieu de combinaisons de touches.
<script setup lang="ts">
const items = [{
label: 'Go to Dashboard',
kbds: ['G', 'D'],
onSelect() {
navigateTo('/dashboard')
}
}, {
label: 'Go to Settings',
kbds: ['G', 'S'],
onSelect() {
navigateTo('/settings')
}
}]
// Using '-' creates key sequences: 'g-d', 'g-s'
defineShortcuts(extractShortcuts(items, '-'))
</script>