@smkit/ui
Version:
UI Kit of SberMarketing
97 lines (96 loc) • 2.78 kB
TypeScript
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;