Skip to main content

filter-cards

Adds, replaces, or removes a filter predicate. Filters are keyed by tag so multiple independent filters can coexist. A card must pass every active predicate to stay visible.

Filtering affects viewData only - source cards returned by api.getCards() are unchanged.

Usage

api.exec("filter-cards", {
filter?: (card: KanbanCard) => boolean | null,
tag?: string,
});
FieldTypeDescription
filter(card: KanbanCard) => boolean | nullPredicate that returns true to keep a card. Pass null or omit to remove
tagstringIdentifies this filter. Defaults to "_default" when omitted

Payload behavior:

PayloadResult
{ filter, tag: "search" }Set or replace the "search" predicate
{ filter }Set or replace the default predicate
{ tag: "search" }Remove the "search" predicate
{ filter: null, tag: "search" }Remove the "search" predicate
{}Clear every filter
{ filter: null }Clear every filter

Tags beginning with _ are reserved for library use.

Trigger

api.exec("filter-cards", {
tag: "priority",
filter: card => card.priority === 3,
});

Observe

api.on("filter-cards", ev => {
console.log("filter changed", ev.tag);
});

Intercept

api.intercept("filter-cards", ev => {
// prevent clearing all filters
if (!ev.filter && !ev.tag) return false;
});

Component handler

<Kanban
{cards}
{columns}
onfiltercards={(ev) => console.log("filter applied", ev.tag)}
/>