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

36 lines (35 loc) 2.08 kB
import type { Column } from './columns.js'; import { type HeaderCell } from './headerCells.js'; import { TableComponent } from './tableComponent.js'; import type { Matrix } from './types/Matrix.js'; import type { AnyPlugins } from './types/TablePlugin.js'; export type HeaderRowAttributes<Item, Plugins extends AnyPlugins = AnyPlugins> = { role: 'row'; }; export interface HeaderRowInit<Item, Plugins extends AnyPlugins = AnyPlugins> { id: string; cells: HeaderCell<Item, Plugins>[]; } export declare class HeaderRow<Item, Plugins extends AnyPlugins = AnyPlugins> extends TableComponent<Item, Plugins, 'thead.tr'> { cells: HeaderCell<Item, Plugins>[]; constructor({ id, cells }: HeaderRowInit<Item, Plugins>); attrs(): import("svelte/store").Readable<{ role: "row"; }>; clone(): HeaderRow<Item, Plugins>; } export declare const getHeaderRows: <Item, Plugins extends AnyPlugins = AnyPlugins>(columns: Column<Item, Plugins>[], flatColumnIds?: string[]) => HeaderRow<Item, Plugins>[]; export declare const getHeaderRowMatrix: <Item, Plugins extends AnyPlugins = AnyPlugins>(columns: Column<Item, Plugins>[]) => Matrix<HeaderCell<Item, Plugins>>; export declare const getOrderedColumnMatrix: <Item, Plugins extends AnyPlugins = AnyPlugins>(columnMatrix: Matrix<HeaderCell<Item, Plugins>>, flatColumnIds: string[]) => Matrix<HeaderCell<Item, Plugins>>; export declare const headerRowsForRowMatrix: <Item, Plugins extends AnyPlugins = AnyPlugins>(rowMatrix: Matrix<HeaderCell<Item, Plugins>>) => HeaderRow<Item, Plugins>[]; /** * Multi-colspan cells will appear as multiple adjacent cells on the same row. * Join these adjacent multi-colspan cells and update the colspan property. * * Non-adjacent multi-colspan cells (due to column ordering) must be cloned * from the original . * * @param cells An array of cells. * @returns An array of cells with no duplicate consecutive cells. */ export declare const getMergedRow: <Item, Plugins extends AnyPlugins = AnyPlugins>(cells: HeaderCell<Item, Plugins>[]) => HeaderCell<Item, Plugins>[];