Skip to Content
ComponentsCalsContextMenu

ContextMenu

좌표 기반의 컨텍스트 메뉴 컴포넌트입니다. 우클릭이나 특정 좌표에서 팝업 메뉴를 표시합니다.

사용법

import { ContextMenu, type ContextMenuItem } from "@vortex/ui-cals" const items: ContextMenuItem[] = [ { key: "copy", label: "복사" }, { key: "paste", label: "붙여넣기" }, { key: "sep1", label: "", type: "separator" }, { key: "delete", label: "삭제", type: "danger" }, ] function Example() { const [open, setOpen] = useState(false) const [pos, setPos] = useState({ x: 0, y: 0 }) return ( <div onContextMenu={(e) => { e.preventDefault() setPos({ x: e.clientX, y: e.clientY }) setOpen(true) }}> 우클릭 영역 <ContextMenu open={open} onOpenChange={setOpen} x={pos.x} y={pos.y} items={items} onItemClick={(item) => console.log(item.key)} /> </div> ) }

예제

우클릭하세요

선택: 없음

Props

ContextMenuProps

Prop타입기본값설명
openboolean-열림/닫힘 상태
onOpenChange(open: boolean) => void-상태 변경 콜백
xnumber0메뉴 X 좌표
ynumber0메뉴 Y 좌표
position"fixed" | "absolute""fixed"CSS position 전략
itemsContextMenuItem[][]메뉴 항목 목록
onItemClick(item: ContextMenuItem) => void-항목 클릭 콜백
hideOnClickbooleantrue클릭 후 자동 닫힘
visiblebooleantruefalse이면 렌더링하지 않음
classNamestring-추가 CSS 클래스

ContextMenuItem

Prop타입기본값설명
keystring-고유 키
labelstring-표시 텍스트
type"default" | "danger" | "separator""default"항목 유형
hiddenbooleanfalse숨김 여부
disabledbooleanfalse비활성화 여부

접근성

  • role="menu" 적용
  • 각 항목에 role="menuitem" 적용
  • 키보드 탐색: ArrowUp/Down, Enter
  • Escape 키로 닫기
  • 외부 클릭 시 자동 닫기
Last updated on