@ni/nimble-components 29.3.5 → 29.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/all-components-bundle.js +67 -58
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +496 -496
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/table/index.js +2 -2
  6. package/dist/esm/table/index.js.map +1 -1
  7. package/dist/esm/table/models/table-update-tracker.js +1 -2
  8. package/dist/esm/table/models/table-update-tracker.js.map +1 -1
  9. package/dist/esm/table/testing/table.pageobject.js +1 -1
  10. package/dist/esm/table/testing/table.pageobject.js.map +1 -1
  11. package/dist/esm/table-column/anchor/index.d.ts +8 -0
  12. package/dist/esm/table-column/anchor/index.js +2 -1
  13. package/dist/esm/table-column/anchor/index.js.map +1 -1
  14. package/dist/esm/table-column/base/index.d.ts +0 -7
  15. package/dist/esm/table-column/base/index.js +1 -33
  16. package/dist/esm/table-column/base/index.js.map +1 -1
  17. package/dist/esm/table-column/base/models/column-internals.d.ts +5 -1
  18. package/dist/esm/table-column/base/models/column-internals.js +7 -0
  19. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  20. package/dist/esm/table-column/date-text/index.d.ts +8 -0
  21. package/dist/esm/table-column/duration-text/index.d.ts +8 -0
  22. package/dist/esm/table-column/mapping/index.d.ts +8 -0
  23. package/dist/esm/table-column/mapping/index.js +2 -1
  24. package/dist/esm/table-column/mapping/index.js.map +1 -1
  25. package/dist/esm/table-column/mixins/fractional-width-column.js +2 -12
  26. package/dist/esm/table-column/mixins/fractional-width-column.js.map +1 -1
  27. package/dist/esm/table-column/mixins/groupable-column.js +1 -7
  28. package/dist/esm/table-column/mixins/groupable-column.js.map +1 -1
  29. package/dist/esm/table-column/mixins/sortable-column.d.ts +17 -0
  30. package/dist/esm/table-column/mixins/sortable-column.js +52 -0
  31. package/dist/esm/table-column/mixins/sortable-column.js.map +1 -0
  32. package/dist/esm/table-column/number-text/index.d.ts +8 -0
  33. package/dist/esm/table-column/text/index.d.ts +8 -0
  34. package/dist/esm/table-column/text-base/index.d.ts +8 -0
  35. package/dist/esm/table-column/text-base/index.js +2 -1
  36. package/dist/esm/table-column/text-base/index.js.map +1 -1
  37. package/package.json +1 -1
@@ -308,7 +308,7 @@ export class Table extends FoundationElement {
308
308
  * @internal
309
309
  */
310
310
  toggleColumnSort(column, allowMultiSort) {
311
- if (column.sortingDisabled) {
311
+ if (column.columnInternals.sortingDisabled) {
312
312
  return;
313
313
  }
314
314
  const allSortedColumns = this.getColumnsParticipatingInSorting().sort((x, y) => x.columnInternals.currentSortIndex
@@ -492,7 +492,7 @@ export class Table extends FoundationElement {
492
492
  }
493
493
  }
494
494
  getColumnsParticipatingInSorting() {
495
- return this.columns.filter(x => !x.sortingDisabled
495
+ return this.columns.filter(x => !x.columnInternals.sortingDisabled
496
496
  && x.columnInternals.currentSortDirection
497
497
  !== TableColumnSortDirection.none
498
498
  && typeof x.columnInternals.currentSortIndex === 'number');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n attr,\n Observable,\n observable,\n Notifier,\n DOM\n} from '@microsoft/fast-element';\nimport {\n Checkbox,\n DesignSystem,\n FoundationElement\n} from '@microsoft/fast-foundation';\nimport {\n ColumnDef as TanStackColumnDef,\n TableState as TanStackTableState,\n Updater as TanStackUpdater,\n Table as TanStackTable,\n Row as TanStackRow,\n createTable as tanStackCreateTable,\n getCoreRowModel as tanStackGetCoreRowModel,\n getSortedRowModel as tanStackGetSortedRowModel,\n getGroupedRowModel as tanStackGetGroupedRowModel,\n getExpandedRowModel as tanStackGetExpandedRowModel,\n TableOptionsResolved as TanStackTableOptionsResolved,\n SortingState as TanStackSortingState,\n RowSelectionState as TanStackRowSelectionState,\n GroupingState as TanStackGroupingState,\n ExpandedState as TanStackExpandedState,\n OnChangeFn as TanStackOnChangeFn\n} from '@tanstack/table-core';\nimport { keyShift } from '@microsoft/fast-web-utilities';\nimport { TableColumn } from '../table-column/base';\nimport { TableValidator } from './models/table-validator';\nimport { styles } from './styles';\nimport { template } from './template';\nimport {\n TableNode,\n TableActionMenuToggleEventDetail,\n TableColumnConfigurationChangeEventDetail,\n TableColumnSortDirection,\n TableFieldValue,\n TableRecord,\n TableRowSelectionEventDetail,\n TableRowSelectionMode,\n TableRowSelectionState,\n TableRowSelectionToggleEventDetail,\n TableRowState,\n TableValidity,\n TableSetRecordHierarchyOptions\n} from './types';\nimport { Virtualizer } from './models/virtualizer';\nimport { getTanStackSortingFunction } from './models/sort-operations';\nimport { TableLayoutManager } from './models/table-layout-manager';\nimport { TableUpdateTracker } from './models/table-update-tracker';\nimport type { TableRow } from './components/row';\nimport { ColumnInternals } from '../table-column/base/models/column-internals';\nimport { InteractiveSelectionManager } from './models/interactive-selection-manager';\nimport { DataHierarchyManager } from './models/data-hierarchy-manager';\nimport { ExpansionManager } from './models/expansion-manager';\nimport { waitUntilCustomElementsDefinedAsync } from '../utilities/wait-until-custom-elements-defined-async';\nimport { ColumnValidator } from '../table-column/base/models/column-validator';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table': Table;\n }\n}\n\n/**\n * A nimble-styled table.\n */\nexport class Table<\n TData extends TableRecord = TableRecord\n> extends FoundationElement {\n @attr({ attribute: 'id-field-name' })\n public idFieldName?: string;\n\n @attr({ attribute: 'parent-id-field-name' })\n public parentIdFieldName?: string;\n\n @attr({ attribute: 'selection-mode' })\n public selectionMode: TableRowSelectionMode = TableRowSelectionMode.none;\n\n /**\n * @internal\n */\n @observable\n public tableData: TableRowState<TData>[] = [];\n\n /**\n * @internal\n */\n @observable\n public columns: TableColumn[] = [];\n\n /**\n * @internal\n */\n @observable\n public readonly childItems: Element[] = [];\n\n /**\n * @internal\n */\n @observable\n public readonly rowElements: TableRow[] = [];\n\n /**\n * @internal\n */\n @observable\n public actionMenuSlots: string[] = [];\n\n /**\n * @internal\n */\n @observable\n public openActionMenuRecordId?: string;\n\n /**\n * @internal\n */\n @observable\n public canRenderRows = true;\n\n /**\n * @internal\n */\n @observable\n public scrollX = 0;\n\n /**\n * @internal\n */\n @observable\n public rowGridColumns?: string;\n\n /**\n * @internal\n */\n @observable\n public selectionState: TableRowSelectionState = TableRowSelectionState.notSelected;\n\n public get validity(): TableValidity {\n return this.tableValidator.getValidity();\n }\n\n /**\n * @internal\n */\n public get showRowOperationColumn(): boolean {\n return (\n this.selectionMode === TableRowSelectionMode.multiple\n || this.showCollapseAll\n );\n }\n\n /**\n * @internal\n */\n public readonly viewport!: HTMLElement;\n\n /**\n * @internal\n */\n @observable\n public readonly selectionCheckbox?: Checkbox;\n\n /**\n * @internal\n */\n @observable\n public showCollapseAll = false;\n\n /**\n * @internal\n */\n public readonly headerRowActionContainer!: HTMLElement;\n\n /**\n * @internal\n */\n public readonly rowContainer!: HTMLElement;\n\n /**\n * @internal\n */\n public readonly columnHeadersContainer!: Element;\n\n /**\n * @internal\n */\n public readonly virtualizer: Virtualizer<TData>;\n\n /**\n * @internal\n */\n public readonly layoutManager: TableLayoutManager<TData>;\n\n /**\n * @internal\n */\n @observable\n public firstSortedColumn?: TableColumn;\n\n /**\n * @internal\n */\n @observable\n public visibleColumns: TableColumn[] = [];\n\n /**\n * @internal\n * This value determines the size of the viewport area when a user has created horizontal scrollable\n * space through a column resize operation.\n */\n @observable\n public tableScrollableMinWidth = 0;\n\n @observable\n public documentShiftKeyDown = false;\n\n private readonly table: TanStackTable<TableNode<TData>>;\n private options: TanStackTableOptionsResolved<TableNode<TData>>;\n private readonly tableValidator = new TableValidator<TData>();\n private readonly tableUpdateTracker = new TableUpdateTracker(this);\n private readonly selectionManager: InteractiveSelectionManager<TData>;\n private dataHierarchyManager?: DataHierarchyManager<TData>;\n private readonly expansionManager: ExpansionManager<TData>;\n private columnNotifiers: Notifier[] = [];\n private readonly layoutManagerNotifier: Notifier;\n private isInitialized = false;\n // Programmatically updating the selection state of a checkbox fires the 'change' event.\n // Therefore, selection change events that occur due to programmatically updating\n // the selection checkbox 'checked' value should be ingored.\n // https://github.com/microsoft/fast/issues/5750\n private ignoreSelectionChangeEvents = false;\n\n public constructor() {\n super();\n this.options = {\n data: [],\n onStateChange: (_: TanStackUpdater<TanStackTableState>) => {},\n onRowSelectionChange: this.handleRowSelectionChange,\n onExpandedChange: this.handleExpandedChange,\n getCoreRowModel: tanStackGetCoreRowModel(),\n getSortedRowModel: tanStackGetSortedRowModel(),\n getGroupedRowModel: tanStackGetGroupedRowModel(),\n getExpandedRowModel: tanStackGetExpandedRowModel(),\n getRowCanExpand: this.getRowCanExpand,\n getIsRowExpanded: this.getIsRowExpanded,\n getSubRows: r => r.subRows,\n columns: [],\n state: {\n rowSelection: {},\n grouping: [],\n expanded: true // Workaround until we can apply a fix to TanStack regarding leveraging our getIsRowExpanded implementation\n },\n enableRowSelection: row => !row.getIsGrouped(),\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n enableSorting: true,\n enableGrouping: true,\n renderFallbackValue: null,\n autoResetAll: false\n };\n this.table = tanStackCreateTable(this.options);\n this.virtualizer = new Virtualizer(this, this.table);\n this.layoutManager = new TableLayoutManager(this);\n this.layoutManagerNotifier = Observable.getNotifier(this.layoutManager);\n this.layoutManagerNotifier.subscribe(this, 'isColumnBeingSized');\n this.selectionManager = new InteractiveSelectionManager(\n this.table,\n this.selectionMode\n );\n this.expansionManager = new ExpansionManager(this.table);\n }\n\n public async setData(newData: readonly TData[]): Promise<void> {\n await this.processPendingUpdates();\n const tanstackUpdates = this.calculateTanStackData(newData);\n this.updateTableOptions(tanstackUpdates);\n }\n\n public async getSelectedRecordIds(): Promise<string[]> {\n await this.processPendingUpdates();\n return this.selectionManager.getCurrentSelectedRecordIds();\n }\n\n public async setSelectedRecordIds(\n recordIds: readonly string[]\n ): Promise<void> {\n await this.processPendingUpdates();\n\n if (this.selectionMode === TableRowSelectionMode.none) {\n return;\n }\n\n this.updateTableOptions({\n state: {\n rowSelection: this.calculateTanStackSelectionState(recordIds)\n }\n });\n }\n\n public async setRecordHierarchyOptions(\n hierarchyOptions: TableSetRecordHierarchyOptions[]\n ): Promise<void> {\n await this.processPendingUpdates();\n const clonedOptions = structuredClone(hierarchyOptions);\n const presentOptions = this.tableValidator.getOptionsWithPresentIds(clonedOptions);\n this.expansionManager.setHierarchyOptions(presentOptions);\n this.refreshRows();\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.initialize();\n this.virtualizer.connect();\n this.viewport.addEventListener('scroll', this.onViewPortScroll, {\n passive: true\n });\n document.addEventListener('keydown', this.onKeyDown);\n document.addEventListener('keyup', this.onKeyUp);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.virtualizer.disconnect();\n this.viewport.removeEventListener('scroll', this.onViewPortScroll);\n document.removeEventListener('keydown', this.onKeyDown);\n document.removeEventListener('keyup', this.onKeyUp);\n }\n\n public checkValidity(): boolean {\n return this.tableValidator.isValid();\n }\n\n /**\n * @internal\n *\n * The event handler that is called when a notifier detects a change. Notifiers are added\n * to each column, so `source` is expected to be an instance of `TableColumn`, and `args`\n * is the string name of the property that changed on that column.\n */\n public handleChange(source: unknown, args: unknown): void {\n if (\n (source instanceof TableColumn\n || source instanceof ColumnInternals)\n && typeof args === 'string'\n ) {\n this.tableUpdateTracker.trackColumnPropertyChanged(args);\n } else if (\n source instanceof ColumnValidator\n && args === 'isColumnValid'\n ) {\n this.tableValidator.validateColumnConfigurations(this.columns);\n } else if (\n source instanceof TableLayoutManager\n && args === 'isColumnBeingSized'\n && !this.layoutManager.isColumnBeingSized\n ) {\n // 'isColumnBeingSized' changing to 'false' indicates an interactive\n // column sizing operation has been completed\n this.emitColumnConfigurationChangeEvent();\n }\n }\n\n /** @internal */\n public onRowSelectionToggle(\n rowIndex: number,\n event: CustomEvent<TableRowSelectionToggleEventDetail>\n ): void {\n event.stopImmediatePropagation();\n\n const selectionChanged = this.selectionManager.handleRowSelectionToggle(\n this.tableData[rowIndex],\n event.detail.newState,\n this.documentShiftKeyDown\n );\n\n if (selectionChanged) {\n void this.emitSelectionChangeEvent();\n }\n }\n\n /** @internal */\n public onRowClick(rowIndex: number, event: MouseEvent): boolean {\n const selectionChanged = this.selectionManager.handleRowClick(\n this.tableData[rowIndex],\n event.shiftKey,\n event.ctrlKey || event.metaKey\n );\n\n if (selectionChanged) {\n void this.emitSelectionChangeEvent();\n }\n\n return true;\n }\n\n /** @internal */\n public onAllRowsSelectionChange(event: CustomEvent): void {\n event.stopPropagation();\n\n if (this.ignoreSelectionChangeEvents) {\n return;\n }\n\n this.table.toggleAllRowsSelected(this.selectionCheckbox!.checked);\n void this.emitSelectionChangeEvent();\n }\n\n /** @internal */\n public onRowActionMenuBeforeToggle(\n rowIndex: number,\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): void {\n event.stopImmediatePropagation();\n void this.handleActionMenuBeforeToggleEvent(rowIndex, event);\n }\n\n /** @internal */\n public onRowActionMenuToggle(\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): void {\n event.stopImmediatePropagation();\n void this.handleRowActionMenuToggleEvent(event);\n }\n\n /** @internal */\n public handleCollapseAllRows(): void {\n this.expansionManager.collapseAll();\n }\n\n /** @internal */\n public onRightDividerMouseDown(\n event: MouseEvent,\n columnIndex: number\n ): void {\n if (event.button === 0) {\n this.layoutManager.beginColumnInteractiveSize(\n event.clientX,\n this.getRightDividerIndex(columnIndex)\n );\n }\n }\n\n /** @internal */\n public onLeftDividerMouseDown(\n event: MouseEvent,\n columnIndex: number\n ): void {\n if (event.button === 0) {\n this.layoutManager.beginColumnInteractiveSize(\n event.clientX,\n this.getLeftDividerIndex(columnIndex)\n );\n }\n }\n\n /** @internal */\n public getLeftDividerIndex(columnIndex: number): number {\n return columnIndex * 2 - 1;\n }\n\n /** @internal */\n public getRightDividerIndex(columnIndex: number): number {\n return columnIndex * 2;\n }\n\n /** @internal */\n public handleGroupRowExpanded(rowIndex: number, event: Event): void {\n this.toggleRowExpanded(rowIndex);\n event.stopPropagation();\n }\n\n /** @internal */\n public handleRowExpanded(rowIndex: number): void {\n this.toggleRowExpanded(rowIndex);\n }\n\n /**\n * @internal\n */\n public toggleColumnSort(\n column: TableColumn,\n allowMultiSort: boolean\n ): void {\n if (column.sortingDisabled) {\n return;\n }\n\n const allSortedColumns = this.getColumnsParticipatingInSorting().sort(\n (x, y) => x.columnInternals.currentSortIndex!\n - y.columnInternals.currentSortIndex!\n );\n\n const columnIndex = allSortedColumns.indexOf(column);\n const columnAlreadySorted = columnIndex > -1;\n\n const oldSortDirection = column.columnInternals.currentSortDirection;\n let newSortDirection: TableColumnSortDirection = TableColumnSortDirection.ascending;\n\n if (columnAlreadySorted) {\n if (oldSortDirection === TableColumnSortDirection.descending) {\n allSortedColumns.splice(columnIndex, 1);\n newSortDirection = TableColumnSortDirection.none;\n column.columnInternals.currentSortIndex = undefined;\n } else {\n newSortDirection = TableColumnSortDirection.descending;\n }\n } else {\n allSortedColumns.push(column);\n }\n column.columnInternals.currentSortDirection = newSortDirection;\n\n for (let i = 0; i < allSortedColumns.length; i++) {\n const currentColumn = allSortedColumns[i]!;\n if (allowMultiSort) {\n allSortedColumns[i]!.columnInternals.currentSortIndex = i;\n } else if (currentColumn === column) {\n currentColumn.columnInternals.currentSortIndex = 0;\n } else {\n currentColumn.columnInternals.currentSortIndex = undefined;\n currentColumn.columnInternals.currentSortDirection = TableColumnSortDirection.none;\n }\n }\n\n this.emitColumnConfigurationChangeEvent();\n }\n\n /**\n * @internal\n */\n public update(): void {\n this.validate();\n if (this.tableUpdateTracker.requiresTanStackUpdate) {\n this.updateTanStack();\n }\n\n if (this.tableUpdateTracker.updateActionMenuSlots) {\n this.updateActionMenuSlots();\n }\n\n if (this.tableUpdateTracker.updateColumnWidths) {\n this.rowGridColumns = this.layoutManager.getGridTemplateColumns();\n this.visibleColumns = this.columns.filter(\n column => !column.columnHidden\n );\n }\n }\n\n public override get ariaMultiSelectable(): 'true' | 'false' | null {\n switch (this.selectionMode) {\n case TableRowSelectionMode.multiple:\n return 'true';\n case TableRowSelectionMode.single:\n return 'false';\n default:\n return null;\n }\n }\n\n /**\n * @internal\n */\n public getHeaderContainerElements(): NodeListOf<Element> {\n return this.columnHeadersContainer.querySelectorAll(\n '.header-container'\n );\n }\n\n /**\n * @internal\n */\n public calculateTanStackData(\n data: readonly TData[]\n ): Partial<TanStackTableOptionsResolved<TableNode<TData>>> {\n this.dataHierarchyManager = new DataHierarchyManager(\n data,\n this.idFieldName,\n this.parentIdFieldName\n );\n const tableNodes = this.dataHierarchyManager.hierarchicalData;\n this.tableValidator.setParentIdConfigurationValidity(\n this.dataHierarchyManager.parentIdConfigurationValid\n );\n const tanStackUpdates: Partial<\n TanStackTableOptionsResolved<TableNode<TData>>\n > = {\n data: tableNodes\n };\n this.validateWithData(data);\n if (this.tableValidator.areRecordIdsValid()) {\n // Update the selection state to remove previously selected records that no longer exist in the\n // data set while maintaining the selection state of records that still exist in the data set.\n const previousSelection = this.selectionManager.getCurrentSelectedRecordIds();\n tanStackUpdates.state = {\n rowSelection:\n this.calculateTanStackSelectionState(previousSelection),\n // Reset the TanStack expanded state to \"true\" to clear TanStack's cache of expanded state that may include\n // rows that no longer exist in the table. The nimble table's expansion manager tracks the expanded\n // state of each row, so no state is lost by resetting TanStack.\n expanded: true\n };\n }\n return tanStackUpdates;\n }\n\n protected selectionModeChanged(\n _prev: string | undefined,\n _next: string | undefined\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.tableUpdateTracker.trackSelectionModeChanged();\n }\n\n protected idFieldNameChanged(\n _prev: string | undefined,\n _next: string | undefined\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.tableUpdateTracker.trackIdFieldNameChanged();\n }\n\n protected parentIdFieldNameChanged(\n _prev: string | undefined,\n _next: string | undefined\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.tableUpdateTracker.trackParentIdFieldNameChanged();\n }\n\n protected columnsChanged(\n _prev: TableColumn[] | undefined,\n _next: TableColumn[]\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.observeColumns();\n this.tableUpdateTracker.trackColumnInstancesChanged();\n }\n\n private async handleActionMenuBeforeToggleEvent(\n rowIndex: number,\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): Promise<void> {\n const selectionChanged = this.selectionManager.handleActionMenuOpening(\n this.tableData[rowIndex]\n );\n if (selectionChanged) {\n await this.emitSelectionChangeEvent();\n }\n\n this.openActionMenuRecordId = event.detail.recordIds[0];\n const detail = await this.getActionMenuToggleEventDetail(event);\n this.$emit('action-menu-beforetoggle', detail);\n }\n\n private async handleRowActionMenuToggleEvent(\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): Promise<void> {\n const detail = await this.getActionMenuToggleEventDetail(event);\n this.$emit('action-menu-toggle', detail);\n if (!event.detail.newState) {\n this.openActionMenuRecordId = undefined;\n }\n }\n\n private async getActionMenuToggleEventDetail(\n originalEvent: CustomEvent<TableActionMenuToggleEventDetail>\n ): Promise<TableActionMenuToggleEventDetail> {\n const recordIds = this.selectionMode === TableRowSelectionMode.multiple\n ? await this.getSelectedRecordIds()\n : [this.openActionMenuRecordId!];\n return {\n ...originalEvent.detail,\n recordIds\n };\n }\n\n private readonly onViewPortScroll = (event: Event): void => {\n this.scrollX = (event.target as HTMLElement).scrollLeft;\n };\n\n private readonly onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === keyShift) {\n this.documentShiftKeyDown = true;\n }\n };\n\n private readonly onKeyUp = (event: KeyboardEvent): void => {\n if (event.key === keyShift) {\n this.documentShiftKeyDown = false;\n }\n };\n\n private removeColumnObservers(): void {\n this.columnNotifiers.forEach(notifier => {\n notifier.unsubscribe(this);\n });\n this.columnNotifiers = [];\n }\n\n private initialize(): void {\n if (this.isInitialized) {\n // The table is already initialized. There is nothing more to do.\n return;\n }\n\n this.isInitialized = true;\n // Initialize the controller to ensure that FAST functionality such as Observables work as expected.\n this.$fastController.onConnectedCallback();\n this.tableUpdateTracker.trackAllStateChanged();\n this.observeColumns();\n }\n\n private async processPendingUpdates(): Promise<void> {\n this.initialize();\n await DOM.nextUpdate();\n\n if (this.tableUpdateTracker.hasPendingUpdates) {\n throw new Error('Expected pending updates to be resolved');\n }\n }\n\n private observeColumns(): void {\n this.removeColumnObservers();\n\n for (const column of this.columns) {\n const notifier = Observable.getNotifier(column);\n notifier.subscribe(this);\n this.columnNotifiers.push(notifier);\n const notifierInternals = Observable.getNotifier(\n column.columnInternals\n );\n notifierInternals.subscribe(this);\n this.columnNotifiers.push(notifierInternals);\n const validatorNotifier = Observable.getNotifier(\n column.columnInternals.validator\n );\n validatorNotifier.subscribe(this);\n this.columnNotifiers.push(validatorNotifier);\n }\n }\n\n private getColumnsParticipatingInSorting(): TableColumn[] {\n return this.columns.filter(\n x => !x.sortingDisabled\n && x.columnInternals.currentSortDirection\n !== TableColumnSortDirection.none\n && typeof x.columnInternals.currentSortIndex === 'number'\n );\n }\n\n private getColumnsParticipatingInGrouping(): TableColumn[] {\n return this.columns.filter(\n x => !x.columnInternals.groupingDisabled\n && typeof x.columnInternals.groupIndex === 'number'\n );\n }\n\n private childItemsChanged(): void {\n void this.updateColumnsFromChildItems();\n }\n\n private async updateColumnsFromChildItems(): Promise<void> {\n await waitUntilCustomElementsDefinedAsync(this.childItems);\n this.columns = this.childItems.filter(\n (x): x is TableColumn => x instanceof TableColumn\n );\n }\n\n private updateTanStack(): void {\n const updatedOptions: Partial<\n TanStackTableOptionsResolved<TableNode<TData>>\n > = {};\n updatedOptions.state = {};\n\n if (this.tableUpdateTracker.updateColumnSort) {\n updatedOptions.state.sorting = this.calculateTanStackSortState();\n }\n if (this.tableUpdateTracker.updateColumnDefinition) {\n updatedOptions.columns = this.calculateTanStackColumns();\n }\n if (this.tableUpdateTracker.updateRowIds) {\n updatedOptions.getRowId = this.calculateTanStackRowIdFunction();\n updatedOptions.state.rowSelection = {};\n this.selectionManager.handleSelectionReset();\n this.expansionManager.resetHierarchyOptions();\n }\n if (this.tableUpdateTracker.updateRowParentIds) {\n this.expansionManager.setHierarchyEnabled(\n this.isHierarchyEnabled()\n );\n }\n if (this.tableUpdateTracker.updateSelectionMode) {\n updatedOptions.enableMultiRowSelection = this.selectionMode === TableRowSelectionMode.multiple;\n updatedOptions.enableSubRowSelection = this.selectionMode === TableRowSelectionMode.multiple;\n updatedOptions.state.rowSelection = {};\n this.selectionManager.handleSelectionModeChanged(\n this.selectionMode\n );\n }\n if (\n this.dataHierarchyManager\n && this.tableUpdateTracker.requiresTanStackDataReset\n ) {\n if (\n !this.parentIdFieldName\n && !this.tableUpdateTracker.updateRowParentIds\n ) {\n // Perform a shallow copy of the data to trigger tanstack to regenerate the row models and columns.\n updatedOptions.data = [...this.table.options.data];\n } else {\n const orderedRecords = this.dataHierarchyManager.getAllRecords(true);\n const tanstackUpdates = this.calculateTanStackData(orderedRecords);\n if (tanstackUpdates.state) {\n updatedOptions.state.rowSelection = tanstackUpdates.state.rowSelection;\n }\n updatedOptions.data = tanstackUpdates.data;\n }\n }\n\n if (this.tableUpdateTracker.updateGroupRows) {\n updatedOptions.state.grouping = this.calculateTanStackGroupingState();\n }\n\n if (\n this.tableUpdateTracker.updateRowIds\n || this.tableUpdateTracker.updateRowParentIds\n || this.tableUpdateTracker.updateGroupRows\n ) {\n updatedOptions.state.expanded = true;\n this.expansionManager.resetExpansionState();\n }\n\n this.updateTableOptions(updatedOptions);\n }\n\n private updateActionMenuSlots(): void {\n const slots = new Set<string>();\n for (const column of this.columns) {\n if (column.actionMenuSlot) {\n slots.add(column.actionMenuSlot);\n }\n }\n this.actionMenuSlots = Array.from(slots);\n }\n\n private validate(): void {\n this.tableValidator.validateIdFieldConfiguration(\n this.selectionMode,\n this.idFieldName,\n this.parentIdFieldName\n );\n this.tableValidator.validateColumnIds(\n this.columns.map(x => x.columnId)\n );\n this.tableValidator.validateColumnSortIndices(\n this.getColumnsParticipatingInSorting().map(\n x => x.columnInternals.currentSortIndex!\n )\n );\n this.tableValidator.validateColumnGroupIndices(\n this.getColumnsParticipatingInGrouping().map(\n x => x.columnInternals.groupIndex!\n )\n );\n this.tableValidator.validateColumnConfigurations(this.columns);\n if (this.dataHierarchyManager) {\n this.validateWithData(this.dataHierarchyManager.getAllRecords());\n }\n }\n\n private validateWithData(data: readonly TData[]): void {\n this.tableValidator.validateRecordIds(data, this.idFieldName);\n this.canRenderRows = this.checkValidity();\n }\n\n private emitColumnConfigurationChangeEvent(): void {\n const detail: TableColumnConfigurationChangeEventDetail = {\n columns: this.columns.map(column => ({\n columnId: column.columnId,\n sortIndex: column.columnInternals.currentSortIndex ?? undefined,\n sortDirection: column.columnInternals.currentSortDirection,\n groupIndex: column.columnInternals.groupIndex,\n hidden: column.columnHidden,\n fractionalWidth: column.columnInternals.currentFractionalWidth,\n pixelWidth: column.columnInternals.currentPixelWidth\n }))\n };\n this.$emit('column-configuration-change', detail);\n }\n\n private async emitSelectionChangeEvent(): Promise<void> {\n const detail: TableRowSelectionEventDetail = {\n selectedRecordIds: await this.getSelectedRecordIds()\n };\n\n this.$emit('selection-change', detail);\n }\n\n private selectionStateChanged(): void {\n this.setSelectionCheckboxState();\n }\n\n private selectionCheckboxChanged(): void {\n this.setSelectionCheckboxState();\n }\n\n private setSelectionCheckboxState(): void {\n if (this.selectionCheckbox) {\n this.ignoreSelectionChangeEvents = true;\n this.selectionCheckbox.checked = this.selectionState === TableRowSelectionState.selected;\n this.selectionCheckbox.indeterminate = this.selectionState\n === TableRowSelectionState.partiallySelected;\n this.ignoreSelectionChangeEvents = false;\n }\n }\n\n private isHierarchyEnabled(): boolean {\n return typeof this.parentIdFieldName === 'string';\n }\n\n private refreshRows(): void {\n this.selectionState = this.getTableSelectionState();\n\n let hasDataHierarchy = false;\n const rows = this.table.getRowModel().rows;\n this.tableData = rows.map(row => {\n const isGroupRow = row.getIsGrouped();\n const hasParentRow = isGroupRow ? false : row.getParentRow();\n const isParent = !isGroupRow && this.getRowCanExpand(row);\n const isChildOfGroupRowWithNoHierarchy = !isGroupRow\n && !isParent\n && !hasParentRow\n && row.depth > 0\n && !this.parentIdFieldName;\n const rowState: TableRowState<TData> = {\n record: row.original.clientRecord,\n id: row.id,\n selectionState: this.getRowSelectionState(row),\n isGroupRow,\n isExpanded: row.getIsExpanded(),\n groupRowValue: isGroupRow\n ? row.getValue(row.groupingColumnId!)\n : undefined,\n nestingLevel: isChildOfGroupRowWithNoHierarchy\n ? row.depth - 1\n : row.depth,\n isParentRow: isParent,\n immediateChildCount: row.subRows.length,\n groupColumn: this.getGroupRowColumn(row),\n isLoadingChildren: this.expansionManager.isLoadingChildren(\n row.id\n )\n };\n hasDataHierarchy = hasDataHierarchy || isParent;\n return rowState;\n });\n this.showCollapseAll = hasDataHierarchy\n || this.getColumnsParticipatingInGrouping().length > 0;\n this.virtualizer.dataChanged();\n }\n\n private getTableSelectionState(): TableRowSelectionState {\n if (this.table.getIsAllRowsSelected()) {\n return TableRowSelectionState.selected;\n }\n if (this.table.getIsSomeRowsSelected()) {\n return TableRowSelectionState.partiallySelected;\n }\n return TableRowSelectionState.notSelected;\n }\n\n private getRowSelectionState(\n row: TanStackRow<TableNode<TData>>\n ): TableRowSelectionState {\n if (row.getIsGrouped()) {\n return this.getGroupedRowSelectionState(row);\n }\n\n return row.getIsSelected()\n ? TableRowSelectionState.selected\n : TableRowSelectionState.notSelected;\n }\n\n private getGroupedRowSelectionState(\n groupedRow: TanStackRow<TableNode<TData>>\n ): TableRowSelectionState {\n const leafRows = groupedRow.getLeafRows().filter(x => !x.getIsGrouped()) ?? [];\n let foundSelectedRow = false;\n let foundNotSelectedRow = false;\n for (const row of leafRows) {\n if (row.getIsSelected()) {\n foundSelectedRow = true;\n } else {\n foundNotSelectedRow = true;\n }\n\n if (foundSelectedRow && foundNotSelectedRow) {\n return TableRowSelectionState.partiallySelected;\n }\n }\n\n return foundSelectedRow\n ? TableRowSelectionState.selected\n : TableRowSelectionState.notSelected;\n }\n\n private getGroupRowColumn(\n row: TanStackRow<TableNode<TData>>\n ): TableColumn | undefined {\n const groupedId = row.groupingColumnId;\n if (groupedId !== undefined) {\n return this.columns.find(\n c => c.columnInternals.uniqueId === groupedId\n );\n }\n\n return undefined;\n }\n\n private updateTableOptions(\n updatedOptions: Partial<TanStackTableOptionsResolved<TableNode<TData>>>\n ): void {\n this.options = {\n ...this.options,\n ...updatedOptions,\n state: { ...this.options.state, ...updatedOptions.state }\n };\n this.table.setOptions(this.options);\n if (updatedOptions.data && this.tableValidator.areRecordIdsValid()) {\n const rows = this.table.getRowModel().flatRows;\n this.expansionManager.processDataUpdate(rows);\n }\n this.refreshRows();\n }\n\n private readonly getRowCanExpand = (\n row: TanStackRow<TableNode<TData>>\n ): boolean => {\n return this.expansionManager.isRowExpandable(row);\n };\n\n private readonly getIsRowExpanded = (\n row: TanStackRow<TableNode<TData>>\n ): boolean => {\n return this.expansionManager.isRowExpanded(row);\n };\n\n private readonly handleRowSelectionChange: TanStackOnChangeFn<TanStackRowSelectionState> = (updaterOrValue: TanStackUpdater<TanStackRowSelectionState>): void => {\n const rowSelectionState = updaterOrValue instanceof Function\n ? updaterOrValue(this.table.getState().rowSelection)\n : updaterOrValue;\n\n this.updateTableOptions({\n state: {\n rowSelection: rowSelectionState\n }\n });\n };\n\n private readonly handleExpandedChange: TanStackOnChangeFn<TanStackExpandedState> = (updaterOrValue: TanStackUpdater<TanStackExpandedState>): void => {\n const expandedState = updaterOrValue instanceof Function\n ? updaterOrValue(this.table.getState().expanded)\n : updaterOrValue;\n\n this.updateTableOptions({\n state: {\n expanded: expandedState\n }\n });\n };\n\n private toggleRowExpanded(rowIndex: number): void {\n const rows = this.table.getRowModel().rows;\n const row = rows[rowIndex]!;\n this.expansionManager.toggleRowExpansion(row);\n }\n\n private calculateTanStackSortState(): TanStackSortingState {\n const sortedColumns = this.getColumnsParticipatingInSorting().sort(\n (x, y) => x.columnInternals.currentSortIndex!\n - y.columnInternals.currentSortIndex!\n );\n this.firstSortedColumn = sortedColumns.length\n ? sortedColumns[0]\n : undefined;\n\n return sortedColumns.map(column => {\n return {\n id: column.columnInternals.uniqueId,\n desc:\n column.columnInternals.currentSortDirection\n === TableColumnSortDirection.descending\n };\n });\n }\n\n private calculateTanStackGroupingState(): TanStackGroupingState {\n const groupedColumns = this.getColumnsParticipatingInGrouping().sort(\n (x, y) => x.columnInternals.groupIndex! - y.columnInternals.groupIndex!\n );\n\n return groupedColumns.map(column => column.columnInternals.uniqueId);\n }\n\n private calculateTanStackRowIdFunction():\n | ((\n originalRow: TableNode<TData>,\n index: number,\n parent?: TanStackRow<TableNode<TData>>\n ) => string)\n | undefined {\n return this.idFieldName === null || this.idFieldName === undefined\n ? undefined\n : (record: TableNode<TData>) => record.clientRecord[this.idFieldName!] as string;\n }\n\n private calculateTanStackColumns(): TanStackColumnDef<TableNode<TData>>[] {\n return this.columns.map(column => {\n return {\n id: column.columnInternals.uniqueId,\n accessorFn: (record: TableNode<TData>): TableFieldValue => {\n const fieldName = column.columnInternals.operandDataRecordFieldName;\n if (typeof fieldName !== 'string') {\n return undefined;\n }\n return record.clientRecord[fieldName];\n },\n sortingFn: getTanStackSortingFunction(\n column.columnInternals.sortOperation\n ),\n sortUndefined: false\n };\n });\n }\n\n private calculateTanStackSelectionState(\n recordIdsToSelect: readonly string[]\n ): TanStackRowSelectionState {\n if (this.selectionMode === TableRowSelectionMode.none) {\n return {};\n }\n\n const tanstackSelectionState: TanStackRowSelectionState = {};\n const selectableRecordIds = this.tableValidator.getPresentRecordIds(recordIdsToSelect);\n for (const recordId of selectableRecordIds) {\n tanstackSelectionState[recordId] = true;\n\n if (this.selectionMode === TableRowSelectionMode.single) {\n // In single selection mode, only select the first record ID that is requested\n break;\n }\n }\n\n return tanstackSelectionState;\n }\n}\n\nconst nimbleTable = Table.compose({\n baseName: 'table',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTable());\nexport const tableTag = 'nimble-table';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n attr,\n Observable,\n observable,\n Notifier,\n DOM\n} from '@microsoft/fast-element';\nimport {\n Checkbox,\n DesignSystem,\n FoundationElement\n} from '@microsoft/fast-foundation';\nimport {\n ColumnDef as TanStackColumnDef,\n TableState as TanStackTableState,\n Updater as TanStackUpdater,\n Table as TanStackTable,\n Row as TanStackRow,\n createTable as tanStackCreateTable,\n getCoreRowModel as tanStackGetCoreRowModel,\n getSortedRowModel as tanStackGetSortedRowModel,\n getGroupedRowModel as tanStackGetGroupedRowModel,\n getExpandedRowModel as tanStackGetExpandedRowModel,\n TableOptionsResolved as TanStackTableOptionsResolved,\n SortingState as TanStackSortingState,\n RowSelectionState as TanStackRowSelectionState,\n GroupingState as TanStackGroupingState,\n ExpandedState as TanStackExpandedState,\n OnChangeFn as TanStackOnChangeFn\n} from '@tanstack/table-core';\nimport { keyShift } from '@microsoft/fast-web-utilities';\nimport { TableColumn } from '../table-column/base';\nimport { TableValidator } from './models/table-validator';\nimport { styles } from './styles';\nimport { template } from './template';\nimport {\n TableNode,\n TableActionMenuToggleEventDetail,\n TableColumnConfigurationChangeEventDetail,\n TableColumnSortDirection,\n TableFieldValue,\n TableRecord,\n TableRowSelectionEventDetail,\n TableRowSelectionMode,\n TableRowSelectionState,\n TableRowSelectionToggleEventDetail,\n TableRowState,\n TableValidity,\n TableSetRecordHierarchyOptions\n} from './types';\nimport { Virtualizer } from './models/virtualizer';\nimport { getTanStackSortingFunction } from './models/sort-operations';\nimport { TableLayoutManager } from './models/table-layout-manager';\nimport { TableUpdateTracker } from './models/table-update-tracker';\nimport type { TableRow } from './components/row';\nimport { ColumnInternals } from '../table-column/base/models/column-internals';\nimport { InteractiveSelectionManager } from './models/interactive-selection-manager';\nimport { DataHierarchyManager } from './models/data-hierarchy-manager';\nimport { ExpansionManager } from './models/expansion-manager';\nimport { waitUntilCustomElementsDefinedAsync } from '../utilities/wait-until-custom-elements-defined-async';\nimport { ColumnValidator } from '../table-column/base/models/column-validator';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table': Table;\n }\n}\n\n/**\n * A nimble-styled table.\n */\nexport class Table<\n TData extends TableRecord = TableRecord\n> extends FoundationElement {\n @attr({ attribute: 'id-field-name' })\n public idFieldName?: string;\n\n @attr({ attribute: 'parent-id-field-name' })\n public parentIdFieldName?: string;\n\n @attr({ attribute: 'selection-mode' })\n public selectionMode: TableRowSelectionMode = TableRowSelectionMode.none;\n\n /**\n * @internal\n */\n @observable\n public tableData: TableRowState<TData>[] = [];\n\n /**\n * @internal\n */\n @observable\n public columns: TableColumn[] = [];\n\n /**\n * @internal\n */\n @observable\n public readonly childItems: Element[] = [];\n\n /**\n * @internal\n */\n @observable\n public readonly rowElements: TableRow[] = [];\n\n /**\n * @internal\n */\n @observable\n public actionMenuSlots: string[] = [];\n\n /**\n * @internal\n */\n @observable\n public openActionMenuRecordId?: string;\n\n /**\n * @internal\n */\n @observable\n public canRenderRows = true;\n\n /**\n * @internal\n */\n @observable\n public scrollX = 0;\n\n /**\n * @internal\n */\n @observable\n public rowGridColumns?: string;\n\n /**\n * @internal\n */\n @observable\n public selectionState: TableRowSelectionState = TableRowSelectionState.notSelected;\n\n public get validity(): TableValidity {\n return this.tableValidator.getValidity();\n }\n\n /**\n * @internal\n */\n public get showRowOperationColumn(): boolean {\n return (\n this.selectionMode === TableRowSelectionMode.multiple\n || this.showCollapseAll\n );\n }\n\n /**\n * @internal\n */\n public readonly viewport!: HTMLElement;\n\n /**\n * @internal\n */\n @observable\n public readonly selectionCheckbox?: Checkbox;\n\n /**\n * @internal\n */\n @observable\n public showCollapseAll = false;\n\n /**\n * @internal\n */\n public readonly headerRowActionContainer!: HTMLElement;\n\n /**\n * @internal\n */\n public readonly rowContainer!: HTMLElement;\n\n /**\n * @internal\n */\n public readonly columnHeadersContainer!: Element;\n\n /**\n * @internal\n */\n public readonly virtualizer: Virtualizer<TData>;\n\n /**\n * @internal\n */\n public readonly layoutManager: TableLayoutManager<TData>;\n\n /**\n * @internal\n */\n @observable\n public firstSortedColumn?: TableColumn;\n\n /**\n * @internal\n */\n @observable\n public visibleColumns: TableColumn[] = [];\n\n /**\n * @internal\n * This value determines the size of the viewport area when a user has created horizontal scrollable\n * space through a column resize operation.\n */\n @observable\n public tableScrollableMinWidth = 0;\n\n @observable\n public documentShiftKeyDown = false;\n\n private readonly table: TanStackTable<TableNode<TData>>;\n private options: TanStackTableOptionsResolved<TableNode<TData>>;\n private readonly tableValidator = new TableValidator<TData>();\n private readonly tableUpdateTracker = new TableUpdateTracker(this);\n private readonly selectionManager: InteractiveSelectionManager<TData>;\n private dataHierarchyManager?: DataHierarchyManager<TData>;\n private readonly expansionManager: ExpansionManager<TData>;\n private columnNotifiers: Notifier[] = [];\n private readonly layoutManagerNotifier: Notifier;\n private isInitialized = false;\n // Programmatically updating the selection state of a checkbox fires the 'change' event.\n // Therefore, selection change events that occur due to programmatically updating\n // the selection checkbox 'checked' value should be ingored.\n // https://github.com/microsoft/fast/issues/5750\n private ignoreSelectionChangeEvents = false;\n\n public constructor() {\n super();\n this.options = {\n data: [],\n onStateChange: (_: TanStackUpdater<TanStackTableState>) => {},\n onRowSelectionChange: this.handleRowSelectionChange,\n onExpandedChange: this.handleExpandedChange,\n getCoreRowModel: tanStackGetCoreRowModel(),\n getSortedRowModel: tanStackGetSortedRowModel(),\n getGroupedRowModel: tanStackGetGroupedRowModel(),\n getExpandedRowModel: tanStackGetExpandedRowModel(),\n getRowCanExpand: this.getRowCanExpand,\n getIsRowExpanded: this.getIsRowExpanded,\n getSubRows: r => r.subRows,\n columns: [],\n state: {\n rowSelection: {},\n grouping: [],\n expanded: true // Workaround until we can apply a fix to TanStack regarding leveraging our getIsRowExpanded implementation\n },\n enableRowSelection: row => !row.getIsGrouped(),\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n enableSorting: true,\n enableGrouping: true,\n renderFallbackValue: null,\n autoResetAll: false\n };\n this.table = tanStackCreateTable(this.options);\n this.virtualizer = new Virtualizer(this, this.table);\n this.layoutManager = new TableLayoutManager(this);\n this.layoutManagerNotifier = Observable.getNotifier(this.layoutManager);\n this.layoutManagerNotifier.subscribe(this, 'isColumnBeingSized');\n this.selectionManager = new InteractiveSelectionManager(\n this.table,\n this.selectionMode\n );\n this.expansionManager = new ExpansionManager(this.table);\n }\n\n public async setData(newData: readonly TData[]): Promise<void> {\n await this.processPendingUpdates();\n const tanstackUpdates = this.calculateTanStackData(newData);\n this.updateTableOptions(tanstackUpdates);\n }\n\n public async getSelectedRecordIds(): Promise<string[]> {\n await this.processPendingUpdates();\n return this.selectionManager.getCurrentSelectedRecordIds();\n }\n\n public async setSelectedRecordIds(\n recordIds: readonly string[]\n ): Promise<void> {\n await this.processPendingUpdates();\n\n if (this.selectionMode === TableRowSelectionMode.none) {\n return;\n }\n\n this.updateTableOptions({\n state: {\n rowSelection: this.calculateTanStackSelectionState(recordIds)\n }\n });\n }\n\n public async setRecordHierarchyOptions(\n hierarchyOptions: TableSetRecordHierarchyOptions[]\n ): Promise<void> {\n await this.processPendingUpdates();\n const clonedOptions = structuredClone(hierarchyOptions);\n const presentOptions = this.tableValidator.getOptionsWithPresentIds(clonedOptions);\n this.expansionManager.setHierarchyOptions(presentOptions);\n this.refreshRows();\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.initialize();\n this.virtualizer.connect();\n this.viewport.addEventListener('scroll', this.onViewPortScroll, {\n passive: true\n });\n document.addEventListener('keydown', this.onKeyDown);\n document.addEventListener('keyup', this.onKeyUp);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.virtualizer.disconnect();\n this.viewport.removeEventListener('scroll', this.onViewPortScroll);\n document.removeEventListener('keydown', this.onKeyDown);\n document.removeEventListener('keyup', this.onKeyUp);\n }\n\n public checkValidity(): boolean {\n return this.tableValidator.isValid();\n }\n\n /**\n * @internal\n *\n * The event handler that is called when a notifier detects a change. Notifiers are added\n * to each column, so `source` is expected to be an instance of `TableColumn`, and `args`\n * is the string name of the property that changed on that column.\n */\n public handleChange(source: unknown, args: unknown): void {\n if (\n (source instanceof TableColumn\n || source instanceof ColumnInternals)\n && typeof args === 'string'\n ) {\n this.tableUpdateTracker.trackColumnPropertyChanged(args);\n } else if (\n source instanceof ColumnValidator\n && args === 'isColumnValid'\n ) {\n this.tableValidator.validateColumnConfigurations(this.columns);\n } else if (\n source instanceof TableLayoutManager\n && args === 'isColumnBeingSized'\n && !this.layoutManager.isColumnBeingSized\n ) {\n // 'isColumnBeingSized' changing to 'false' indicates an interactive\n // column sizing operation has been completed\n this.emitColumnConfigurationChangeEvent();\n }\n }\n\n /** @internal */\n public onRowSelectionToggle(\n rowIndex: number,\n event: CustomEvent<TableRowSelectionToggleEventDetail>\n ): void {\n event.stopImmediatePropagation();\n\n const selectionChanged = this.selectionManager.handleRowSelectionToggle(\n this.tableData[rowIndex],\n event.detail.newState,\n this.documentShiftKeyDown\n );\n\n if (selectionChanged) {\n void this.emitSelectionChangeEvent();\n }\n }\n\n /** @internal */\n public onRowClick(rowIndex: number, event: MouseEvent): boolean {\n const selectionChanged = this.selectionManager.handleRowClick(\n this.tableData[rowIndex],\n event.shiftKey,\n event.ctrlKey || event.metaKey\n );\n\n if (selectionChanged) {\n void this.emitSelectionChangeEvent();\n }\n\n return true;\n }\n\n /** @internal */\n public onAllRowsSelectionChange(event: CustomEvent): void {\n event.stopPropagation();\n\n if (this.ignoreSelectionChangeEvents) {\n return;\n }\n\n this.table.toggleAllRowsSelected(this.selectionCheckbox!.checked);\n void this.emitSelectionChangeEvent();\n }\n\n /** @internal */\n public onRowActionMenuBeforeToggle(\n rowIndex: number,\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): void {\n event.stopImmediatePropagation();\n void this.handleActionMenuBeforeToggleEvent(rowIndex, event);\n }\n\n /** @internal */\n public onRowActionMenuToggle(\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): void {\n event.stopImmediatePropagation();\n void this.handleRowActionMenuToggleEvent(event);\n }\n\n /** @internal */\n public handleCollapseAllRows(): void {\n this.expansionManager.collapseAll();\n }\n\n /** @internal */\n public onRightDividerMouseDown(\n event: MouseEvent,\n columnIndex: number\n ): void {\n if (event.button === 0) {\n this.layoutManager.beginColumnInteractiveSize(\n event.clientX,\n this.getRightDividerIndex(columnIndex)\n );\n }\n }\n\n /** @internal */\n public onLeftDividerMouseDown(\n event: MouseEvent,\n columnIndex: number\n ): void {\n if (event.button === 0) {\n this.layoutManager.beginColumnInteractiveSize(\n event.clientX,\n this.getLeftDividerIndex(columnIndex)\n );\n }\n }\n\n /** @internal */\n public getLeftDividerIndex(columnIndex: number): number {\n return columnIndex * 2 - 1;\n }\n\n /** @internal */\n public getRightDividerIndex(columnIndex: number): number {\n return columnIndex * 2;\n }\n\n /** @internal */\n public handleGroupRowExpanded(rowIndex: number, event: Event): void {\n this.toggleRowExpanded(rowIndex);\n event.stopPropagation();\n }\n\n /** @internal */\n public handleRowExpanded(rowIndex: number): void {\n this.toggleRowExpanded(rowIndex);\n }\n\n /**\n * @internal\n */\n public toggleColumnSort(\n column: TableColumn,\n allowMultiSort: boolean\n ): void {\n if (column.columnInternals.sortingDisabled) {\n return;\n }\n\n const allSortedColumns = this.getColumnsParticipatingInSorting().sort(\n (x, y) => x.columnInternals.currentSortIndex!\n - y.columnInternals.currentSortIndex!\n );\n\n const columnIndex = allSortedColumns.indexOf(column);\n const columnAlreadySorted = columnIndex > -1;\n\n const oldSortDirection = column.columnInternals.currentSortDirection;\n let newSortDirection: TableColumnSortDirection = TableColumnSortDirection.ascending;\n\n if (columnAlreadySorted) {\n if (oldSortDirection === TableColumnSortDirection.descending) {\n allSortedColumns.splice(columnIndex, 1);\n newSortDirection = TableColumnSortDirection.none;\n column.columnInternals.currentSortIndex = undefined;\n } else {\n newSortDirection = TableColumnSortDirection.descending;\n }\n } else {\n allSortedColumns.push(column);\n }\n column.columnInternals.currentSortDirection = newSortDirection;\n\n for (let i = 0; i < allSortedColumns.length; i++) {\n const currentColumn = allSortedColumns[i]!;\n if (allowMultiSort) {\n allSortedColumns[i]!.columnInternals.currentSortIndex = i;\n } else if (currentColumn === column) {\n currentColumn.columnInternals.currentSortIndex = 0;\n } else {\n currentColumn.columnInternals.currentSortIndex = undefined;\n currentColumn.columnInternals.currentSortDirection = TableColumnSortDirection.none;\n }\n }\n\n this.emitColumnConfigurationChangeEvent();\n }\n\n /**\n * @internal\n */\n public update(): void {\n this.validate();\n if (this.tableUpdateTracker.requiresTanStackUpdate) {\n this.updateTanStack();\n }\n\n if (this.tableUpdateTracker.updateActionMenuSlots) {\n this.updateActionMenuSlots();\n }\n\n if (this.tableUpdateTracker.updateColumnWidths) {\n this.rowGridColumns = this.layoutManager.getGridTemplateColumns();\n this.visibleColumns = this.columns.filter(\n column => !column.columnHidden\n );\n }\n }\n\n public override get ariaMultiSelectable(): 'true' | 'false' | null {\n switch (this.selectionMode) {\n case TableRowSelectionMode.multiple:\n return 'true';\n case TableRowSelectionMode.single:\n return 'false';\n default:\n return null;\n }\n }\n\n /**\n * @internal\n */\n public getHeaderContainerElements(): NodeListOf<Element> {\n return this.columnHeadersContainer.querySelectorAll(\n '.header-container'\n );\n }\n\n /**\n * @internal\n */\n public calculateTanStackData(\n data: readonly TData[]\n ): Partial<TanStackTableOptionsResolved<TableNode<TData>>> {\n this.dataHierarchyManager = new DataHierarchyManager(\n data,\n this.idFieldName,\n this.parentIdFieldName\n );\n const tableNodes = this.dataHierarchyManager.hierarchicalData;\n this.tableValidator.setParentIdConfigurationValidity(\n this.dataHierarchyManager.parentIdConfigurationValid\n );\n const tanStackUpdates: Partial<\n TanStackTableOptionsResolved<TableNode<TData>>\n > = {\n data: tableNodes\n };\n this.validateWithData(data);\n if (this.tableValidator.areRecordIdsValid()) {\n // Update the selection state to remove previously selected records that no longer exist in the\n // data set while maintaining the selection state of records that still exist in the data set.\n const previousSelection = this.selectionManager.getCurrentSelectedRecordIds();\n tanStackUpdates.state = {\n rowSelection:\n this.calculateTanStackSelectionState(previousSelection),\n // Reset the TanStack expanded state to \"true\" to clear TanStack's cache of expanded state that may include\n // rows that no longer exist in the table. The nimble table's expansion manager tracks the expanded\n // state of each row, so no state is lost by resetting TanStack.\n expanded: true\n };\n }\n return tanStackUpdates;\n }\n\n protected selectionModeChanged(\n _prev: string | undefined,\n _next: string | undefined\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.tableUpdateTracker.trackSelectionModeChanged();\n }\n\n protected idFieldNameChanged(\n _prev: string | undefined,\n _next: string | undefined\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.tableUpdateTracker.trackIdFieldNameChanged();\n }\n\n protected parentIdFieldNameChanged(\n _prev: string | undefined,\n _next: string | undefined\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.tableUpdateTracker.trackParentIdFieldNameChanged();\n }\n\n protected columnsChanged(\n _prev: TableColumn[] | undefined,\n _next: TableColumn[]\n ): void {\n if (!this.$fastController.isConnected) {\n return;\n }\n\n this.observeColumns();\n this.tableUpdateTracker.trackColumnInstancesChanged();\n }\n\n private async handleActionMenuBeforeToggleEvent(\n rowIndex: number,\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): Promise<void> {\n const selectionChanged = this.selectionManager.handleActionMenuOpening(\n this.tableData[rowIndex]\n );\n if (selectionChanged) {\n await this.emitSelectionChangeEvent();\n }\n\n this.openActionMenuRecordId = event.detail.recordIds[0];\n const detail = await this.getActionMenuToggleEventDetail(event);\n this.$emit('action-menu-beforetoggle', detail);\n }\n\n private async handleRowActionMenuToggleEvent(\n event: CustomEvent<TableActionMenuToggleEventDetail>\n ): Promise<void> {\n const detail = await this.getActionMenuToggleEventDetail(event);\n this.$emit('action-menu-toggle', detail);\n if (!event.detail.newState) {\n this.openActionMenuRecordId = undefined;\n }\n }\n\n private async getActionMenuToggleEventDetail(\n originalEvent: CustomEvent<TableActionMenuToggleEventDetail>\n ): Promise<TableActionMenuToggleEventDetail> {\n const recordIds = this.selectionMode === TableRowSelectionMode.multiple\n ? await this.getSelectedRecordIds()\n : [this.openActionMenuRecordId!];\n return {\n ...originalEvent.detail,\n recordIds\n };\n }\n\n private readonly onViewPortScroll = (event: Event): void => {\n this.scrollX = (event.target as HTMLElement).scrollLeft;\n };\n\n private readonly onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === keyShift) {\n this.documentShiftKeyDown = true;\n }\n };\n\n private readonly onKeyUp = (event: KeyboardEvent): void => {\n if (event.key === keyShift) {\n this.documentShiftKeyDown = false;\n }\n };\n\n private removeColumnObservers(): void {\n this.columnNotifiers.forEach(notifier => {\n notifier.unsubscribe(this);\n });\n this.columnNotifiers = [];\n }\n\n private initialize(): void {\n if (this.isInitialized) {\n // The table is already initialized. There is nothing more to do.\n return;\n }\n\n this.isInitialized = true;\n // Initialize the controller to ensure that FAST functionality such as Observables work as expected.\n this.$fastController.onConnectedCallback();\n this.tableUpdateTracker.trackAllStateChanged();\n this.observeColumns();\n }\n\n private async processPendingUpdates(): Promise<void> {\n this.initialize();\n await DOM.nextUpdate();\n\n if (this.tableUpdateTracker.hasPendingUpdates) {\n throw new Error('Expected pending updates to be resolved');\n }\n }\n\n private observeColumns(): void {\n this.removeColumnObservers();\n\n for (const column of this.columns) {\n const notifier = Observable.getNotifier(column);\n notifier.subscribe(this);\n this.columnNotifiers.push(notifier);\n const notifierInternals = Observable.getNotifier(\n column.columnInternals\n );\n notifierInternals.subscribe(this);\n this.columnNotifiers.push(notifierInternals);\n const validatorNotifier = Observable.getNotifier(\n column.columnInternals.validator\n );\n validatorNotifier.subscribe(this);\n this.columnNotifiers.push(validatorNotifier);\n }\n }\n\n private getColumnsParticipatingInSorting(): TableColumn[] {\n return this.columns.filter(\n x => !x.columnInternals.sortingDisabled\n && x.columnInternals.currentSortDirection\n !== TableColumnSortDirection.none\n && typeof x.columnInternals.currentSortIndex === 'number'\n );\n }\n\n private getColumnsParticipatingInGrouping(): TableColumn[] {\n return this.columns.filter(\n x => !x.columnInternals.groupingDisabled\n && typeof x.columnInternals.groupIndex === 'number'\n );\n }\n\n private childItemsChanged(): void {\n void this.updateColumnsFromChildItems();\n }\n\n private async updateColumnsFromChildItems(): Promise<void> {\n await waitUntilCustomElementsDefinedAsync(this.childItems);\n this.columns = this.childItems.filter(\n (x): x is TableColumn => x instanceof TableColumn\n );\n }\n\n private updateTanStack(): void {\n const updatedOptions: Partial<\n TanStackTableOptionsResolved<TableNode<TData>>\n > = {};\n updatedOptions.state = {};\n\n if (this.tableUpdateTracker.updateColumnSort) {\n updatedOptions.state.sorting = this.calculateTanStackSortState();\n }\n if (this.tableUpdateTracker.updateColumnDefinition) {\n updatedOptions.columns = this.calculateTanStackColumns();\n }\n if (this.tableUpdateTracker.updateRowIds) {\n updatedOptions.getRowId = this.calculateTanStackRowIdFunction();\n updatedOptions.state.rowSelection = {};\n this.selectionManager.handleSelectionReset();\n this.expansionManager.resetHierarchyOptions();\n }\n if (this.tableUpdateTracker.updateRowParentIds) {\n this.expansionManager.setHierarchyEnabled(\n this.isHierarchyEnabled()\n );\n }\n if (this.tableUpdateTracker.updateSelectionMode) {\n updatedOptions.enableMultiRowSelection = this.selectionMode === TableRowSelectionMode.multiple;\n updatedOptions.enableSubRowSelection = this.selectionMode === TableRowSelectionMode.multiple;\n updatedOptions.state.rowSelection = {};\n this.selectionManager.handleSelectionModeChanged(\n this.selectionMode\n );\n }\n if (\n this.dataHierarchyManager\n && this.tableUpdateTracker.requiresTanStackDataReset\n ) {\n if (\n !this.parentIdFieldName\n && !this.tableUpdateTracker.updateRowParentIds\n ) {\n // Perform a shallow copy of the data to trigger tanstack to regenerate the row models and columns.\n updatedOptions.data = [...this.table.options.data];\n } else {\n const orderedRecords = this.dataHierarchyManager.getAllRecords(true);\n const tanstackUpdates = this.calculateTanStackData(orderedRecords);\n if (tanstackUpdates.state) {\n updatedOptions.state.rowSelection = tanstackUpdates.state.rowSelection;\n }\n updatedOptions.data = tanstackUpdates.data;\n }\n }\n\n if (this.tableUpdateTracker.updateGroupRows) {\n updatedOptions.state.grouping = this.calculateTanStackGroupingState();\n }\n\n if (\n this.tableUpdateTracker.updateRowIds\n || this.tableUpdateTracker.updateRowParentIds\n || this.tableUpdateTracker.updateGroupRows\n ) {\n updatedOptions.state.expanded = true;\n this.expansionManager.resetExpansionState();\n }\n\n this.updateTableOptions(updatedOptions);\n }\n\n private updateActionMenuSlots(): void {\n const slots = new Set<string>();\n for (const column of this.columns) {\n if (column.actionMenuSlot) {\n slots.add(column.actionMenuSlot);\n }\n }\n this.actionMenuSlots = Array.from(slots);\n }\n\n private validate(): void {\n this.tableValidator.validateIdFieldConfiguration(\n this.selectionMode,\n this.idFieldName,\n this.parentIdFieldName\n );\n this.tableValidator.validateColumnIds(\n this.columns.map(x => x.columnId)\n );\n this.tableValidator.validateColumnSortIndices(\n this.getColumnsParticipatingInSorting().map(\n x => x.columnInternals.currentSortIndex!\n )\n );\n this.tableValidator.validateColumnGroupIndices(\n this.getColumnsParticipatingInGrouping().map(\n x => x.columnInternals.groupIndex!\n )\n );\n this.tableValidator.validateColumnConfigurations(this.columns);\n if (this.dataHierarchyManager) {\n this.validateWithData(this.dataHierarchyManager.getAllRecords());\n }\n }\n\n private validateWithData(data: readonly TData[]): void {\n this.tableValidator.validateRecordIds(data, this.idFieldName);\n this.canRenderRows = this.checkValidity();\n }\n\n private emitColumnConfigurationChangeEvent(): void {\n const detail: TableColumnConfigurationChangeEventDetail = {\n columns: this.columns.map(column => ({\n columnId: column.columnId,\n sortIndex: column.columnInternals.currentSortIndex ?? undefined,\n sortDirection: column.columnInternals.currentSortDirection,\n groupIndex: column.columnInternals.groupIndex,\n hidden: column.columnHidden,\n fractionalWidth: column.columnInternals.currentFractionalWidth,\n pixelWidth: column.columnInternals.currentPixelWidth\n }))\n };\n this.$emit('column-configuration-change', detail);\n }\n\n private async emitSelectionChangeEvent(): Promise<void> {\n const detail: TableRowSelectionEventDetail = {\n selectedRecordIds: await this.getSelectedRecordIds()\n };\n\n this.$emit('selection-change', detail);\n }\n\n private selectionStateChanged(): void {\n this.setSelectionCheckboxState();\n }\n\n private selectionCheckboxChanged(): void {\n this.setSelectionCheckboxState();\n }\n\n private setSelectionCheckboxState(): void {\n if (this.selectionCheckbox) {\n this.ignoreSelectionChangeEvents = true;\n this.selectionCheckbox.checked = this.selectionState === TableRowSelectionState.selected;\n this.selectionCheckbox.indeterminate = this.selectionState\n === TableRowSelectionState.partiallySelected;\n this.ignoreSelectionChangeEvents = false;\n }\n }\n\n private isHierarchyEnabled(): boolean {\n return typeof this.parentIdFieldName === 'string';\n }\n\n private refreshRows(): void {\n this.selectionState = this.getTableSelectionState();\n\n let hasDataHierarchy = false;\n const rows = this.table.getRowModel().rows;\n this.tableData = rows.map(row => {\n const isGroupRow = row.getIsGrouped();\n const hasParentRow = isGroupRow ? false : row.getParentRow();\n const isParent = !isGroupRow && this.getRowCanExpand(row);\n const isChildOfGroupRowWithNoHierarchy = !isGroupRow\n && !isParent\n && !hasParentRow\n && row.depth > 0\n && !this.parentIdFieldName;\n const rowState: TableRowState<TData> = {\n record: row.original.clientRecord,\n id: row.id,\n selectionState: this.getRowSelectionState(row),\n isGroupRow,\n isExpanded: row.getIsExpanded(),\n groupRowValue: isGroupRow\n ? row.getValue(row.groupingColumnId!)\n : undefined,\n nestingLevel: isChildOfGroupRowWithNoHierarchy\n ? row.depth - 1\n : row.depth,\n isParentRow: isParent,\n immediateChildCount: row.subRows.length,\n groupColumn: this.getGroupRowColumn(row),\n isLoadingChildren: this.expansionManager.isLoadingChildren(\n row.id\n )\n };\n hasDataHierarchy = hasDataHierarchy || isParent;\n return rowState;\n });\n this.showCollapseAll = hasDataHierarchy\n || this.getColumnsParticipatingInGrouping().length > 0;\n this.virtualizer.dataChanged();\n }\n\n private getTableSelectionState(): TableRowSelectionState {\n if (this.table.getIsAllRowsSelected()) {\n return TableRowSelectionState.selected;\n }\n if (this.table.getIsSomeRowsSelected()) {\n return TableRowSelectionState.partiallySelected;\n }\n return TableRowSelectionState.notSelected;\n }\n\n private getRowSelectionState(\n row: TanStackRow<TableNode<TData>>\n ): TableRowSelectionState {\n if (row.getIsGrouped()) {\n return this.getGroupedRowSelectionState(row);\n }\n\n return row.getIsSelected()\n ? TableRowSelectionState.selected\n : TableRowSelectionState.notSelected;\n }\n\n private getGroupedRowSelectionState(\n groupedRow: TanStackRow<TableNode<TData>>\n ): TableRowSelectionState {\n const leafRows = groupedRow.getLeafRows().filter(x => !x.getIsGrouped()) ?? [];\n let foundSelectedRow = false;\n let foundNotSelectedRow = false;\n for (const row of leafRows) {\n if (row.getIsSelected()) {\n foundSelectedRow = true;\n } else {\n foundNotSelectedRow = true;\n }\n\n if (foundSelectedRow && foundNotSelectedRow) {\n return TableRowSelectionState.partiallySelected;\n }\n }\n\n return foundSelectedRow\n ? TableRowSelectionState.selected\n : TableRowSelectionState.notSelected;\n }\n\n private getGroupRowColumn(\n row: TanStackRow<TableNode<TData>>\n ): TableColumn | undefined {\n const groupedId = row.groupingColumnId;\n if (groupedId !== undefined) {\n return this.columns.find(\n c => c.columnInternals.uniqueId === groupedId\n );\n }\n\n return undefined;\n }\n\n private updateTableOptions(\n updatedOptions: Partial<TanStackTableOptionsResolved<TableNode<TData>>>\n ): void {\n this.options = {\n ...this.options,\n ...updatedOptions,\n state: { ...this.options.state, ...updatedOptions.state }\n };\n this.table.setOptions(this.options);\n if (updatedOptions.data && this.tableValidator.areRecordIdsValid()) {\n const rows = this.table.getRowModel().flatRows;\n this.expansionManager.processDataUpdate(rows);\n }\n this.refreshRows();\n }\n\n private readonly getRowCanExpand = (\n row: TanStackRow<TableNode<TData>>\n ): boolean => {\n return this.expansionManager.isRowExpandable(row);\n };\n\n private readonly getIsRowExpanded = (\n row: TanStackRow<TableNode<TData>>\n ): boolean => {\n return this.expansionManager.isRowExpanded(row);\n };\n\n private readonly handleRowSelectionChange: TanStackOnChangeFn<TanStackRowSelectionState> = (updaterOrValue: TanStackUpdater<TanStackRowSelectionState>): void => {\n const rowSelectionState = updaterOrValue instanceof Function\n ? updaterOrValue(this.table.getState().rowSelection)\n : updaterOrValue;\n\n this.updateTableOptions({\n state: {\n rowSelection: rowSelectionState\n }\n });\n };\n\n private readonly handleExpandedChange: TanStackOnChangeFn<TanStackExpandedState> = (updaterOrValue: TanStackUpdater<TanStackExpandedState>): void => {\n const expandedState = updaterOrValue instanceof Function\n ? updaterOrValue(this.table.getState().expanded)\n : updaterOrValue;\n\n this.updateTableOptions({\n state: {\n expanded: expandedState\n }\n });\n };\n\n private toggleRowExpanded(rowIndex: number): void {\n const rows = this.table.getRowModel().rows;\n const row = rows[rowIndex]!;\n this.expansionManager.toggleRowExpansion(row);\n }\n\n private calculateTanStackSortState(): TanStackSortingState {\n const sortedColumns = this.getColumnsParticipatingInSorting().sort(\n (x, y) => x.columnInternals.currentSortIndex!\n - y.columnInternals.currentSortIndex!\n );\n this.firstSortedColumn = sortedColumns.length\n ? sortedColumns[0]\n : undefined;\n\n return sortedColumns.map(column => {\n return {\n id: column.columnInternals.uniqueId,\n desc:\n column.columnInternals.currentSortDirection\n === TableColumnSortDirection.descending\n };\n });\n }\n\n private calculateTanStackGroupingState(): TanStackGroupingState {\n const groupedColumns = this.getColumnsParticipatingInGrouping().sort(\n (x, y) => x.columnInternals.groupIndex! - y.columnInternals.groupIndex!\n );\n\n return groupedColumns.map(column => column.columnInternals.uniqueId);\n }\n\n private calculateTanStackRowIdFunction():\n | ((\n originalRow: TableNode<TData>,\n index: number,\n parent?: TanStackRow<TableNode<TData>>\n ) => string)\n | undefined {\n return this.idFieldName === null || this.idFieldName === undefined\n ? undefined\n : (record: TableNode<TData>) => record.clientRecord[this.idFieldName!] as string;\n }\n\n private calculateTanStackColumns(): TanStackColumnDef<TableNode<TData>>[] {\n return this.columns.map(column => {\n return {\n id: column.columnInternals.uniqueId,\n accessorFn: (record: TableNode<TData>): TableFieldValue => {\n const fieldName = column.columnInternals.operandDataRecordFieldName;\n if (typeof fieldName !== 'string') {\n return undefined;\n }\n return record.clientRecord[fieldName];\n },\n sortingFn: getTanStackSortingFunction(\n column.columnInternals.sortOperation\n ),\n sortUndefined: false\n };\n });\n }\n\n private calculateTanStackSelectionState(\n recordIdsToSelect: readonly string[]\n ): TanStackRowSelectionState {\n if (this.selectionMode === TableRowSelectionMode.none) {\n return {};\n }\n\n const tanstackSelectionState: TanStackRowSelectionState = {};\n const selectableRecordIds = this.tableValidator.getPresentRecordIds(recordIdsToSelect);\n for (const recordId of selectableRecordIds) {\n tanstackSelectionState[recordId] = true;\n\n if (this.selectionMode === TableRowSelectionMode.single) {\n // In single selection mode, only select the first record ID that is requested\n break;\n }\n }\n\n return tanstackSelectionState;\n }\n}\n\nconst nimbleTable = Table.compose({\n baseName: 'table',\n template,\n styles\n});\n\nDesignSystem.getOrCreate().withPrefix('nimble').register(nimbleTable());\nexport const tableTag = 'nimble-table';\n"]}
@@ -84,8 +84,7 @@ export class TableUpdateTracker extends UpdateTracker {
84
84
  else if (isColumnInternalsProperty(changedColumnProperty, 'operandDataRecordFieldName', 'sortOperation')) {
85
85
  this.track('columnDefinition');
86
86
  }
87
- else if (isColumnProperty(changedColumnProperty, 'sortingDisabled')
88
- || isColumnInternalsProperty(changedColumnProperty, 'currentSortDirection', 'currentSortIndex')) {
87
+ else if (isColumnInternalsProperty(changedColumnProperty, 'sortingDisabled', 'currentSortDirection', 'currentSortIndex')) {
89
88
  this.track('columnSort');
90
89
  }
91
90
  else if (isColumnProperty(changedColumnProperty, 'columnHidden')
@@ -1 +1 @@
1
- {"version":3,"file":"table-update-tracker.js","sourceRoot":"","sources":["../../../../src/table/models/table-update-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { DOM } from '@microsoft/fast-element';\nimport type { Table } from '..';\nimport type { TableColumn } from '../../table-column/base';\nimport type { TableRecord } from '../types';\nimport { UpdateTracker } from '../../utilities/models/update-tracker';\nimport { isColumnInternalsProperty } from '../../table-column/base/models/column-internals';\n\nconst isColumnProperty = (\n changedProperty: string,\n ...args: (keyof TableColumn)[]\n): boolean => {\n for (const arg of args) {\n if (changedProperty === arg) {\n return true;\n }\n }\n return false;\n};\n\nconst trackedItems = [\n 'rowIds',\n 'rowParentIds',\n 'groupRows',\n 'columnIds',\n 'columnSort',\n 'columnWidths',\n 'columnDefinition',\n 'actionMenuSlots',\n 'selectionMode'\n] as const;\n\n/**\n * Helper class to track what updates are needed to the table based on configuration\n * changes.\n */\nexport class TableUpdateTracker<\n TData extends TableRecord\n> extends UpdateTracker<typeof trackedItems> {\n private updateQueued = false;\n\n public constructor(private readonly table: Table<TData>) {\n super(trackedItems);\n }\n\n public get updateRowIds(): boolean {\n return this.isTracked('rowIds');\n }\n\n public get updateRowParentIds(): boolean {\n return this.isTracked('rowParentIds');\n }\n\n public get updateGroupRows(): boolean {\n return this.isTracked('groupRows');\n }\n\n public get updateColumnIds(): boolean {\n return this.isTracked('columnIds');\n }\n\n public get updateColumnSort(): boolean {\n return this.isTracked('columnSort');\n }\n\n public get updateColumnWidths(): boolean {\n return this.isTracked('columnWidths');\n }\n\n public get updateColumnDefinition(): boolean {\n return this.isTracked('columnDefinition');\n }\n\n public get updateActionMenuSlots(): boolean {\n return this.isTracked('actionMenuSlots');\n }\n\n public get updateSelectionMode(): boolean {\n return this.isTracked('selectionMode');\n }\n\n public get requiresTanStackUpdate(): boolean {\n return (\n this.isTracked('rowIds')\n || this.isTracked('rowParentIds')\n || this.isTracked('columnSort')\n || this.isTracked('columnDefinition')\n || this.isTracked('groupRows')\n || this.isTracked('selectionMode')\n );\n }\n\n public get requiresTanStackDataReset(): boolean {\n return (\n this.isTracked('rowIds')\n || this.isTracked('columnDefinition')\n || this.isTracked('rowParentIds')\n );\n }\n\n public trackAllStateChanged(): void {\n this.trackAll();\n this.queueUpdate();\n }\n\n public get hasPendingUpdates(): boolean {\n return this.updateQueued;\n }\n\n public trackColumnPropertyChanged(changedColumnProperty: string): void {\n if (isColumnProperty(changedColumnProperty, 'columnId')) {\n this.track('columnIds');\n } else if (\n isColumnInternalsProperty(\n changedColumnProperty,\n 'operandDataRecordFieldName',\n 'sortOperation'\n )\n ) {\n this.track('columnDefinition');\n } else if (\n isColumnProperty(changedColumnProperty, 'sortingDisabled')\n || isColumnInternalsProperty(\n changedColumnProperty,\n 'currentSortDirection',\n 'currentSortIndex'\n )\n ) {\n this.track('columnSort');\n } else if (\n isColumnProperty(changedColumnProperty, 'columnHidden')\n || isColumnInternalsProperty(\n changedColumnProperty,\n 'currentFractionalWidth',\n 'currentPixelWidth',\n 'minPixelWidth',\n 'resizingDisabled'\n )\n ) {\n this.track('columnWidths');\n } else if (isColumnProperty(changedColumnProperty, 'actionMenuSlot')) {\n this.track('actionMenuSlots');\n } else if (\n isColumnInternalsProperty(\n changedColumnProperty,\n 'groupIndex',\n 'groupingDisabled'\n )\n ) {\n this.track('groupRows');\n }\n\n this.queueUpdate();\n }\n\n public trackColumnInstancesChanged(): void {\n this.track('columnIds');\n this.track('columnDefinition');\n this.track('columnSort');\n this.track('columnWidths');\n this.track('actionMenuSlots');\n this.track('groupRows');\n\n this.queueUpdate();\n }\n\n public trackIdFieldNameChanged(): void {\n this.track('rowIds');\n this.queueUpdate();\n }\n\n public trackParentIdFieldNameChanged(): void {\n this.track('rowParentIds');\n this.queueUpdate();\n }\n\n public trackSelectionModeChanged(): void {\n this.track('selectionMode');\n this.queueUpdate();\n }\n\n protected override queueUpdate(): void {\n if (!this.table.$fastController.isConnected) {\n return;\n }\n\n if (!this.updateQueued) {\n this.updateQueued = true;\n DOM.queueUpdate(() => {\n this.table.update();\n this.untrackAll();\n this.updateQueued = false;\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"table-update-tracker.js","sourceRoot":"","sources":["../../../../src/table/models/table-update-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { DOM } from '@microsoft/fast-element';\nimport type { Table } from '..';\nimport type { TableColumn } from '../../table-column/base';\nimport type { TableRecord } from '../types';\nimport { UpdateTracker } from '../../utilities/models/update-tracker';\nimport { isColumnInternalsProperty } from '../../table-column/base/models/column-internals';\n\nconst isColumnProperty = (\n changedProperty: string,\n ...args: (keyof TableColumn)[]\n): boolean => {\n for (const arg of args) {\n if (changedProperty === arg) {\n return true;\n }\n }\n return false;\n};\n\nconst trackedItems = [\n 'rowIds',\n 'rowParentIds',\n 'groupRows',\n 'columnIds',\n 'columnSort',\n 'columnWidths',\n 'columnDefinition',\n 'actionMenuSlots',\n 'selectionMode'\n] as const;\n\n/**\n * Helper class to track what updates are needed to the table based on configuration\n * changes.\n */\nexport class TableUpdateTracker<\n TData extends TableRecord\n> extends UpdateTracker<typeof trackedItems> {\n private updateQueued = false;\n\n public constructor(private readonly table: Table<TData>) {\n super(trackedItems);\n }\n\n public get updateRowIds(): boolean {\n return this.isTracked('rowIds');\n }\n\n public get updateRowParentIds(): boolean {\n return this.isTracked('rowParentIds');\n }\n\n public get updateGroupRows(): boolean {\n return this.isTracked('groupRows');\n }\n\n public get updateColumnIds(): boolean {\n return this.isTracked('columnIds');\n }\n\n public get updateColumnSort(): boolean {\n return this.isTracked('columnSort');\n }\n\n public get updateColumnWidths(): boolean {\n return this.isTracked('columnWidths');\n }\n\n public get updateColumnDefinition(): boolean {\n return this.isTracked('columnDefinition');\n }\n\n public get updateActionMenuSlots(): boolean {\n return this.isTracked('actionMenuSlots');\n }\n\n public get updateSelectionMode(): boolean {\n return this.isTracked('selectionMode');\n }\n\n public get requiresTanStackUpdate(): boolean {\n return (\n this.isTracked('rowIds')\n || this.isTracked('rowParentIds')\n || this.isTracked('columnSort')\n || this.isTracked('columnDefinition')\n || this.isTracked('groupRows')\n || this.isTracked('selectionMode')\n );\n }\n\n public get requiresTanStackDataReset(): boolean {\n return (\n this.isTracked('rowIds')\n || this.isTracked('columnDefinition')\n || this.isTracked('rowParentIds')\n );\n }\n\n public trackAllStateChanged(): void {\n this.trackAll();\n this.queueUpdate();\n }\n\n public get hasPendingUpdates(): boolean {\n return this.updateQueued;\n }\n\n public trackColumnPropertyChanged(changedColumnProperty: string): void {\n if (isColumnProperty(changedColumnProperty, 'columnId')) {\n this.track('columnIds');\n } else if (\n isColumnInternalsProperty(\n changedColumnProperty,\n 'operandDataRecordFieldName',\n 'sortOperation'\n )\n ) {\n this.track('columnDefinition');\n } else if (\n isColumnInternalsProperty(\n changedColumnProperty,\n 'sortingDisabled',\n 'currentSortDirection',\n 'currentSortIndex'\n )\n ) {\n this.track('columnSort');\n } else if (\n isColumnProperty(changedColumnProperty, 'columnHidden')\n || isColumnInternalsProperty(\n changedColumnProperty,\n 'currentFractionalWidth',\n 'currentPixelWidth',\n 'minPixelWidth',\n 'resizingDisabled'\n )\n ) {\n this.track('columnWidths');\n } else if (isColumnProperty(changedColumnProperty, 'actionMenuSlot')) {\n this.track('actionMenuSlots');\n } else if (\n isColumnInternalsProperty(\n changedColumnProperty,\n 'groupIndex',\n 'groupingDisabled'\n )\n ) {\n this.track('groupRows');\n }\n\n this.queueUpdate();\n }\n\n public trackColumnInstancesChanged(): void {\n this.track('columnIds');\n this.track('columnDefinition');\n this.track('columnSort');\n this.track('columnWidths');\n this.track('actionMenuSlots');\n this.track('groupRows');\n\n this.queueUpdate();\n }\n\n public trackIdFieldNameChanged(): void {\n this.track('rowIds');\n this.queueUpdate();\n }\n\n public trackParentIdFieldNameChanged(): void {\n this.track('rowParentIds');\n this.queueUpdate();\n }\n\n public trackSelectionModeChanged(): void {\n this.track('selectionMode');\n this.queueUpdate();\n }\n\n protected override queueUpdate(): void {\n if (!this.table.$fastController.isConnected) {\n return;\n }\n\n if (!this.updateQueued) {\n this.updateQueued = true;\n DOM.queueUpdate(() => {\n this.table.update();\n this.untrackAll();\n this.updateQueued = false;\n });\n }\n }\n}\n"]}
@@ -382,7 +382,7 @@ export class TablePageObject {
382
382
  }
383
383
  getSortedColumns() {
384
384
  return this.tableElement.columns
385
- .filter(x => !x.sortingDisabled
385
+ .filter(x => !x.columnInternals.sortingDisabled
386
386
  && typeof x.columnInternals.currentSortIndex === 'number'
387
387
  && x.columnInternals.currentSortDirection
388
388
  !== TableColumnSortDirection.none)