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

30 lines (29 loc) 1.25 kB
import { type Readable, type Writable } from 'svelte/store'; import type { BodyRow } from '../bodyRows.js'; import type { NewTablePropSet, TablePlugin } from '../types/TablePlugin.js'; import { type RecordSetStore } from '../utils/store.js'; export interface SelectedRowsConfig<Item> { initialSelectedDataIds?: Record<string, boolean>; linkDataSubRows?: boolean; } export interface SelectedRowsState<Item> { selectedDataIds: RecordSetStore<string>; allRowsSelected: Writable<boolean>; someRowsSelected: Readable<boolean>; allPageRowsSelected: Writable<boolean>; somePageRowsSelected: Readable<boolean>; getRowState: (row: BodyRow<Item>) => SelectedRowsRowState; } export interface SelectedRowsRowState { isSelected: Writable<boolean>; isSomeSubRowsSelected: Readable<boolean>; isAllSubRowsSelected: Readable<boolean>; } export type SelectedRowsPropSet = NewTablePropSet<{ 'tbody.tr': { selected: boolean; someSubRowsSelected: boolean; allSubRowsSelected: boolean; }; }>; export declare const addSelectedRows: <Item>({ initialSelectedDataIds, linkDataSubRows }?: SelectedRowsConfig<Item>) => TablePlugin<Item, SelectedRowsState<Item>, Record<string, never>, SelectedRowsPropSet>;