UNPKG

@svar-ui/svelte-grid

Version:

A fast, feature-rich Svelte DataGrid component

138 lines (118 loc) 2.97 kB
import type { Component, ComponentProps } from "svelte"; import { ContextMenu as BaseContextMenu } from "@svar-ui/svelte-menu"; import type { IColumn, IRow, IApi, ISizeConfig, TMethodsConfig, IConfig, TEditorType, IColumnEditor, IHeaderCell, } from "@svar-ui/grid-store"; export * from "@svar-ui/grid-store"; export interface IColumnEditorConfig extends IColumnEditor { config?: IColumnEditor["config"] & { cell?: Component<{ data: any; onaction: (ev: { action?: any; data?: { [key: string]: any }; }) => void; }>; }; } export type TEditorHandlerConfig = ( row?: IRow, column?: IColumn ) => TEditorType | IColumnEditorConfig | null; export interface ICellProps { api: IApi; row: IRow; column: IColumn; onaction: (ev: { action?: any; data?: { [key: string]: any } }) => void; } export interface IHeaderCellConfig extends IHeaderCell { cell?: Component< ICellProps & { cell: Omit<IHeaderCell, "cell">; } >; } export type TColumnHeaderConfig = | string | IHeaderCellConfig | (string | IHeaderCellConfig)[]; export interface IColumnConfig extends Omit< IColumn, "left" | "right" | "fixed" | "optionsMap" | "header" | "footer" > { cell?: Component<ICellProps>; editor?: TEditorType | IColumnEditorConfig | TEditorHandlerConfig; header?: TColumnHeaderConfig; footer?: TColumnHeaderConfig; } export declare const Grid: Component< { rowStyle?: (row: any) => string; columnStyle?: (column: IColumn) => string; cellStyle?: (row: any, column: IColumn) => string; multiselect?: boolean; autoConfig?: boolean | IColumnConfig; header?: boolean; footer?: boolean; reorder?: boolean; autoRowHeight?: boolean; responsive?: { [key: string]: { sizes?: ISizeConfig; columns?: IColumnConfig[]; }; }; init?: (api: IApi) => void; overlay?: string | Component; columns: IColumnConfig[]; } & IConfig & GridActions<TMethodsConfig> >; export declare const HeaderMenu: Component<{ columns?: { [key: string]: boolean }; api?: IApi; children?: () => any; }>; export declare const ContextMenu: Component< ComponentProps<typeof BaseContextMenu> & { api?: IApi; } >; export declare const Tooltip: Component<{ content?: Component; api?: IApi; children?: () => any; }>; export declare const Material: Component<{ fonts?: boolean; children?: () => any; }>; export declare const Willow: Component<{ fonts?: boolean; children?: () => any; }>; export declare const WillowDark: Component<{ fonts?: boolean; children?: () => any; }>; /* get component events from store actions*/ type RemoveHyphen<S extends string> = S extends `${infer Head}-${infer Tail}` ? `${Head}${RemoveHyphen<Tail>}` : S; type EventName<K extends string> = `on${RemoveHyphen<K>}`; export type GridActions<TMethodsConfig extends Record<string, any>> = { [K in keyof TMethodsConfig as EventName<K & string>]?: ( ev: TMethodsConfig[K] ) => void; } & { [key: `on${string}`]: (ev?: any) => void; };