mirror of
https://github.com/gosticks/react-bootstrap-table2.git
synced 2026-08-11 11:40:22 +00:00
display filter condition correctly and make sure text filter to be String
This commit is contained in:
Vendored
+4
-4
@@ -22,7 +22,7 @@ const columns = [{
|
||||
text: 'Product Name'
|
||||
}, {
|
||||
dataField: 'quality',
|
||||
text: 'Product Quailty',
|
||||
text: 'Product Quality',
|
||||
formatter: cell => selectOptions[cell],
|
||||
filter: selectFilter({
|
||||
options: selectOptions,
|
||||
@@ -34,7 +34,7 @@ const columns = [{
|
||||
}];
|
||||
|
||||
const handleClick = () => {
|
||||
qualityFilter('0');
|
||||
qualityFilter(0);
|
||||
};
|
||||
|
||||
const sourceCode = `\
|
||||
@@ -57,7 +57,7 @@ const columns = [{
|
||||
text: 'Product Name'
|
||||
}, {
|
||||
dataField: 'quality',
|
||||
text: 'Product Quailty',
|
||||
text: 'Product Quality',
|
||||
formatter: cell => selectOptions[cell],
|
||||
filter: selectFilter({
|
||||
options: selectOptions,
|
||||
@@ -69,7 +69,7 @@ const columns = [{
|
||||
}];
|
||||
|
||||
const handleClick = () => {
|
||||
qualityFilter('0');
|
||||
qualityFilter(0);
|
||||
};
|
||||
|
||||
export default () => (
|
||||
|
||||
Vendored
+2
-2
@@ -27,7 +27,7 @@ const columns = [{
|
||||
}];
|
||||
|
||||
const handleClick = () => {
|
||||
nameFilter('0');
|
||||
nameFilter(0);
|
||||
};
|
||||
|
||||
const sourceCode = `\
|
||||
@@ -55,7 +55,7 @@ const columns = [{
|
||||
}];
|
||||
|
||||
const handleClick = () => {
|
||||
nameFilter('0');
|
||||
nameFilter(0);
|
||||
};
|
||||
|
||||
export default () => (
|
||||
|
||||
@@ -42,6 +42,9 @@ class NumberFilter extends Component {
|
||||
if (getFilter) {
|
||||
getFilter((filterVal) => {
|
||||
this.setState(() => ({ isSelected: (filterVal !== '') }));
|
||||
this.numberFilterComparator.value = filterVal.comparator;
|
||||
this.numberFilter.value = filterVal.number;
|
||||
|
||||
onFilter(column, FILTER_TYPE.NUMBER)({
|
||||
number: filterVal.number,
|
||||
comparator: filterVal.comparator
|
||||
|
||||
@@ -36,6 +36,8 @@ class SelectFilter extends Component {
|
||||
if (getFilter) {
|
||||
getFilter((filterVal) => {
|
||||
this.setState(() => ({ isSelected: filterVal !== '' }));
|
||||
this.selectInput.value = filterVal;
|
||||
|
||||
onFilter(column, FILTER_TYPE.SELECT)(filterVal);
|
||||
});
|
||||
}
|
||||
|
||||
+26
-18
@@ -6,30 +6,37 @@ import { LIKE, EQ, NE, GT, GE, LT, LE } from './comparison';
|
||||
export const filterByText = _ => (
|
||||
data,
|
||||
dataField,
|
||||
{ filterVal = '', comparator = LIKE, caseSensitive },
|
||||
{ filterVal: userInput = '', comparator = LIKE, caseSensitive },
|
||||
customFilterValue
|
||||
) =>
|
||||
data.filter((row) => {
|
||||
let cell = _.get(row, dataField);
|
||||
if (customFilterValue) {
|
||||
cell = customFilterValue(cell, row);
|
||||
}
|
||||
const cellStr = _.isDefined(cell) ? cell.toString() : '';
|
||||
if (comparator === EQ) {
|
||||
return cellStr === filterVal;
|
||||
}
|
||||
if (caseSensitive) {
|
||||
return cellStr.includes(filterVal);
|
||||
}
|
||||
return cellStr.toLocaleUpperCase().indexOf(filterVal.toLocaleUpperCase()) !== -1;
|
||||
});
|
||||
) => {
|
||||
// make sure filter value to be a string
|
||||
const filterVal = userInput.toString();
|
||||
|
||||
return (
|
||||
data.filter((row) => {
|
||||
let cell = _.get(row, dataField);
|
||||
if (customFilterValue) {
|
||||
cell = customFilterValue(cell, row);
|
||||
}
|
||||
const cellStr = _.isDefined(cell) ? cell.toString() : '';
|
||||
if (comparator === EQ) {
|
||||
return cellStr === filterVal;
|
||||
}
|
||||
if (caseSensitive) {
|
||||
return cellStr.includes(filterVal);
|
||||
}
|
||||
|
||||
return cellStr.toLocaleUpperCase().indexOf(filterVal.toLocaleUpperCase()) !== -1;
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
export const filterByNumber = _ => (
|
||||
data,
|
||||
dataField,
|
||||
{ filterVal: { comparator, number } },
|
||||
customFilterValue
|
||||
) =>
|
||||
) => (
|
||||
data.filter((row) => {
|
||||
if (number === '' || !comparator) return true;
|
||||
let valid = true;
|
||||
@@ -81,7 +88,8 @@ export const filterByNumber = _ => (
|
||||
}
|
||||
}
|
||||
return valid;
|
||||
});
|
||||
})
|
||||
);
|
||||
|
||||
export const filterFactory = _ => (filterType) => {
|
||||
let filterFn;
|
||||
|
||||
@@ -63,6 +63,7 @@ export default (Base, {
|
||||
} = filter.props;
|
||||
currFilters[dataField] = { filterVal, filterType, comparator, caseSensitive };
|
||||
}
|
||||
|
||||
store.filters = currFilters;
|
||||
|
||||
if (this.isRemoteFiltering() || this.isRemotePagination()) {
|
||||
|
||||
Reference in New Issue
Block a user