Skip to Content

Menu

계층 구조의 메뉴 데이터를 폴더/파일 아이콘과 함께 트리 형태로 표시하는 컴포넌트


개요

Menu는 계층 구조의 메뉴 데이터를 폴더/파일 아이콘이 포함된 트리로 표시하며, 키워드 검색과 헤더 툴바 액션 버튼을 내장한 메뉴 탐색 컴포넌트입니다. 전체 항목을 기본 확장 상태로 렌더링합니다.

주요 특징

  • 트리 메뉴: 계층 데이터를 폴더/파일 아이콘과 함께 표시, 기본 전체 확장
  • 키워드 필터링: 검색 입력란 내장, 대소문자 구분 없이 라벨 매칭
  • 헤더 툴바: title + toolbarActions로 제목과 액션 버튼 표시
  • 유연한 필드 매핑: labelKey / idKey / childrenKey로 데이터 필드명 지정
  • 노드 클릭 콜백: onNodeClick에 원본 데이터 항목 전달
  • 표시 제어: visible prop으로 전체 표시/숨김, emptyText로 빈 상태 메시지 지정

기본 사용

items에 계층 데이터를 전달합니다. 검색 입력란이 기본 포함되며, 키워드를 입력하면 일치하는 항목만 표시됩니다.

업무 관리
공지사항
일정 관리
결재함
시스템
사용자 관리
권한 관리

헤더 제목 + 툴바 액션

title로 헤더 제목을, toolbarActions로 액션 버튼을 표시합니다.

메뉴 관리
업무 관리
공지사항
일정 관리
결재함
시스템
사용자 관리
권한 관리

노드 클릭 이벤트

onNodeClick 콜백에 클릭한 노드의 원본 데이터 항목이 전달됩니다.

업무 관리
공지사항
일정 관리
결재함
시스템
사용자 관리
권한 관리

선택된 노드: 없음


커스텀 필드명

데이터의 필드명이 기본값(id/label/children)과 다르면 idKey, labelKey, childrenKey로 매핑합니다.

대시보드
현황판
통계
설정

빈 상태

데이터가 없거나 검색 결과가 없으면 emptyText 메시지를 표시합니다.

등록된 메뉴가 없습니다

API Reference

Props

PropTypeDefaultDescription
itemsMenuDataItem[][]메뉴 트리 데이터
labelKeystring"label"표시 이름 필드명
idKeystring"id"식별자 필드명
childrenKeystring"children"하위 항목 필드명
titlestring-헤더 제목
toolbarActionsMenuToolbarAction[][]헤더 툴바 버튼 목록
onNodeClick(node: MenuDataItem) => void-노드 클릭 콜백 (원본 항목 전달)
visiblebooleantrue표시 여부 (false → 렌더 안 함)
emptyTextstring"데이터가 없습니다"빈 상태 메시지
classNamestring-컨테이너 CSS 클래스
styleCSSProperties-인라인 스타일
FieldTypeRequiredDescription
labelstring버튼 라벨
iconReactNode-버튼 아이콘
onClick() => void클릭 핸들러
disabledboolean-비활성화 여부

Events

EventTypeDescription
onNodeClick(node: MenuDataItem) => void노드 클릭 시 원본 데이터 전달

접근성

권장 사항

  • ✅ 툴바 버튼에 label 기반 title 속성이 자동 적용됨
  • ✅ 트리 컨테이너에 명확한 제목(title prop)을 제공해 영역을 식별할 수 있게 하기
  • ❌ 깊이가 깊은 트리를 좁은 너비에 배치하지 않기 (들여쓰기로 라벨이 잘릴 수 있음)

관련 컴포넌트

  • Tree: 계층 구조 데이터 표시 트리 컴포넌트
  • ObjectExplorer: 객체 목록 트리 탐색 컴포넌트
  • ContextMenu: 좌표 기반 컨텍스트 메뉴