Nuxt UI v3-alpha 已发布!

试用
入门

快捷键

了解如何在你的应用中显示和定义键盘快捷键。

一些组件,例如 下拉菜单命令面板工具提示 支持显示键盘快捷键。

<UDropdown :items="[[{ label: 'Edit', shortcuts: ['E'] }]]" />

快捷键通过 键盘 组件进行显示和样式化。

<template>
  <div class="flex items-center gap-0.5">
    <UKbd></UKbd>
    <UKbd>K</UKbd>
  </div>
</template>
你将可以在每个组件页面预览快捷键的渲染方式。

defineShortcuts

此模块提供了一个 defineShortcuts 可组合函数,允许你非常轻松地在应用中定义键盘快捷键。

<template>
  <UModal v-model="isOpen" />
</template>

<script setup lang="ts">
const isOpen = ref(false)

defineShortcuts({
  meta_k: {
    usingInput: true,
    handler: () => {
      isOpen.value = !isOpen.value
    }
  }
})
</script>

快捷键键值以实际的键盘键值表示。组合使用 _ 分隔符。链式快捷键使用 - 分隔符。

修饰键也可用

  • meta:在 macOS 上充当 Command,在其他系统上充当 Control
  • ctrl:充当 Control
  • shift:充当 Shift,仅在字母键上必要

键示例

  • escape:按 Esc 键触发
  • meta_k:在 macOS 上按 K 键同时触发,在 Windows 和 Linux 上按 CtrlK 键同时触发
  • ctrl_k:在 macOS、Windows 和 Linux 上按 CtrlK 键同时触发
  • shift_e:在 macOS、Windows 和 Linux 上按 ShiftE 键同时触发
  • ?:在某些键盘布局上按 ? 键触发,例如,在 US Mac 键盘上,按 Shift/ 键,会得到 ?
  • g-d:按 g 键然后按 d 键触发,默认情况下,最大延迟为 800 毫秒
  • arrowleft:按 键触发(也包括:arrowrightarrowuparrowdown
有关可用快捷键的完整列表,请参阅 KeyboardEvent API 文档。请注意,KeyboardEvent.key 必须小写。

usingInput

属性:usingInput?: string | boolean

默认情况下,usingInputfalse,这意味着它仅在没有输入框处于焦点状态时触发。设置为 true 时,快捷键也会在任何输入框处于焦点状态时触发。

为了实现更高级的行为,usingInput 可以设置为输入框的名称,因此它仅在聚焦此特定输入框时触发。

<template>
  <UInput v-model="query" name="queryInput" />
</template>

<script setup lang="ts">
const query = ref('')

defineShortcuts({
  enter: {
    usingInput: 'queryInput',
    handler: () => {
      // TODO
    }
  }
})
</script>

enter 快捷键仅在 queryInput 处于焦点状态时触发。

whenever

属性:whenever?: WatchSource<boolean>[]

whenever 允许对快捷键触发行为添加约束。此数组可以包含 Ref<boolean>ComputedRef<boolean>() => boolean

defineShortcuts({
  meta_k: {
    usingInput: true,
    handler: () => { isOpen.value = !isOpen.value }
  },
  escape: {
    usingInput: true,
    whenever: [isOpen],
    handler: () => { isOpen.value = false }
  }
})

escape 快捷键仅在 isOpentrue 时触发。

简单快捷键

如果快捷键不需要任何配置,则可以将其写为函数。

defineShortcuts({
  '?': () => openHelpModal()
})

useShortcuts

为了根据用户的操作系统显示应用中的快捷键,你可以使用 useShortcuts 可组合函数。

<script setup lang="ts">
const { metaSymbol } = useShortcuts()
</script>

<template>
  <UKbd>{{ metaSymbol }}</UKbd>
</template>

metaSymbol 将在 macOS 上显示 ,在其他任何操作系统上显示 Ctrl