es-grid-template
Version:
es-grid-template
40 lines (39 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.customStringFilterFn = customStringFilterFn;
exports.useFilterOperator = useFilterOperator;
function useFilterOperator(table) {
const setFilterOperator = (columnId, operator) => {
const filters = table.getState().columnFilters;
const next = filters.map(f => f.id === columnId ? {
...f,
operator
} : f);
table.setColumnFilters(next);
};
const getFilterOperator = columnId => {
const filters = table.getState().columnFilters;
return filters.find(f => f.id === columnId)?.operator ?? 'contains';
};
return {
setFilterOperator,
getFilterOperator
};
}
function customStringFilterFn(row, columnId, filterValue) {
const filters = row.table.getState().columnFilters;
const operator = filters.find(f => f.id === columnId)?.operator ?? 'contains';
const cellValue = String(row.getValue(columnId) ?? '');
switch (operator) {
case 'equal':
return cellValue === filterValue;
case 'startsWith':
return cellValue.toLowerCase().startsWith(filterValue.toLowerCase());
case 'endsWith':
return cellValue.toLowerCase().endsWith(filterValue.toLowerCase());
default:
return cellValue.toLowerCase().includes(filterValue.toLowerCase());
}
}