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
EdgarTremblay24complicated205
MadgeMcLaughlin19complicated5626
JanessaSauer32single2239
TerranceBosco49relationship5636
EarnestineStoltenberg46complicated2828
KatherineHettinger51single7569
FaithKilback20relationship2498
NathanialBergstrom21relationship2015
CharleneLindgren51single2693
RoscoeVolkman48relationship3655
OliveLittle22single4993
CorrineTrantow48relationship1441
MadisenO'Keefe63relationship437
KrisGibson51relationship9034
NobleSpencer52relationship3673
ShanaSchmeler64relationship3720
MossieSkiles59single921
DrakeBoyer58relationship5478
EveretteSpencer20relationship575
WilfredoBlanda40complicated689
KiaraKertzmann41complicated5862
DonnieFadel29relationship480
MariahPowlowski36complicated444
DashawnJenkins62single2714
AmirFranecki51single629
NicolasStiedemann26single834
MarianoBruen42relationship8893
GuadalupeJohns53complicated4850
MilanFriesen62complicated8751
CarrieBins47single4968