Filter Bar

Betav1.0.0

variant 라벨 + 펼침/접힘 + 가로 필드 + 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.json

Composition

FilterBar
├── Variant header (chevron + Adapt Filters)
├── FilterBarItem (가로 wrap)
│   ├── Label (위)
│   └── Control (Input / Select / …)
└── Active count Badge + Go Button (우측)

Dependencies

설치 시 자동으로 함께 들어오는 의존성. 모든 버전은 정확히 고정되어 자동 업데이트를 방지합니다.

npm packages

PackageVersion
clsx2.1.1
tailwind-merge3.6.0

Groudit components

이 컴포넌트가 의존하는 다른 Groudit 컴포넌트 — 함께 설치됩니다.

Accessibility

이 컴포넌트는 WAI-ARIA search 패턴을 따릅니다.

Keyboard interactions

KeyDescription
Tab
필터 항목 → Go 버튼 → Adapt Filters 순.
Enter
Go 실행 또는 chevron 토글.
Esc
Adapt Filters 다이얼로그 닫기.

WCAG 2.1 AA

이 컴포넌트는 다음 Success Criteria 충족을 목표로 합니다.

Notes

  • 각 FilterBarItem 은 Label + 컨트롤 자동 연결.
  • chevron 버튼 aria-expanded 자동 부여.
  • Adapt Filters 다이얼로그는 Dialog 의 focus trap 그대로 사용.
  • required 항목은 Adapt Filters 에서 disabled — 사용자가 끌 수 없음.