ToolbarGrid
Collapsible 헤더(제목 + 도구 모음) 와 데이터 그리드(페이지네이션 포함)를 결합한 복합 컴포넌트
기본 사용
Preview
검색 폼 포함
searchContent prop으로 헤더와 그리드 사이에 검색 입력 격자를 추가합니다.
Preview
ScrollArea 내부 스크롤
ToolbarGrid는 내부 Grid를 통해 Foundation ScrollArea / ScrollBar를 사용합니다. 헤더·검색·페이지네이션은 유지되며 height, fullSize, virtualScroll, onScrollEnd 등 기존 Grid 패스스루 API를 그대로 사용합니다. 별도의 Viewport prop은 필요하지 않습니다.
스크롤바 스타일은 List 예제처럼 ToolbarGrid를 감싼 요소에서 중첩된 [data-token="scroll-area"]를 선택해 지정합니다. 기존 --scroll-area-scrollbar-width-vertical, --scroll-area-scrollbar-height-horizontal, --scroll-area-thumb-background 토큰을 사용합니다.
Props
ToolbarGrid 고유 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 + 헤더 + Grid 배경색 |
color | string | - | 헤더 글자색 |
borderWidth | string | - | 헤더 테두리 두께 |
borderColor | string | - | 헤더 테두리 색상 |
fullSize | boolean | false | 전체 화면 확장 |
className | string | - | wrapper CSS 클래스 |
style | CSSProperties | - | wrapper 인라인 스타일 |
Grid 패스스루 Props
Grid 컴포넌트의 모든 props(data, getRowId, children, loading, pagination, pageSize, selectable, virtualScroll 등)를 직접 전달합니다. 자세한 내용은 Grid 문서를 참조하세요.
ToolbarGrid.Col
검색 폼 격자 안에 컨트롤을 배치하는 열 컴포넌트입니다.
| Prop | Type | Default | 설명 |
|---|---|---|---|
span | number | 24 | 차지할 컬럼 수 |
offset | number | 0 | 시작 전 건너뛸 컬럼 |
hidden | boolean | false | 숨김 처리 |
접기 / 펴기
- 헤더를 클릭하면 콘텐츠(검색 폼 + 그리드)가 접힙니다.
defaultCollapsed={true}: 초기 접힌 상태로 시작합니다.collapseDisabled={true}: 항상 펼침 상태로 고정됩니다(토글 불가).
Preview
도구 모음 위치
toolbarPosition="bottom"으로 설정하면 actions가 콘텐츠 영역 하단에 배치됩니다.
<ToolbarGrid
title="하단 도구모음"
toolbarPosition="bottom"
actions={<button>조회</button>}
...
/>전체 건수 표시
showPageTotal={true}와 rowCount를 함께 전달하면 도구 모음에 “시작-끝 / 전체건수” 형식으로 표시됩니다.
Preview
실전: 검색 + 페이징 조합
실제 업무 화면에서 자주 사용되는 검색 폼 + 서버사이드 페이징 + 정렬 조합 예시입니다.
Preview
Tip:
searchContent영역에서 CALS의Input,Select,DatePicker등의 폼 컴포넌트를 사용하면 더 일관된 UI를 구성할 수 있습니다.
접근성
- Collapsible trigger에
aria-expanded자동 노출 collapseDisabled시aria-disabled설정- 검색 폼 영역에
role="search"적용 readOnly시 검색 폼에aria-readonly설정