addTableFilter

addTableFilter filters table rows on data that may be in any column.

Options

Information:
Options passed into addTableFilter.
const table = createTable(data, {
  filter: addTableFilter({ ... }),
});
const table = createTable(data, {
  filter: addTableFilter({ ... }),
});

fn?: ({ filterValue, value }) => boolean

Custom filter. filterValue is a string; value is serialized to string by default.

initialFilterValue?: string

Default ''.

includeHiddenColumns?: boolean

Whether hidden columns are included. Default false.

serverSide?: boolean

If true, use server-side filtering by updating $data.

Column Options

Information:
Options passed into column definitions.
const columns = table.createColumns([
  table.column({
    header: 'Name',
    accessor: 'name',
    plugins: {
      filter: { ... },
    },
  }),
]);
const columns = table.createColumns([
  table.column({
    header: 'Name',
    accessor: 'name',
    plugins: {
      filter: { ... },
    },
  }),
]);

exclude?: boolean

Exclude the column from search. Default false.

getFilterValue?: (value) => string

Map a cell value to a filterable string. Default serializes value.

Prop Set

Information:
Extensions to the view model. Subscribe to .props().
{#each $headerRows as headerRow (headerRow.id)}
  <Subscribe rowProps={headerRow.props()} let:rowProps>
    {rowProps.filter}
    {#each headerRow.cells as cell (cell.id)}
      <Subscribe props={cell.props()} let:props>
        {props.filter}
      </Subscribe>
    {/each}
  </Subscribe>
{/each}
{#each $headerRows as headerRow (headerRow.id)}
  <Subscribe rowProps={headerRow.props()} let:rowProps>
    {rowProps.filter}
    {#each headerRow.cells as cell (cell.id)}
      <Subscribe props={cell.props()} let:props>
        {props.filter}
      </Subscribe>
    {/each}
  </Subscribe>
{/each}

BodyCell

matches: boolean — whether the cell matches the current filter value.

Plugin State

Information:
State provided by addTableFilter.
const { headerRows, rows, pluginStates } = table.createViewModel(columns);
const { ... } = pluginStates.filter;
const { headerRows, rows, pluginStates } = table.createViewModel(columns);
const { ... } = pluginStates.filter;

preFilteredRows: Readable<BodyRow<Item>[]>

filterValue: Writable<string>

Examples

$filterValue = 
NameInfo
First NameLast NameAgeStatusVisitsProfile Progress
EldaTremblay24complicated205
MarieMcLaughlin19complicated5626
IlianaSauer32single2239
StephanyBosco49relationship5636
ElizabethStoltenberg46complicated2828
KendraHettinger51single7569
EvangelineKilback20relationship2498
MilanBergstrom21relationship2015
ConnieLindgren51single2693
RussellVolkman48relationship3655
OrenLittle22single4993
DeliaTrantow48relationship1441
LuellaO'Keefe63relationship437
KameronGibson51relationship9034
PedroSpencer52relationship3673
SherrySchmeler64relationship3720
MathildeSkiles59single921
DwayneBoyer58relationship5478
EvieSpencer20relationship575
WilbertBlanda40complicated689
LanaKertzmann41complicated5862
DuaneFadel29relationship480
MeghanPowlowski36complicated444
DarrinJenkins62single2714
AlishaFranecki51single629
PabloStiedemann26single834
MaxBruen42relationship8893
EzraJohns53complicated4850
MagnoliaFriesen62complicated8751
CeasarBins47single4968