Tree Filter

Category

42
24
10
8
38
12
About this component

Tree Filter

Hierarchical checkbox tree for nested categories with expand/collapse rows. Checking a parent checks its whole subtree, and partially selected parents turn indeterminate.

Usage

The import and the props worth knowing about, in one place.

import { FilterTree } from "@/components/beste/component/filter-tree";

const categories = [
  {
    label: "Shoes",
    value: "shoes",
    children: [
      { label: "Sneakers", value: "sneakers", count: 24 },
      { label: "Boots", value: "boots", count: 10 },
    ],
  },
  { label: "Accessories", value: "accessories", count: 12 },
];

<FilterTree
  label="Category"
  options={categories}
  defaultValue={["shoes"]} // expands to shoes + sneakers + boots
  onChange={(value) => console.log("selected:", value)} // includes descendants
/>

Keyboard and gestures

Every one of these is in the component already. They are listed because a props table cannot mention a gesture, so nothing else on this page can tell you they exist.

TabMove between the boxes — each is its own control, not one list with an inner cursor.
SpaceTick or untick the focused one.
The disclosure arrowOpens a branch. Ticking a parent takes its children with it.

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
labelstring—Optional group heading rendered above the tree
optionsFilterTreeOption[]—
valuestring[]—Controlled selection; omit to let the component manage its own state. Checking a node checks its whole subtree, and a parent turns indeterminate while only some of its descendants are selected. The selection always contains every checked value, descendants included.
defaultValuestring[]—Initial selection when uncontrolled; parents expand to their subtree
defaultExpandedstring[]—Values whose children start expanded; ancestors of the initial selection expand automatically
onChange(value: string[]) => void—
classNamestring—

More Filter components

View all Filter

Category

24
18
9
12

Size

Gender