Skip to content

Commit fa2410a

Browse files
committed
fix for filter with exact term does not work in lists
1 parent 490e2f9 commit fa2410a

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

src/lib/components/Table/filter.ts

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,31 @@ import type { TableFilterFn } from 'svelte-headless-table/lib/plugins/addTableFi
44
import { FilterOptionsEnum } from '$models/Enums';
55

66
const textFilter = (filterOption, filterValue, value) => {
7-
switch (filterOption) {
8-
case FilterOptionsEnum.e:
9-
return value.toLowerCase() === filterValue.toLowerCase();
10-
case FilterOptionsEnum.ne:
11-
return value.toLowerCase() !== filterValue.toLowerCase();
12-
case FilterOptionsEnum.sw:
13-
return value.toLowerCase().startsWith(filterValue.toLowerCase());
14-
case FilterOptionsEnum.ew:
15-
return value.toLowerCase().endsWith(filterValue.toLowerCase());
16-
case FilterOptionsEnum.c:
17-
return value.toLowerCase().includes(filterValue.toLowerCase());
18-
case FilterOptionsEnum.nc:
19-
return !value.toLowerCase().includes(filterValue.toLowerCase());
20-
default:
21-
return false;
22-
}
7+
8+
console.log("textFilter", filterOption, filterValue, value);
9+
// check if filterValue is a object or string
10+
let filterStr = String(filterValue);
11+
if (typeof filterValue === 'object' && filterValue !== null) {
12+
filterStr = filterValue.text;
13+
}
14+
const valueStr = String(value);
15+
console.log(filterOption, filterStr, valueStr);
16+
switch (filterOption) {
17+
case FilterOptionsEnum.e:
18+
return valueStr.toLowerCase() === filterStr.toLowerCase();
19+
case FilterOptionsEnum.ne:
20+
return valueStr.toLowerCase() !== filterStr.toLowerCase();
21+
case FilterOptionsEnum.sw:
22+
return valueStr.toLowerCase().startsWith(filterStr.toLowerCase());
23+
case FilterOptionsEnum.ew:
24+
return valueStr.toLowerCase().endsWith(filterStr.toLowerCase());
25+
case FilterOptionsEnum.c:
26+
return valueStr.toLowerCase().includes(filterStr.toLowerCase());
27+
case FilterOptionsEnum.nc:
28+
return !valueStr.toLowerCase().includes(filterStr.toLowerCase());
29+
default:
30+
return false;
31+
}
2332
};
2433

2534
const numberFilter = (filterOption, filterValue, value) => {

0 commit comments

Comments
 (0)