Components Menus and overlays

ContextMenu

A menu at a point, for right-clicks.

import { ContextMenu } from '@kition/tessera-ui'

Examples

Right-click
Right-click here
context-menu.tsx
import { useState } from 'react'
import { ContextMenu, MenuItem, type ContextMenuPoint } from '@kition/tessera-ui'
import { CopyIcon, TrashIcon } from '@kition/tessera-icons/react'

export default function Demo() {
  const [at, setAt] = useState<ContextMenuPoint | null>(null)
  return (
    <>
      <div
        className="demo-target"
        onContextMenu={(event) => {
          event.preventDefault()
          setAt({ x: event.clientX, y: event.clientY })
        }}
      >
        Right-click here
      </div>
      <ContextMenu at={at} onClose={() => setAt(null)} label="Layer">
        <MenuItem icon={CopyIcon} label="Duplicate layer" onSelect={() => setAt(null)} />
        <MenuItem icon={TrashIcon} label="Delete layer" onSelect={() => setAt(null)} />
      </ContextMenu>
    </>
  )
}

Props

ContextMenu

A menu at a point (a row's right-click menu): open while at is set, kept inside the window, its first row focused (Up, Down, Home, and End move through the rows; the focus goes back where it was when it closes), and closed through onClose by a press outside it, Escape, or a choice in it (a MenuItem, any button). Its rows are MenuItems and MenuSeparators, as in MenuButton.

PropTypeDefaultDescription
atrequiredContextMenuPoint | null—
onCloserequired() => void—
labelstring—
childrenrequiredReactNode—
testIdstring—

Used in

6 of Kition's 16 kits use this component.

  • Cad
  • Cube
  • Film
  • Note
  • Photo
  • Sheet