Plugins
addTableFilter
addTableFilter filters table rows on data that may be in any column.
Options
Options passed into addTableFilter.
const table = createTable(data, {
filter: addTableFilter({ ... }),
});
fn?: ({ filterValue, value }) => boolean
Defines the filter behavior for the column.
Receives a filterValue and the column cell value (or the value returned from
getFilterValue), and returns true if the cell should be visible.
filterValue is a string, and value will be serialized into a string.
Defaults to case-insensitive prefix matching.
initialFilterValue?: string
Defines the initial filter value.
Defaults to ''.
includeHiddenColumns?: boolean
Determines if hidden columns should be searched for matching values.
Defaults to false.
serverSide?: boolean
If true, the table filter will have no effect on the rows of the table. Instead, you can control filtering by updating
$data. The plugin's state can be used as variables in your data-fetching query to get filtered data from the server directly.
Defaults to false.
Column Options
Options passed into column definitions.
const columns = table.createColumns([
table.column({
header: 'Name',
accessor: 'name',
plugins: {
filter: { ... },
},
}),
]);
exclude?: boolean
Determines if the column should be excluded when searching for matching values.
Defaults to false.
getFilterValue?: (value) => string
Receives the value of the column cell and returns the value to filter the column on.
Defaults to serializing the value to string.
Prop Set
Extensions to the view model.
Subscribe to .props() on the respective table components.
{#each $headerRows as headerRow (headerRow.id)}
<Subscribe rowProps={headerRow.props()} let:rowProps>
{rowProps.filter} <!-- HeaderRow props -->
{#each headerRow.cells as cell (cell.id)}
<Subscribe props={cell.props()} let:props>
{props.filter} <!-- HeaderCell props -->
</Subscribe>
{/each}
</Subscribe>
{/each}
BodyCell
matches: boolean
Whether the body cell matches the current filter value.
Useful for highlighting the matching cell of the filtered rows.
Plugin State
State provided by addTableFilter.
const { headerRows, rows, pluginStates } = table.createViewModel(columns);
const { ... } = pluginStates.filter;
preFilteredRows: Readable<BodyRow<Item>[]>
The view model rows before filtering.
filterValue: Writable<string>
The active filter value.