New version 4+ is released. Please use official docs

# Filtering

# Quick start

From version 2.0 revo-grid supports Filtering Plugin.
To enable Filtering just setup property filter to true.
By default there are sevaral types available:

  • string
    • notEmpty
    • empty
    • eq
    • notEq
    • begins
    • contains
    • notContains
  • number
    • notEmpty
    • empty
    • eqN
    • neqN
    • gt
    • gte
    • lt
    • lte

With their names accordingly:

 const filterNames = { none: 'None', empty: 'Not set', notEmpty: 'Set', eq: 'Equal', notEq: 'Not equal', begins: 'Begins with', contains: 'Contains', notContains: 'Does not contain', eqN: '=', neqN: '!=', gt: '>', gte: '>=', lt: '<', lte: '<=', }; 
// tsx const columns = [{ prop: 'name' }]; const source = [{ name: 'Steve' }, { name: 'John' }]; return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={true}/>'; 

# Filter per column

If you wish to disable filter for selected column all you have to do setup filter on your column to false.

const columns = [{ prop: 'name', filter: false }]; // filter icon will be disabled for column with property `name` const source = [{ name: 'Steve' }]; return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={true}/>'; 

Alternatively you can setup filter type filter: 'number':

// tsx const columns = [{ prop: 'name', filter: 'number' }]; // filter type 'number' (string by default) const source = [{ name: 'Steve' }]; return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={true}/>'; 

# Advance usage

If you consider more advanced filter usage you have to look into <revo-grid/> filter property. filter: boolean|ColumnFilterConfig - can be boolean or ColumnFilterConfig type.

type ColumnFilterConfig = { // preserved filters collection collection?: FilterCollection; // names of filters to be included include = ['eq', 'contains'] include?: string[]; // you can create your own filters here customFilters?: Record<string, CustomFilter>; }; 

Advance filter usage:

const columns = [{ prop: 'name', filter: 'myFilterType' }]; const source = [{ name: 'Steve' }]; // @extraValue available if filterFunc.extra set to input const filterFunc = (cellValue, extraValue) => { if (!cellValue) { return false; } if (typeof cellValue !== 'string') { cellValue = JSON.stringify(cellValue); } return cellValue === 'A'; }; // if you want extra input field for @extraValue filterFunc.extra = 'input'; const filterConfig = { include: ['newEqual'], customFilters: { 'newEqual': { columnFilterType: 'myFilterType', // column filter type id name: 'Equal to A', func: filterFunc } } }; return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={filterConfig}/>'; 

TIP

ColumnFilterConfig is powerful option for the latest information it's recommended to read filter-plugin (opens new window) file for better understanding what parameters filter accepts.