wix-style-react
Version:
73 lines (69 loc) • 2.6 kB
TypeScript
import * as React from 'react';
import { PopoverCommonProps } from '../../common';
export type RowDataDefaultType = any;
export interface DataTableProps<RowData = RowDataDefaultType> {
dataHook?: string;
id?: string;
data?: RowData[];
columns: DataTableColumn[];
showHeaderWhenEmpty?: boolean;
rowDataHook?: string | DataTableRowDataHookFn;
rowClass?: string;
dynamicRowClass?: (rowData: RowData, rowNum: number) => string;
isRowSelected?: (rowData: RowData, rowNum: number) => boolean;
isRowHighlight?: (rowData: RowData, rowNum: number) => boolean;
onRowClick?: (rowData: RowData, rowNum: number) => void;
onMouseEnterRow?: (rowData: RowData, rowNum: number) => void;
onMouseLeaveRow?: (rowData: RowData, rowNum: number) => void;
onSortClick?: (column: DataTableColumn, colNum: number) => void;
infiniteScroll?: boolean;
itemsPerPage?: number;
width?: string;
skin?: DataTableSkin;
loadMore?: () => void;
hasMore?: boolean;
initialLoad?: boolean;
loader?: React.ReactNode;
useWindow?: boolean;
scrollElement?: HTMLElement | React.RefObject<any>;
rowVerticalPadding?: DataTableRowVerticalPadding;
rowDetails?: (rowData: RowData, rowNum: number) => React.ReactNode;
removeRowDetailsPadding?: boolean;
allowMultiDetailsExpansion?: boolean;
hideHeader?: boolean;
showLastRowDivider?: boolean;
virtualized?: boolean;
virtualizedTableHeight?: number;
virtualizedLineHeight?: number;
virtualizedListRef?: React.LegacyRef<any>;
selectedRowsIds?: (string | number)[];
horizontalScroll?: boolean;
stickyColumns?: number;
isRowDisabled?: (rowData: RowData) => boolean;
infiniteScrollRef?: React.Ref<any>;
}
export default class DataTable<
RowData = RowDataDefaultType,
> extends React.Component<DataTableProps<RowData>> {}
export type DataTableColumnAlign = 'start' | 'center' | 'end';
export type DataTableRowDataHookFn<RowData = RowDataDefaultType> = (
rowData: RowData,
rowNum: number,
) => string;
export type DataTableSkin = 'standard' | 'neutral';
export type DataTableRowVerticalPadding = 'tiny' | 'small' | 'medium' | 'large';
export interface PopoverPropsWithContent extends PopoverCommonProps {
content?: React.ReactNode;
}
export type DataTableColumn<RowData = RowDataDefaultType> = {
title: React.ReactNode;
render: (row: RowData, rowNum: number) => React.ReactNode;
width?: string | number;
important?: boolean;
sortable?: boolean;
sortDescending?: boolean;
style?: React.CSSProperties;
infoTooltipProps?: PopoverPropsWithContent;
align?: DataTableColumnAlign;
stickyActionCell?: boolean;
};