From ae06557e6f459deab4c40748f90c8f2a76e47e29 Mon Sep 17 00:00:00 2001 From: makenova Date: Wed, 31 Jan 2018 20:55:00 -0600 Subject: [PATCH 1/2] case insensitive text filter --- packages/react-bootstrap-table2-filter/src/filter.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-bootstrap-table2-filter/src/filter.js b/packages/react-bootstrap-table2-filter/src/filter.js index 03914a86f..81c60c166 100644 --- a/packages/react-bootstrap-table2-filter/src/filter.js +++ b/packages/react-bootstrap-table2-filter/src/filter.js @@ -16,7 +16,8 @@ export const filterByText = _ => ( if (comparator === EQ) { return cellStr === filterVal; } - return cellStr.indexOf(filterVal) > -1; + const re = RegExp(filterVal, 'i'); + return Boolean(cellStr.match(re)); }); export const filterFactory = _ => (filterType) => { From 83851ab4a811aa6fd353c6bf70994fcd0deafc34 Mon Sep 17 00:00:00 2001 From: makenova Date: Mon, 5 Feb 2018 00:16:01 -0600 Subject: [PATCH 2/2] optional case insensitive filter --- .../examples/column-filter/custom-text-filter.js | 4 ++-- .../src/components/text.js | 16 +++++++++++++--- .../react-bootstrap-table2-filter/src/filter.js | 8 +++++--- .../react-bootstrap-table2-filter/src/wrapper.js | 7 +++++-- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/react-bootstrap-table2-example/examples/column-filter/custom-text-filter.js b/packages/react-bootstrap-table2-example/examples/column-filter/custom-text-filter.js index e4be0a81e..10e97d889 100644 --- a/packages/react-bootstrap-table2-example/examples/column-filter/custom-text-filter.js +++ b/packages/react-bootstrap-table2-example/examples/column-filter/custom-text-filter.js @@ -13,7 +13,7 @@ const columns = [{ }, { dataField: 'name', text: 'Product Name', - filter: textFilter() + filter: textFilter({ caseSensitive: true }) }, { dataField: 'price', text: 'Product Price', @@ -38,7 +38,7 @@ const columns = [{ }, { dataField: 'name', text: 'Product Name', - filter: textFilter() + filter: textFilter({ caseSensitive: true }) }, { dataField: 'price', text: 'Product Price', diff --git a/packages/react-bootstrap-table2-filter/src/components/text.js b/packages/react-bootstrap-table2-filter/src/components/text.js index 1c102c323..caa81994f 100644 --- a/packages/react-bootstrap-table2-filter/src/components/text.js +++ b/packages/react-bootstrap-table2-filter/src/components/text.js @@ -69,7 +69,15 @@ class TextFilter extends Component { } render() { - const { placeholder, column: { text }, style, className, onFilter, ...rest } = this.props; + const { + placeholder, + column: { text }, + style, + className, + onFilter, + caseSensitive, + ...rest + } = this.props; // stopPropagation for onClick event is try to prevent sort was triggered. return ( ( data, dataField, - { filterVal, comparator = LIKE }, + { filterVal, comparator = LIKE, caseSensitive }, customFilterValue ) => data.filter((row) => { @@ -16,8 +16,10 @@ export const filterByText = _ => ( if (comparator === EQ) { return cellStr === filterVal; } - const re = RegExp(filterVal, 'i'); - return Boolean(cellStr.match(re)); + if (caseSensitive) { + return cellStr.toLocaleUpperCase().includes(filterVal.toLocaleUpperCase()); + } + return cellStr.includes(filterVal); }); export const filterFactory = _ => (filterType) => { diff --git a/packages/react-bootstrap-table2-filter/src/wrapper.js b/packages/react-bootstrap-table2-filter/src/wrapper.js index 3e6822a53..f48e0316d 100644 --- a/packages/react-bootstrap-table2-filter/src/wrapper.js +++ b/packages/react-bootstrap-table2-filter/src/wrapper.js @@ -49,8 +49,11 @@ export default (Base, { delete currFilters[dataField]; } else { // select default comparator is EQ, others are LIKE - const { comparator = (filterType === FILTER_TYPE.SELECT ? EQ : LIKE) } = filter.props; - currFilters[dataField] = { filterVal, filterType, comparator }; + const { + comparator = (filterType === FILTER_TYPE.SELECT ? EQ : LIKE), + caseSensitive = false + } = filter.props; + currFilters[dataField] = { filterVal, filterType, comparator, caseSensitive }; } store.filters = currFilters;