コンテキストメニューContextMenuExperimental
右クリックで開くメニューです。
プレビュー
状態とバリエーション
プロパティ
表は横にスクロールできます
| プロパティ | 型 | 初期値 | 説明 |
|---|---|---|---|
| modal | boolean | true | 開いている間のフォーカス制御をモーダルとして扱うかを指定します。 |
| onOpenChange | (open: boolean) => void | - | 開閉状態が変わった時に呼び出されます。 |
| disabled | boolean | - | トリガーや項目を操作できない状態にします。 |
| disabledReason | ReactNode | - | 無効な項目に表示する理由です。hover / focus / スマホのタップでツールチップに表示します。 |
| portalContainer | HTMLElement | null | - | ContextMenuContent / ContextMenuSubContent のポータル先です。疑似ブラウザやプレビュー内にメニューを閉じ込める場合に使います。 |
使い方
import {
ContextMenu,
ContextMenuCheckboxItem,
ContextMenuContent,
ContextMenuItem,
ContextMenuLabel,
ContextMenuRadioGroup,
ContextMenuRadioItem,
ContextMenuSeparator,
ContextMenuShortcut,
ContextMenuTrigger,
} from "@gunjo/ui";
import { IconCopy as Copy, IconFileText as FileText } from "@tabler/icons-react";
export function FileContextMenu() {
return (
<ContextMenu>
<ContextMenuTrigger className="flex min-h-40 w-full max-w-md items-center justify-center rounded-lg border border-dashed bg-muted/35 p-6 text-center text-sm text-muted-foreground">
ここを右クリックして行アクションを開く
</ContextMenuTrigger>
<ContextMenuContent className="w-64">
<ContextMenuLabel>ファイル操作</ContextMenuLabel>
<ContextMenuSeparator />
<ContextMenuItem>
<FileText className="h-4 w-4 shrink-0 text-muted-foreground" />
詳細を表示
</ContextMenuItem>
<ContextMenuItem>
<Copy className="h-4 w-4 shrink-0 text-muted-foreground" />
パスをコピー
<ContextMenuShortcut>⌘C</ContextMenuShortcut>
</ContextMenuItem>
<ContextMenuItem inset disabled disabledReason="権限を変更するには管理者ロールが必要です。">権限を変更</ContextMenuItem>
<ContextMenuSeparator />
<ContextMenuCheckboxItem checked>お気に入り</ContextMenuCheckboxItem>
<ContextMenuRadioGroup value="viewer">
<ContextMenuLabel inset>権限</ContextMenuLabel>
<ContextMenuRadioItem value="viewer">閲覧者</ContextMenuRadioItem>
<ContextMenuRadioItem value="editor">編集者</ContextMenuRadioItem>
</ContextMenuRadioGroup>
</ContextMenuContent>
</ContextMenu>
);
}使用コンポーネント
関連コンポーネント
設計の判断(UIXHERO)
「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。