우클릭 메뉴 직접 만들기
기본 항목 이름과 직접 만든 항목으로 우클릭 메뉴 구성: 하위 메뉴, 아이콘, 체크 표시, 제목, 숨김·위험 항목, 헤더 전용 메뉴.
유료 기능 · 컨텍스트 메뉴. 새 도메인에서는 처음 30일 동안 무료로 쓸 수 있고, 그 뒤에는 무료 개인 키나 회사 키가 있어야 합니다. 요금 안내 보기
contextMenu(셀)와 headerContextMenu(컬럼 헤더)는 항목 목록, 또는 우클릭한 셀에 맞는 목록을 돌려주는 함수를 받습니다. 목록에는 이름으로 고른 기본 항목과 직접 만든 항목을 섞습니다.
전체 예
createGrid(el, {
columns, data, cellNotes: true,
contextMenu: p => [
{ heading: p.row ? `Order #${p.row.id}` : 'Order' },
'copy', 'paste',
'separator',
{ label: 'Starred', icon: '★', checked: !!p.row?.starred, action: () => toggleStar(p.row) },
{ label: 'Export', icon: '<svg viewBox="0 0 16 16"><path d="M8 1v9m-4-4 4 4 4-4M2 14h12" stroke="currentColor" fill="none"/></svg>',
items: ['exportCsv', 'exportExcel', { label: 'More', items: ['exportJson', 'exportPdf', 'print'] }] },
{ label: 'Refund…', hidden: !p.row?.paid, action: () => refund(p.row) },
'note',
'separator',
{ label: 'Delete', icon: '🗑', danger: true, shortcut: 'Del', action: () => grid.removeRows([p.row]) },
],
headerContextMenu: p => [{ heading: p.column?.header ?? p.colId }, ...p.defaultItems],
});항목
| 이름 | 타입 | 설명 |
|---|---|---|
'separator' | string | 구분선. 맨 앞·맨 끝·연달아 오는 구분선은 빠집니다. |
'copy', 'exportExcel' … | ContextMenuKey | 이름으로 고른 기본 항목(아래 표). 지금 쓸 수 없는 항목은 빠집니다. |
{ heading } | object | 아래 항목들의 작은 제목. |
{ label, action } | object | 직접 만든 항목. action은 메뉴 정보를 받습니다. |
items | ContextMenuItem[] | 하위 메뉴(마우스 오버·클릭·→·Enter로 열고 ←·Esc로 돌아감). 남은 항목이 없으면 빠집니다. |
icon | string | HTMLElement | 글자·이모지, 요소, SVG 문자열('<svg…'). 신뢰할 수 없는 데이터는 이스케이프하세요. |
checked | boolean | 아이콘 자리의 체크 표시. 화면 낭독기는 체크 상자로 읽습니다. |
disabled / hidden | boolean | 흐리게 / 빼기. |
danger | boolean | 지우는 항목을 위한 빨간 글자. |
shortcut / title | string | 오른쪽 단축키 안내 / 마우스 오버 설명. |
이름으로 쓰는 기본 항목
| 키 | 항목 | 기본 메뉴 |
|---|---|---|
| copy | 복사 | 셀 |
| copyWithHeaders | 헤더 포함 복사 | 셀 |
| cut | 잘라내기 | 셀 |
| copyRows | 체크한 행 복사(체크한 행이 있을 때) | 셀 |
| paste | 붙여넣기 | 셀 |
| undo / redo | 실행 취소 / 다시 실행(기록이 있을 때) | 셀 |
| deleteRows | 체크한 행 삭제(빨간 글자) | 셀 |
| autosize / autosizeAll | 이 컬럼 / 모든 컬럼 너비 맞춤 | 둘 다 |
| hideColumn | 컬럼 숨기기(lockVisible 제외) | 둘 다 |
| pinLeft / pinRight / unpin | 컬럼 고정 | 둘 다 |
| sortAsc / sortDesc / clearSort | 정렬(현재 방향에 체크) | 헤더 |
| groupBy / ungroup | 이 컬럼으로 묶기 / 해제 | 헤더 |
| selectAll | 모든 행 선택(rowSelection multiple) | 셀 |
| chooseColumns / resetColumns | 컬럼 선택(둘 다) / 컬럼 초기화(헤더) | 둘 다 |
| chartBar / chartLine / chartPie | 선택한 범위로 차트(두 칸 이상 범위) | 셀 |
| exportCsv / exportExcel / exportJson / exportPdf | 내보내기 | 셀 |
| advancedFilter | 고급 필터 열기 | 셀 |
| 인쇄 | 셀 | |
| conditionalFormat | 조건부 서식 | 헤더 |
| columnMenu | 컬럼 메뉴 열기(필터) | 헤더 |
| note / deleteNote | 셀 메모 추가·편집 / 삭제(cellNotes) | 셀 |
| addCalculated / editCalculated / removeCalculated | 계산 컬럼 | 헤더 |
| showValuesAs | 하위 메뉴: 값 그대로, 합계 대비 %, 그룹 대비 %, 누계 | 헤더 |
| expandDetails / collapseDetails | 상세 행 모두 펼치기 / 접기(detailRenderer) | 셀 |
어느 메뉴에서든 모든 키를 쓸 수 있습니다. 셀 메뉴의 sortAsc는 우클릭한 컬럼으로 정렬합니다.
함수와 action이 받는 정보
| 이름 | 타입 | 설명 |
|---|---|---|
area | 'cell' | 'header' | 어느 메뉴인지. |
row / rowIndex | Row | null / number | 우클릭한 행(헤더나 빈 곳이면 null, -1). |
colId / column | string / ColumnDef | null | 컬럼. |
value | unknown | 셀 값. |
defaultItems | ContextMenuItem[] | 기본 메뉴(항목마다 key 포함). 그대로 두거나 거르거나 순서를 바꾸거나 덧붙입니다. |
헤더 메뉴
headerContextMenu가 없으면 헤더 우클릭은 지금처럼 컬럼 메뉴를 엽니다.false면 브라우저 메뉴가 열립니다.true면 기본 헤더 메뉴: 정렬(현재 방향 체크), 고정, 묶기, 너비, 숨기기, 컬럼 선택·초기화, 값 표시 방식, 계산 컬럼, 조건부 서식, 컬럼 메뉴.- 목록이나 함수로 셀 메뉴처럼 만듭니다.
키보드
| 키 | 동작 |
|---|---|
| Shift + F10, ContextMenu | 포커스된 셀에서 셀 메뉴 열기 |
| ↓ / ↑ | 항목 이동 |
| → / Enter | 하위 메뉴 열기 |
| ← / Esc | 상위 메뉴로. 첫 메뉴에서 Esc는 닫기 |
이 페이지에 대한 질문
그리드 우클릭 메뉴에 하위 메뉴를 넣으려면?
항목에 items를 주세요: { label: '내보내기', items: ['exportCsv', 'exportExcel'] }. 마우스를 올리거나 누르거나 → 또는 Enter로 열리고, 여러 단계로 넣을 수 있습니다.