zzzUI

Context menu

即 Dropdown menu,但不由按钮打开,而是在区域内右键单击或长按的位置弹出。

安装

terminal
# once per project: where @zzzui items come frompnpm dlx shadcn@latest registry add @zzzui=https://zzzui.catforest.dev/r/{name}.jsonpnpm dlx shadcn@latest add @zzzui/context-menu

示例

右键单击委托

Right-click the job card
context-menu-job.tsx
import { useState } from "react";import {  ContextMenu,  ContextMenuCheckboxItem,  ContextMenuContent,  ContextMenuItem,  ContextMenuSeparator,  ContextMenuShortcut,  ContextMenuSub,  ContextMenuSubContent,  ContextMenuSubTrigger,  ContextMenuTrigger,} from "@/components/zero/context-menu";export default function ContextMenuJob() {  const [pinned, setPinned] = useState(true);  return (    <ContextMenu>      <ContextMenuTrigger className="grid h-40 w-full max-w-sm place-items-center border-(length:--zero-stroke-thin) border-zero-line border-dashed font-bold font-zero text-zero-sm text-zero-text-3 italic">        Right-click the job card      </ContextMenuTrigger>      <ContextMenuContent>        <ContextMenuItem>          Take it          <ContextMenuShortcut>⌘T</ContextMenuShortcut>        </ContextMenuItem>        <ContextMenuSub>          <ContextMenuSubTrigger>Send to</ContextMenuSubTrigger>          <ContextMenuSubContent>            <ContextMenuItem>Mara</ContextMenuItem>            <ContextMenuItem>Rui</ContextMenuItem>            <ContextMenuItem>Jo</ContextMenuItem>          </ContextMenuSubContent>        </ContextMenuSub>        <ContextMenuCheckboxItem checked={pinned} onCheckedChange={setPinned}>          Pinned        </ContextMenuCheckboxItem>        <ContextMenuSeparator />        <ContextMenuItem danger>Abandon</ContextMenuItem>      </ContextMenuContent>    </ContextMenu>  );}

行为

菜单项、标签、分隔线、复选与单选菜单项以及子菜单,都是 Dropdown menu 的同一套部件,仅改以 ContextMenu 命名。子菜单在所属菜单项旁打开,打开期间该菜单项保持浮起色背景。

属性

ContextMenuTrigger

另可传入 Base UI ContextMenu.Trigger 的全部属性。

ContextMenuContent

另可传入 Base UI Menu.Popup 的全部属性。

ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioItem, ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent, …