import type { Component, ComponentProps } from "svelte"; import { ContextMenu as BaseContextMenu } from "@svar-ui/svelte-menu"; import { Toolbar as BaseToolbar } from "@svar-ui/svelte-toolbar"; import { Tooltip as BaseTooltip } from "@svar-ui/svelte-core"; import type { IColumn, IRow, IApi, ISizeConfig, TMethodsConfig, IConfig, TEditorType, TEditorConfig, 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 type IInnerApi = Pick< IApi, "exec" | "getState" | "getReactiveState" | "getRow" >; export interface ICellProps { api: IInnerApi; row: IRow; column: IColumn; onaction: (ev: { action?: any; data?: { [key: string]: any } }) => void; } export interface IHeaderCellProps { api: IInnerApi; row: number; column: IColumn; cell: Omit; onaction: (ev: { action?: any; data?: { [key: string]: any } }) => void; } export interface IHeaderCellConfig extends IHeaderCell { cell?: Component; } export type TColumnHeaderConfig = | string | IHeaderCellConfig | (string | IHeaderCellConfig)[]; export interface IColumnConfig extends Omit< IColumn, "left" | "right" | "fixed" | "optionsMap" | "header" | "footer" > { cell?: Component; 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[]; hotkeys?: | false | { [key: string]: ((e?: KeyboardEvent) => void) | boolean }; } & IConfig & GridActions >; export declare const HeaderMenu: Component<{ columns?: { [key: string]: boolean }; api?: IApi; children?: () => any; }>; export declare const ContextMenu: Component< ComponentProps & { api?: IApi; } >; export declare const Toolbar: Component< ComponentProps & { api?: IApi; } >; export declare const Tooltip: Component< Omit, "content"> & { content?: Component<{ data: { row: IRow; column: IColumn; }; }>; api?: IApi; } >; 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; }>; export declare function registerInlineEditor( type: string, component: Component<{ editor: TEditorConfig; onsave?: (ignoreFocus: boolean) => void; oncancel?: () => void; onapply?: (value: any) => void; onaction?: (ev: { action: string; data?: { [key: string]: any }; }) => void; }> ): void; /* get component events from store actions*/ type RemoveHyphen = S extends `${infer Head}-${infer Tail}` ? `${Head}${RemoveHyphen}` : S; type EventName = `on${RemoveHyphen}`; export type GridActions> = { [K in keyof TMethodsConfig as EventName]?: ( ev: TMethodsConfig[K] ) => void; } & { [key: `on${string}`]: (ev?: any) => void; };