import { AfterContentInit, AfterViewChecked, AfterViewInit, ChangeDetectorRef, EventEmitter, Injector, OnDestroy, QueryList, Signal, TemplateRef, ElementRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { Observable } from 'rxjs'; import { GridCellChange, GridBeforeCommitEvent, GridBeforeEditEvent, GridColumn, GridContextMenuItem, GridController, GridDataSource, GridDisplayRow, GridRemoteState, GridRealtimeSource, GridRetryOptions, GridResult, GridFilter, GridGroupDisplayRow, GridGroup, GridKey, GridOperator, GridSelectionMode, GridSelectionSnapshot, GridRowChange, GridRowEvent, GridStateStorage, GridValidationResult, GridPasteChange, GridPasteResult } from '@brios-sorzu/core'; import { ExportProgress } from '@brios-sorzu/export'; import { BriosGridCellTemplateContext, BriosGridCellTemplateDirective } from './brios-grid-cell-template.directive'; import { BriosGridDetailLoader, BriosGridDetailTemplateContext, BriosGridDetailTemplateDirective } from './brios-grid-detail-template.directive'; import { BriosGridHeaderTemplateContext, BriosGridHeaderTemplateDirective } from './brios-grid-header-template.directive'; import { BriosGridFooterTemplateContext, BriosGridFooterTemplateDirective } from './brios-grid-footer-template.directive'; import { BriosGridState, BriosGridStateTemplateContext, BriosGridStateTemplateDirective } from './brios-grid-state-template.directive'; import { BriosGridEditorTemplateContext, BriosGridEditorTemplateDirective } from './brios-grid-editor-template.directive'; import { BriosGridGroupTemplateContext, BriosGridGroupTemplateDirective } from './brios-grid-group-template.directive'; import { BriosGridValidationTemplateContext, BriosGridValidationTemplateDirective } from './brios-grid-validation-template.directive'; import { BriosLocaleService } from './locale'; import * as i0 from "@angular/core"; export interface BriosGridLabels { search: string; searchAria: string; group: string; noGroup: string; columns: string; columnChooser?: string; newRow: string; clearFilters: string; copy: string; excel: string; print: string; autoSize: string; autoSizeTooltip?: string; selectAll: string; actions: string; loading: string; validating: string; empty: string; invalid?: string; previous: string; next: string; row?: string; rows: string; page: string; error: string; retry: string; filterValues: string; filterValuesSearch?: string; selectFilterValues?: string; clearFilterValues?: string; exporting?: string; cancelExport?: string; exportError?: string; operatorLabels?: Partial>; filter?: string; filterMenu?: string; openFilter?: string; operator?: string; filterFrom?: string; filterTo?: string; apply?: string; rowsPerPage?: string; groupBy?: string; subtotal?: string; summary?: string; contextMenu?: string; treeTotal?: string; addGroup?: string; removeGroup?: string; dropToGroup?: string; expand?: string; collapse?: string; detail?: string; detailRow?: string; selectRow?: string; selected?: string; selectedMany?: string; editRow?: string; removeRow?: string; saveRow?: string; cancelRow?: string; conflict?: string; conflictBulk?: string; retryConflict?: string; dismissConflict?: string; previousMatch?: string; nextMatch?: string; searchResult?: string; pending?: string; serverError?: string; } export interface BriosGridColumnResizeEvent> { column: GridColumn; previousWidth: number; width: number; } export interface BriosGridExportState { status: 'idle' | 'running' | 'completed' | 'cancelled' | 'error'; progress: ExportProgress; error: unknown | null; } export interface BriosGridRemoteConflict> { key: GridKey; row: T; rowIndex: number; changes: Readonly>; error: unknown; } export interface BriosGridBulkRemoteConflict> { conflicts: readonly BriosGridRemoteConflict[]; changes: Readonly>; error: unknown; } export type BriosGridCopyMode = 'activeCell' | 'row' | 'column' | 'range' | 'selection'; export type BriosGridKeyboardCommand = 'cancelEdit' | 'undo' | 'redo' | 'copy' | 'selectAll' | 'beginEdit'; /** * Keyboard shortcuts use `mod` for Ctrl on Windows/Linux and Cmd on macOS. * Set a command to `false` to disable it, or provide a value such as `mod+shift+z`. */ export type BriosGridKeyboardShortcuts = Partial>; export type BriosGridStateMigration> = (state: ReturnType['snapshot']>, fromVersion: number) => ReturnType['snapshot']> | null; export type BriosItemsSource = Observable | Signal | AsyncIterable; export declare class BriosGridComponent, D = unknown> implements AfterContentInit, AfterViewChecked, AfterViewInit, OnDestroy, ControlValueAccessor { private readonly changeDetector; private readonly injector; readonly localeService: BriosLocaleService; readonly slidersHorizontalIconNodes: Array<[string, Record]>; readonly funnelPlusIconNodes: Array<[string, Record]>; readonly proportionsIconNodes: Array<[string, Record]>; private readonly controller; private readonly layout; private _items; private _columns; protected columnChooserOpen: boolean; private _dataSource?; private activeEdit; private requestId; private renderedStart; private renderedDisplayIndices; private frozenRenderedCount; private renderedColumnStart; private verticalScrollTop; private horizontalScrollLeft; private scrollViewportWidth; private scrollFrame; private scrollFrameUsesTimeout; private pointerFocusTimer?; private _pageSize; private templateMap; private editorTemplateMap; private headerTemplateMap; private footerTemplateMap; private stateTemplateMap; groupTemplate: TemplateRef> | null; validationTemplate: TemplateRef> | null; private expandedDetailKeys; private detailLoadControllers; private detailExportPromises; private readonly detailCache; private measuredDetailHeights; private detailErrors; private detailLoadingKeys; private remoteReloadTimer?; private activeRowEdit; private rowEditValues; private _itemsSource?; private _realtimeSource?; private itemsSourceSubscription?; private itemsSourceEffect?; private itemsSourceAbort?; private childLoadControllers; private childLoadingKeys; private exportAbort?; contextMenuState: { event: MouseEvent; row: T; rowIndex: number; } | null; private contextMenuFocusOrigin; detailTemplate: TemplateRef> | null; viewport?: ElementRef; footerViewport?: ElementRef; columnChooser?: ElementRef; detailRowViews: QueryList>; visibleItems: readonly T[]; displayItems: readonly GridDisplayRow[]; renderedItems: readonly GridDisplayRow[]; searchText: string; private searchMatchCursor; private columnFilterValues; private columnFilterOperators; private uniqueFilterValues; private filterValueOptionsCache; private filterValueBuilds; private filterValueLoadingKeys; private filteredFilterValueOptionsCache; private numberFormatterCache; private dateFormatterCache; private filterValueSearches; private openFilterValueKey; private openFilterMenuKey; private filterMenuFocusOrigin; private filterValuesFocusOrigin; private filterMenuFocusKey; private filterValuesFocusKey; private readonly defaultFilterOperatorOptions; get filterOperatorOptions(): readonly { value: GridOperator; label: string; }[]; editValue: unknown; validationError: string; validationPending: boolean; private readonly validationMessages; topOffset: number; bottomOffset: number; loading: boolean; exporting: boolean; exportProgress: ExportProgress; exportError: unknown | null; itemsSourceError: unknown | null; remoteConflictState: BriosGridRemoteConflict | null; remoteConflictBulkState: BriosGridBulkRemoteConflict | null; private readonly remoteEditPendingKeys; private readonly remoteEditErrors; totalItems: number; disabled: boolean; private valueChange; private touched; /** Optional override for the localized empty-state message. */ emptyText: string; ariaLabel: string; private _locale; private _labels; private labelOverrides; set locale(value: string); get locale(): string; set labels(value: Partial | undefined); get labels(): BriosGridLabels; private localizedLabels; private composeLabels; height: number; maxFilterValues: number; showFilterMenu: boolean; rowHeight: number; rowHeightFor?: (item: GridDisplayRow, index: number) => number; showTruncatedCellTooltip: boolean; truncatedTooltipMinLength: number; frozenRows: number; overscan: number; horizontalOverscan: number; horizontalWindowSize: number; virtualization: boolean | 'auto'; horizontalVirtualization: boolean | 'auto'; showToolbar: boolean; searchable: boolean; searchCaseSensitive: boolean; normalizeSearchAccents: boolean; filterable: boolean; groupable: boolean; showGroupDropZone: boolean; set showGroupSummaries(value: boolean); get showGroupSummaries(): boolean; showFooter: boolean; showColumnChooser: boolean; allowRowEditing: boolean; allowRowAdding: boolean; allowRowRemoving: boolean; editCommitMode: 'auto' | 'explicit'; confirmRemove?: (row: T) => boolean | Promise; loadChildren?: (row: T, signal: AbortSignal) => Promise; loadDetail?: BriosGridDetailLoader; detailCacheSize: number; /** Persists cached detail rows together with expanded keys when stateStorage is configured. */ persistDetailCache: boolean; copyHeaders: boolean; keyboardShortcuts: BriosGridKeyboardShortcuts; pasteAtomic: boolean; /** Maps pasted cells to visible columns by default; use `all` to include hidden columns. */ pasteColumnScope: 'visible' | 'all'; confirmPaste?: (changes: readonly GridPasteChange[]) => boolean | Promise; exportSelectionOnly: boolean; exportGroups: boolean; exportGroupSummaries: boolean; /** Includes one total row for all loaded TreeGrid nodes in structured exports. */ exportTreeSummary: boolean; exportDetails: boolean; exportChunkSize: number; optimisticMutations: boolean; contextMenuItems: readonly GridContextMenuItem[]; allowResizing: boolean; allowDragging: boolean; persistKey: string; persistVersion: number; persistMigrate?: BriosGridStateMigration; stateStorage?: GridStateStorage; showPagination: boolean; remoteDebounceMs: number; remoteRetries: number; remoteRetryDelayMs: number; remoteRetryBackoff: number; remoteShouldRetry?: GridRetryOptions['shouldRetry']; set realtimeSource(value: GridRealtimeSource | undefined); get realtimeSource(): GridRealtimeSource | undefined; selectable: GridSelectionMode; selectionMode?: GridSelectionMode; private _groupBy?; groupDropSelection: string; private _showGroupSummaries; private _childrenField?; set groupBy(value: Extract | undefined); get groupBy(): Extract | undefined; set groups(value: readonly GridGroup[]); get groups(): readonly GridGroup[]; groupColumnHeader(key: Extract): string; isGrouped(key: Extract): boolean; addGroupFromSelector(key: string): void; dropColumnToGroup(event: DragEvent): void; addGroupKey(key: Extract): void; removeGroup(key: Extract): void; set childrenField(value: Extract | undefined); get childrenField(): Extract | undefined; treeSelectionPropagation: 'none' | 'descendants' | 'ancestors' | 'both'; set items(value: readonly T[]); get items(): readonly T[]; set itemsSource(value: BriosItemsSource | undefined); get itemsSource(): BriosItemsSource | undefined; set columns(value: readonly GridColumn[]); get columns(): readonly GridColumn[]; set dataSource(value: GridDataSource | undefined); get dataSource(): GridDataSource | undefined; set pageSize(value: number); get pageSize(): number; set trackBy(value: ((row: T, index: number) => GridKey) | undefined); readonly rowClick: EventEmitter<{ row: T; rowIndex: number; }>; readonly selectionChange: EventEmitter>; readonly cellEditCommit: EventEmitter>; readonly validation: EventEmitter; readonly error: EventEmitter; readonly remoteConflict: EventEmitter>; readonly remoteConflictBulk: EventEmitter>; readonly columnLayoutChange: EventEmitter[]>; readonly columnResize: EventEmitter>; readonly contextMenu: EventEmitter<{ event: MouseEvent; row: T; rowIndex: number; }>; readonly beforeEdit: EventEmitter>; readonly beforeCommit: EventEmitter>; readonly commit: EventEmitter>; readonly cancel: EventEmitter>; readonly rowAdd: EventEmitter>; readonly rowRemove: EventEmitter>; readonly bulkCommit: EventEmitter[]>; readonly pasteComplete: EventEmitter>; readonly exportStateChange: EventEmitter; private columnWidths; private draggedColumnKey; private resizing; cellTemplates: QueryList>; editorTemplates: QueryList>; detailTemplates: QueryList>; headerTemplates: QueryList>; footerTemplates: QueryList>; stateTemplates: QueryList; groupTemplateDirective?: BriosGridGroupTemplateDirective; validationTemplateDirective?: BriosGridValidationTemplateDirective; constructor(changeDetector: ChangeDetectorRef, injector: Injector, localeService?: BriosLocaleService); ngOnDestroy(): void; ngAfterContentInit(): void; ngAfterViewInit(): void; ngAfterViewChecked(): void; get visibleColumns(): readonly GridColumn[]; get columnGroupHeaders(): readonly { header: string; span: number; }[]; get hasColumnGroups(): boolean; get activeFilters(): readonly GridFilter[]; get selectedCount(): number; bulkConflictMessage(count: number): string; get headerRowCount(): number; get totalAriaRowCount(): number; get rowActionColumnCount(): number; get selectionColumnCount(): number; get page(): number; get pageCount(): number; get allVisibleSelected(): boolean; detailAriaRowIndex(item: GridDisplayRow): number; get virtualizationEnabled(): boolean; get horizontalVirtualizationEnabled(): boolean; get renderedColumns(): readonly GridColumn[]; get horizontalLeftOffset(): number; get horizontalRightOffset(): number; get horizontalSpacerColumnCount(): number; get currentSelectionMode(): GridSelectionMode; get searchMatchCount(): number; get searchMatchPosition(): number; get api(): GridController; get remoteError(): unknown; get nextCursor(): string | null; get dataSourceState(): GridRemoteState; /** Warms a remote query without replacing the rows currently visible. */ prefetch(queryOverrides?: Partial['query']>>, signal?: AbortSignal): Promise | null>; /** Returns URL-safe search, filter, group, sort and pagination state. */ serializeQueryState(): string; /** Restores query state produced by serializeQueryState and refreshes the grid. */ restoreQueryState(value: string): boolean; measureRow(index: number, height: number): void; footerValue(column: GridColumn): string; cellClass(row: T, column: GridColumn): string | undefined; toggleColumn(column: GridColumn): void; toggleColumnChooser(): void; setGroupByFromToolbar(value: Extract | ''): void; rowTrackBy: (_index: number, item: GridDisplayRow) => GridKey; columnTrackBy: (_index: number, column: GridColumn) => string; columnGroupTrackBy: (_index: number, group: { header: string; }) => string; filterOperatorTrackBy: (_index: number, option: { value: GridOperator; }) => GridOperator; editorOptionTrackBy: (_index: number, option: { value: unknown; }) => unknown; absoluteIndex(renderedIndex: number): number; isVirtualSpacerBefore(renderedIndex: number): boolean; ariaRowIndex(displayIndex: number): number; globalColumnIndex(column: GridColumn): number; isFrozenRow(displayIndex: number): boolean; frozenRowTop(displayIndex: number): number; isGroupRow(item: GridDisplayRow): item is GridGroupDisplayRow; rowOf(item: GridDisplayRow): T; dataIndexOf(item: GridDisplayRow): number; levelOf(item: GridDisplayRow): number; hasChildren(row: T): boolean; isNodeLoading(item: GridDisplayRow): boolean; isNodeCollapsed(item: GridDisplayRow): boolean; toggleNode(item: GridDisplayRow): Promise; isDetailExpanded(item: GridDisplayRow): boolean; isDetailLoading(item: GridDisplayRow): boolean; toggleDetail(item: GridDisplayRow): Promise; detailContext(item: GridDisplayRow): BriosGridDetailTemplateContext; toggleGroup(item: GridGroupDisplayRow): void; expandAll(): void; collapseAll(): void; groupAggregateLabel(item: GridGroupDisplayRow): string; groupContext(item: GridGroupDisplayRow): BriosGridGroupTemplateContext; columnWidth(column: GridColumn): string | null; private columnSize; private clampColumnWidth; isFrozenStart(column: GridColumn): boolean; isFrozenEnd(column: GridColumn): boolean; frozenStartOffset(column: GridColumn): number; frozenEndOffset(column: GridColumn): number; startResize(event: MouseEvent, column: GridColumn): void; onHeaderMouseDown(event: MouseEvent, column: GridColumn): void; onDocumentClick(event: MouseEvent): void; onDocumentFocusIn(event: FocusEvent): void; onWindowScroll(): void; onEscape(): void; private closeColumnChooser; onDocumentMouseMove(event: MouseEvent): void; onDocumentMouseUp(): void; startColumnDrag(column: GridColumn): void; dropColumn(target: GridColumn): void; onHeaderKeydown(event: KeyboardEvent, column: GridColumn): void; autoSizeColumns(): void; sort(column: GridColumn, event?: MouseEvent): void; sortIndicator(column: GridColumn): string; sortAriaValue(column: GridColumn): 'ascending' | 'descending' | 'none'; onSearch(value: string): void; filterValue(column: GridColumn): string; filterInputType(column: GridColumn): 'search' | 'number' | 'date'; filterBetweenPart(column: GridColumn, index: 0 | 1): string; onColumnFilterRange(column: GridColumn, index: 0 | 1, value: string): void; isColumnFiltered(column: GridColumn): boolean; isColumnSorted(column: GridColumn): boolean; get hasFilterValues(): boolean; filterValues(column: GridColumn): readonly { value: string; label: string; }[]; filterValuesLoading(column: GridColumn): boolean; private prepareFilterValues; filterValueSearch(column: GridColumn): string; filteredFilterValues(column: GridColumn): readonly { value: string; label: string; }[]; filterValueTrackBy(_index: number, option: { value: string; }): string; onFilterValueSearch(column: GridColumn, value: string): void; selectAllFilterValues(column: GridColumn): void; clearFilterValues(column: GridColumn): void; isFilterMenuOpen(column: GridColumn): boolean; showFilterMenuFor(column: GridColumn): boolean; filterMenuMaxHeight(): number; toggleFilterMenu(column: GridColumn, event: MouseEvent): void; closeFilterMenu(restoreFocus?: boolean): void; isFilterValuesOpen(column: GridColumn): boolean; get filterValuesOverlayOpen(): boolean; toggleFilterValues(column: GridColumn, event: MouseEvent): void; private closeFilterValues; private focusOrigin; private restoreFilterFocus; private hostElement; isFilterValueSelected(column: GridColumn, value: string): boolean; toggleFilterValue(column: GridColumn, value: string, checked: boolean): void; private setFilterValueSelection; filterOperator(column: GridColumn): GridOperator; onColumnFilter(column: GridColumn, value: string): void; onColumnFilterOperator(column: GridColumn, operator: GridOperator): void; clearFilters(): void; navigateSearchMatch(direction: -1 | 1): Promise; setFilter(filter: GridFilter): void; goToPage(page: number): void; setPageSize(value: number): void; onScroll(scrollTop: number, scrollLeft?: number, viewportWidth?: number): void; private closeFilterOverlaysOnScroll; onFooterScroll(scrollLeft: number): void; summaryFooterColumns(): string; summaryFooterWidth(): number; selectRow(row: T, rowIndex: number, event?: MouseEvent): void; private applyTreeSelection; private treeDescendants; private treeAncestors; selectColumn(column: GridColumn, event?: MouseEvent): void; isColumnSelected(column: GridColumn): boolean; toggleAll(): void; isSelected(row: T, rowIndex: number): boolean; treeSelectionState(row: T, rowIndex: number): boolean | 'mixed'; activateCell(rowIndex: number, columnIndex: number, event: MouseEvent): void; isActiveCell(rowIndex: number, columnIndex: number): boolean; cellId(rowIndex: number, columnIndex: number): string; activeDescendantId(): string | null; private rowKey; /** Gives keyboard users a deterministic starting cell when the grid receives focus. */ ensureActiveCell(event?: FocusEvent): void; suppressFocusActivation(): void; handleKeydown(event: KeyboardEvent): void; displayValue(row: T, column: GridColumn): string; highlightedValue(row: T, column: GridColumn): string; private matchesShortcut; private matchesShortcutValue; cellTooltip(row: T, column: GridColumn): string | null; cellAriaLabel(row: T, column: GridColumn): string | null; cellTemplate(column: GridColumn): TemplateRef> | null; editorTemplate(column: GridColumn): TemplateRef> | null; editorContext(row: T, rowIndex: number, column: GridColumn): BriosGridEditorTemplateContext; headerTemplate(column: GridColumn): TemplateRef> | null; headerContext(column: GridColumn): BriosGridHeaderTemplateContext; footerTemplate(column: GridColumn): TemplateRef> | null; footerContext(column: GridColumn): BriosGridFooterTemplateContext; stateTemplate(state: BriosGridState): TemplateRef | null; stateTemplateContext(state: BriosGridState): BriosGridStateTemplateContext; cellContext(row: T, rowIndex: number, column: GridColumn): BriosGridCellTemplateContext; cellValidationError(row: T, rowIndex: number, column: GridColumn): string; validationContext(row: T, rowIndex: number, column: GridColumn, message: string, pending?: boolean): BriosGridValidationTemplateContext; rowValidationError(row: T, rowIndex: number): string; private validationKey; private setCellValidationError; private clearRowValidationErrors; editorAriaLabel(column: GridColumn): string; editorType(column: GridColumn): string; editorInputType(column: GridColumn): 'number' | 'date' | 'text'; currencyPlaceholder(column: GridColumn): string; editorInputValue(value: unknown, column: GridColumn): unknown; coerceEditorValue(column: GridColumn, value: unknown): unknown; private parseLocalizedNumber; editorOptions(column: GridColumn): readonly { value: unknown; label: string; }[]; private dataMapItems; beginEdit(row: T, rowIndex: number, column: GridColumn): void; isEditing(row: T, rowIndex: number, column: GridColumn): boolean; private currentRowForCellEdit; commitEdit(): Promise; handleEditBlur(): void; cancelEdit(): void; beginRowEdit(row: T, rowIndex: number, isNew?: boolean): void; isRowEditing(row: T): boolean; rowEditValue(row: T, column: GridColumn): unknown; rowEditState(row: T): 'idle' | 'editing' | 'pending' | 'server-error'; rowServerError(row: T): unknown; setRowEditValue(row: T, column: GridColumn, value: unknown): void; private rowEditDraft; private currentRowForEdit; commitRowEdit(): Promise; /** Applies one validated change set to every selected row and persists it when possible. */ applySelectionChanges(changes: Partial): Promise[]>; cancelRowEdit(): void; retryRemoteConflict(): void; retryRemoteConflictBulk(): void; dismissRemoteConflictBulk(): void; dismissRemoteConflict(): void; private announceRemoteConflict; private announceRemoteConflictBulk; private focusValidationCell; addRow(): void; removeRow(row: T, rowIndex: number): Promise; reload(): Promise; retry(): Promise; loadNextCursor(): Promise; setCursor(cursor: string | null): void; private scheduleRemoteReload; copySelection(mode?: BriosGridCopyMode): string; private formatClipboardBlock; downloadCsv(): void; downloadCsvAsync(): Promise; downloadExcel(): void; cancelExport(): void; downloadPdf(): void; private downloadPdfAsync; printGrid(): void; onContextMenu(event: MouseEvent, row: T, rowIndex: number): void; private captureContextMenuFocus; private closeContextMenu; contextMenuItemId(item: GridContextMenuItem): string; isFirstContextMenuItem(index: number): boolean; onContextMenuKeydown(event: KeyboardEvent, item: GridContextMenuItem): void; isContextMenuItemDisabled(item: GridContextMenuItem): boolean; runContextMenuItem(item: GridContextMenuItem): void; private downloadBlob; private emitExportState; private writeClipboard; private writeClipboardFallback; private rowsForExport; private prepareExportOptions; private ensureExportDetails; private loadDetailForExport; private exportOptions; private exportDisplayRows; private exportColumns; private localizedExportValue; onPaste(event: ClipboardEvent): void; private applyPaste; private persistLayout; private restoreLayout; private getStateStorage; private restoreFilterUiState; private trimDetailCache; private cancelHierarchyLoads; private dataIdentityChanged; private coerceValue; private applyItemsSource; private handleItemsSourceError; private consumeAsyncItems; writeValue(value: readonly T[] | null): void; registerOnChange(fn: (value: readonly T[]) => void): void; registerOnTouched(fn: () => void): void; setDisabledState(isDisabled: boolean): void; private refreshRows; private syncDetailRowHeights; private baseColumnWidth; private refreshWindow; private syncViewportScroll; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "brios-grid", never, { "disabled": { "alias": "disabled"; "required": false; }; "emptyText": { "alias": "emptyText"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "height": { "alias": "height"; "required": false; }; "maxFilterValues": { "alias": "maxFilterValues"; "required": false; }; "showFilterMenu": { "alias": "showFilterMenu"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "rowHeightFor": { "alias": "rowHeightFor"; "required": false; }; "showTruncatedCellTooltip": { "alias": "showTruncatedCellTooltip"; "required": false; }; "truncatedTooltipMinLength": { "alias": "truncatedTooltipMinLength"; "required": false; }; "frozenRows": { "alias": "frozenRows"; "required": false; }; "overscan": { "alias": "overscan"; "required": false; }; "horizontalOverscan": { "alias": "horizontalOverscan"; "required": false; }; "horizontalWindowSize": { "alias": "horizontalWindowSize"; "required": false; }; "virtualization": { "alias": "virtualization"; "required": false; }; "horizontalVirtualization": { "alias": "horizontalVirtualization"; "required": false; }; "showToolbar": { "alias": "showToolbar"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchCaseSensitive": { "alias": "searchCaseSensitive"; "required": false; }; "normalizeSearchAccents": { "alias": "normalizeSearchAccents"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "groupable": { "alias": "groupable"; "required": false; }; "showGroupDropZone": { "alias": "showGroupDropZone"; "required": false; }; "showGroupSummaries": { "alias": "showGroupSummaries"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "showColumnChooser": { "alias": "showColumnChooser"; "required": false; }; "allowRowEditing": { "alias": "allowRowEditing"; "required": false; }; "allowRowAdding": { "alias": "allowRowAdding"; "required": false; }; "allowRowRemoving": { "alias": "allowRowRemoving"; "required": false; }; "editCommitMode": { "alias": "editCommitMode"; "required": false; }; "confirmRemove": { "alias": "confirmRemove"; "required": false; }; "loadChildren": { "alias": "loadChildren"; "required": false; }; "loadDetail": { "alias": "loadDetail"; "required": false; }; "detailCacheSize": { "alias": "detailCacheSize"; "required": false; }; "persistDetailCache": { "alias": "persistDetailCache"; "required": false; }; "copyHeaders": { "alias": "copyHeaders"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "pasteAtomic": { "alias": "pasteAtomic"; "required": false; }; "pasteColumnScope": { "alias": "pasteColumnScope"; "required": false; }; "confirmPaste": { "alias": "confirmPaste"; "required": false; }; "exportSelectionOnly": { "alias": "exportSelectionOnly"; "required": false; }; "exportGroups": { "alias": "exportGroups"; "required": false; }; "exportGroupSummaries": { "alias": "exportGroupSummaries"; "required": false; }; "exportTreeSummary": { "alias": "exportTreeSummary"; "required": false; }; "exportDetails": { "alias": "exportDetails"; "required": false; }; "exportChunkSize": { "alias": "exportChunkSize"; "required": false; }; "optimisticMutations": { "alias": "optimisticMutations"; "required": false; }; "contextMenuItems": { "alias": "contextMenuItems"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "allowDragging": { "alias": "allowDragging"; "required": false; }; "persistKey": { "alias": "persistKey"; "required": false; }; "persistVersion": { "alias": "persistVersion"; "required": false; }; "persistMigrate": { "alias": "persistMigrate"; "required": false; }; "stateStorage": { "alias": "stateStorage"; "required": false; }; "showPagination": { "alias": "showPagination"; "required": false; }; "remoteDebounceMs": { "alias": "remoteDebounceMs"; "required": false; }; "remoteRetries": { "alias": "remoteRetries"; "required": false; }; "remoteRetryDelayMs": { "alias": "remoteRetryDelayMs"; "required": false; }; "remoteRetryBackoff": { "alias": "remoteRetryBackoff"; "required": false; }; "remoteShouldRetry": { "alias": "remoteShouldRetry"; "required": false; }; "realtimeSource": { "alias": "realtimeSource"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "groupBy": { "alias": "groupBy"; "required": false; }; "groups": { "alias": "groups"; "required": false; }; "childrenField": { "alias": "childrenField"; "required": false; }; "treeSelectionPropagation": { "alias": "treeSelectionPropagation"; "required": false; }; "items": { "alias": "items"; "required": false; }; "itemsSource": { "alias": "itemsSource"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; }, { "rowClick": "rowClick"; "selectionChange": "selectionChange"; "cellEditCommit": "cellEditCommit"; "validation": "validation"; "error": "error"; "remoteConflict": "remoteConflict"; "remoteConflictBulk": "remoteConflictBulk"; "columnLayoutChange": "columnLayoutChange"; "columnResize": "columnResize"; "contextMenu": "contextMenu"; "beforeEdit": "beforeEdit"; "beforeCommit": "beforeCommit"; "commit": "commit"; "cancel": "cancel"; "rowAdd": "rowAdd"; "rowRemove": "rowRemove"; "bulkCommit": "bulkCommit"; "pasteComplete": "pasteComplete"; "exportStateChange": "exportStateChange"; }, ["groupTemplateDirective", "validationTemplateDirective", "cellTemplates", "editorTemplates", "detailTemplates", "headerTemplates", "footerTemplates", "stateTemplates"], never, true, never>; }