ToolbarList
Collapsible 헤더(제목 + 도구 모음) 와 데이터 리스트(인라인 편집 + 페이지네이션/무한스크롤 포함)를 결합한 복합 컴포넌트
기본 사용
Preview
인라인 편집
inlineEdit={true}와 showAdd, showEdit, showDelete, showSave props로 인라인 편집 도구모음을 활성화합니다.
Preview
ScrollArea 내부 스크롤
ToolbarList는 내부 List/Grid를 통해 Foundation ScrollArea / ScrollBar를 사용합니다. 도구 모음과 인라인 편집은 유지되며 height, fullSize, infiniteScroll, onLoadMore 등 기존 API를 그대로 사용합니다. 별도의 Viewport prop은 필요하지 않습니다.
스크롤바 스타일은 List 예제와 같이 ToolbarList를 감싼 요소에서 중첩된 [data-token="scroll-area"]를 선택해 지정합니다. 기존 --scroll-area-scrollbar-width-vertical, --scroll-area-scrollbar-height-horizontal, --scroll-area-thumb-background 토큰을 사용합니다.
무한 스크롤
infiniteScroll={true}이면 페이지네이션 대신 스크롤 시 다음 데이터를 자동 로드합니다.
Preview
검색 폼
searchContent prop으로 헤더와 리스트 사이에 검색 입력 격자를 추가합니다.
Preview
Props
ToolbarList 고유 Props
| Prop | Type | Default | 설명 |
|---|---|---|---|
title | ReactNode | - | 헤더 제목 |
actions | ReactNode | - | 도구 모음 버튼 |
visible | boolean | true | false이면 비렌더링 |
defaultCollapsed | boolean | false | 초기 접힘 상태 |
collapseDisabled | boolean | false | 접기 잠금 (항상 펼침) |
toolbarPosition | 'top' | 'bottom' | 'top' | 도구 모음 위치 |
showPageTotal | boolean | false | 전체 건수 표시 |
onPageTotalClick | () => Promise<{endPageNumber, recordCount}> | - | 전체 건수 클릭 시 팝오버 콜백 |
searchContent | ReactNode | - | 검색 폼 영역 콘텐츠 |
columns | number | 24 | 검색 폼 격자 컬럼 수 |
colGap | number | 15 | 검색 폼 가로 간격 (px) |
rowGap | number | 20 | 검색 폼 세로 간격 (px) |
readOnly | boolean | false | 검색 폼 + 인라인 편집 읽기 전용 |
showLabel | boolean | true | 레이블 표시 여부 |
labelPosition | LabelPosition | 'left' | 레이블 위치 |
backgroundColor | string | - | wrapper + 헤더 + List 배경색 |
color | string | - | 헤더 글자색 |
borderWidth | string | - | 헤더 테두리 두께 |
borderColor | string | - | 헤더 테두리 색상 |
fullSize | boolean | false | 전체 화면 확장 |
인라인 편집 Props
| Prop | Type | Default | 설명 |
|---|---|---|---|
inlineEdit | boolean | false | 인라인 편집 도구모음 표시 |
showAdd | boolean | false | 추가 버튼 표시 |
showEdit | boolean | false | 수정 버튼 표시 |
showDelete | boolean | false | 삭제 버튼 표시 |
showSave | boolean | false | 저장 버튼 표시 |
addMode | boolean | false | 추가 모드 활성 |
editMode | boolean | false | 수정 모드 활성 |
deleteMode | boolean | false | 삭제 모드 활성 |
onAdd | () => void | - | 추가 버튼 클릭 |
onEdit | () => void | - | 수정 버튼 클릭 |
onDeleteMode | () => void | - | 삭제 모드 진입 |
onDelete | () => void | - | 삭제 실행 |
onSave | () => void | - | 저장 실행 |
onCancel | () => void | - | 편집 취소 |
무한 스크롤 Props
| Prop | Type | Default | 설명 |
|---|---|---|---|
infiniteScroll | boolean | false | 무한 스크롤 활성화 |
onLoadMore | () => void | - | 스크롤 끝 도달 시 콜백 |
infiniteScrollDisabled | boolean | false | 추가 로딩 일시 중단 |
List/Grid 패스스루 Props
Grid 및 List 컴포넌트의 모든 props를 직접 전달합니다. 자세한 내용은 Grid 문서 및 List 문서를 참조하세요.
ToolbarList.Col
검색 폼 격자 안에 컨트롤을 배치하는 열 컴포넌트입니다.
| Prop | Type | Default | 설명 |
|---|---|---|---|
span | number | 24 | 차지할 컬럼 수 |
offset | number | 0 | 시작 전 건너뛸 컬럼 |
hidden | boolean | false | 숨김 처리 |
ToolbarGrid와의 차이점
| 기능 | ToolbarGrid | ToolbarList |
|---|---|---|
| 내부 컴포넌트 | Grid (읽기 전용) | List (Grid + InlineEdit + InfiniteScroll) |
| 인라인 편집 | ❌ | ✅ |
| 무한 스크롤 | ❌ | ✅ |
| 합계 행 | ❌ | ✅ (showSummary) |
| readOnly 범위 | 검색 폼만 | 검색 폼 + 인라인 편집 |
접근성
- Collapsible trigger에
aria-expanded자동 노출 collapseDisabled시aria-disabled설정- 검색 폼 영역에
role="search"적용 readOnly시 검색 폼에aria-readonly설정