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 | 타입 | 기본값 | 설명 |
|---|---|---|---|
open | boolean | - | 열림/닫힘 상태 |
onOpenChange | (open: boolean) => void | - | 상태 변경 콜백 |
x | number | 0 | 메뉴 X 좌표 |
y | number | 0 | 메뉴 Y 좌표 |
position | "fixed" | "absolute" | "fixed" | CSS position 전략 |
items | ContextMenuItem[] | [] | 메뉴 항목 목록 |
onItemClick | (item: ContextMenuItem) => void | - | 항목 클릭 콜백 |
hideOnClick | boolean | true | 클릭 후 자동 닫힘 |
visible | boolean | true | false이면 렌더링하지 않음 |
className | string | - | 추가 CSS 클래스 |
ContextMenuItem
| Prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
key | string | - | 고유 키 |
label | string | - | 표시 텍스트 |
type | "default" | "danger" | "separator" | "default" | 항목 유형 |
hidden | boolean | false | 숨김 여부 |
disabled | boolean | false | 비활성화 여부 |
접근성
role="menu"적용- 각 항목에
role="menuitem"적용 - 키보드 탐색: ArrowUp/Down, Enter
- Escape 키로 닫기
- 외부 클릭 시 자동 닫기
Last updated on