diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx index 36248e3fa..774e73174 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableDefaultPowerSearchOperators.tsx @@ -11,16 +11,27 @@ import {OperatorConfig} from '../PowerSearch'; export type PowerSearchOperatorProcessor = ( powerSearchOperatorConfig: OperatorConfig, + searchValue: any, value: any, ) => boolean; -export type PowerSearchOperatorProcessorConfig = { - [key: string]: PowerSearchOperatorProcessor; -}; - -export const dataTablePowerSearchOperators = {} satisfies { +export const dataTablePowerSearchOperators = { + string_contains: () => ({ + label: 'contains', + key: 'string_contains', + valueType: 'STRING', + }), +} satisfies { [key: string]: (...args: any[]) => OperatorConfig; }; -export const dataTablePowerSearchOperatorProcessorConfig = - {} satisfies PowerSearchOperatorProcessorConfig; +export type PowerSearchOperatorProcessorConfig = { + [K in keyof typeof dataTablePowerSearchOperators]: PowerSearchOperatorProcessor; +}; + +export const dataTablePowerSearchOperatorProcessorConfig = { + string_contains: (operator, searchValue, value) => + (value as string) + .toLowerCase() + .includes((searchValue as string).toLowerCase()), +} satisfies PowerSearchOperatorProcessorConfig; diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx index bc4bb7bec..68f4c8e27 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx @@ -494,7 +494,10 @@ export function computeDataTableFilter( return true; } - const processor = powerSearchProcessors[searchTerm.operator.key]; + const processor = + powerSearchProcessors[ + searchTerm.operator.key as keyof typeof powerSearchProcessors + ]; if (!processor) { console.warn( 'computeDataTableFilter -> processor at searchTerm.operator.key is not recognized', @@ -504,7 +507,7 @@ export function computeDataTableFilter( return true; } - return processor(searchTerm.operator, value); + return processor(searchTerm.operator, searchTerm.searchValue, value); }); }; }