import type { SvelteComponentTyped } from "svelte"; import type { SvelteHTMLElements } from "svelte/elements"; export type DataTableKey = import("./DataTableTypes.d.ts").PropertyPath; export type DataTableValue = any; export interface DataTableEmptyHeader { key: DataTableKey | (string & {}); empty: boolean; display?: (item: DataTableValue, row: Row) => DataTableValue; sort?: false | ((a: DataTableValue, b: DataTableValue) => number); columnMenu?: boolean; width?: string; minWidth?: string; } export interface DataTableNonEmptyHeader { key: DataTableKey; value: DataTableValue; display?: (item: DataTableValue, row: Row) => DataTableValue; sort?: false | ((a: DataTableValue, b: DataTableValue) => number); columnMenu?: boolean; width?: string; minWidth?: string; } export type DataTableHeader = | DataTableNonEmptyHeader | DataTableEmptyHeader; export interface DataTableRow { id: any; [key: string]: DataTableValue; } export type DataTableRowId = any; export interface DataTableCell { key: DataTableKey | (string & {}); value: DataTableValue; display?: (item: DataTableValue, row: DataTableRow) => DataTableValue; } type $RestProps = SvelteHTMLElements["div"]; type $Props = { /** * Specify the data table headers * @default [] */ headers?: ReadonlyArray>; /** * Specify the rows the data table should render * keys defined in `headers` are used for the row ids * @default [] */ rows?: ReadonlyArray; /** * Set the size of the data table * @default undefined */ size?: "compact" | "short" | "medium" | "tall"; /** * Specify the title of the data table * @default "" */ title?: string; /** * Specify the description of the data table * @default "" */ description?: string; /** * Set to `true` to use zebra styles * @default false */ zebra?: boolean; /** * Set to `true` for the sortable variant * @default false */ sortable?: boolean; /** * Specify the header key to sort by * @default null */ sortKey?: DataTableKey; /** * Specify the sort direction * @default "none" */ sortDirection?: "none" | "ascending" | "descending"; /** * Set to `true` for the expandable variant * Automatically set to `true` if `batchExpansion` is `true` * @default false */ expandable?: boolean; /** * Set to `true` to enable batch expansion * @default false */ batchExpansion?: boolean; /** * Specify the row ids to be expanded * @default [] */ expandedRowIds?: ReadonlyArray; /** * Specify the ids for rows that should not be expandable * @default [] */ nonExpandableRowIds?: ReadonlyArray; /** * Set to `true` for the radio selection variant * @default false */ radio?: boolean; /** * Set to `true` for the selectable variant * Automatically set to `true` if `radio` or `batchSelection` are `true` * @default false */ selectable?: boolean; /** * Set to `true` to enable batch selection * @default false */ batchSelection?: boolean; /** * Specify the row ids to be selected * @default [] */ selectedRowIds?: ReadonlyArray; /** * Specify the ids of rows that should not be selectable * @default [] */ nonSelectableRowIds?: ReadonlyArray; /** * Set to `true` to enable a sticky header * @default false */ stickyHeader?: boolean; /** * Set to `true` to use static width * @default false */ useStaticWidth?: boolean; /** * Specify the number of items to display in a page * @default 0 */ pageSize?: number; /** * Set to `number` to set current page * @default 0 */ page?: number; [key: `data-${string}`]: any; }; export type DataTableProps = Omit<$RestProps, keyof $Props> & $Props; export default class DataTable< Row extends DataTableRow = DataTableRow, > extends SvelteComponentTyped< DataTableProps, { click: CustomEvent<{ header?: DataTableHeader; row?: Row; cell?: DataTableCell; }>; ["click:header--expand"]: CustomEvent<{ expanded: boolean }>; ["click:header"]: CustomEvent<{ header: DataTableHeader; sortDirection?: "ascending" | "descending" | "none"; }>; ["click:header--select"]: CustomEvent<{ indeterminate: boolean; selected: boolean; }>; ["click:row"]: CustomEvent; ["mouseenter:row"]: CustomEvent; ["mouseleave:row"]: CustomEvent; ["click:row--expand"]: CustomEvent<{ expanded: boolean; row: Row }>; ["click:row--select"]: CustomEvent<{ selected: boolean; row: Row }>; ["click:cell"]: CustomEvent>; }, { default: {}; cell: { row: Row; cell: DataTableCell; rowIndex: number; cellIndex: number; }; ["cell-header"]: { header: DataTableNonEmptyHeader }; description: {}; ["expanded-row"]: { row: Row }; title: {}; } > {}