Support occasionally stringified null and undefined in enums
Reviewed By: LukeDefeo Differential Revision: D51202685 fbshipit-source-id: 74d0a3d7ed956f3fafc393f180b30cd2fcc55384
This commit is contained in:
committed by
Facebook GitHub Bot
parent
2d28ca2c37
commit
cd9db40e4f
@@ -239,6 +239,23 @@ function safeCreateRegExp(source: string): RegExp | undefined {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const enumPredicateForWhenValueCouldBeAStringifiedNullish = (
|
||||||
|
// searchValue is typed as a string here, but originally it could have been an undefined or a null and we stringified them during inference (search for `inferEnumOptionsFromData`)
|
||||||
|
searchValue: string,
|
||||||
|
value: string | null | undefined,
|
||||||
|
): boolean => {
|
||||||
|
if (searchValue === value) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (value === null && searchValue === 'null') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (value === undefined && searchValue === 'undefined') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
export const dataTablePowerSearchOperatorProcessorConfig = {
|
export const dataTablePowerSearchOperatorProcessorConfig = {
|
||||||
string_matches_regex: (_operator, searchValue: string, value: string) =>
|
string_matches_regex: (_operator, searchValue: string, value: string) =>
|
||||||
!!safeCreateRegExp(searchValue)?.test(
|
!!safeCreateRegExp(searchValue)?.test(
|
||||||
@@ -315,20 +332,29 @@ export const dataTablePowerSearchOperatorProcessorConfig = {
|
|||||||
float_less_or_equal: (_operator, searchValue: number, value: number) =>
|
float_less_or_equal: (_operator, searchValue: number, value: number) =>
|
||||||
value <= searchValue,
|
value <= searchValue,
|
||||||
enum_is: (_operator, searchValue: string, value: string) =>
|
enum_is: (_operator, searchValue: string, value: string) =>
|
||||||
searchValue === value,
|
enumPredicateForWhenValueCouldBeAStringifiedNullish(searchValue, value),
|
||||||
enum_is_nullish_or: (_operator, searchValue: string, value?: string | null) =>
|
enum_is_nullish_or: (_operator, searchValue: string, value?: string | null) =>
|
||||||
value == null || searchValue === value,
|
value == null ||
|
||||||
|
enumPredicateForWhenValueCouldBeAStringifiedNullish(searchValue, value),
|
||||||
enum_is_not: (_operator, searchValue: string, value: string) =>
|
enum_is_not: (_operator, searchValue: string, value: string) =>
|
||||||
searchValue !== value,
|
!enumPredicateForWhenValueCouldBeAStringifiedNullish(searchValue, value),
|
||||||
enum_set_is_nullish_or_any_of: (
|
enum_set_is_nullish_or_any_of: (
|
||||||
_operator,
|
_operator,
|
||||||
searchValue: string[],
|
searchValue: string[],
|
||||||
value?: string | null,
|
value?: string | null,
|
||||||
) => value == null || searchValue.some((item) => value === item),
|
) =>
|
||||||
|
value == null ||
|
||||||
|
searchValue.some((item) =>
|
||||||
|
enumPredicateForWhenValueCouldBeAStringifiedNullish(item, value),
|
||||||
|
),
|
||||||
enum_set_is_any_of: (_operator, searchValue: string[], value: string) =>
|
enum_set_is_any_of: (_operator, searchValue: string[], value: string) =>
|
||||||
searchValue.some((item) => value === item),
|
searchValue.some((item) =>
|
||||||
|
enumPredicateForWhenValueCouldBeAStringifiedNullish(item, value),
|
||||||
|
),
|
||||||
enum_set_is_none_of: (_operator, searchValue: string[], value: string) =>
|
enum_set_is_none_of: (_operator, searchValue: string[], value: string) =>
|
||||||
!searchValue.some((item) => value === item),
|
!searchValue.some((item) =>
|
||||||
|
enumPredicateForWhenValueCouldBeAStringifiedNullish(item, value),
|
||||||
|
),
|
||||||
is_nullish: (_operator, _searchValue, value) => value == null,
|
is_nullish: (_operator, _searchValue, value) => value == null,
|
||||||
// See PowerSearchAbsoluteDateTerm
|
// See PowerSearchAbsoluteDateTerm
|
||||||
newer_than_absolute_date: (_operator, searchValue: Date, value: any) => {
|
newer_than_absolute_date: (_operator, searchValue: Date, value: any) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user