import { LitElement } from 'lit'; import type { LitFilterBuilderData } from './lit-filter-builder.js'; import { SortingState, VisibilityState } from '@tanstack/lit-table'; import { FromSchema } from 'json-schema-to-ts'; import '../shared/filter-inputs.js'; import '../shared/lit-icon.js'; import '../shared/lit-icon-button.js'; import '../shared/lit-button.js'; import '../shared/lit-responsive-button.js'; import '../shared/lit-data-grid-export-popover.js'; import '../shared/lit-data-grid-action-buttons-popover.js'; import '../assets/illustration/not-found.js'; import '../shared/lit-data-grid-density-popover.js'; import '../shared/lit-loading-bar.js'; import '../shared/lit-data-grid-row-actions.js'; import '../shared/simple-tooltip.js'; import '../shared/lit-checkbox.js'; import '../shared/lit-document-thumbnail.js'; import './components-settings/data-grid-settings.js'; import { litDataGridTanstackColumnSchema, litDataGridTanstackColumnCustomFilterSchema, litDataGridTanstackSchema } from '../schemas/index.js'; import type { DataGridSettingsValue } from './components-settings/data-grid-settings.js'; declare global { interface Window { XLSX: any; } } export type ColumnFiltersStateServer = ColumnFilterServer[]; export interface ColumnFilterServer { id: string; value: { operator: string; value: string | number | boolean | Date | null; }; } export type ColumnCustomFilter = FromSchema; export type TColumnVisibility = Record; export type ColumnType = 'string' | 'number' | 'date' | 'range' | 'select' | 'multiselect' | 'includeExclude' | 'dateTime' | 'actions' | 'dateTimeRange' | 'dateRange' | 'numberRange' | 'currency' | 'thumbnail'; export type Density = 'compact' | 'standard' | 'comfort'; export type DateFormats = null | 'dd.MM.yyyy' | 'd.M.yyyy' | 'dd/MM/yyyy' | 'MM/dd/yyyy' | 'yyyy-MM-dd'; export interface ColumnCustomExtension { accessorFn?: (originalRow: any) => any; cell?: (cell: any, html: any, unsafeHTML: any) => any; getActions?: (row: any) => any[]; aggregatedCell?: (cell: any, html: any, unsafeHTML: any) => any; } export type Column = FromSchema & ColumnCustomExtension; export type DataGridTanstackProps = FromSchema & { enableSettingsAlwaysFilter?: boolean; enableSettings?: boolean; allColumns?: Column[]; variables?: { value: string; label: string; }[]; allowedLang?: string[]; }; export declare class LitDataGridTanstack extends LitElement { row?: any[]; columns: Column[]; allColumns: Column[]; columnDefaultSize?: number; columnDefaultMinSize?: number; columnDefaultMaxSize?: number; columnGroupedColor?: string; rowAggregationColor?: string; enableRowVirtualization?: boolean; enableColumnVirtualization?: boolean; enableColumnPinning?: boolean; enableColumnOrdering?: boolean; enableGrouping?: boolean; enablePinning?: boolean; exportData?: boolean; actionButtonsInMenu?: boolean; id: string; initialGroups?: string[]; initialSorting?: SortingState; initialColumnVisibility?: Record; initialRowExpanded: Record | true; columnSizing: {}; leftPinnedColumns?: string[]; rightPinnedColumns?: string[]; enableFiltering?: boolean; enableSorting?: boolean; userLang?: string; allowedLang: string[] | null; dateFormat?: DateFormats; isLoading: boolean; enableRowSelection?: boolean; initialFiltering?: any; server?: boolean; scrollEndThreshold?: number; rowDensity?: 'compact' | 'standard' | 'comfort'; enableMultiRowSelection?: boolean; totalNumberRows?: number; minFilterCharacters: number; rowsSelected: Record; enableSettings?: boolean; enableSettingsAlwaysFilter?: boolean; alwaysFilterActive?: boolean; onSettingsChanged: (value?: DataGridSettingsValue) => void; onRowClick?: (event: MouseEvent, table: any, row: any) => void; onRowsScrollEnd?: () => void; onWindowResize?: () => void; onRowDoubleClick?: (table: any, row: any) => void; rowDensityChange?: (table: any, density: Density) => void; exportExcelFn?: Function; exportCsvFn?: Function; getTotalNumberFn?: Function; onCellKeyDown?: Function; getRowId?: (row: any, index: number) => string; onColumnResize?: (table: any, columnSizing: { [key: string]: number; }) => void; onColumnFiltersChanged?: Function; onColumnSortChanged?: Function; onRowSelectionChanged?: Function; onColumnOrderChanged?: Function; hideFooter?: boolean; columnVisibility?: VisibilityState; onColumnVisibilityChanged?: Function; onMouseDown?: Function; onRowFocusChanged?: Function; focusedRowIndex?: number | null; autoFocus?: boolean; onColumnPinningChanged?: Function; onGroupingChanged?: Function; onRowExpanded?: Function; alwaysFilter?: LitFilterBuilderData; variables: { value: string; label: string; }[]; emptyText?: Record; private _prevRowsCount; private isScrollable; private disableScrollLeft; private disableScrollRight; private columnOrder; table: any; private isOpen; private filterText; private isOpenModal; private scrollToEnd; private resizeTimeout; private tableController; private tableContainerRef; private rowVirtualizerController; private columnVirtualizerController; private scrollInterval; private currentScrollTop; private boundHandleScroll; private lastSelectedIndex; tableBody: HTMLDivElement; _container: HTMLElement; private settingsReference?; private getLocaleLang; get rows(): any[]; get getColumns(): Column[]; connectedCallback(): void; disconnectedCallback(): void; updated(changedProperties: any): void; firstUpdated(): void; private toggleModal; private initSortable; loadXLSX(): Promise; getRowHeight(): 50 | 31 | 38; getButtonSize(): "small" | "medium" | "large"; handleSetDensity(density: Density): void; private handleMouseDown; private handleFilterTabNavigation; private initRowVirtualizer; private initTable; private initColumnVirtualizer; private handleRowClick; private handleRowDoubleClick; private handleKeyDown; focusRow(index?: number): void; private getTanstackColumns; getCellBackgroundColor: (cell: any) => string; private getCommonPinningStyles; private togglePin; private exportDataToCsv; exportDataToExcel(): Promise; private getAllRowsIncludingGrouped; private handleWindowResize; private updateScrollState; private startScroll; private stopScroll; private _atScrollEnd; private _maybeTriggerScrollEnd; handleScroll(_event: Event): void; handleGetTotalNumber(): void; private toggleCustomPopover; private closePopover; private renderColumnSettingsContent; private toggleColumn; private onSettingsChangedCallback; static styles: import("lit").CSSResult[]; _onRowMouseDown(event: MouseEvent, row: any): void; _onRowMouseUp(event: any): void; _rowUnselectAll(table: any): void; render(): import("lit-html").TemplateResult<1>; } declare global { interface HTMLElementTagNameMap { 'lit-data-grid-tanstack': LitDataGridTanstack; } }