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

40 lines (39 loc) 1.61 kB
import { type Readable, type Updater, type Writable } from 'svelte/store'; import type { NewTablePropSet, TablePlugin } from '../types/TablePlugin.js'; export type PaginationConfig = { initialPageIndex?: number; initialPageSize?: number; } & ({ serverSide?: false | undefined; serverItemCount?: undefined; } | { serverSide: true; serverItemCount: Readable<number>; }); export interface PaginationState { pageSize: Writable<number>; pageIndex: Writable<number>; pageCount: Readable<number>; hasPreviousPage: Readable<boolean>; hasNextPage: Readable<boolean>; } export declare const createPageStore: ({ items, initialPageSize, initialPageIndex, serverSide, serverItemCount }: PageStoreConfig) => { pageSize: { subscribe: (this: void, run: import("svelte/store").Subscriber<number>, invalidate?: () => void) => import("svelte/store").Unsubscriber; update: (fn: Updater<number>) => void; set: (newPageSize: number) => void; }; pageIndex: Writable<number>; pageCount: Readable<number>; serverItemCount: Readable<number> | undefined; hasPreviousPage: Readable<boolean>; hasNextPage: Readable<boolean>; }; export interface PageStoreConfig { items: Readable<unknown[]>; initialPageSize?: number; initialPageIndex?: number; serverSide?: boolean; serverItemCount?: Readable<number>; } export declare const addPagination: <Item>({ initialPageIndex, initialPageSize, serverSide, serverItemCount }?: PaginationConfig) => TablePlugin<Item, PaginationState, Record<string, never>, NewTablePropSet<never>>;