diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx index 6f2337175..ecc3343c2 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx @@ -637,13 +637,19 @@ export function computeDataTableFilter( } } - return columns - .map((c) => getValueAtPath(item, c.key)) - .some((v) => - searchRegex + //free search all top level keys as well as any (nested) columns in the table + const nestedColumns = columns + .map((col) => col.key) + .filter((path) => path.includes('.')); + + return [...Object.keys(item), ...nestedColumns] + .map((key) => getValueAtPath(item, key)) + .filter((val) => typeof val !== 'object') + .some((v) => { + return searchRegex ? searchRegex.test(String(v)) - : String(v).toLowerCase().includes(searchString), - ); + : String(v).toLowerCase().includes(searchString); + }); }; } diff --git a/desktop/flipper-plugin/src/ui/data-table/__tests__/DataTable.node.tsx b/desktop/flipper-plugin/src/ui/data-table/__tests__/DataTable.node.tsx index 66d5a5692..5967c62fc 100644 --- a/desktop/flipper-plugin/src/ui/data-table/__tests__/DataTable.node.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/__tests__/DataTable.node.tsx @@ -359,7 +359,11 @@ test('compute filters', () => { const filter = computeDataTableFilter('tEsT', false, baseColumns)!; expect(data.filter(filter)).toEqual([]); } - + { + //no columns but should still find rows + const filter = computeDataTableFilter('EE', false, [])!; + expect(data.filter(filter)).toEqual([coffee, meet]); + } { const filter = computeDataTableFilter('EE', false, baseColumns)!; expect(data.filter(filter)).toEqual([coffee, meet]);