diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx index 63f1620c0..d3f6beb5e 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearch.tsx @@ -105,6 +105,10 @@ type DataTableBaseProps = { * @default true */ enablePowerSearchWholeRowSearch?: boolean; + /** If set to `true` and row[columnKey] is undefined, then it is going to pass filtering (search). + * @default false + */ + treatUndefinedValuesAsMatchingFiltering?: boolean; }; const powerSearchConfigEntireRow: FieldConfig = { @@ -556,6 +560,7 @@ export function DataTable( computeDataTableFilter( tableState.searchExpression, dataTablePowerSearchOperatorProcessorConfig, + props.treatUndefinedValuesAsMatchingFiltering, ), ); dataView.setFilterExpections( @@ -914,6 +919,7 @@ DataTable.defaultProps = { enablePersistSettings: true, onRenderEmpty: undefined, enablePowerSearchWholeRowSearch: true, + treatUndefinedValuesAsMatchingFiltering: false, } as Partial>; /* eslint-disable react-hooks/rules-of-hooks */ diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx index 7295309f9..109bc03c3 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableWithPowerSearchManager.tsx @@ -508,6 +508,7 @@ export function getValueAtPath(obj: Record, keyPath: string): any { export function computeDataTableFilter( searchExpression: SearchExpressionTerm[] | undefined, powerSearchProcessors: PowerSearchOperatorProcessorConfig, + treatUndefinedValuesAsMatchingFiltering: boolean = false, ) { return function dataTableFilter(item: any) { if (!searchExpression || !searchExpression.length) { @@ -518,12 +519,7 @@ export function computeDataTableFilter( ? item : getValueAtPath(item, searchTerm.field.key); if (!value) { - console.warn( - 'computeDataTableFilter -> value at searchTerm.field.key is not recognized', - searchTerm, - item, - ); - return true; + return treatUndefinedValuesAsMatchingFiltering; } const processor =