import { Checkbox, FoundationElement } from '@ni/fast-foundation'; import type { TableOptionsResolved as TanStackTableOptionsResolved } from '@tanstack/table-core'; import { TableColumn } from '../table-column/base'; import { TableRowSelectionMode, TableRowSelectionState } from './types'; import type { TableNode, TableActionMenuToggleEventDetail, TableRecord, TableRowSelectionToggleEventDetail, TableRowState, TableValidity, TableSetRecordHierarchyOptions, RowSlotRequestEventDetail } from './types'; import { Virtualizer } from './models/virtualizer'; import { TableLayoutManager } from './models/table-layout-manager'; import type { TableRow } from './components/row'; import type { TableGroupRow } from './components/group-row'; import { KeyboardNavigationManager } from './models/keyboard-navigation-manager'; declare global { interface HTMLElementTagNameMap { 'nimble-table': Table; } } /** * A nimble-styled table. */ export declare class Table extends FoundationElement { idFieldName?: string; parentIdFieldName?: string; selectionMode: TableRowSelectionMode; actionMenusPreserveSelection: boolean; /** * @internal */ tableData: TableRowState[]; /** * @internal */ columns: TableColumn[]; /** * @internal */ readonly childItems: Element[]; /** * @internal */ readonly rowElements: (TableRow | TableGroupRow)[]; /** * @internal */ openActionMenuRecordId?: string; /** * @internal */ canRenderRows: boolean; /** * @internal */ scrollX: number; /** * @internal */ rowGridColumns?: string; /** * @internal */ selectionState: TableRowSelectionState; get validity(): TableValidity; /** * @internal */ get showRowOperationColumn(): boolean; /** * @internal */ readonly viewport: HTMLElement; /** * @internal */ readonly selectionCheckbox?: Checkbox; /** * @internal */ readonly collapseAllButton?: HTMLElement; /** * @internal */ showCollapseAll: boolean; /** * @internal */ canHaveCollapsibleRows: boolean; /** * @internal */ get collapseButtonVisibility(): string; /** * @internal */ readonly headerRowActionContainer: HTMLElement; /** * @internal */ readonly rowContainer: HTMLElement; /** * @internal */ readonly columnHeadersContainer: Element; /** * @internal */ readonly virtualizer: Virtualizer; /** * @internal */ readonly layoutManager: TableLayoutManager; /** * @internal */ readonly keyboardNavigationManager: KeyboardNavigationManager; /** * @internal */ firstSortedColumn?: TableColumn; /** * @internal */ visibleColumns: TableColumn[]; /** * @internal * This value determines the size of the viewport area when a user has created horizontal scrollable * space through a column resize operation. */ tableScrollableMinWidth: number; windowShiftKeyDown: boolean; /** * @internal */ get rowHeight(): number; private readonly table; private options; private readonly tableValidator; private readonly tableUpdateTracker; private readonly selectionManager; private dataHierarchyManager?; private readonly expansionManager; private columnNotifiers; private readonly layoutManagerNotifier; private _rowHeight; private isInitialized; private ignoreSelectionChangeEvents; private readonly requestedSlots; private readonly borderWidthSubscriber; private readonly controlHeightSubscriber; private actionMenuSlots; constructor(); setData(newData: readonly TData[]): Promise; getSelectedRecordIds(): Promise; setSelectedRecordIds(recordIds: readonly string[]): Promise; setRecordHierarchyOptions(hierarchyOptions: TableSetRecordHierarchyOptions[]): Promise; connectedCallback(): void; disconnectedCallback(): void; checkValidity(): boolean; /** * @internal * * The event handler that is called when a notifier detects a change. Notifiers are added * to each column, so `source` is expected to be an instance of `TableColumn`, and `args` * is the string name of the property that changed on that column. */ handleChange(source: unknown, args: unknown): void; /** @internal */ onRowSelectionToggle(rowIndex: number, event: CustomEvent): void; /** @internal */ onRowClick(rowIndex: number, event: MouseEvent): boolean; /** @internal */ onRowFocusIn(event: FocusEvent): void; /** @internal */ onRowBlur(event: FocusEvent): void; /** @internal */ onAllRowsSelectionChange(event: CustomEvent): void; /** @internal */ onRowActionMenuBeforeToggle(rowIndex: number, event: CustomEvent): void; /** @internal */ onRowActionMenuToggle(event: CustomEvent): void; /** @internal */ onRowSlotsRequest(event: CustomEvent): void; /** @internal */ handleCollapseAllRows(): void; /** @internal */ onRightDividerPointerDown(event: PointerEvent, columnIndex: number): void; /** @internal */ onLeftDividerPointerDown(event: PointerEvent, columnIndex: number): void; /** @internal */ getLeftDividerIndex(columnIndex: number): number; /** @internal */ getRightDividerIndex(columnIndex: number): number; /** @internal */ handleGroupRowExpanded(rowIndex: number, event: Event): void; /** @internal */ handleRowExpanded(rowIndex: number): void; /** * @internal */ toggleColumnSort(column: TableColumn, allowMultiSort: boolean): void; /** * @internal */ onHeaderKeyDown(column: TableColumn, event: KeyboardEvent): boolean; /** * @internal */ update(): void; get ariaMultiSelectable(): 'true' | 'false' | null; /** * @internal */ getHeaderContainerElements(): NodeListOf; /** * @internal */ calculateTanStackData(data: readonly TData[]): Partial>>; protected selectionModeChanged(_prev: string | undefined, _next: string | undefined): void; protected actionMenusPreserveSelectionChanged(_prev: boolean, _next: boolean): void; protected idFieldNameChanged(_prev: string | undefined, _next: string | undefined): void; protected parentIdFieldNameChanged(_prev: string | undefined, _next: string | undefined): void; protected columnsChanged(_prev: TableColumn[] | undefined, _next: TableColumn[]): void; private updateRequestedSlotsForOpeningActionMenu; private handleActionMenuBeforeToggleEvent; private handleRowActionMenuToggleEvent; private getActionMenuToggleEventDetail; private readonly onViewPortScroll; private readonly onKeyDown; private readonly onKeyUp; private readonly onBlur; private removeColumnObservers; private initialize; private processPendingUpdates; private observeColumns; private getColumnsParticipatingInSorting; private getColumnsParticipatingInGrouping; private childItemsChanged; private updateColumnsFromChildItems; private updateTanStack; private updateActionMenuSlots; private validate; private validateWithData; private emitColumnConfigurationChangeEvent; private emitSelectionChangeEvent; private selectionStateChanged; private selectionCheckboxChanged; private setSelectionCheckboxState; private isHierarchyEnabled; private refreshRows; private getRequestedSlotsByRecordId; private getTableSelectionState; private getRowSelectionState; private getGroupedRowSelectionState; private getGroupRowColumn; private updateTableOptions; private readonly getRowCanExpand; private readonly getIsRowExpanded; private readonly handleRowSelectionChange; private readonly handleExpandedChange; private toggleRowExpanded; private calculateTanStackSortState; private calculateTanStackGroupingState; private calculateTanStackRowIdFunction; private calculateTanStackColumns; private calculateTanStackSelectionState; private updateRowHeight; } export declare const tableTag = "nimble-table";