@mycrm-ui/react-table LLM Guide
4. Filtering
This guide is for AI agents that need to add column-level filtering to @mycrm-ui/react-table.
Use this part when the user wants text search, select filters, or multi-column narrowing.
Purpose
Separate these two layers:
- filter metadata on each column
- current filter state in the
filterprop
Required Inputs
Column Filter Settings
filterTypefilterPlaceholderfilterOptions
{
key: "name",
label: "Name",
render: (row) => row.name,
filterType: "text",
filterPlaceholder: "Search name...",
}{
key: "role",
label: "Role",
render: (row) => row.role,
filterType: "select",
filterOptions: [
{ label: "Admin", value: "Admin" },
{ label: "User", value: "User" },
],
}filter.enabled
filter={{ enabled: true }}filter.values
const [filterValues, setFilterValues] = useState<Record<string, string>>({});filter.onChange
filter={{
enabled: true,
values: filterValues,
onChange: (colKey, value) =>
setFilterValues((prev) => ({ ...prev, [colKey]: value })),
}}filter.debounce
Add debounce when text filtering should not react immediately.
Minimal Pattern
<Table
columns={columns}
data={rows}
rowKey={(row) => String(row.id)}
filter={{
enabled: true,
values: filterValues,
onChange: (colKey, value) =>
setFilterValues((prev) => ({ ...prev, [colKey]: value })),
debounce: 300,
}}
/>LLM Decision Rules
Use this guide when the request means:
- "Add per-column search"
- "Search by name and filter by role"
- "Show filter inputs under the header"
Then:
- Decide which columns are filterable.
- Pick the right filter type for each column.
- Add filter metadata to columns.
- Create a
Record<string, string>state object. - Wire the
filterprop.
Common Mistakes
- Adding
filterstate without columnfilterType - Using
selectwithoutfilterOptions - Managing all filters as a single string
Safe Output Template
const [filterValues, setFilterValues] = useState<Record<string, string>>({});
<Table
columns={columns}
data={rows}
rowKey={(row) => String(row.id)}
filter={{
enabled: true,
values: filterValues,
onChange: (colKey, value) =>
setFilterValues((prev) => ({ ...prev, [colKey]: value })),
}}
/>Move To The Next Guide When
- row actions or editing must be combined with filters