Skip to content

Commit c42d4d2

Browse files
committed
add more null safety to filterFns
1 parent 2daa0f7 commit c42d4d2

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

packages/material-react-table/src/fns/filterFns.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@ const fuzzy = <TData extends MRT_RowData>(
1212
filterValue: number | string,
1313
addMeta: (item: RankingInfo) => void,
1414
) => {
15-
const itemRank = rankItem(row.getValue(columnId), filterValue as string, {
16-
threshold: rankings.MATCHES,
17-
});
15+
const itemRank = rankItem(
16+
row.getValue<string | number | null>(columnId),
17+
filterValue as string,
18+
{
19+
threshold: rankings.MATCHES,
20+
},
21+
);
1822
addMeta(itemRank);
1923
return itemRank.passed;
2024
};
@@ -27,8 +31,8 @@ const contains = <TData extends MRT_RowData>(
2731
filterValue: number | string,
2832
) =>
2933
row
30-
.getValue<number | string>(id)
31-
.toString()
34+
.getValue<number | string | null>(id)
35+
?.toString()
3236
.toLowerCase()
3337
.trim()
3438
.includes(filterValue.toString().toLowerCase().trim());
@@ -41,8 +45,8 @@ const startsWith = <TData extends MRT_RowData>(
4145
filterValue: number | string,
4246
) =>
4347
row
44-
.getValue<number | string>(id)
45-
.toString()
48+
.getValue<number | string | null>(id)
49+
?.toString()
4650
.toLowerCase()
4751
.trim()
4852
.startsWith(filterValue.toString().toLowerCase().trim());
@@ -55,8 +59,8 @@ const endsWith = <TData extends MRT_RowData>(
5559
filterValue: number | string,
5660
) =>
5761
row
58-
.getValue<number | string>(id)
59-
.toString()
62+
.getValue<number | string | null>(id)
63+
?.toString()
6064
.toLowerCase()
6165
.trim()
6266
.endsWith(filterValue.toString().toLowerCase().trim());
@@ -68,8 +72,8 @@ const equals = <TData extends MRT_RowData>(
6872
id: string,
6973
filterValue: number | string,
7074
) =>
71-
row.getValue<number | string>(id).toString().toLowerCase().trim() ===
72-
filterValue?.toString().toLowerCase().trim();
75+
row.getValue<number | string | null>(id)?.toString().toLowerCase().trim() ===
76+
filterValue.toString().toLowerCase().trim();
7377

7478
equals.autoRemove = (val: any) => !val;
7579

@@ -78,7 +82,7 @@ const notEquals = <TData extends MRT_RowData>(
7882
id: string,
7983
filterValue: number | string,
8084
) =>
81-
row.getValue<number | string>(id).toString().toLowerCase().trim() !==
85+
row.getValue<number | string | null>(id)?.toString().toLowerCase().trim() !==
8286
filterValue.toString().toLowerCase().trim();
8387

8488
notEquals.autoRemove = (val: any) => !val;
@@ -89,9 +93,11 @@ const greaterThan = <TData extends MRT_RowData>(
8993
filterValue: number | string,
9094
) =>
9195
!isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))
92-
? +row.getValue<number | string>(id) > +filterValue
93-
: row.getValue<number | string>(id).toString().toLowerCase().trim() >
94-
filterValue?.toString().toLowerCase().trim();
96+
? +(row.getValue<number | string | null>(id) ?? 0) > +filterValue
97+
: (row.getValue<number | string | null>(id) ?? '')
98+
?.toString()
99+
.toLowerCase()
100+
.trim() > filterValue.toString().toLowerCase().trim();
95101

96102
greaterThan.autoRemove = (val: any) => !val;
97103

@@ -109,9 +115,11 @@ const lessThan = <TData extends MRT_RowData>(
109115
filterValue: number | string,
110116
) =>
111117
!isNaN(+filterValue) && !isNaN(+row.getValue<number | string>(id))
112-
? +row.getValue<number | string>(id) < +filterValue
113-
: row.getValue<number | string>(id).toString().toLowerCase().trim() <
114-
filterValue?.toString().toLowerCase().trim();
118+
? +(row.getValue<number | string | null>(id) ?? 0) < +filterValue
119+
: (row.getValue<number | string | null>(id) ?? '')
120+
?.toString()
121+
.toLowerCase()
122+
.trim() < filterValue.toString().toLowerCase().trim();
115123

116124
lessThan.autoRemove = (val: any) => !val;
117125

@@ -157,15 +165,15 @@ const empty = <TData extends MRT_RowData>(
157165
row: Row<TData>,
158166
id: string,
159167
_filterValue: number | string,
160-
) => !row.getValue<number | string>(id).toString().trim();
168+
) => !row.getValue<number | string | null>(id)?.toString().trim();
161169

162170
empty.autoRemove = (val: any) => !val;
163171

164172
const notEmpty = <TData extends MRT_RowData>(
165173
row: Row<TData>,
166174
id: string,
167175
_filterValue: number | string,
168-
) => !!row.getValue<number | string>(id).toString().trim();
176+
) => !!row.getValue<number | string | null>(id)?.toString().trim();
169177

170178
notEmpty.autoRemove = (val: any) => !val;
171179

0 commit comments

Comments
 (0)