Fix textFilter() for Internet Explorer (includes() and find() are not supported) (#274)

* Fix textFilter() for Internet Explorer 11
- replace includes() with indexOf() !== -1
- replace find() with for loop

* Requested changes; more readability with for loop
- use .length of the columns instead of the Object.keys()
This commit is contained in:
Nixon Kwok
2018-04-01 13:30:59 +08:00
committed by Allen
parent c91f521913
commit 4501ddb632
2 changed files with 15 additions and 4 deletions
+8 -2
View File
@@ -21,7 +21,7 @@ export const filterByText = _ => (
if (caseSensitive) {
return cellStr.includes(filterVal);
}
return cellStr.toLocaleUpperCase().includes(filterVal.toLocaleUpperCase());
return cellStr.toLocaleUpperCase().indexOf(filterVal.toLocaleUpperCase()) !== -1;
});
export const filterByNumber = _ => (
@@ -106,7 +106,13 @@ export const filters = (store, columns, _) => (currFilters) => {
Object.keys(currFilters).forEach((dataField) => {
const filterObj = currFilters[dataField];
filterFn = factory(filterObj.filterType);
const { filterValue } = columns.find(col => col.dataField === dataField);
let filterValue;
for (let i = 0; i < columns.length; i += 1) {
if (columns[i].dataField === dataField) {
filterValue = columns[i].filterValue;
break;
}
}
result = filterFn(result, dataField, filterObj, filterValue);
});
return result;
+7 -2
View File
@@ -39,8 +39,13 @@ export default Base =>
}
componentWillReceiveProps(nextProps) {
const sortedColumn = nextProps.columns.find(
column => column.dataField === nextProps.store.sortField);
let sortedColumn;
for (let i = 0; i < nextProps.columns.length; i += 1) {
if (nextProps.columns[i].dataField === nextProps.store.sortField) {
sortedColumn = nextProps.columns[i];
break;
}
}
if (sortedColumn && sortedColumn.sort) {
nextProps.store.sortBy(sortedColumn);
}