Filter Bar
Betav1.0.0variant 라벨 + 펼침/접힘 + 가로 필드 + Go 버튼 + Adapt Filters 다이얼로그까지. ListReport 페이지 헤더에 적합. SAP UI5 FilterBar 디자인 패턴 참고.
Loading…
import {
FilterBar,
FilterBarItem,
AdaptFiltersDialog,
useFilterBarAdapt,
} from "@/components/ui/filter-bar";
const ALL_FILTERS = [
{ name: "search", label: "Search", mandatory: true },
{ name: "status", label: "Status", mandatory: true },
{ name: "customer", label: "Customer" }, // Adapt 로 추가 가능
{ name: "currency", label: "Currency" },
];
const adapt = useFilterBarAdapt({
filters: ALL_FILTERS,
defaultVisible: ["search", "status"],
});
<FilterBar
variant="Standard"
onGo={() => fetchData(filters)}
activeCount={2}
visibleFields={adapt.visible}
onAdaptFilters={() => adapt.setOpen(true)}
totalFields={adapt.totalFields}
activeFields={adapt.activeFields}
>
<FilterBarItem name="search" label="Search">
<Input value={q} onChange={(e) => setQ(e.target.value)} />
</FilterBarItem>
<FilterBarItem name="status" label="Status">
<Select value={status} onValueChange={setStatus}>…</Select>
</FilterBarItem>
<FilterBarItem name="customer" label="Customer">
<Input … />
</FilterBarItem>
</FilterBar>
<AdaptFiltersDialog
open={adapt.open}
onOpenChange={adapt.setOpen}
filters={adapt.filters}
visible={adapt.visible}
onVisibleChange={adapt.setVisible}
/>Installation
pnpm dlx shadcn@latest add https://groudit.com/r/filter-bar.jsonComposition
FilterBar
├── Variant header (chevron + Adapt Filters)
├── FilterBarItem (가로 wrap)
│ ├── Label (위)
│ └── Control (Input / Select / …)
└── Active count Badge + Go Button (우측)Dependencies
설치 시 자동으로 함께 들어오는 의존성. 모든 버전은 정확히 고정되어 자동 업데이트를 방지합니다.
npm packages
| Package | Version |
|---|---|
| clsx | 2.1.1 |
| tailwind-merge | 3.6.0 |
Accessibility
이 컴포넌트는 WAI-ARIA search 패턴을 따릅니다.
Keyboard interactions
| Key | Description |
|---|---|
Tab | 필터 항목 → Go 버튼 → Adapt Filters 순. |
Enter | Go 실행 또는 chevron 토글. |
Esc | Adapt Filters 다이얼로그 닫기. |
Notes
- •각 FilterBarItem 은 Label + 컨트롤 자동 연결.
- •chevron 버튼 aria-expanded 자동 부여.
- •Adapt Filters 다이얼로그는 Dialog 의 focus trap 그대로 사용.
- •required 항목은 Adapt Filters 에서 disabled — 사용자가 끌 수 없음.