@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
37 lines (36 loc) • 1.29 kB
TypeScript
import { type Writable } from 'svelte/store';
import type { NewTablePropSet, TablePlugin } from '../types/TablePlugin.js';
/**
* Configuration options for the addHiddenColumns plugin.
*/
export interface HiddenColumnsConfig {
/** Initial list of column IDs to hide. */
initialHiddenColumnIds?: string[];
}
/**
* State exposed by the addHiddenColumns plugin.
*/
export interface HiddenColumnsState {
/** Writable store containing the list of hidden column IDs. */
hiddenColumnIds: Writable<string[]>;
}
/**
* Creates a hidden columns plugin that enables showing/hiding table columns.
*
* @template Item - The type of data items in the table.
* @param config - Configuration options.
* @returns A TablePlugin that provides column visibility control.
* @example
* ```typescript
* const table = createTable(data, {
* hide: addHiddenColumns({
* initialHiddenColumnIds: ['internalId', 'createdAt']
* })
* })
*
* // Hide/show columns dynamically
* const { hiddenColumnIds } = table.pluginStates.hide
* hiddenColumnIds.update(ids => [...ids, 'newColumn'])
* ```
*/
export declare const addHiddenColumns: <Item>({ initialHiddenColumnIds }?: HiddenColumnsConfig) => TablePlugin<Item, HiddenColumnsState, Record<string, never>, NewTablePropSet<never>>;