UNPKG

@smkit/ui

Version:

UI Kit of SberMarketing

97 lines (96 loc) 2.78 kB
import type { Worksheet } from 'exceljs'; import type { Writable } from 'svelte/store'; export type Cell = number | string | null | Date | object; export interface Head { title?: string; name: string; width?: number | string; minWidth?: number; maxWidth?: number; type?: Types | string; unit?: string; class?: string; skipRender?: boolean; showTextModal?: boolean; modalMinTextLength?: number; sortable?: boolean; resizable?: boolean; pinnable?: boolean; pinned?: boolean; offsetLeft?: number; element?: HTMLElement; helpers?: boolean; index?: number; cast?: (cell: Cell) => string; onSort?: SortCallback; } export declare enum Types { Number = "number", String = "string", Date = "date", Boolean = "boolean", List = "list", Object = "object" } export type totalValues = Array<number | string> | Record<string, number | string>; export type RowData = Record<Head['name'], Cell>[]; export type ColData = Record<Head['name'], Cell[]>; export declare namespace Props { type Data = RowData | ColData; type Columns = Head[] | Record<Head['name'], Head> | Record<Head['name'], Head['title']> | Head['name'][] | undefined; type Config = { virtualizer?: { overscan?: number; rowHeight: number; }; enumerate?: boolean; fullScreen?: boolean; head?: { precision?: Record<string, number>; pinnable?: boolean; resizable?: boolean; sortable?: boolean; showPin?: boolean; showTextModal?: boolean; modalMinTextLength?: number; minWidth?: number; maxWidth?: number; width?: number | string; }; onSort?: SortCallback; onPagination?: undefined; onFilter?: undefined; replaceNull?: string; }; type All = { data: Data; columns: Columns | undefined; config: Config | undefined; }; } export declare namespace Processed { type Data = RowData | RowProps; type Header = Head[]; type Config = Props.Config; } export type RowProps = { [k: string]: unknown; class?: string; } | undefined; export type RowsConfig = Record<number | string, // Row index RowProps> | RowProps[]; export type Sort = { by: Head | null; asc: boolean; }; export type Controls = { sort: Sort; pinned: string[]; }; export type SortCallback = (data: Processed.Data, controls: Sort) => Promise<Processed.Data>; export type Rendered = { header: Writable<Processed.Header>; body: Writable<Processed.Data>; config: Writable<Processed.Config>; }; export type StyleTableCallback = (worksheet: Worksheet) => void;