diff --git a/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-value.js b/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-value.js new file mode 100644 index 0000000..5a901a9 --- /dev/null +++ b/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-value.js @@ -0,0 +1,72 @@ +/* eslint no-unused-vars: 0 */ +import React from 'react'; +import BootstrapTable from 'react-bootstrap-table2'; +import fitlerFactory, { textFilter } from 'react-bootstrap-table2-filter'; +import Code from 'components/common/code-block'; +import { jobsGenerator } from 'utils/common'; + +const jobs = jobsGenerator(5); + +const owners = ['Allen', 'Bob', 'Cat']; +const types = ['Cloud Service', 'Message Service', 'Add Service', 'Edit Service', 'Money']; + +const columns = [{ + dataField: 'id', + text: 'Job ID' +}, { + dataField: 'name', + text: 'Job Name', + filter: textFilter() +}, { + dataField: 'owner', + text: 'Job Owner', + filter: textFilter(), + formatter: (cell, row) => owners[cell], + filterValue: (cell, row) => owners[cell] +}, { + dataField: 'type', + text: 'Job Type', + filter: textFilter(), + formatter: (cell, row) => types[cell], + filterValue: (cell, row) => types[cell] +}]; + +const sourceCode = `\ +const owners = ['Allen', 'Bob', 'Cat']; +const types = ['Cloud Service', 'Message Service', 'Add Service', 'Edit Service', 'Money']; +const columns = [{ + dataField: 'id', + text: 'Job ID' +}, { + dataField: 'name', + text: 'Job Name', + filter: textFilter() +}, { + dataField: 'owner', + text: 'Job Owner', + filter: textFilter(), + formatter: (cell, row) => owners[cell], + filterValue: (cell, row) => owners[cell] +}, { + dataField: 'type', + text: 'Job Type', + filter: textFilter(), + filterValue: (cell, row) => types[cell] +}]; + +// shape of job: { id: 0, name: 'Job name 0', owner: 1, type: 3 } + + +`; + +export default () => ( +
+ + { sourceCode } +
+); diff --git a/packages/react-bootstrap-table2-example/src/utils/common.js b/packages/react-bootstrap-table2-example/src/utils/common.js index 724e042..0d5ad84 100644 --- a/packages/react-bootstrap-table2-example/src/utils/common.js +++ b/packages/react-bootstrap-table2-example/src/utils/common.js @@ -20,4 +20,12 @@ export const productsGenerator = (quantity = 5, callback) => { ); }; +export const jobsGenerator = (quantity = 5) => + Array.from({ length: quantity }, (value, index) => ({ + id: index, + name: `Job name ${index}`, + owner: Math.floor(Math.random() * 3), + type: Math.floor(Math.random() * 5) + })); + export const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); diff --git a/packages/react-bootstrap-table2-example/stories/index.js b/packages/react-bootstrap-table2-example/stories/index.js index c38e5ad..5f4eb33 100644 --- a/packages/react-bootstrap-table2-example/stories/index.js +++ b/packages/react-bootstrap-table2-example/stories/index.js @@ -34,6 +34,7 @@ import HeaderColumnAttrsTable from 'examples/header-columns/column-attrs-table'; // column filter import TextFilter from 'examples/column-filter/text-filter'; +import CustomFilterValue from 'examples/column-filter/custom-filter-value'; // work on rows import RowStyleTable from 'examples/rows/row-style'; @@ -125,7 +126,9 @@ storiesOf('Work on Header Columns', module) .add('Customize Column HTML attribute', () => ); storiesOf('Column Filter', module) - .add('Text Filter', () => ); + .add('Text Filter', () => ) + // add another filter type example right here. + .add('Custom Filter Value', () => ); storiesOf('Work on Rows', module) .add('Customize Row Style', () => )