import { DataViewOptions, DataViewState, SortOrder } from './data-view.types'; /** * Headless data view: a sort / search / paginate state machine ported from the * maildrill `useDataView` hook. Wires search input, sortable headers and * pagination controls, emits `dataview:change` with the full state, and — when * `[data-c42-dataview-row]` elements are present — also filters, reorders and * paginates them directly in the DOM. Server-driven consumers omit the rows and * react to the change event instead. * * Markup: * ```html *
* * *
*
*
* * / * * *
* ``` */ export declare class DataView { private readonly root; private readonly searchInput; private readonly rowsContainer; private readonly prevBtn; private readonly nextBtn; private readonly pageEl; private readonly pagesEl; private readonly infoEl; private readonly sortButtons; private readonly allRows; private readonly manualTotal; private pageSize; private query; private sortField; private sortOrder; private page; private total; private loading; private visibleColumns; private cleanups; constructor(root: HTMLElement, options?: DataViewOptions); private init; private matchesQuery; private fieldValue; /** Recompute the visible set, optionally emitting a change event. */ private render; private renderRows; private renderControls; private emitChange; setQuery(query: string): void; setSort(field: string | null, order?: SortOrder): void; /** Toggle sort on a field: asc → desc → same field stays, first click asc. */ toggleSort(field: string): void; setPage(page: number): void; setPageSize(size: number): void; /** Set loading state. When set to false, re-scans rows from the DOM. */ setLoading(loading: boolean): void; /** Re-scan rows from the DOM and re-render (call after async data insert). */ rescanRows(): void; /** Show a column by key. */ showColumn(column: string): void; /** Hide a column by key. */ hideColumn(column: string): void; /** Set which columns are visible. */ setColumns(columns: string[]): void; private applyColumnVisibility; private onRowAction; get totalPages(): number; getState(): DataViewState; on(event: string, handler: (event: E) => void): () => void; destroy(): void; }