UNPKG

platina-core

Version:

UI Kit of SberMarketing

108 lines (107 loc) 3.36 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; renderValue?: (cell: Cell, type: string | undefined) => string; onSort?: SortCallback; onFilter?: FilterCallback; } export type KeyCallback<T = any> = (index: number, body: Processed.Data<T>) => string | number; 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<T> = { 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; menuable?: boolean; filterable?: boolean; }; persist: Writable<Controls | null>; format: (value: string | number | Date, type: Types) => string; onSort?: SortCallback<T>; onPagination?: undefined; onFilter?: undefined; replaceNull?: string; }; type All<T> = { data: Data; columns: Columns | undefined; config: Config<T> | undefined; }; } export declare namespace Processed { type Data<T> = T[]; type Header = Head[]; type Config<T> = Props.Config<T>; } export type RowProps = { [k: string]: unknown; class?: string; }; export type RowsConfig = Record<number | string, // Row index RowProps> | RowProps[]; export type Sort = { by: Head | null; asc: boolean; }; export type Filter = Record<string, string>; export type Controls = { filter: Filter; sort: Sort; pinned: string[]; dataVersion: string; }; export type SortCallback<T> = (data: Processed.Data<T>, controls: Sort) => Promise<Processed.Data<T>>; export type FilterCallback<T> = (data: Processed.Data<T>, controls: Filter) => Promise<Processed.Data<T>>; export type Rendered<T> = { header: Writable<Processed.Header>; body: Writable<Processed.Data<T>>; config: Writable<Processed.Config<T>>; }; export type StyleTableCallback = (worksheet: Worksheet) => void;