UNPKG

@humanspeak/svelte-headless-table

Version:

A powerful, headless table library for Svelte that provides complete control over table UI while handling complex data operations like sorting, filtering, pagination, grouping, and row expansion. Build custom, accessible data tables with zero styling opin

76 lines (75 loc) 4.2 kB
import type { DisplayBodyCell } from './bodyCells.js'; import type { TableState } from './createViewModel.js'; import type { DataLabel, DisplayLabel, HeaderLabel } from './types/Label.js'; import type { AnyPlugins, PluginColumnConfigs } from './types/TablePlugin.js'; export interface ColumnInit<Item, Plugins extends AnyPlugins = AnyPlugins> { header: HeaderLabel<Item, Plugins>; footer?: HeaderLabel<Item, Plugins>; height: number; plugins?: PluginColumnConfigs<Plugins>; } export declare class Column<Item, Plugins extends AnyPlugins = AnyPlugins> { header: HeaderLabel<Item, Plugins>; footer?: HeaderLabel<Item, Plugins>; height: number; plugins?: PluginColumnConfigs<Plugins>; constructor({ header, footer, height, plugins }: ColumnInit<Item, Plugins>); isFlat(): this is FlatColumn<Item, Plugins>; isData(): this is DataColumn<Item, Plugins>; isDisplay(): this is DisplayColumn<Item, Plugins>; isGroup(): this is GroupColumn<Item, Plugins>; } export type FlatColumnInit<Item, Plugins extends AnyPlugins = AnyPlugins, Id extends string = any> = Omit<ColumnInit<Item, Plugins>, 'height'> & { id?: Id; }; export declare class FlatColumn<Item, Plugins extends AnyPlugins = AnyPlugins, Id extends string = any> extends Column<Item, Plugins> { __flat: boolean; id: Id; constructor({ header, footer, plugins, id }: FlatColumnInit<Item, Plugins>); } export type DataColumnInit<Item, Plugins extends AnyPlugins = AnyPlugins, Id extends string = string, Value = unknown> = DataColumnInitBase<Item, Plugins, Value> & ((Id extends keyof Item ? DataColumnInitKey<Item, Id> : never) | DataColumnInitIdAndKey<Item, Id, keyof Item> | DataColumnInitFnAndId<Item, Id, Value>); export type DataColumnInitBase<Item, Plugins extends AnyPlugins = AnyPlugins, Value = unknown> = Omit<ColumnInit<Item, Plugins>, 'height'> & { cell?: DataLabel<Item, Plugins, Value>; }; export type DataColumnInitKey<Item, Id extends keyof Item> = { accessor: Id; id?: Id; }; export type DataColumnInitIdAndKey<Item, Id extends string, Key extends keyof Item> = { accessor: Key; id?: Id; }; export type DataColumnInitFnAndId<Item, Id extends string, Value> = { accessor: keyof Item | ((item: Item) => Value); id?: Id; }; export declare class DataColumn<Item, Plugins extends AnyPlugins = AnyPlugins, Id extends string = any, Value = any> extends FlatColumn<Item, Plugins, Id> { __data: boolean; cell?: DataLabel<Item, Plugins, Value>; accessorKey?: keyof Item; accessorFn?: (item: Item) => Value; constructor({ header, footer, plugins, cell, accessor, id }: DataColumnInit<Item, Plugins, Id, Value>); getValue(item: Item): any; } export type DisplayColumnDataGetter<Item, Plugins extends AnyPlugins = AnyPlugins> = (cell: DisplayBodyCell<Item>, state?: TableState<Item, Plugins>) => unknown; export type DisplayColumnInit<Item, Plugins extends AnyPlugins = AnyPlugins, Id extends string = any> = FlatColumnInit<Item, Plugins, Id> & { cell: DisplayLabel<Item, Plugins>; data?: DisplayColumnDataGetter<Item, Plugins>; }; export declare class DisplayColumn<Item, Plugins extends AnyPlugins = AnyPlugins, Id extends string = any> extends FlatColumn<Item, Plugins, Id> { __display: boolean; cell: DisplayLabel<Item, Plugins>; data?: DisplayColumnDataGetter<Item, Plugins>; constructor({ header, footer, plugins, id, cell, data }: DisplayColumnInit<Item, Plugins, Id>); } export type GroupColumnInit<Item, Plugins extends AnyPlugins = AnyPlugins> = Omit<ColumnInit<Item, Plugins>, 'height'> & { columns: Column<Item, Plugins>[]; }; export declare class GroupColumn<Item, Plugins extends AnyPlugins = AnyPlugins> extends Column<Item, Plugins> { __group: boolean; columns: Column<Item, Plugins>[]; ids: string[]; constructor({ header, footer, columns, plugins }: GroupColumnInit<Item, Plugins>); } export declare const getFlatColumnIds: <Item, Plugins extends AnyPlugins = AnyPlugins>(columns: Column<Item, Plugins>[]) => string[]; export declare const getFlatColumns: <Item, Plugins extends AnyPlugins = AnyPlugins>(columns: Column<Item, Plugins>[]) => FlatColumn<Item, Plugins>[];