@ni/nimble-components 24.1.7 → 24.1.9

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 (83) hide show
  1. package/dist/all-components-bundle.js +102 -117
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +2560 -2557
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/src/table-column/anchor/index.d.ts +4 -3
  6. package/dist/esm/src/table-column/base/index.d.ts +4 -3
  7. package/dist/esm/src/table-column/base/models/column-internals.d.ts +10 -8
  8. package/dist/esm/src/table-column/base/models/column-validator.d.ts +2 -3
  9. package/dist/esm/src/table-column/base/template.d.ts +1 -1
  10. package/dist/esm/src/table-column/date-text/index.d.ts +26 -6
  11. package/dist/esm/src/table-column/date-text/models/table-column-date-text-validator.d.ts +1 -2
  12. package/dist/esm/src/table-column/duration-text/index.d.ts +27 -2
  13. package/dist/esm/src/table-column/enum-base/index.d.ts +1 -4
  14. package/dist/esm/src/table-column/enum-base/models/table-column-enum-base-validator.d.ts +1 -2
  15. package/dist/esm/src/table-column/enum-text/index.d.ts +3 -6
  16. package/dist/esm/src/table-column/enum-text/models/table-column-enum-text-validator.d.ts +1 -2
  17. package/dist/esm/src/table-column/icon/index.d.ts +3 -6
  18. package/dist/esm/src/table-column/icon/models/table-column-icon-validator.d.ts +1 -2
  19. package/dist/esm/src/table-column/mixins/fractional-width-column.d.ts +1 -1
  20. package/dist/esm/src/table-column/mixins/groupable-column.d.ts +1 -1
  21. package/dist/esm/src/table-column/number-text/index.d.ts +26 -6
  22. package/dist/esm/src/table-column/number-text/models/table-column-number-text-validator.d.ts +1 -2
  23. package/dist/esm/src/table-column/text/index.d.ts +26 -1
  24. package/dist/esm/src/table-column/text-base/index.d.ts +13 -11
  25. package/dist/esm/table/index.js +9 -6
  26. package/dist/esm/table/index.js.map +1 -1
  27. package/dist/esm/table/models/table-validator.js +1 -1
  28. package/dist/esm/table/models/table-validator.js.map +1 -1
  29. package/dist/esm/table-column/anchor/index.d.ts +4 -3
  30. package/dist/esm/table-column/anchor/index.js +3 -1
  31. package/dist/esm/table-column/anchor/index.js.map +1 -1
  32. package/dist/esm/table-column/base/index.d.ts +4 -3
  33. package/dist/esm/table-column/base/index.js +2 -2
  34. package/dist/esm/table-column/base/index.js.map +1 -1
  35. package/dist/esm/table-column/base/models/column-internals.d.ts +10 -8
  36. package/dist/esm/table-column/base/models/column-internals.js +1 -7
  37. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  38. package/dist/esm/table-column/base/models/column-validator.d.ts +2 -3
  39. package/dist/esm/table-column/base/models/column-validator.js +8 -3
  40. package/dist/esm/table-column/base/models/column-validator.js.map +1 -1
  41. package/dist/esm/table-column/base/template.d.ts +1 -1
  42. package/dist/esm/table-column/date-text/index.d.ts +26 -6
  43. package/dist/esm/table-column/date-text/index.js +6 -10
  44. package/dist/esm/table-column/date-text/index.js.map +1 -1
  45. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.d.ts +1 -2
  46. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.js +2 -2
  47. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.js.map +1 -1
  48. package/dist/esm/table-column/duration-text/index.d.ts +27 -2
  49. package/dist/esm/table-column/duration-text/index.js +5 -3
  50. package/dist/esm/table-column/duration-text/index.js.map +1 -1
  51. package/dist/esm/table-column/enum-base/index.d.ts +1 -4
  52. package/dist/esm/table-column/enum-base/index.js +2 -6
  53. package/dist/esm/table-column/enum-base/index.js.map +1 -1
  54. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.d.ts +1 -2
  55. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js +2 -2
  56. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js.map +1 -1
  57. package/dist/esm/table-column/enum-text/index.d.ts +3 -6
  58. package/dist/esm/table-column/enum-text/index.js +2 -7
  59. package/dist/esm/table-column/enum-text/index.js.map +1 -1
  60. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.d.ts +1 -2
  61. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js +2 -2
  62. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js.map +1 -1
  63. package/dist/esm/table-column/icon/index.d.ts +3 -6
  64. package/dist/esm/table-column/icon/index.js +2 -7
  65. package/dist/esm/table-column/icon/index.js.map +1 -1
  66. package/dist/esm/table-column/icon/models/table-column-icon-validator.d.ts +1 -2
  67. package/dist/esm/table-column/icon/models/table-column-icon-validator.js +2 -2
  68. package/dist/esm/table-column/icon/models/table-column-icon-validator.js.map +1 -1
  69. package/dist/esm/table-column/mixins/fractional-width-column.d.ts +1 -1
  70. package/dist/esm/table-column/mixins/groupable-column.d.ts +1 -1
  71. package/dist/esm/table-column/number-text/index.d.ts +26 -6
  72. package/dist/esm/table-column/number-text/index.js +10 -13
  73. package/dist/esm/table-column/number-text/index.js.map +1 -1
  74. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.d.ts +1 -2
  75. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.js +2 -2
  76. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.js.map +1 -1
  77. package/dist/esm/table-column/text/index.d.ts +26 -1
  78. package/dist/esm/table-column/text/index.js +5 -3
  79. package/dist/esm/table-column/text/index.js.map +1 -1
  80. package/dist/esm/table-column/text-base/index.d.ts +13 -11
  81. package/dist/esm/table-column/text-base/index.js +6 -2
  82. package/dist/esm/table-column/text-base/index.js.map +1 -1
  83. package/package.json +1 -1
@@ -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';\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 if (args === 'validConfiguration') {\n this.tableValidator.validateColumnConfigurations(this.columns);\n } else {\n this.tableUpdateTracker.trackColumnPropertyChanged(args);\n }\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 }\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.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"]}
@@ -108,7 +108,7 @@ export class TableValidator {
108
108
  return !this.duplicateGroupIndex;
109
109
  }
110
110
  validateColumnConfigurations(columns) {
111
- this.invalidColumnConfiguration = columns.some(x => !x.columnInternals.validConfiguration);
111
+ this.invalidColumnConfiguration = columns.some(x => !x.columnInternals.validator.isColumnValid);
112
112
  return !this.invalidColumnConfiguration;
113
113
  }
114
114
  getPresentRecordIds(requestedRecordIds) {
@@ -1 +1 @@
1
- {"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../../src/table/models/table-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TableColumn } from '../../table-column/base';\nimport {\n TableRecord,\n TableRowSelectionMode,\n TableSetRecordHierarchyOptions,\n TableValidity\n} from '../types';\n\n/**\n * Helper class for the nimble-table to validate that the table's configuration\n * is valid and report which aspects of the configuration are valid or invalid.\n */\nexport class TableValidator<TData extends TableRecord> {\n private duplicateRecordId = false;\n private missingRecordId = false;\n private invalidRecordId = false;\n private duplicateColumnId = false;\n private missingColumnId = false;\n private duplicateSortIndex = false;\n private duplicateGroupIndex = false;\n private idFieldNameNotConfigured = false;\n private invalidColumnConfiguration = false;\n private invalidParentIdConfiguration = false;\n\n private readonly recordIds = new Set<string>();\n\n public getValidity(): TableValidity {\n return {\n duplicateRecordId: this.duplicateRecordId,\n missingRecordId: this.missingRecordId,\n invalidRecordId: this.invalidRecordId,\n duplicateColumnId: this.duplicateColumnId,\n missingColumnId: this.missingColumnId,\n duplicateSortIndex: this.duplicateSortIndex,\n duplicateGroupIndex: this.duplicateGroupIndex,\n idFieldNameNotConfigured: this.idFieldNameNotConfigured,\n invalidColumnConfiguration: this.invalidColumnConfiguration,\n invalidParentIdConfiguration: this.invalidParentIdConfiguration\n };\n }\n\n public isValid(): boolean {\n return Object.values(this.getValidity()).every(x => x === false);\n }\n\n public areRecordIdsValid(): boolean {\n const validity = this.getValidity();\n return (\n !validity.duplicateRecordId\n && !validity.missingRecordId\n && !validity.invalidRecordId\n );\n }\n\n public validateIdFieldConfiguration(\n selectionMode: TableRowSelectionMode,\n idFieldName: string | undefined,\n parentIdFieldName: string | undefined\n ): boolean {\n const idFieldNameRequired = selectionMode !== TableRowSelectionMode.none\n || typeof parentIdFieldName === 'string';\n if (idFieldNameRequired) {\n this.idFieldNameNotConfigured = typeof idFieldName !== 'string';\n } else {\n this.idFieldNameNotConfigured = false;\n }\n return !this.idFieldNameNotConfigured;\n }\n\n public validateRecordIds(\n data: readonly TData[],\n idFieldName: string | undefined\n ): boolean {\n // Start off by assuming all IDs are valid.\n this.duplicateRecordId = false;\n this.missingRecordId = false;\n this.invalidRecordId = false;\n this.recordIds.clear();\n\n if (typeof idFieldName !== 'string') {\n return true;\n }\n\n for (const record of data) {\n if (!Object.prototype.hasOwnProperty.call(record, idFieldName)) {\n this.missingRecordId = true;\n continue;\n }\n\n const id = record[idFieldName];\n if (typeof id !== 'string') {\n this.invalidRecordId = true;\n continue;\n }\n\n if (this.recordIds.has(id)) {\n this.duplicateRecordId = true;\n }\n this.recordIds.add(id);\n }\n\n return (\n !this.missingRecordId\n && !this.invalidRecordId\n && !this.duplicateRecordId\n );\n }\n\n public validateColumnIds(\n columnIds: readonly (string | undefined)[]\n ): boolean {\n this.missingColumnId = false;\n this.duplicateColumnId = false;\n\n const anyColumnsHaveIds = columnIds.some(id => id);\n\n if (!anyColumnsHaveIds) {\n return true;\n }\n\n const idSet = new Set<string>();\n for (const columnId of columnIds) {\n if (!columnId) {\n this.missingColumnId = true;\n continue;\n }\n\n if (idSet.has(columnId)) {\n this.duplicateColumnId = true;\n }\n idSet.add(columnId);\n }\n\n return !this.missingColumnId && !this.duplicateColumnId;\n }\n\n public validateColumnSortIndices(sortIndices: readonly number[]): boolean {\n this.duplicateSortIndex = !this.validateIndicesAreUnique(sortIndices);\n return !this.duplicateSortIndex;\n }\n\n public validateColumnGroupIndices(\n groupIndices: readonly number[]\n ): boolean {\n this.duplicateGroupIndex = !this.validateIndicesAreUnique(groupIndices);\n return !this.duplicateGroupIndex;\n }\n\n public validateColumnConfigurations(\n columns: readonly TableColumn[]\n ): boolean {\n this.invalidColumnConfiguration = columns.some(\n x => !x.columnInternals.validConfiguration\n );\n return !this.invalidColumnConfiguration;\n }\n\n public getPresentRecordIds(\n requestedRecordIds: readonly string[]\n ): string[] {\n return requestedRecordIds.filter(id => this.recordIds.has(id));\n }\n\n public getOptionsWithPresentIds(\n requestedOptions: readonly TableSetRecordHierarchyOptions[]\n ): TableSetRecordHierarchyOptions[] {\n return requestedOptions.filter(item => this.recordIds.has(item.recordId));\n }\n\n public setParentIdConfigurationValidity(valid: boolean): void {\n this.invalidParentIdConfiguration = !valid;\n }\n\n private validateIndicesAreUnique(indices: readonly number[]): boolean {\n const numberSet = new Set<number>(indices);\n return numberSet.size === indices.length;\n }\n}\n"]}
1
+ {"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../../src/table/models/table-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,qBAAqB,EAGxB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,MAAM,OAAO,cAAc;IAA3B;QACY,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,KAAK,CAAC;QACxB,oBAAe,GAAG,KAAK,CAAC;QACxB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,KAAK,CAAC;QACxB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,wBAAmB,GAAG,KAAK,CAAC;QAC5B,6BAAwB,GAAG,KAAK,CAAC;QACjC,+BAA0B,GAAG,KAAK,CAAC;QACnC,iCAA4B,GAAG,KAAK,CAAC;QAE5B,cAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAyJnD,CAAC;IAvJU,WAAW;QACd,OAAO;YACH,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;SAClE,CAAC;IACN,CAAC;IAEM,OAAO;QACV,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACrE,CAAC;IAEM,iBAAiB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,CACH,CAAC,QAAQ,CAAC,iBAAiB;eACxB,CAAC,QAAQ,CAAC,eAAe;eACzB,CAAC,QAAQ,CAAC,eAAe,CAC/B,CAAC;IACN,CAAC;IAEM,4BAA4B,CAC/B,aAAoC,EACpC,WAA+B,EAC/B,iBAAqC;QAErC,MAAM,mBAAmB,GAAG,aAAa,KAAK,qBAAqB,CAAC,IAAI;eACjE,OAAO,iBAAiB,KAAK,QAAQ,CAAC;QAC7C,IAAI,mBAAmB,EAAE;YACrB,IAAI,CAAC,wBAAwB,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC;SACnE;aAAM;YACH,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;SACzC;QACD,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAC1C,CAAC;IAEM,iBAAiB,CACpB,IAAsB,EACtB,WAA+B;QAE/B,2CAA2C;QAC3C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACjC,OAAO,IAAI,CAAC;SACf;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;gBAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,SAAS;aACZ;YAED,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,SAAS;aACZ;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1B;QAED,OAAO,CACH,CAAC,IAAI,CAAC,eAAe;eAClB,CAAC,IAAI,CAAC,eAAe;eACrB,CAAC,IAAI,CAAC,iBAAiB,CAC7B,CAAC;IACN,CAAC;IAEM,iBAAiB,CACpB,SAA0C;QAE1C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAC9B,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,SAAS;aACZ;YAED,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;YACD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACvB;QAED,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAEM,yBAAyB,CAAC,WAA8B;QAC3D,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACpC,CAAC;IAEM,0BAA0B,CAC7B,YAA+B;QAE/B,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACrC,CAAC;IAEM,4BAA4B,CAC/B,OAA+B;QAE/B,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAClD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC;IAC5C,CAAC;IAEM,mBAAmB,CACtB,kBAAqC;QAErC,OAAO,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,wBAAwB,CAC3B,gBAA2D;QAE3D,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEM,gCAAgC,CAAC,KAAc;QAClD,IAAI,CAAC,4BAA4B,GAAG,CAAC,KAAK,CAAC;IAC/C,CAAC;IAEO,wBAAwB,CAAC,OAA0B;QACvD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,OAAO,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;IAC7C,CAAC;CACJ","sourcesContent":["import type { TableColumn } from '../../table-column/base';\nimport {\n TableRecord,\n TableRowSelectionMode,\n TableSetRecordHierarchyOptions,\n TableValidity\n} from '../types';\n\n/**\n * Helper class for the nimble-table to validate that the table's configuration\n * is valid and report which aspects of the configuration are valid or invalid.\n */\nexport class TableValidator<TData extends TableRecord> {\n private duplicateRecordId = false;\n private missingRecordId = false;\n private invalidRecordId = false;\n private duplicateColumnId = false;\n private missingColumnId = false;\n private duplicateSortIndex = false;\n private duplicateGroupIndex = false;\n private idFieldNameNotConfigured = false;\n private invalidColumnConfiguration = false;\n private invalidParentIdConfiguration = false;\n\n private readonly recordIds = new Set<string>();\n\n public getValidity(): TableValidity {\n return {\n duplicateRecordId: this.duplicateRecordId,\n missingRecordId: this.missingRecordId,\n invalidRecordId: this.invalidRecordId,\n duplicateColumnId: this.duplicateColumnId,\n missingColumnId: this.missingColumnId,\n duplicateSortIndex: this.duplicateSortIndex,\n duplicateGroupIndex: this.duplicateGroupIndex,\n idFieldNameNotConfigured: this.idFieldNameNotConfigured,\n invalidColumnConfiguration: this.invalidColumnConfiguration,\n invalidParentIdConfiguration: this.invalidParentIdConfiguration\n };\n }\n\n public isValid(): boolean {\n return Object.values(this.getValidity()).every(x => x === false);\n }\n\n public areRecordIdsValid(): boolean {\n const validity = this.getValidity();\n return (\n !validity.duplicateRecordId\n && !validity.missingRecordId\n && !validity.invalidRecordId\n );\n }\n\n public validateIdFieldConfiguration(\n selectionMode: TableRowSelectionMode,\n idFieldName: string | undefined,\n parentIdFieldName: string | undefined\n ): boolean {\n const idFieldNameRequired = selectionMode !== TableRowSelectionMode.none\n || typeof parentIdFieldName === 'string';\n if (idFieldNameRequired) {\n this.idFieldNameNotConfigured = typeof idFieldName !== 'string';\n } else {\n this.idFieldNameNotConfigured = false;\n }\n return !this.idFieldNameNotConfigured;\n }\n\n public validateRecordIds(\n data: readonly TData[],\n idFieldName: string | undefined\n ): boolean {\n // Start off by assuming all IDs are valid.\n this.duplicateRecordId = false;\n this.missingRecordId = false;\n this.invalidRecordId = false;\n this.recordIds.clear();\n\n if (typeof idFieldName !== 'string') {\n return true;\n }\n\n for (const record of data) {\n if (!Object.prototype.hasOwnProperty.call(record, idFieldName)) {\n this.missingRecordId = true;\n continue;\n }\n\n const id = record[idFieldName];\n if (typeof id !== 'string') {\n this.invalidRecordId = true;\n continue;\n }\n\n if (this.recordIds.has(id)) {\n this.duplicateRecordId = true;\n }\n this.recordIds.add(id);\n }\n\n return (\n !this.missingRecordId\n && !this.invalidRecordId\n && !this.duplicateRecordId\n );\n }\n\n public validateColumnIds(\n columnIds: readonly (string | undefined)[]\n ): boolean {\n this.missingColumnId = false;\n this.duplicateColumnId = false;\n\n const anyColumnsHaveIds = columnIds.some(id => id);\n\n if (!anyColumnsHaveIds) {\n return true;\n }\n\n const idSet = new Set<string>();\n for (const columnId of columnIds) {\n if (!columnId) {\n this.missingColumnId = true;\n continue;\n }\n\n if (idSet.has(columnId)) {\n this.duplicateColumnId = true;\n }\n idSet.add(columnId);\n }\n\n return !this.missingColumnId && !this.duplicateColumnId;\n }\n\n public validateColumnSortIndices(sortIndices: readonly number[]): boolean {\n this.duplicateSortIndex = !this.validateIndicesAreUnique(sortIndices);\n return !this.duplicateSortIndex;\n }\n\n public validateColumnGroupIndices(\n groupIndices: readonly number[]\n ): boolean {\n this.duplicateGroupIndex = !this.validateIndicesAreUnique(groupIndices);\n return !this.duplicateGroupIndex;\n }\n\n public validateColumnConfigurations(\n columns: readonly TableColumn[]\n ): boolean {\n this.invalidColumnConfiguration = columns.some(\n x => !x.columnInternals.validator.isColumnValid\n );\n return !this.invalidColumnConfiguration;\n }\n\n public getPresentRecordIds(\n requestedRecordIds: readonly string[]\n ): string[] {\n return requestedRecordIds.filter(id => this.recordIds.has(id));\n }\n\n public getOptionsWithPresentIds(\n requestedOptions: readonly TableSetRecordHierarchyOptions[]\n ): TableSetRecordHierarchyOptions[] {\n return requestedOptions.filter(item => this.recordIds.has(item.recordId));\n }\n\n public setParentIdConfigurationValidity(valid: boolean): void {\n this.invalidParentIdConfiguration = !valid;\n }\n\n private validateIndicesAreUnique(indices: readonly number[]): boolean {\n const numberSet = new Set<number>(indices);\n return numberSet.size === indices.length;\n }\n}\n"]}
@@ -2,6 +2,7 @@ import { TableColumn } from '../base';
2
2
  import type { TableStringField } from '../../table/types';
3
3
  import type { AnchorAppearance } from '../../anchor/types';
4
4
  import type { ColumnInternalsOptions } from '../base/models/column-internals';
5
+ import { ColumnValidator } from '../base/models/column-validator';
5
6
  export type TableColumnAnchorCellRecord = TableStringField<'label' | 'href'>;
6
7
  export interface TableColumnAnchorColumnConfig {
7
8
  appearance: AnchorAppearance;
@@ -25,17 +26,17 @@ declare const TableColumnAnchor_base: (abstract new (...args: any[]) => {
25
26
  groupIndex?: number | null | undefined;
26
27
  groupingDisabledChanged(): void;
27
28
  groupIndexChanged(): void;
28
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
29
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
29
30
  }) & (abstract new (...args: any[]) => {
30
31
  fractionalWidth?: number | null | undefined;
31
32
  minPixelWidth?: number | null | undefined;
32
33
  fractionalWidthChanged(): void;
33
34
  minPixelWidthChanged(): void;
34
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
35
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
35
36
  }) & (abstract new (...args: any[]) => {
36
37
  placeholder?: string | undefined;
37
38
  placeholderChanged(): void;
38
- }) & ((abstract new () => TableColumn<TableColumnAnchorColumnConfig>) & {
39
+ }) & ((abstract new () => TableColumn<TableColumnAnchorColumnConfig, ColumnValidator<[]>>) & {
39
40
  compose<T extends import("@microsoft/fast-foundation").FoundationElementDefinition = import("@microsoft/fast-foundation").FoundationElementDefinition, K extends import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement> = import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>(this: K, elementDefinition: T): (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<T> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<T, K>;
40
41
  from<TBase extends {
41
42
  new (): HTMLElement;
@@ -10,6 +10,7 @@ import { mixinGroupableColumnAPI } from '../mixins/groupable-column';
10
10
  import { mixinColumnWithPlaceholderAPI } from '../mixins/placeholder';
11
11
  import { tableColumnAnchorCellViewTag } from './cell-view';
12
12
  import { tableColumnTextGroupHeaderViewTag } from '../text/group-header-view';
13
+ import { ColumnValidator } from '../base/models/column-validator';
13
14
  /**
14
15
  * A table column for displaying links.
15
16
  */
@@ -27,7 +28,8 @@ export class TableColumnAnchor extends mixinGroupableColumnAPI(mixinFractionalWi
27
28
  cellViewTag: tableColumnAnchorCellViewTag,
28
29
  groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,
29
30
  delegatedEvents: ['click'],
30
- sortOperation: TableColumnSortOperation.localeAwareCaseSensitive
31
+ sortOperation: TableColumnSortOperation.localeAwareCaseSensitive,
32
+ validator: new ColumnValidator([])
31
33
  };
32
34
  }
33
35
  labelFieldNameChanged() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/anchor/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DesignSystem } from '@microsoft/fast-foundation';\nimport { attr } from '@microsoft/fast-element';\nimport { TableColumn } from '../base';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport { TableColumnSortOperation } from '../base/types';\nimport { mixinFractionalWidthColumnAPI } from '../mixins/fractional-width-column';\nimport { mixinGroupableColumnAPI } from '../mixins/groupable-column';\nimport { mixinColumnWithPlaceholderAPI } from '../mixins/placeholder';\nimport type { TableStringField } from '../../table/types';\nimport { tableColumnAnchorCellViewTag } from './cell-view';\nimport { tableColumnTextGroupHeaderViewTag } from '../text/group-header-view';\nimport type { AnchorAppearance } from '../../anchor/types';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\n\nexport type TableColumnAnchorCellRecord = TableStringField<'label' | 'href'>;\nexport interface TableColumnAnchorColumnConfig {\n appearance: AnchorAppearance;\n underlineHidden?: boolean;\n hreflang?: string;\n ping?: string;\n referrerpolicy?: string;\n rel?: string;\n target?: string;\n type?: string;\n download?: string;\n placeholder?: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-anchor': TableColumnAnchor;\n }\n}\n\n/**\n * A table column for displaying links.\n */\nexport class TableColumnAnchor extends mixinGroupableColumnAPI(\n mixinFractionalWidthColumnAPI(\n mixinColumnWithPlaceholderAPI(\n TableColumn<TableColumnAnchorColumnConfig>\n )\n )\n) {\n @attr({ attribute: 'label-field-name' })\n public labelFieldName?: string;\n\n @attr({ attribute: 'href-field-name' })\n public hrefFieldName?: string;\n\n @attr\n public appearance?: AnchorAppearance;\n\n @attr({ attribute: 'underline-hidden', mode: 'boolean' })\n public underlineHidden = false;\n\n @attr\n public hreflang?: string;\n\n @attr\n public ping?: string;\n\n @attr\n public referrerpolicy?: string;\n\n @attr\n public rel?: string;\n\n @attr\n public target?: string;\n\n @attr\n public type?: string;\n\n @attr\n public download?: string;\n\n public placeholderChanged(): void {\n this.updateColumnConfig();\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions {\n return {\n cellRecordFieldNames: ['label', 'href'],\n cellViewTag: tableColumnAnchorCellViewTag,\n groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,\n delegatedEvents: ['click'],\n sortOperation: TableColumnSortOperation.localeAwareCaseSensitive\n };\n }\n\n protected labelFieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [\n this.labelFieldName,\n this.hrefFieldName\n ] as const;\n this.columnInternals.operandDataRecordFieldName = this.labelFieldName;\n }\n\n protected hrefFieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [\n this.labelFieldName,\n this.hrefFieldName\n ] as const;\n }\n\n protected appearanceChanged(): void {\n this.updateColumnConfig();\n }\n\n protected underlineHiddenChanged(): void {\n this.updateColumnConfig();\n }\n\n protected hreflangChanged(): void {\n this.updateColumnConfig();\n }\n\n protected pingChanged(): void {\n this.updateColumnConfig();\n }\n\n protected referrerpolicyChanged(): void {\n this.updateColumnConfig();\n }\n\n protected relChanged(): void {\n this.updateColumnConfig();\n }\n\n protected targetChanged(): void {\n this.updateColumnConfig();\n }\n\n protected typeChanged(): void {\n this.updateColumnConfig();\n }\n\n protected downloadChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n this.columnInternals.columnConfig = {\n appearance: this.appearance,\n underlineHidden: this.underlineHidden,\n hreflang: this.hreflang,\n ping: this.ping,\n referrerpolicy: this.referrerpolicy,\n rel: this.rel,\n target: this.target,\n type: this.type,\n download: this.download,\n placeholder: this.placeholder\n };\n }\n}\n\nconst nimbleTableColumnAnchor = TableColumnAnchor.compose({\n baseName: 'table-column-anchor',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnAnchor());\nexport const tableColumnAnchorTag = 'nimble-table-column-anchor';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/anchor/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { DesignSystem } from '@microsoft/fast-foundation';\nimport { attr } from '@microsoft/fast-element';\nimport { TableColumn } from '../base';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport { TableColumnSortOperation } from '../base/types';\nimport { mixinFractionalWidthColumnAPI } from '../mixins/fractional-width-column';\nimport { mixinGroupableColumnAPI } from '../mixins/groupable-column';\nimport { mixinColumnWithPlaceholderAPI } from '../mixins/placeholder';\nimport type { TableStringField } from '../../table/types';\nimport { tableColumnAnchorCellViewTag } from './cell-view';\nimport { tableColumnTextGroupHeaderViewTag } from '../text/group-header-view';\nimport type { AnchorAppearance } from '../../anchor/types';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport { ColumnValidator } from '../base/models/column-validator';\n\nexport type TableColumnAnchorCellRecord = TableStringField<'label' | 'href'>;\nexport interface TableColumnAnchorColumnConfig {\n appearance: AnchorAppearance;\n underlineHidden?: boolean;\n hreflang?: string;\n ping?: string;\n referrerpolicy?: string;\n rel?: string;\n target?: string;\n type?: string;\n download?: string;\n placeholder?: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-anchor': TableColumnAnchor;\n }\n}\n\n/**\n * A table column for displaying links.\n */\nexport class TableColumnAnchor extends mixinGroupableColumnAPI(\n mixinFractionalWidthColumnAPI(\n mixinColumnWithPlaceholderAPI(\n TableColumn<TableColumnAnchorColumnConfig>\n )\n )\n) {\n @attr({ attribute: 'label-field-name' })\n public labelFieldName?: string;\n\n @attr({ attribute: 'href-field-name' })\n public hrefFieldName?: string;\n\n @attr\n public appearance?: AnchorAppearance;\n\n @attr({ attribute: 'underline-hidden', mode: 'boolean' })\n public underlineHidden = false;\n\n @attr\n public hreflang?: string;\n\n @attr\n public ping?: string;\n\n @attr\n public referrerpolicy?: string;\n\n @attr\n public rel?: string;\n\n @attr\n public target?: string;\n\n @attr\n public type?: string;\n\n @attr\n public download?: string;\n\n public placeholderChanged(): void {\n this.updateColumnConfig();\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions {\n return {\n cellRecordFieldNames: ['label', 'href'],\n cellViewTag: tableColumnAnchorCellViewTag,\n groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,\n delegatedEvents: ['click'],\n sortOperation: TableColumnSortOperation.localeAwareCaseSensitive,\n validator: new ColumnValidator<[]>([])\n };\n }\n\n protected labelFieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [\n this.labelFieldName,\n this.hrefFieldName\n ] as const;\n this.columnInternals.operandDataRecordFieldName = this.labelFieldName;\n }\n\n protected hrefFieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [\n this.labelFieldName,\n this.hrefFieldName\n ] as const;\n }\n\n protected appearanceChanged(): void {\n this.updateColumnConfig();\n }\n\n protected underlineHiddenChanged(): void {\n this.updateColumnConfig();\n }\n\n protected hreflangChanged(): void {\n this.updateColumnConfig();\n }\n\n protected pingChanged(): void {\n this.updateColumnConfig();\n }\n\n protected referrerpolicyChanged(): void {\n this.updateColumnConfig();\n }\n\n protected relChanged(): void {\n this.updateColumnConfig();\n }\n\n protected targetChanged(): void {\n this.updateColumnConfig();\n }\n\n protected typeChanged(): void {\n this.updateColumnConfig();\n }\n\n protected downloadChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n this.columnInternals.columnConfig = {\n appearance: this.appearance,\n underlineHidden: this.underlineHidden,\n hreflang: this.hreflang,\n ping: this.ping,\n referrerpolicy: this.referrerpolicy,\n rel: this.rel,\n target: this.target,\n type: this.type,\n download: this.download,\n placeholder: this.placeholder\n };\n }\n}\n\nconst nimbleTableColumnAnchor = TableColumnAnchor.compose({\n baseName: 'table-column-anchor',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnAnchor());\nexport const tableColumnAnchorTag = 'nimble-table-column-anchor';\n"]}
@@ -2,16 +2,17 @@ import { FoundationElement } from '@microsoft/fast-foundation';
2
2
  import { TableColumnSortDirection } from '../../table/types';
3
3
  import { ColumnInternals, ColumnInternalsOptions } from './models/column-internals';
4
4
  import type { TableColumnValidity } from './types';
5
+ import type { ColumnValidator } from './models/column-validator';
5
6
  /**
6
7
  * The base class for table columns
7
8
  */
8
- export declare abstract class TableColumn<TColumnConfig = unknown> extends FoundationElement {
9
+ export declare abstract class TableColumn<TColumnConfig = unknown, TColumnValidator extends ColumnValidator<[]> = ColumnValidator<[]>> extends FoundationElement {
9
10
  /**
10
11
  * @internal
11
12
  *
12
13
  * Column properties configurable by plugin authors
13
14
  */
14
- readonly columnInternals: ColumnInternals<TColumnConfig>;
15
+ readonly columnInternals: ColumnInternals<TColumnConfig, TColumnValidator>;
15
16
  columnId?: string;
16
17
  actionMenuSlot?: string;
17
18
  actionMenuLabel?: string;
@@ -28,7 +29,7 @@ export declare abstract class TableColumn<TColumnConfig = unknown> extends Found
28
29
  /** @internal */
29
30
  get headerTextContent(): string;
30
31
  connectedCallback(): void;
31
- protected abstract getColumnInternalsOptions(): ColumnInternalsOptions;
32
+ protected abstract getColumnInternalsOptions(): ColumnInternalsOptions<TColumnValidator>;
32
33
  protected sortDirectionChanged(): void;
33
34
  protected sortIndexChanged(): void;
34
35
  protected sortingDisabledChanged(): void;
@@ -22,10 +22,10 @@ export class TableColumn extends FoundationElement {
22
22
  this.hasOverflow = false;
23
23
  }
24
24
  checkValidity() {
25
- return this.columnInternals.validConfiguration;
25
+ return this.columnInternals.validator.isColumnValid;
26
26
  }
27
27
  get validity() {
28
- return {};
28
+ return this.columnInternals.validator.getValidity();
29
29
  }
30
30
  /** @internal */
31
31
  get headerTextContent() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EACJ,uBAAuB,EACvB,UAAU,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACH,eAAe,EAElB,MAAM,2BAA2B,CAAC;AAGnC;;GAEG;AACH,MAAM,OAAgB,WAEpB,SAAQ,iBAAiB;IAF3B;;QAGI;;;;WAIG;QACa,oBAAe,GAAmC,IAAI,eAAe,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAYjH,iBAAY,GAAG,KAAK,CAAC;QAMrB,kBAAa,GAA6B,wBAAwB,CAAC,IAAI,CAAC;QAGxE,oBAAe,GAAG,KAAK,CAAC;QAE/B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IAmD/B,CAAC;IA9CU,aAAa;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;IACnD,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,EAAE,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,WAAW;aAClB,aAAa,EAAE;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;aACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEe,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,oFAAoF;QACpF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAIS,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;SAClE;IACL,CAAC;IAES,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;SAC1D;IACL,CAAC;IAES,sBAAsB;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;YAC1E,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;SACrD;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/D,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;SAC1D;IACL,CAAC;CACJ;AAzEG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGzB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAG/B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGhC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAG5B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;8CACrC;AAGjC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;kDACyC;AAG/E;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oDAC1B;AAI/B;IADC,UAAU;gDACgB","sourcesContent":["import {\n attr,\n nullableNumberConverter,\n observable\n} from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { TableColumnSortDirection } from '../../table/types';\nimport {\n ColumnInternals,\n ColumnInternalsOptions\n} from './models/column-internals';\nimport type { TableColumnValidity } from './types';\n\n/**\n * The base class for table columns\n */\nexport abstract class TableColumn<\n TColumnConfig = unknown\n> extends FoundationElement {\n /**\n * @internal\n *\n * Column properties configurable by plugin authors\n */\n public readonly columnInternals: ColumnInternals<TColumnConfig> = new ColumnInternals(this.getColumnInternalsOptions());\n\n @attr({ attribute: 'column-id' })\n public columnId?: string;\n\n @attr({ attribute: 'action-menu-slot' })\n public actionMenuSlot?: string;\n\n @attr({ attribute: 'action-menu-label' })\n public actionMenuLabel?: string;\n\n @attr({ attribute: 'column-hidden', mode: 'boolean' })\n public columnHidden = false;\n\n @attr({ attribute: 'sort-index', converter: nullableNumberConverter })\n public sortIndex?: number | null;\n\n @attr({ attribute: 'sort-direction' })\n public sortDirection: TableColumnSortDirection = TableColumnSortDirection.none;\n\n @attr({ attribute: 'sorting-disabled', mode: 'boolean' })\n public sortingDisabled = false;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /** @internal */\n public contentSlot!: HTMLSlotElement;\n\n public checkValidity(): boolean {\n return this.columnInternals.validConfiguration;\n }\n\n public get validity(): TableColumnValidity {\n return {};\n }\n\n /** @internal */\n public get headerTextContent(): string {\n return this.contentSlot\n .assignedNodes()\n .map(node => node.textContent?.trim())\n .join(' ');\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n\n // Done here to enforce consistency across headers as they may have custom templates\n this.setAttribute('slot', this.columnInternals.uniqueId);\n }\n\n protected abstract getColumnInternalsOptions(): ColumnInternalsOptions;\n\n protected sortDirectionChanged(): void {\n if (!this.sortingDisabled) {\n this.columnInternals.currentSortDirection = this.sortDirection;\n }\n }\n\n protected sortIndexChanged(): void {\n if (!this.sortingDisabled) {\n this.columnInternals.currentSortIndex = this.sortIndex;\n }\n }\n\n protected sortingDisabledChanged(): void {\n if (this.sortingDisabled) {\n this.columnInternals.currentSortDirection = TableColumnSortDirection.none;\n this.columnInternals.currentSortIndex = undefined;\n } else {\n this.columnInternals.currentSortDirection = this.sortDirection;\n this.columnInternals.currentSortIndex = this.sortIndex;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EACJ,uBAAuB,EACvB,UAAU,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACH,eAAe,EAElB,MAAM,2BAA2B,CAAC;AAInC;;GAEG;AACH,MAAM,OAAgB,WAGpB,SAAQ,iBAAiB;IAH3B;;QAII;;;;WAIG;QACa,oBAAe,GAG3B,IAAI,eAAe,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAYnD,iBAAY,GAAG,KAAK,CAAC;QAMrB,kBAAa,GAA6B,wBAAwB,CAAC,IAAI,CAAC;QAGxE,oBAAe,GAAG,KAAK,CAAC;QAE/B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IAmD/B,CAAC;IA9CU,aAAa;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC;IACxD,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC;IAED,gBAAgB;IAChB,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,WAAW;aAClB,aAAa,EAAE;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;aACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEe,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,oFAAoF;QACpF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAIS,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;SAClE;IACL,CAAC;IAES,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;SAC1D;IACL,CAAC;IAES,sBAAsB;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;YAC1E,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,SAAS,CAAC;SACrD;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/D,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;SAC1D;IACL,CAAC;CACJ;AAzEG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGzB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAG/B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGhC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAG5B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;8CACrC;AAGjC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;kDACyC;AAG/E;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oDAC1B;AAI/B;IADC,UAAU;gDACgB","sourcesContent":["import {\n attr,\n nullableNumberConverter,\n observable\n} from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { TableColumnSortDirection } from '../../table/types';\nimport {\n ColumnInternals,\n ColumnInternalsOptions\n} from './models/column-internals';\nimport type { TableColumnValidity } from './types';\nimport type { ColumnValidator } from './models/column-validator';\n\n/**\n * The base class for table columns\n */\nexport abstract class TableColumn<\n TColumnConfig = unknown,\n TColumnValidator extends ColumnValidator<[]> = ColumnValidator<[]>\n> extends FoundationElement {\n /**\n * @internal\n *\n * Column properties configurable by plugin authors\n */\n public readonly columnInternals: ColumnInternals<\n TColumnConfig,\n TColumnValidator\n > = new ColumnInternals(this.getColumnInternalsOptions());\n\n @attr({ attribute: 'column-id' })\n public columnId?: string;\n\n @attr({ attribute: 'action-menu-slot' })\n public actionMenuSlot?: string;\n\n @attr({ attribute: 'action-menu-label' })\n public actionMenuLabel?: string;\n\n @attr({ attribute: 'column-hidden', mode: 'boolean' })\n public columnHidden = false;\n\n @attr({ attribute: 'sort-index', converter: nullableNumberConverter })\n public sortIndex?: number | null;\n\n @attr({ attribute: 'sort-direction' })\n public sortDirection: TableColumnSortDirection = TableColumnSortDirection.none;\n\n @attr({ attribute: 'sorting-disabled', mode: 'boolean' })\n public sortingDisabled = false;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /** @internal */\n public contentSlot!: HTMLSlotElement;\n\n public checkValidity(): boolean {\n return this.columnInternals.validator.isColumnValid;\n }\n\n public get validity(): TableColumnValidity {\n return this.columnInternals.validator.getValidity();\n }\n\n /** @internal */\n public get headerTextContent(): string {\n return this.contentSlot\n .assignedNodes()\n .map(node => node.textContent?.trim())\n .join(' ');\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n\n // Done here to enforce consistency across headers as they may have custom templates\n this.setAttribute('slot', this.columnInternals.uniqueId);\n }\n\n protected abstract getColumnInternalsOptions(): ColumnInternalsOptions<TColumnValidator>;\n\n protected sortDirectionChanged(): void {\n if (!this.sortingDisabled) {\n this.columnInternals.currentSortDirection = this.sortDirection;\n }\n }\n\n protected sortIndexChanged(): void {\n if (!this.sortingDisabled) {\n this.columnInternals.currentSortIndex = this.sortIndex;\n }\n }\n\n protected sortingDisabledChanged(): void {\n if (this.sortingDisabled) {\n this.columnInternals.currentSortDirection = TableColumnSortDirection.none;\n this.columnInternals.currentSortIndex = undefined;\n } else {\n this.columnInternals.currentSortDirection = this.sortDirection;\n this.columnInternals.currentSortIndex = this.sortIndex;\n }\n }\n}\n"]}
@@ -3,7 +3,8 @@ import { TableColumnSortDirection, TableFieldName } from '../../../table/types';
3
3
  import type { TableCell } from '../../../table/components/cell';
4
4
  import { TableColumnSortOperation } from '../types';
5
5
  import type { TableGroupRow } from '../../../table/components/group-row';
6
- export interface ColumnInternalsOptions {
6
+ import type { ColumnValidator } from './column-validator';
7
+ export interface ColumnInternalsOptions<TColumnValidator extends ColumnValidator<[]> = ColumnValidator<[]>> {
7
8
  /**
8
9
  * The tag (element name) of the custom element that renders the cell content for the column.
9
10
  * That element should derive from TableCellView<TCellRecord, TColumnConfig>.
@@ -27,12 +28,16 @@ export interface ColumnInternalsOptions {
27
28
  * The sort operation to use for the column (defaults to TableColumnSortOperation.basic)
28
29
  */
29
30
  readonly sortOperation?: TableColumnSortOperation;
31
+ /**
32
+ * The validator for the column
33
+ */
34
+ readonly validator: TColumnValidator;
30
35
  }
31
36
  /**
32
37
  * Internal column state configured by plugin authors
33
38
  * @internal
34
39
  */
35
- export declare class ColumnInternals<TColumnConfig> {
40
+ export declare class ColumnInternals<TColumnConfig, TColumnValidator extends ColumnValidator<[]>> {
36
41
  /**
37
42
  * @see ColumnInternalsOptions.cellRecordFieldNames
38
43
  */
@@ -53,10 +58,6 @@ export declare class ColumnInternals<TColumnConfig> {
53
58
  * The relevant, static configuration a column requires its cell view to have access to.
54
59
  */
55
60
  columnConfig?: TColumnConfig;
56
- /**
57
- * Whether this column has a valid configuration.
58
- */
59
- validConfiguration: boolean;
60
61
  /**
61
62
  * The name of the data field that will be used for operations on the table, such as sorting and grouping.
62
63
  */
@@ -117,8 +118,9 @@ export declare class ColumnInternals<TColumnConfig> {
117
118
  * the resolved value of the sortDirection after programmatic or interactive updates.
118
119
  */
119
120
  currentSortDirection: TableColumnSortDirection;
120
- constructor(options: ColumnInternalsOptions);
121
+ readonly validator: TColumnValidator;
122
+ constructor(options: ColumnInternalsOptions<TColumnValidator>);
121
123
  protected fractionalWidthChanged(): void;
122
124
  protected pixelWidthChanged(): void;
123
125
  }
124
- export declare function isColumnInternalsProperty(changedProperty: string, ...args: (keyof ColumnInternals<unknown>)[]): boolean;
126
+ export declare function isColumnInternalsProperty(changedProperty: string, ...args: (keyof ColumnInternals<unknown, ColumnValidator<[]>>)[]): boolean;