diff --git a/desktop/flipper-plugin/src/ui/datatable/DataSourceRenderer.tsx b/desktop/flipper-plugin/src/ui/datatable/DataSourceRenderer.tsx index 95341961c..82e02ebf3 100644 --- a/desktop/flipper-plugin/src/ui/datatable/DataSourceRenderer.tsx +++ b/desktop/flipper-plugin/src/ui/datatable/DataSourceRenderer.tsx @@ -56,6 +56,7 @@ type DataSourceProps = { onKeyDown?: React.KeyboardEventHandler; virtualizerRef?: MutableRefObject; onRangeChange?(start: number, end: number, total: number): void; + emptyRenderer?(dataSource: DataSource): React.ReactElement; _testHeight?: number; // exposed for unit testing only }; @@ -75,6 +76,7 @@ export const DataSourceRenderer: ( onKeyDown, virtualizerRef, onRangeChange, + emptyRenderer, _testHeight, }: DataSourceProps) { /** @@ -235,6 +237,9 @@ export const DataSourceRenderer: ( */ return ( + {virtualizer.virtualItems.length === 0 + ? emptyRenderer?.(dataSource) + : null} { columns: DataTableColumn[]; @@ -231,6 +233,10 @@ export function DataTable( ? undefined // don't render context menu in tests : tableContextMenuFactory(tableManager); + const emptyRenderer = useCallback((dataSource: DataSource) => { + return ; + }, []); + return ( @@ -264,6 +270,7 @@ export function DataTable( onKeyDown={onKeyDown} virtualizerRef={virtualizerRef} onRangeChange={onRangeChange} + emptyRenderer={emptyRenderer} _testHeight={props._testHeight} /> @@ -272,6 +279,28 @@ export function DataTable( ); } +function EmptyTable({dataSource}: {dataSource: DataSource}) { + return ( + + {dataSource.records.length === 0 ? ( + <> + + No records yet + + ) : ( + <> + + + No records match the current search / filter criteria + + + )} + + ); +} + const RangeFinder = styled.div({ backgroundColor: theme.backgroundWash, position: 'absolute',