UNPKG

flipper-plugin

Version:

Flipper Desktop plugin SDK and components

79 lines 2.97 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ import React, { RefObject, CSSProperties } from 'react'; import { Percentage } from '../../utils/widthUtils'; import { DataSourceVirtualizer, DataSourceView, DataSource } from '../../data-source/index'; import { DataTableManager } from './DataTableManager'; import { Formatter } from '../DataFormatter'; type DataTableBaseProps<T = any> = { columns: DataTableColumn<T>[]; enableSearchbar?: boolean; enableAutoScroll?: boolean; enableHorizontalScroll?: boolean; enableColumnHeaders?: boolean; enableMultiSelect?: boolean; enableContextMenu?: boolean; enablePersistSettings?: boolean; enableMultiPanels?: boolean; scrollable?: boolean; extraActions?: React.ReactElement; onSelect?(record: T | undefined, records: T[]): void; onRowStyle?(record: T): CSSProperties | undefined; tableManagerRef?: RefObject<DataTableManager<T> | undefined>; virtualizerRef?: RefObject<DataSourceVirtualizer | undefined>; onCopyRows?(records: T[]): string; onContextMenu?: (selection: undefined | T) => React.ReactElement; onRenderEmpty?: null | ((dataView?: DataSourceView<T, T[keyof T]>) => React.ReactElement); }; export type ItemRenderer<T> = (item: T, selected: boolean, index: number) => React.ReactNode; type DataTableInput<T = any> = { dataSource: DataSource<T, T[keyof T]>; viewId?: string; records?: undefined; recordsKey?: undefined; } | { records: readonly T[]; recordsKey?: keyof T; viewId?: string; dataSource?: undefined; }; export type DataTableColumn<T = any> = { key: keyof T & string; onRender?: (row: T, selected: boolean, index: number) => React.ReactNode; formatters?: Formatter[] | Formatter; title?: string; width?: number | Percentage | undefined; wrap?: boolean; align?: 'left' | 'right' | 'center'; visible?: boolean; filters?: { label: string; value: string; enabled: boolean; predefined?: boolean; strict?: boolean; exact?: boolean; }[]; inversed?: boolean; sortable?: boolean; }; export interface TableRowRenderContext<T = any> { columns: DataTableColumn<T>[]; onMouseEnter(e: React.MouseEvent<HTMLDivElement>, item: T, itemId: number): void; onMouseDown(e: React.MouseEvent<HTMLDivElement>, item: T, itemId: number): void; onRowStyle?(item: T): React.CSSProperties | undefined; onContextMenu?(): React.ReactElement; } export type DataTableProps<T> = DataTableInput<T> & DataTableBaseProps<T>; export declare function DataTable<T extends object>(props: DataTableProps<T>): React.ReactElement; export declare namespace DataTable { var defaultProps: Partial<DataTableProps<any>>; } export {}; //# sourceMappingURL=DataTable.d.ts.map