@ni/nimble-components 32.11.1 → 32.11.3

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 (183) hide show
  1. package/dist/all-components-bundle.js +1162 -1146
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +496 -493
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/anchor/index.js.map +1 -1
  6. package/dist/esm/anchor/template.js +1 -1
  7. package/dist/esm/anchor/template.js.map +1 -1
  8. package/dist/esm/anchor-button/index.d.ts +1 -1
  9. package/dist/esm/anchor-button/index.js +1 -1
  10. package/dist/esm/anchor-button/index.js.map +1 -1
  11. package/dist/esm/anchor-button/template.d.ts +1 -1
  12. package/dist/esm/anchor-button/template.js +1 -1
  13. package/dist/esm/anchor-button/template.js.map +1 -1
  14. package/dist/esm/anchor-menu-item/index.d.ts +1 -1
  15. package/dist/esm/anchor-menu-item/index.js.map +1 -1
  16. package/dist/esm/anchor-menu-item/template.d.ts +1 -1
  17. package/dist/esm/anchor-menu-item/template.js +1 -1
  18. package/dist/esm/anchor-menu-item/template.js.map +1 -1
  19. package/dist/esm/anchor-tab/index.d.ts +1 -1
  20. package/dist/esm/anchor-tab/index.js.map +1 -1
  21. package/dist/esm/anchor-tab/template.d.ts +1 -1
  22. package/dist/esm/anchor-tab/template.js +1 -1
  23. package/dist/esm/anchor-tab/template.js.map +1 -1
  24. package/dist/esm/anchor-tabs/index.d.ts +1 -1
  25. package/dist/esm/anchor-tabs/index.js.map +1 -1
  26. package/dist/esm/anchor-tree-item/index.js.map +1 -1
  27. package/dist/esm/anchor-tree-item/template.d.ts +1 -1
  28. package/dist/esm/anchor-tree-item/template.js +1 -1
  29. package/dist/esm/anchor-tree-item/template.js.map +1 -1
  30. package/dist/esm/banner/index.js.map +1 -1
  31. package/dist/esm/breadcrumb-item/index.js.map +1 -1
  32. package/dist/esm/button/index.js +1 -1
  33. package/dist/esm/button/index.js.map +1 -1
  34. package/dist/esm/button/template.d.ts +1 -1
  35. package/dist/esm/button/template.js.map +1 -1
  36. package/dist/esm/checkbox/index.js.map +1 -1
  37. package/dist/esm/combobox/index.js +2 -2
  38. package/dist/esm/combobox/index.js.map +1 -1
  39. package/dist/esm/label-provider/base/index.js +1 -1
  40. package/dist/esm/label-provider/base/index.js.map +1 -1
  41. package/dist/esm/label-provider/core/index.d.ts +1 -1
  42. package/dist/esm/label-provider/core/index.js.map +1 -1
  43. package/dist/esm/label-provider/rich-text/index.d.ts +1 -1
  44. package/dist/esm/label-provider/rich-text/index.js.map +1 -1
  45. package/dist/esm/label-provider/table/index.d.ts +1 -1
  46. package/dist/esm/label-provider/table/index.js.map +1 -1
  47. package/dist/esm/menu/menu.foundation.js.map +1 -1
  48. package/dist/esm/menu-button/index.js +1 -1
  49. package/dist/esm/menu-button/index.js.map +1 -1
  50. package/dist/esm/menu-item/index.js.map +1 -1
  51. package/dist/esm/number-field/index.js.map +1 -1
  52. package/dist/esm/number-field/template.d.ts +1 -1
  53. package/dist/esm/number-field/template.js.map +1 -1
  54. package/dist/esm/patterns/error/types.js +1 -1
  55. package/dist/esm/patterns/error/types.js.map +1 -1
  56. package/dist/esm/patterns/required-visible/template.js +1 -1
  57. package/dist/esm/patterns/required-visible/template.js.map +1 -1
  58. package/dist/esm/patterns/required-visible/types.js +1 -1
  59. package/dist/esm/patterns/required-visible/types.js.map +1 -1
  60. package/dist/esm/patterns/tabs/template.d.ts +1 -1
  61. package/dist/esm/patterns/tabs/template.js.map +1 -1
  62. package/dist/esm/radio/index.js.map +1 -1
  63. package/dist/esm/rich-text/editor/index.d.ts +1 -1
  64. package/dist/esm/rich-text/editor/index.js +1 -1
  65. package/dist/esm/rich-text/editor/index.js.map +1 -1
  66. package/dist/esm/rich-text/editor/models/create-tiptap-editor.d.ts +1 -1
  67. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js +2 -2
  68. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -1
  69. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +1 -1
  70. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +1 -1
  71. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
  72. package/dist/esm/rich-text/mention-listbox/index.js +1 -1
  73. package/dist/esm/rich-text/mention-listbox/index.js.map +1 -1
  74. package/dist/esm/rich-text/models/markdown-serializer.js +1 -1
  75. package/dist/esm/rich-text/models/markdown-serializer.js.map +1 -1
  76. package/dist/esm/rich-text-mention/base/index.d.ts +2 -2
  77. package/dist/esm/rich-text-mention/base/index.js.map +1 -1
  78. package/dist/esm/rich-text-mention/base/models/mention-internals.js +1 -1
  79. package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
  80. package/dist/esm/rich-text-mention/base/models/mention-validator.d.ts +1 -1
  81. package/dist/esm/rich-text-mention/base/models/mention-validator.js.map +1 -1
  82. package/dist/esm/select/index.d.ts +1 -1
  83. package/dist/esm/select/index.js +1 -1
  84. package/dist/esm/select/index.js.map +1 -1
  85. package/dist/esm/select/template.d.ts +1 -1
  86. package/dist/esm/select/template.js +1 -1
  87. package/dist/esm/select/template.js.map +1 -1
  88. package/dist/esm/switch/index.js.map +1 -1
  89. package/dist/esm/table/components/cell/index.js +1 -1
  90. package/dist/esm/table/components/cell/index.js.map +1 -1
  91. package/dist/esm/table/components/cell/template.js.map +1 -1
  92. package/dist/esm/table/components/group-row/index.d.ts +1 -1
  93. package/dist/esm/table/components/group-row/index.js.map +1 -1
  94. package/dist/esm/table/components/row/index.d.ts +1 -1
  95. package/dist/esm/table/components/row/index.js.map +1 -1
  96. package/dist/esm/table/index.d.ts +3 -2
  97. package/dist/esm/table/index.js +1 -1
  98. package/dist/esm/table/index.js.map +1 -1
  99. package/dist/esm/table/models/interactive-selection-manager.d.ts +2 -1
  100. package/dist/esm/table/models/interactive-selection-manager.js.map +1 -1
  101. package/dist/esm/table/models/keyboard-navigation-manager.d.ts +2 -2
  102. package/dist/esm/table/models/keyboard-navigation-manager.js.map +1 -1
  103. package/dist/esm/table/models/selection-managers/multi-selection-manager.d.ts +1 -1
  104. package/dist/esm/table/models/selection-managers/multi-selection-manager.js.map +1 -1
  105. package/dist/esm/table/models/selection-managers/selection-manager-base.d.ts +1 -1
  106. package/dist/esm/table/models/selection-managers/selection-manager-base.js.map +1 -1
  107. package/dist/esm/table/models/table-validator.d.ts +1 -1
  108. package/dist/esm/table/models/table-validator.js.map +1 -1
  109. package/dist/esm/table/models/virtualizer.d.ts +1 -1
  110. package/dist/esm/table/models/virtualizer.js.map +1 -1
  111. package/dist/esm/table/template.js +1 -1
  112. package/dist/esm/table/template.js.map +1 -1
  113. package/dist/esm/table/testing/table.pageobject.d.ts +1 -1
  114. package/dist/esm/table/testing/table.pageobject.js +1 -1
  115. package/dist/esm/table/testing/table.pageobject.js.map +1 -1
  116. package/dist/esm/table-column/base/group-header-view/template.js +1 -1
  117. package/dist/esm/table-column/base/group-header-view/template.js.map +1 -1
  118. package/dist/esm/table-column/base/index.d.ts +1 -1
  119. package/dist/esm/table-column/base/index.js.map +1 -1
  120. package/dist/esm/table-column/base/models/column-internals.d.ts +1 -1
  121. package/dist/esm/table-column/base/models/column-internals.js +1 -1
  122. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  123. package/dist/esm/table-column/date-text/index.d.ts +2 -1
  124. package/dist/esm/table-column/date-text/index.js.map +1 -1
  125. package/dist/esm/table-column/duration-text/index.js.map +1 -1
  126. package/dist/esm/table-column/enum-base/index.d.ts +1 -1
  127. package/dist/esm/table-column/enum-base/index.js.map +1 -1
  128. package/dist/esm/table-column/mapping/cell-view/index.d.ts +2 -2
  129. package/dist/esm/table-column/mapping/cell-view/index.js +1 -1
  130. package/dist/esm/table-column/mapping/cell-view/index.js.map +1 -1
  131. package/dist/esm/table-column/mapping/group-header-view/index.d.ts +1 -1
  132. package/dist/esm/table-column/mapping/group-header-view/index.js +1 -1
  133. package/dist/esm/table-column/mapping/group-header-view/index.js.map +1 -1
  134. package/dist/esm/table-column/mapping/index.d.ts +1 -1
  135. package/dist/esm/table-column/mapping/index.js.map +1 -1
  136. package/dist/esm/table-column/menu-button/index.js.map +1 -1
  137. package/dist/esm/table-column/mixins/custom-sort-order.d.ts +1 -1
  138. package/dist/esm/table-column/mixins/custom-sort-order.js.map +1 -1
  139. package/dist/esm/table-column/number-text/index.js.map +1 -1
  140. package/dist/esm/table-column/text-base/cell-view/index.d.ts +1 -1
  141. package/dist/esm/table-column/text-base/cell-view/index.js.map +1 -1
  142. package/dist/esm/tabs/index.js.map +1 -1
  143. package/dist/esm/text-area/template.js +1 -1
  144. package/dist/esm/text-area/template.js.map +1 -1
  145. package/dist/esm/text-field/index.js.map +1 -1
  146. package/dist/esm/text-field/template.d.ts +1 -1
  147. package/dist/esm/text-field/template.js.map +1 -1
  148. package/dist/esm/theme-provider/design-tokens.d.ts +1 -1
  149. package/dist/esm/theme-provider/design-tokens.js.map +1 -1
  150. package/dist/esm/toggle-button/index.js +1 -1
  151. package/dist/esm/toggle-button/index.js.map +1 -1
  152. package/dist/esm/toggle-button/template.d.ts +1 -1
  153. package/dist/esm/toggle-button/template.js +1 -1
  154. package/dist/esm/toggle-button/template.js.map +1 -1
  155. package/dist/esm/toolbar/index.js +1 -4
  156. package/dist/esm/toolbar/index.js.map +1 -1
  157. package/dist/esm/tree-item/index.js.map +1 -1
  158. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.d.ts +1 -1
  159. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.js +1 -1
  160. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.js.map +1 -1
  161. package/dist/esm/utilities/unit-format/decimal-unit-format.d.ts +1 -1
  162. package/dist/esm/utilities/unit-format/decimal-unit-format.js.map +1 -1
  163. package/dist/esm/utilities/unit-format/default-unit-format.d.ts +1 -1
  164. package/dist/esm/utilities/unit-format/default-unit-format.js.map +1 -1
  165. package/dist/esm/utilities/unit-format/unit-scale/byte-1024-unit-scale.js.map +1 -1
  166. package/dist/esm/utilities/unit-format/unit-scale/volt-unit-scale.js.map +1 -1
  167. package/dist/esm/wafer-map/experimental/computations.d.ts +1 -1
  168. package/dist/esm/wafer-map/experimental/computations.js.map +1 -1
  169. package/dist/esm/wafer-map/experimental/hover-handler.js.map +1 -1
  170. package/dist/esm/wafer-map/index.d.ts +1 -1
  171. package/dist/esm/wafer-map/index.js +1 -1
  172. package/dist/esm/wafer-map/index.js.map +1 -1
  173. package/dist/esm/wafer-map/modules/computations.d.ts +1 -1
  174. package/dist/esm/wafer-map/modules/computations.js.map +1 -1
  175. package/dist/esm/wafer-map/modules/create-matrix-renderer.d.ts +1 -1
  176. package/dist/esm/wafer-map/modules/create-matrix-renderer.js.map +1 -1
  177. package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -1
  178. package/dist/esm/wafer-map/modules/prerendering.d.ts +1 -1
  179. package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
  180. package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
  181. package/dist/esm/wafer-map/modules/zoom-handler.js +1 -1
  182. package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -1
  183. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"virtualizer.js","sourceRoot":"","sources":["../../../../src/table/models/virtualizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { observable } from '@microsoft/fast-element';\nimport type { Table as TanStackTable } from '@tanstack/table-core';\nimport {\n Virtualizer as TanStackVirtualizer,\n VirtualizerOptions,\n elementScroll,\n observeElementOffset,\n observeElementRect,\n VirtualItem,\n ScrollToOptions\n} from '@tanstack/virtual-core';\nimport type { Table } from '..';\nimport type { TableNode, TableRecord } from '../types';\n\n/**\n * Helper class for the nimble-table for row virtualization.\n *\n * @internal\n */\nexport class Virtualizer<TData extends TableRecord = TableRecord> {\n @observable\n public visibleItems: VirtualItem[] = [];\n\n @observable\n public scrollHeight = 0;\n\n @observable\n public isScrolling = false;\n\n @observable\n public headerContainerMarginRight = 0;\n\n @observable\n public rowContainerYOffset = 0;\n\n public get pageSize(): number {\n return this._pageSize;\n }\n\n private readonly table: Table<TData>;\n private readonly tanStackTable: TanStackTable<TableNode<TData>>;\n private readonly viewportResizeObserver: ResizeObserver;\n private virtualizer?: TanStackVirtualizer<HTMLElement, HTMLElement>;\n private _pageSize = 0;\n private isScrollingTimer = 0;\n\n public constructor(\n table: Table<TData>,\n tanStackTable: TanStackTable<TableNode<TData>>\n ) {\n this.table = table;\n this.tanStackTable = tanStackTable;\n this.viewportResizeObserver = new ResizeObserver(entries => {\n const borderBoxSize = entries[0]?.borderBoxSize[0];\n if (borderBoxSize) {\n this.updatePageSize();\n // If we have enough rows that a vertical scrollbar is shown, we need to offset the header widths\n // by the same margin so the column headers align with the corresponding rendered cells\n const viewportBoundingWidth = borderBoxSize.inlineSize;\n this.headerContainerMarginRight = viewportBoundingWidth - this.table.viewport.clientWidth;\n }\n });\n }\n\n public connect(): void {\n this.viewportResizeObserver.observe(this.table.viewport);\n this.updateVirtualizer();\n const scrollOffset = this.virtualizer!.scrollOffset;\n if (scrollOffset !== null) {\n this.table.viewport.scrollTo({ top: scrollOffset });\n }\n }\n\n public disconnect(): void {\n this.viewportResizeObserver.disconnect();\n }\n\n public dataChanged(): void {\n if (this.table.$fastController.isConnected) {\n this.updateVirtualizer();\n }\n }\n\n public scrollToIndex(index: number, options?: ScrollToOptions): void {\n this.virtualizer?.scrollToIndex(index, options);\n }\n\n public updateRowHeight(): void {\n this.updatePageSize();\n if (this.virtualizer) {\n this.updateVirtualizer();\n this.virtualizer.measure();\n }\n }\n\n private updateVirtualizer(): void {\n const options = this.createVirtualizerOptions();\n if (this.virtualizer) {\n this.virtualizer.setOptions(options);\n } else {\n this.virtualizer = new TanStackVirtualizer(options);\n }\n this.virtualizer._willUpdate();\n this.handleVirtualizerChange();\n }\n\n private createVirtualizerOptions(): VirtualizerOptions<\n HTMLElement,\n HTMLElement\n > {\n const rowHeight = this.table.rowHeight;\n return {\n count: this.tanStackTable.getRowModel().rows.length,\n getScrollElement: () => {\n return this.table.viewport;\n },\n estimateSize: (_: number) => rowHeight,\n enableSmoothScroll: true,\n overscan: 3,\n isScrollingResetDelay: 250,\n scrollToFn: elementScroll,\n observeElementOffset,\n observeElementRect,\n onChange: () => this.handleVirtualizerChange()\n } as VirtualizerOptions<HTMLElement, HTMLElement>;\n }\n\n private handleVirtualizerChange(): void {\n const virtualizer = this.virtualizer!;\n this.visibleItems = virtualizer.getVirtualItems();\n this.scrollHeight = virtualizer.getTotalSize();\n this.isScrolling = virtualizer.isScrolling;\n // There are multiple browser bugs that can result in us getting stuck thinking that we're scrolling.\n // As a workaround, we assume scrolling stopped if we haven't received an update in 300ms.\n // Tech debt item to remove this workaround: https://github.com/ni/nimble/issues/2382\n window.clearTimeout(this.isScrollingTimer);\n if (this.isScrolling) {\n this.isScrollingTimer = window.setTimeout(() => {\n this.isScrolling = false;\n }, 300);\n }\n // We're using a separate div ('table-scroll') to represent the full height of all rows, and\n // the row container's height is only big enough to hold the virtualized rows. So we don't\n // use the TanStackVirtual-provided 'start' offset (which is in terms of the full height)\n // to translate every individual row, we just translate the row container.\n let rowContainerYOffset = 0;\n if (this.visibleItems.length > 0) {\n const firstItem = this.visibleItems[0]!;\n rowContainerYOffset = firstItem.start;\n }\n\n this.rowContainerYOffset = rowContainerYOffset;\n }\n\n private updatePageSize(): void {\n this._pageSize = Math.round(\n this.table.viewport.clientHeight / this.table.rowHeight\n );\n }\n}\n"]}
1
+ {"version":3,"file":"virtualizer.js","sourceRoot":"","sources":["../../../../src/table/models/virtualizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { observable } from '@microsoft/fast-element';\nimport type { Table as TanStackTable } from '@tanstack/table-core';\nimport {\n Virtualizer as TanStackVirtualizer,\n type VirtualizerOptions,\n elementScroll,\n observeElementOffset,\n observeElementRect,\n type VirtualItem,\n type ScrollToOptions\n} from '@tanstack/virtual-core';\nimport type { Table } from '..';\nimport type { TableNode, TableRecord } from '../types';\n\n/**\n * Helper class for the nimble-table for row virtualization.\n *\n * @internal\n */\nexport class Virtualizer<TData extends TableRecord = TableRecord> {\n @observable\n public visibleItems: VirtualItem[] = [];\n\n @observable\n public scrollHeight = 0;\n\n @observable\n public isScrolling = false;\n\n @observable\n public headerContainerMarginRight = 0;\n\n @observable\n public rowContainerYOffset = 0;\n\n public get pageSize(): number {\n return this._pageSize;\n }\n\n private readonly table: Table<TData>;\n private readonly tanStackTable: TanStackTable<TableNode<TData>>;\n private readonly viewportResizeObserver: ResizeObserver;\n private virtualizer?: TanStackVirtualizer<HTMLElement, HTMLElement>;\n private _pageSize = 0;\n private isScrollingTimer = 0;\n\n public constructor(\n table: Table<TData>,\n tanStackTable: TanStackTable<TableNode<TData>>\n ) {\n this.table = table;\n this.tanStackTable = tanStackTable;\n this.viewportResizeObserver = new ResizeObserver(entries => {\n const borderBoxSize = entries[0]?.borderBoxSize[0];\n if (borderBoxSize) {\n this.updatePageSize();\n // If we have enough rows that a vertical scrollbar is shown, we need to offset the header widths\n // by the same margin so the column headers align with the corresponding rendered cells\n const viewportBoundingWidth = borderBoxSize.inlineSize;\n this.headerContainerMarginRight = viewportBoundingWidth - this.table.viewport.clientWidth;\n }\n });\n }\n\n public connect(): void {\n this.viewportResizeObserver.observe(this.table.viewport);\n this.updateVirtualizer();\n const scrollOffset = this.virtualizer!.scrollOffset;\n if (scrollOffset !== null) {\n this.table.viewport.scrollTo({ top: scrollOffset });\n }\n }\n\n public disconnect(): void {\n this.viewportResizeObserver.disconnect();\n }\n\n public dataChanged(): void {\n if (this.table.$fastController.isConnected) {\n this.updateVirtualizer();\n }\n }\n\n public scrollToIndex(index: number, options?: ScrollToOptions): void {\n this.virtualizer?.scrollToIndex(index, options);\n }\n\n public updateRowHeight(): void {\n this.updatePageSize();\n if (this.virtualizer) {\n this.updateVirtualizer();\n this.virtualizer.measure();\n }\n }\n\n private updateVirtualizer(): void {\n const options = this.createVirtualizerOptions();\n if (this.virtualizer) {\n this.virtualizer.setOptions(options);\n } else {\n this.virtualizer = new TanStackVirtualizer(options);\n }\n this.virtualizer._willUpdate();\n this.handleVirtualizerChange();\n }\n\n private createVirtualizerOptions(): VirtualizerOptions<\n HTMLElement,\n HTMLElement\n > {\n const rowHeight = this.table.rowHeight;\n return {\n count: this.tanStackTable.getRowModel().rows.length,\n getScrollElement: () => {\n return this.table.viewport;\n },\n estimateSize: (_: number) => rowHeight,\n enableSmoothScroll: true,\n overscan: 3,\n isScrollingResetDelay: 250,\n scrollToFn: elementScroll,\n observeElementOffset,\n observeElementRect,\n onChange: () => this.handleVirtualizerChange()\n } as VirtualizerOptions<HTMLElement, HTMLElement>;\n }\n\n private handleVirtualizerChange(): void {\n const virtualizer = this.virtualizer!;\n this.visibleItems = virtualizer.getVirtualItems();\n this.scrollHeight = virtualizer.getTotalSize();\n this.isScrolling = virtualizer.isScrolling;\n // There are multiple browser bugs that can result in us getting stuck thinking that we're scrolling.\n // As a workaround, we assume scrolling stopped if we haven't received an update in 300ms.\n // Tech debt item to remove this workaround: https://github.com/ni/nimble/issues/2382\n window.clearTimeout(this.isScrollingTimer);\n if (this.isScrolling) {\n this.isScrollingTimer = window.setTimeout(() => {\n this.isScrolling = false;\n }, 300);\n }\n // We're using a separate div ('table-scroll') to represent the full height of all rows, and\n // the row container's height is only big enough to hold the virtualized rows. So we don't\n // use the TanStackVirtual-provided 'start' offset (which is in terms of the full height)\n // to translate every individual row, we just translate the row container.\n let rowContainerYOffset = 0;\n if (this.visibleItems.length > 0) {\n const firstItem = this.visibleItems[0]!;\n rowContainerYOffset = firstItem.start;\n }\n\n this.rowContainerYOffset = rowContainerYOffset;\n }\n\n private updatePageSize(): void {\n this._pageSize = Math.round(\n this.table.viewport.clientHeight / this.table.rowHeight\n );\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { children, elements, html, ref, repeat, when } from '@microsoft/fast-element';
1
+ import { ExecutionContext, children, elements, html, ref, repeat, when } from '@microsoft/fast-element';
2
2
  import { tableHeaderTag } from './components/header';
3
3
  import { tableRowTag } from './components/row';
4
4
  import { TableColumnSortDirection, TableRowSelectionMode, TableRowSelectionState } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ExecutionContext,\n children,\n elements,\n html,\n ref,\n repeat,\n when\n} from '@microsoft/fast-element';\nimport type { VirtualItem } from '@tanstack/virtual-core';\nimport type { Table } from '.';\nimport { tableHeaderTag } from './components/header';\nimport { tableRowTag } from './components/row';\nimport type { TableColumn } from '../table-column/base';\nimport {\n RowSlotRequestEventDetail,\n SlotMetadata,\n TableActionMenuToggleEventDetail,\n TableColumnSortDirection,\n TableRowSelectionMode,\n TableRowSelectionState,\n TableRowSelectionToggleEventDetail\n} from './types';\nimport { tableGroupRowTag } from './components/group-row';\nimport { buttonTag } from '../button';\nimport { ButtonAppearance } from '../button/types';\nimport { iconTriangleTwoLinesHorizontalTag } from '../icons/triangle-two-lines-horizontal';\nimport { checkboxTag } from '../checkbox';\nimport {\n tableCollapseAllLabel,\n tableRowOperationColumnLabel,\n tableSelectAllLabel\n} from '../label-provider/table/label-tokens';\n\n// prettier-ignore\nexport const template = html<Table>`\n <template\n role=\"treegrid\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"0\"\n aria-multiselectable=\"${x => x.ariaMultiSelectable}\"\n ${children({ property: 'childItems', filter: elements() })}\n >\n <style>:host{ --ni-private-table-scroll-height: ${x => x.virtualizer.scrollHeight}px; }</style>\n <div class=\"table-container ${x => (x.windowShiftKeyDown ? 'disable-select' : '')}\"\n style=\"\n --ni-private-table-scroll-x: -${x => x.scrollX}px;\n --ni-private-table-header-container-margin-right: ${x => x.virtualizer.headerContainerMarginRight}px;\n --ni-private-table-row-container-top: ${x => x.virtualizer.rowContainerYOffset}px;\n --ni-private-table-row-grid-columns: ${x => (x.rowGridColumns ? x.rowGridColumns : '')};\n --ni-private-table-cursor-override: ${x => (x.layoutManager.isColumnBeingSized ? 'col-resize' : 'default')};\n --ni-private-table-scrollable-min-width: ${x => x.tableScrollableMinWidth}px;\n \">\n <div role=\"rowgroup\" class=\"header-row-container\">\n <div class=\"header-row\" role=\"row\">\n <span role=\"${x => (x.showRowOperationColumn ? 'columnheader' : '')}\" class=\"header-row-action-container\" ${ref('headerRowActionContainer')}>\n ${when(x => x.showRowOperationColumn, html<Table>`\n <span class=\"accessibly-hidden\">\n ${x => tableRowOperationColumnLabel.getValueFor(x)}\n </span>\n `)}\n ${when(x => x.selectionMode === TableRowSelectionMode.multiple, html<Table>`\n <span class=\"checkbox-container\">\n <${checkboxTag}\n ${ref('selectionCheckbox')}\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n class=\"selection-checkbox\"\n @change=\"${(x, c) => x.onAllRowsSelectionChange(c.event as CustomEvent)}\"\n title=\"${x => tableSelectAllLabel.getValueFor(x)}\"\n aria-label=\"${x => tableSelectAllLabel.getValueFor(x)}\"\n >\n </${checkboxTag}>\n </span>\n `)}\n <span class=\"collapse-all-button-container\">\n <${buttonTag}\n ${ref('collapseAllButton')}\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n class=\"collapse-all-button ${x => x.collapseButtonVisibility}\"\n content-hidden\n appearance=\"${ButtonAppearance.ghost}\"\n title=\"${x => tableCollapseAllLabel.getValueFor(x)}\"\n @click=\"${x => x.handleCollapseAllRows()}\"\n >\n <${iconTriangleTwoLinesHorizontalTag} slot=\"start\"></${iconTriangleTwoLinesHorizontalTag}>\n ${x => tableCollapseAllLabel.getValueFor(x)}\n </${buttonTag}>\n </span>\n </span>\n <span class=\"column-headers-container\" ${ref('columnHeadersContainer')}>\n ${repeat(x => x.visibleColumns, html<TableColumn, Table>`\n <div class=\"header-container\">\n ${when((_, c) => c.index > 0, html<TableColumn, Table>`\n <div\n class=\"\n column-divider\n left\n ${(_, c) => `${c.parent.layoutManager.activeColumnIndex === c.index ? 'column-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.activeColumnDivider === c.parent.getLeftDividerIndex(c.index) ? 'divider-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.hasResizableColumnToLeft(c.index - 1) ? 'draggable' : ''}`}\n \"\n @pointerdown=\"${(_, c) => c.parent.onLeftDividerPointerDown(c.event as PointerEvent, c.index)}\">\n </div>\n `)}\n <${tableHeaderTag}\n class=\"header\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager (if column sorting not disabled) */}\n sort-direction=\"${x => (typeof x.columnInternals.currentSortIndex === 'number' ? x.columnInternals.currentSortDirection : TableColumnSortDirection.none)}\"\n ?first-sorted-column=\"${(x, c) => x === c.parent.firstSortedColumn}\"\n ?indicators-hidden=\"${x => x.columnInternals.hideHeaderIndicators}\"\n @keydown=\"${(x, c) => c.parent.onHeaderKeyDown(x, c.event as KeyboardEvent)}\"\n @click=\"${(x, c) => c.parent.toggleColumnSort(x, (c.event as MouseEvent).shiftKey)}\"\n :alignment=\"${x => x.columnInternals.headerAlignment}\"\n :isGrouped=${x => (typeof x.columnInternals.groupIndex === 'number' && !x.columnInternals.groupingDisabled)}\n >\n <slot name=\"${x => x.slot}\"></slot>\n </${tableHeaderTag}>\n ${when((_, c) => c.index < c.length - 1, html<TableColumn, Table>`\n <div\n class=\"\n column-divider\n right\n ${(_, c) => `${c.parent.layoutManager.activeColumnIndex === c.index ? 'column-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.activeColumnDivider === c.parent.getRightDividerIndex(c.index) ? 'divider-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.hasResizableColumnToLeft(c.index) ? 'draggable' : ''}`}\n \"\n @pointerdown=\"${(_, c) => c.parent.onRightDividerPointerDown(c.event as PointerEvent, c.index)}\">\n </div>\n `)} \n </div>\n `, { positioning: true })}\n <div class=\"header-scrollbar-spacer\"></div>\n </span>\n </div>\n </div>\n <div class=\"table-viewport\" tabindex=\"-1\" ${ref('viewport')}>\n <div class=\"table-scroll\"></div>\n <div class=\"table-row-container ${x => `${x.showCollapseAll ? 'collapse-all-visible' : ''}`}\" ${children({ property: 'rowElements', filter: elements(`${tableRowTag}, ${tableGroupRowTag}`) })}\n role=\"rowgroup\">\n ${when(x => x.columns.length > 0 && x.canRenderRows, html<Table>`\n ${repeat(x => x.virtualizer.visibleItems, html<VirtualItem, Table>`\n ${when((x, c: ExecutionContext<Table>) => c.parent.tableData[x.index]?.isGroupRow, html<VirtualItem, Table>`\n <${tableGroupRowTag}\n class=\"group-row\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n :groupRowValue=\"${(x, c) => c.parent.tableData[x.index]?.groupRowValue}\"\n ?expanded=\"${(x, c) => c.parent.tableData[x.index]?.isExpanded}\"\n :nestingLevel=\"${(x, c) => c.parent.tableData[x.index]?.nestingLevel}\"\n :immediateChildCount=\"${(x, c) => c.parent.tableData[x.index]?.immediateChildCount}\"\n :groupColumn=\"${(x, c) => c.parent.tableData[x.index]?.groupColumn}\"\n ?selectable=\"${(_, c) => c.parent.selectionMode === TableRowSelectionMode.multiple}\"\n selection-state=\"${(x, c) => c.parent.tableData[x.index]?.selectionState}\"\n :resolvedRowIndex=\"${x => x.index}\"\n ?allow-hover=\"${(_, c) => !c.parent.virtualizer.isScrolling}\"\n @focusin=\"${(_, c) => c.parent.onRowFocusIn(c.event as FocusEvent)}\"\n @blur=\"${(_, c) => c.parent.onRowBlur(c.event as FocusEvent)}\"\n @group-selection-toggle=\"${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event as CustomEvent<TableRowSelectionToggleEventDetail>)}\"\n @group-expand-toggle=\"${(x, c) => c.parent.handleGroupRowExpanded(x.index, c.event)}\"\n >\n </${tableGroupRowTag}>\n `)}\n ${when((x, c: ExecutionContext<Table>) => !c.parent.tableData[x.index]?.isGroupRow, html<VirtualItem, Table>`\n <${tableRowTag}\n class=\"row\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n record-id=\"${(x, c) => c.parent.tableData[x.index]?.id}\"\n ?selectable=\"${(_, c) => c.parent.selectionMode !== TableRowSelectionMode.none}\"\n ?selected=\"${(x, c) => c.parent.tableData[x.index]?.selectionState === TableRowSelectionState.selected}\"\n ?expanded=\"${(x, c) => c.parent.tableData[x.index]?.isExpanded}\"\n ?hide-selection=\"${(_, c) => c.parent.selectionMode !== TableRowSelectionMode.multiple}\"\n ?reserve-collapse-space=\"${(_, c) => c.parent.canHaveCollapsibleRows}\"\n :dataRecord=\"${(x, c) => c.parent.tableData[x.index]?.record}\"\n :columns=\"${(_, c) => c.parent.columns}\"\n :isParentRow=\"${(x, c) => c.parent.tableData[x.index]?.isParentRow}\"\n :nestingLevel=\"${(x, c) => c.parent.tableData[x.index]?.nestingLevel}\"\n ?row-operation-grid-cell-hidden=\"${(_, c) => !c.parent.showRowOperationColumn}\"\n ?loading=\"${(x, c) => c.parent.tableData[x.index]?.isLoadingChildren}\"\n :resolvedRowIndex=\"${x => x.index}\"\n ?allow-hover=\"${(_, c) => !c.parent.virtualizer.isScrolling}\"\n @click=\"${(x, c) => c.parent.onRowClick(x.index, c.event as MouseEvent)}\"\n @focusin=\"${(_, c) => c.parent.onRowFocusIn(c.event as FocusEvent)}\"\n @blur=\"${(_, c) => c.parent.onRowBlur(c.event as FocusEvent)}\"\n @row-selection-toggle=\"${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event as CustomEvent<TableRowSelectionToggleEventDetail>)}\"\n @row-action-menu-beforetoggle=\"${(x, c) => c.parent.onRowActionMenuBeforeToggle(x.index, c.event as CustomEvent<TableActionMenuToggleEventDetail>)}\"\n @row-action-menu-toggle=\"${(_, c) => c.parent.onRowActionMenuToggle(c.event as CustomEvent<TableActionMenuToggleEventDetail>)}\"\n @row-slots-request=\"${(_, c) => c.parent.onRowSlotsRequest(c.event as CustomEvent<RowSlotRequestEventDetail>)}\"\n @row-expand-toggle=\"${(x, c) => c.parent.handleRowExpanded(x.index)}\"\n >\n ${repeat((x, c: ExecutionContext<Table>) => (c.parent.tableData[x.index]?.requestedSlots || []), html<SlotMetadata>`\n <slot\n name=\"${x => x.name}\"\n slot=\"${x => x.slot}\"\n ></slot>\n `)}\n </${tableRowTag}>\n `)}\n `)}\n `)}\n </div>\n </div>\n </div>\n </template>\n`;\n"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ExecutionContext,\n children,\n elements,\n html,\n ref,\n repeat,\n when\n} from '@microsoft/fast-element';\nimport type { VirtualItem } from '@tanstack/virtual-core';\nimport type { Table } from '.';\nimport { tableHeaderTag } from './components/header';\nimport { tableRowTag } from './components/row';\nimport type { TableColumn } from '../table-column/base';\nimport {\n type RowSlotRequestEventDetail,\n type SlotMetadata,\n type TableActionMenuToggleEventDetail,\n TableColumnSortDirection,\n TableRowSelectionMode,\n TableRowSelectionState,\n type TableRowSelectionToggleEventDetail\n} from './types';\nimport { tableGroupRowTag } from './components/group-row';\nimport { buttonTag } from '../button';\nimport { ButtonAppearance } from '../button/types';\nimport { iconTriangleTwoLinesHorizontalTag } from '../icons/triangle-two-lines-horizontal';\nimport { checkboxTag } from '../checkbox';\nimport {\n tableCollapseAllLabel,\n tableRowOperationColumnLabel,\n tableSelectAllLabel\n} from '../label-provider/table/label-tokens';\n\n// prettier-ignore\nexport const template = html<Table>`\n <template\n role=\"treegrid\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"0\"\n aria-multiselectable=\"${x => x.ariaMultiSelectable}\"\n ${children({ property: 'childItems', filter: elements() })}\n >\n <style>:host{ --ni-private-table-scroll-height: ${x => x.virtualizer.scrollHeight}px; }</style>\n <div class=\"table-container ${x => (x.windowShiftKeyDown ? 'disable-select' : '')}\"\n style=\"\n --ni-private-table-scroll-x: -${x => x.scrollX}px;\n --ni-private-table-header-container-margin-right: ${x => x.virtualizer.headerContainerMarginRight}px;\n --ni-private-table-row-container-top: ${x => x.virtualizer.rowContainerYOffset}px;\n --ni-private-table-row-grid-columns: ${x => (x.rowGridColumns ? x.rowGridColumns : '')};\n --ni-private-table-cursor-override: ${x => (x.layoutManager.isColumnBeingSized ? 'col-resize' : 'default')};\n --ni-private-table-scrollable-min-width: ${x => x.tableScrollableMinWidth}px;\n \">\n <div role=\"rowgroup\" class=\"header-row-container\">\n <div class=\"header-row\" role=\"row\">\n <span role=\"${x => (x.showRowOperationColumn ? 'columnheader' : '')}\" class=\"header-row-action-container\" ${ref('headerRowActionContainer')}>\n ${when(x => x.showRowOperationColumn, html<Table>`\n <span class=\"accessibly-hidden\">\n ${x => tableRowOperationColumnLabel.getValueFor(x)}\n </span>\n `)}\n ${when(x => x.selectionMode === TableRowSelectionMode.multiple, html<Table>`\n <span class=\"checkbox-container\">\n <${checkboxTag}\n ${ref('selectionCheckbox')}\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n class=\"selection-checkbox\"\n @change=\"${(x, c) => x.onAllRowsSelectionChange(c.event as CustomEvent)}\"\n title=\"${x => tableSelectAllLabel.getValueFor(x)}\"\n aria-label=\"${x => tableSelectAllLabel.getValueFor(x)}\"\n >\n </${checkboxTag}>\n </span>\n `)}\n <span class=\"collapse-all-button-container\">\n <${buttonTag}\n ${ref('collapseAllButton')}\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n class=\"collapse-all-button ${x => x.collapseButtonVisibility}\"\n content-hidden\n appearance=\"${ButtonAppearance.ghost}\"\n title=\"${x => tableCollapseAllLabel.getValueFor(x)}\"\n @click=\"${x => x.handleCollapseAllRows()}\"\n >\n <${iconTriangleTwoLinesHorizontalTag} slot=\"start\"></${iconTriangleTwoLinesHorizontalTag}>\n ${x => tableCollapseAllLabel.getValueFor(x)}\n </${buttonTag}>\n </span>\n </span>\n <span class=\"column-headers-container\" ${ref('columnHeadersContainer')}>\n ${repeat(x => x.visibleColumns, html<TableColumn, Table>`\n <div class=\"header-container\">\n ${when((_, c) => c.index > 0, html<TableColumn, Table>`\n <div\n class=\"\n column-divider\n left\n ${(_, c) => `${c.parent.layoutManager.activeColumnIndex === c.index ? 'column-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.activeColumnDivider === c.parent.getLeftDividerIndex(c.index) ? 'divider-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.hasResizableColumnToLeft(c.index - 1) ? 'draggable' : ''}`}\n \"\n @pointerdown=\"${(_, c) => c.parent.onLeftDividerPointerDown(c.event as PointerEvent, c.index)}\">\n </div>\n `)}\n <${tableHeaderTag}\n class=\"header\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager (if column sorting not disabled) */}\n sort-direction=\"${x => (typeof x.columnInternals.currentSortIndex === 'number' ? x.columnInternals.currentSortDirection : TableColumnSortDirection.none)}\"\n ?first-sorted-column=\"${(x, c) => x === c.parent.firstSortedColumn}\"\n ?indicators-hidden=\"${x => x.columnInternals.hideHeaderIndicators}\"\n @keydown=\"${(x, c) => c.parent.onHeaderKeyDown(x, c.event as KeyboardEvent)}\"\n @click=\"${(x, c) => c.parent.toggleColumnSort(x, (c.event as MouseEvent).shiftKey)}\"\n :alignment=\"${x => x.columnInternals.headerAlignment}\"\n :isGrouped=${x => (typeof x.columnInternals.groupIndex === 'number' && !x.columnInternals.groupingDisabled)}\n >\n <slot name=\"${x => x.slot}\"></slot>\n </${tableHeaderTag}>\n ${when((_, c) => c.index < c.length - 1, html<TableColumn, Table>`\n <div\n class=\"\n column-divider\n right\n ${(_, c) => `${c.parent.layoutManager.activeColumnIndex === c.index ? 'column-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.activeColumnDivider === c.parent.getRightDividerIndex(c.index) ? 'divider-active' : ''}`}\n ${(_, c) => `${c.parent.layoutManager.hasResizableColumnToLeft(c.index) ? 'draggable' : ''}`}\n \"\n @pointerdown=\"${(_, c) => c.parent.onRightDividerPointerDown(c.event as PointerEvent, c.index)}\">\n </div>\n `)} \n </div>\n `, { positioning: true })}\n <div class=\"header-scrollbar-spacer\"></div>\n </span>\n </div>\n </div>\n <div class=\"table-viewport\" tabindex=\"-1\" ${ref('viewport')}>\n <div class=\"table-scroll\"></div>\n <div class=\"table-row-container ${x => `${x.showCollapseAll ? 'collapse-all-visible' : ''}`}\" ${children({ property: 'rowElements', filter: elements(`${tableRowTag}, ${tableGroupRowTag}`) })}\n role=\"rowgroup\">\n ${when(x => x.columns.length > 0 && x.canRenderRows, html<Table>`\n ${repeat(x => x.virtualizer.visibleItems, html<VirtualItem, Table>`\n ${when((x, c: ExecutionContext<Table>) => c.parent.tableData[x.index]?.isGroupRow, html<VirtualItem, Table>`\n <${tableGroupRowTag}\n class=\"group-row\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n :groupRowValue=\"${(x, c) => c.parent.tableData[x.index]?.groupRowValue}\"\n ?expanded=\"${(x, c) => c.parent.tableData[x.index]?.isExpanded}\"\n :nestingLevel=\"${(x, c) => c.parent.tableData[x.index]?.nestingLevel}\"\n :immediateChildCount=\"${(x, c) => c.parent.tableData[x.index]?.immediateChildCount}\"\n :groupColumn=\"${(x, c) => c.parent.tableData[x.index]?.groupColumn}\"\n ?selectable=\"${(_, c) => c.parent.selectionMode === TableRowSelectionMode.multiple}\"\n selection-state=\"${(x, c) => c.parent.tableData[x.index]?.selectionState}\"\n :resolvedRowIndex=\"${x => x.index}\"\n ?allow-hover=\"${(_, c) => !c.parent.virtualizer.isScrolling}\"\n @focusin=\"${(_, c) => c.parent.onRowFocusIn(c.event as FocusEvent)}\"\n @blur=\"${(_, c) => c.parent.onRowBlur(c.event as FocusEvent)}\"\n @group-selection-toggle=\"${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event as CustomEvent<TableRowSelectionToggleEventDetail>)}\"\n @group-expand-toggle=\"${(x, c) => c.parent.handleGroupRowExpanded(x.index, c.event)}\"\n >\n </${tableGroupRowTag}>\n `)}\n ${when((x, c: ExecutionContext<Table>) => !c.parent.tableData[x.index]?.isGroupRow, html<VirtualItem, Table>`\n <${tableRowTag}\n class=\"row\"\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n record-id=\"${(x, c) => c.parent.tableData[x.index]?.id}\"\n ?selectable=\"${(_, c) => c.parent.selectionMode !== TableRowSelectionMode.none}\"\n ?selected=\"${(x, c) => c.parent.tableData[x.index]?.selectionState === TableRowSelectionState.selected}\"\n ?expanded=\"${(x, c) => c.parent.tableData[x.index]?.isExpanded}\"\n ?hide-selection=\"${(_, c) => c.parent.selectionMode !== TableRowSelectionMode.multiple}\"\n ?reserve-collapse-space=\"${(_, c) => c.parent.canHaveCollapsibleRows}\"\n :dataRecord=\"${(x, c) => c.parent.tableData[x.index]?.record}\"\n :columns=\"${(_, c) => c.parent.columns}\"\n :isParentRow=\"${(x, c) => c.parent.tableData[x.index]?.isParentRow}\"\n :nestingLevel=\"${(x, c) => c.parent.tableData[x.index]?.nestingLevel}\"\n ?row-operation-grid-cell-hidden=\"${(_, c) => !c.parent.showRowOperationColumn}\"\n ?loading=\"${(x, c) => c.parent.tableData[x.index]?.isLoadingChildren}\"\n :resolvedRowIndex=\"${x => x.index}\"\n ?allow-hover=\"${(_, c) => !c.parent.virtualizer.isScrolling}\"\n @click=\"${(x, c) => c.parent.onRowClick(x.index, c.event as MouseEvent)}\"\n @focusin=\"${(_, c) => c.parent.onRowFocusIn(c.event as FocusEvent)}\"\n @blur=\"${(_, c) => c.parent.onRowBlur(c.event as FocusEvent)}\"\n @row-selection-toggle=\"${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event as CustomEvent<TableRowSelectionToggleEventDetail>)}\"\n @row-action-menu-beforetoggle=\"${(x, c) => c.parent.onRowActionMenuBeforeToggle(x.index, c.event as CustomEvent<TableActionMenuToggleEventDetail>)}\"\n @row-action-menu-toggle=\"${(_, c) => c.parent.onRowActionMenuToggle(c.event as CustomEvent<TableActionMenuToggleEventDetail>)}\"\n @row-slots-request=\"${(_, c) => c.parent.onRowSlotsRequest(c.event as CustomEvent<RowSlotRequestEventDetail>)}\"\n @row-expand-toggle=\"${(x, c) => c.parent.handleRowExpanded(x.index)}\"\n >\n ${repeat((x, c: ExecutionContext<Table>) => (c.parent.tableData[x.index]?.requestedSlots || []), html<SlotMetadata>`\n <slot\n name=\"${x => x.name}\"\n slot=\"${x => x.slot}\"\n ></slot>\n `)}\n </${tableRowTag}>\n `)}\n `)}\n `)}\n </div>\n </div>\n </div>\n </template>\n`;\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { Table } from '..';
2
2
  import { type TableHeader } from '../components/header';
3
- import { TableColumnSortDirection, TableRecord, TableRowSelectionState } from '../types';
3
+ import { TableColumnSortDirection, type TableRecord, TableRowSelectionState } from '../types';
4
4
  import { type MenuButton } from '../../menu-button';
5
5
  import { type TableCell } from '../components/cell';
6
6
  import type { TableGroupHeaderView } from '../../table-column/base/group-header-view';
@@ -6,7 +6,7 @@ import { menuButtonTag } from '../../menu-button';
6
6
  import { tableCellTag } from '../components/cell';
7
7
  import { TableCellView } from '../../table-column/base/cell-view';
8
8
  import { tableRowTag } from '../components/row';
9
- import { anchorTag } from '../../anchor';
9
+ import { Anchor, anchorTag } from '../../anchor';
10
10
  import { tableGroupRowTag } from '../components/group-row';
11
11
  import { Icon } from '../../icon-base';
12
12
  import { Spinner, spinnerTag } from '../../spinner';
@@ -1 +1 @@
1
- {"version":3,"file":"table.pageobject.js","sourceRoot":"","sources":["../../../../src/table/testing/table.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Checkbox } from '@microsoft/fast-foundation';\nimport { parseColor } from '@microsoft/fast-colors';\nimport type { Table } from '..';\nimport { tableHeaderTag, type TableHeader } from '../components/header';\nimport {\n TableColumnSortDirection,\n TableRecord,\n TableRowSelectionState\n} from '../types';\nimport { waitForUpdatesAsync } from '../../testing/async-helpers';\nimport { menuButtonTag, type MenuButton } from '../../menu-button';\nimport { tableCellTag, type TableCell } from '../components/cell';\nimport type { TableGroupHeaderView } from '../../table-column/base/group-header-view';\nimport { TableCellView } from '../../table-column/base/cell-view';\nimport { tableRowTag, type TableRow } from '../components/row';\nimport { Anchor, anchorTag } from '../../anchor';\nimport { tableGroupRowTag, type TableGroupRow } from '../components/group-row';\nimport type { Button } from '../../button';\nimport { Icon } from '../../icon-base';\nimport type { IconSeverity } from '../../icon-base/types';\nimport { Spinner, spinnerTag } from '../../spinner';\nimport { borderHoverColor } from '../../theme-provider/design-tokens';\n\n/**\n * Summary information about a column that is sorted in the table for use in the `TablePageObject`.\n */\nexport interface SortedColumn {\n columnId?: string;\n sortDirection: TableColumnSortDirection;\n}\n\n/**\n * Page object for the `nimble-table` component to provide consistent ways\n * of querying and interacting with the component during tests.\n */\nexport class TablePageObject<T extends TableRecord> {\n public constructor(private readonly tableElement: Table<T>) {}\n\n public getRenderedHeaderCount(): number {\n const headers = this.tableElement.shadowRoot!.querySelectorAll(tableHeaderTag)!;\n return headers.length;\n }\n\n public getRenderedCellCountForRow(rowIndex: number): number {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll(tableCellTag);\n return cells.length;\n }\n\n public getHeaderContent(columnIndex: number): Node | undefined {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n tableHeaderTag\n )!;\n if (columnIndex >= headers.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return this.getHeaderContentElement(headers.item(columnIndex));\n }\n\n public getHeaderElement(columnIndex: number): TableHeader {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n tableHeaderTag\n )!;\n if (columnIndex >= headers.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return headers.item(columnIndex);\n }\n\n public getHeaderTitle(columnIndex: number): string {\n const column = this.tableElement.columns[columnIndex];\n return (\n column?.shadowRoot!.firstElementChild?.getAttribute('title') ?? ''\n );\n }\n\n public getHeaderTextContent(columnIndex: number): string {\n return (\n this.getHeaderContent(\n columnIndex\n )?.firstChild?.textContent?.trim() ?? ''\n );\n }\n\n public dispatchEventToHeader(\n columnIndex: number,\n event: Event\n ): boolean | undefined {\n const column = this.tableElement.columns[columnIndex];\n return column?.shadowRoot!.firstElementChild?.dispatchEvent(event);\n }\n\n public getHeaderRenderedWidth(columnIndex: number): number {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n tableHeaderTag\n )!;\n if (columnIndex >= headers.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return headers[columnIndex]!.getBoundingClientRect().width;\n }\n\n public async clickColumnHeader(\n columnIndex: number,\n shiftKeyDown = false\n ): Promise<void> {\n const clickEvent = new MouseEvent('click', {\n shiftKey: shiftKeyDown,\n bubbles: true\n } as MouseEventInit);\n this.getHeaderElement(columnIndex).dispatchEvent(clickEvent);\n await waitForUpdatesAsync();\n }\n\n public getRenderedRowCount(): number {\n return this.tableElement.shadowRoot!.querySelectorAll(tableRowTag)\n .length;\n }\n\n public getRenderedGroupRowCount(): number {\n return this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag)\n .length;\n }\n\n public getAllGroupRowsExpandedState(): boolean[] {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag);\n return Array.from(groupRows).map(row => row.expanded);\n }\n\n public getAllDataRowsExpandedState(): boolean[] {\n const rows = this.tableElement.shadowRoot!.querySelectorAll(tableRowTag);\n return Array.from(rows).map(row => row.expanded);\n }\n\n public getRenderedCellView(\n rowIndex: number,\n columnIndex: number\n ): TableCellView {\n const cell = this.getCell(rowIndex, columnIndex);\n const cellView = cell.cellViewContainer.firstElementChild;\n if (!(cellView instanceof TableCellView)) {\n throw new Error(\n 'Cell view not found in cell - ensure cellViewTag is set for column'\n );\n }\n return cellView as TableCellView;\n }\n\n public getRenderedCellViewById(\n recordId: string,\n columnId: string\n ): TableCellView {\n const cell = this.getCellById(recordId, columnId);\n const cellView = cell.cellViewContainer.firstElementChild;\n if (!(cellView instanceof TableCellView)) {\n throw new Error(\n 'Cell view not found in cell - ensure cellViewTag is set for column'\n );\n }\n return cellView as TableCellView;\n }\n\n public getRenderedCellTextContent(\n rowIndex: number,\n columnIndex: number\n ): string {\n return (\n this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.textContent?.trim() ?? ''\n );\n }\n\n public getRenderedCellAnchor(\n rowIndex: number,\n columnIndex: number\n ): Anchor {\n const anchor = this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector(anchorTag);\n if (!anchor) {\n throw new Error(\n `Anchor not found at cell ${rowIndex},${columnIndex}`\n );\n }\n return anchor;\n }\n\n public getRenderedMappingColumnCellIconTagName(\n rowIndex: number,\n columnIndex: number\n ): string {\n const iconOrSpinner = this.getRenderedMappingColumnIconOrSpinner(\n this.getRenderedCellView(rowIndex, columnIndex)\n );\n return iconOrSpinner.tagName.toLocaleLowerCase();\n }\n\n public getRenderedMappingColumnCellIconSeverity(\n rowIndex: number,\n columnIndex: number\n ): IconSeverity {\n const iconOrSpinner = this.getRenderedMappingColumnIconOrSpinner(\n this.getRenderedCellView(rowIndex, columnIndex)\n );\n if (iconOrSpinner instanceof Icon) {\n return iconOrSpinner.severity;\n }\n throw new Error('Cell does not contain an icon');\n }\n\n public getRenderedGroupHeaderTextContent(groupRowIndex: number): string {\n return (\n this.getGroupRowHeaderView(\n groupRowIndex\n ).shadowRoot!.textContent?.trim() ?? ''\n );\n }\n\n public getAllRenderedGroupHeaderTextContent(): string[] {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag);\n return Array.from(groupRows).map((_, i) => {\n return this.getRenderedGroupHeaderTextContent(i);\n });\n }\n\n public getCellTitle(rowIndex: number, columnIndex: number): string {\n const cellView = this.getRenderedCellView(rowIndex, columnIndex);\n return (\n cellView.shadowRoot!.firstElementChild?.getAttribute('title') ?? ''\n );\n }\n\n public dispatchEventToCell(\n rowIndex: number,\n columnIndex: number,\n event: Event\n ): boolean | undefined {\n const cellView = this.getRenderedCellView(rowIndex, columnIndex);\n return cellView.shadowRoot!.firstElementChild?.dispatchEvent(event);\n }\n\n public getGroupHeaderTitle(groupRowIndex: number): string {\n const groupHeader = this.getGroupRowHeaderView(groupRowIndex);\n return (\n groupHeader\n .shadowRoot!.querySelector('span')\n ?.getAttribute('title') ?? ''\n );\n }\n\n public dispatchEventToGroupHeader(\n groupRowIndex: number,\n event: Event\n ): boolean | undefined {\n const groupHeader = this.getGroupRowHeaderView(groupRowIndex);\n return groupHeader\n .shadowRoot!.querySelector('span')\n ?.dispatchEvent(event);\n }\n\n public getRecordId(rowIndex: number): string | undefined {\n return this.getRow(rowIndex).recordId;\n }\n\n public getRowWidth(): number {\n const tableRowContainer = this.tableElement.shadowRoot!.querySelector(\n '.table-row-container'\n );\n return tableRowContainer!.scrollWidth;\n }\n\n public async sizeTableToGivenRowWidth(\n rowWidth: number,\n table: Table<T>\n ): Promise<void> {\n if (!table.$fastController.isConnected) {\n throw Error(\n 'The element must be connected before calling this method'\n );\n }\n\n table.style.width = `${\n rowWidth\n + table.headerRowActionContainer.getBoundingClientRect().width\n + table.virtualizer.headerContainerMarginRight\n }px`;\n await waitForUpdatesAsync();\n }\n\n public getCellRenderedWidth(rowIndex: number, columnIndex: number): number {\n const cell = this.getCell(rowIndex, columnIndex);\n const actualWidth = cell.getBoundingClientRect().width;\n // Round to one decimal place. This is to work around a bug in Chrome related to\n // fractional widths (e.g. '1fr') in grid layouts that results in some numerical\n // precision issues. See: https://bugs.chromium.org/p/chromium/issues/detail?id=1515685\n return Math.round(actualWidth * 10) / 10;\n }\n\n public getTotalCellRenderedWidth(): number {\n const row = this.getRow(0);\n const cells = row?.shadowRoot?.querySelectorAll(tableCellTag);\n return Array.from(cells!).reduce((p, c) => {\n return p + c.getBoundingClientRect().width;\n }, 0);\n }\n\n public async scrollToFirstRowAsync(): Promise<void> {\n const scrollElement = this.tableElement.viewport;\n scrollElement.scroll({ top: 0 });\n await waitForUpdatesAsync();\n }\n\n public async scrollToLastRowAsync(): Promise<void> {\n const scrollElement = this.tableElement.viewport;\n scrollElement.scroll({ top: scrollElement.scrollHeight });\n await waitForUpdatesAsync();\n }\n\n public getCellActionMenu(\n rowIndex: number,\n columnIndex: number\n ): MenuButton | null {\n return this.getCell(rowIndex, columnIndex).shadowRoot!.querySelector(\n menuButtonTag\n );\n }\n\n public async clickCellActionMenu(\n rowIndex: number,\n columnIndex: number\n ): Promise<void> {\n this.setRowHoverState(rowIndex, true);\n await waitForUpdatesAsync();\n\n const menuButton = this.getCellActionMenu(rowIndex, columnIndex);\n if (!menuButton) {\n throw new Error('Cannot click on a non-visible action menu');\n }\n\n menuButton.toggleButton!.control.click();\n }\n\n public isCellActionMenuVisible(\n rowIndex: number,\n columnIndex: number\n ): boolean {\n const actionMenu = this.getCellActionMenu(rowIndex, columnIndex);\n if (!actionMenu) {\n return false;\n }\n\n return window.getComputedStyle(actionMenu).display !== 'none';\n }\n\n public setRowHoverState(rowIndex: number, hover: boolean): void {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll(tableCellTag);\n if (hover) {\n cells.forEach(cell => cell.style.setProperty(\n '--ni-private-table-cell-action-menu-display',\n 'block'\n ));\n } else {\n cells.forEach(cell => cell.style.removeProperty(\n '--ni-private-table-cell-action-menu-display'\n ));\n }\n }\n\n public async clickGroupRow(groupRowIndex: number): Promise<void> {\n const groupRow = this.getGroupRow(groupRowIndex);\n groupRow.click();\n await waitForUpdatesAsync();\n }\n\n public async clickRow(\n rowIndex: number,\n modifiers: { shiftKey?: boolean, ctrlKey?: boolean } = {}\n ): Promise<void> {\n const row = this.getRow(rowIndex);\n const event = new MouseEvent('click', modifiers);\n row.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public getIsRowSelectable(rowIndex: number): boolean {\n const row = this.getRow(rowIndex);\n return row.selectable;\n }\n\n public getIsRowSelected(rowIndex: number): boolean {\n const row = this.getRow(rowIndex);\n return row.selected;\n }\n\n public toggleGroupRowExpandedState(groupRowIndex: number): void {\n this.getGroupRow(groupRowIndex).click();\n }\n\n public clickCollapseAllButton(): void {\n this.getCollapseAllButton()?.click();\n }\n\n public clickDataRowExpandCollapseButton(rowIndex: number): void {\n const expandCollapseButton = this.getExpandCollapseButtonForRow(rowIndex);\n if (!expandCollapseButton) {\n throw new Error(\n 'The provided row index has no visible expand collapse button associated with it.'\n );\n }\n\n expandCollapseButton.click();\n }\n\n public isCollapseAllButtonVisible(): boolean {\n const collapseButton = this.getCollapseAllButton();\n if (collapseButton) {\n return (\n window.getComputedStyle(collapseButton).visibility === 'visible'\n );\n }\n return false;\n }\n\n public isCollapseAllButtonSpaceReserved(): boolean {\n const collapseButton = this.getCollapseAllButton();\n if (collapseButton) {\n return window.getComputedStyle(collapseButton).display !== 'none';\n }\n return true;\n }\n\n public isDataRowExpandCollapseButtonVisible(rowIndex: number): boolean {\n const expandCollapseButton = this.getExpandCollapseButtonForRow(rowIndex);\n return expandCollapseButton !== null;\n }\n\n public isDataRowLoadingSpinnerVisible(rowIndex: number): boolean {\n const row = this.getRow(rowIndex);\n const spinner = row.shadowRoot!.querySelector(spinnerTag);\n return spinner !== null;\n }\n\n public isTableSelectionCheckboxVisible(): boolean {\n const checkbox = this.getSelectionCheckboxForTable();\n return this.isCheckboxVisible(checkbox);\n }\n\n public getTableSelectionState(): TableRowSelectionState {\n const checkbox = this.getSelectionCheckboxForTable();\n return this.getSelectionStateOfCheckbox(checkbox);\n }\n\n public clickTableSelectionCheckbox(): void {\n const checkbox = this.getSelectionCheckboxForTable();\n checkbox!.click();\n }\n\n public isRowSelectionCheckboxVisible(rowIndex: number): boolean {\n const checkbox = this.getSelectionCheckboxForRow(rowIndex);\n return this.isCheckboxVisible(checkbox);\n }\n\n public getRowSelectionState(rowIndex: number): TableRowSelectionState {\n const checkbox = this.getSelectionCheckboxForRow(rowIndex);\n return this.getSelectionStateOfCheckbox(checkbox);\n }\n\n public clickRowSelectionCheckbox(rowIndex: number, shiftKey = false): void {\n if (shiftKey) {\n const shiftKeyDownEvent = new KeyboardEvent('keydown', {\n key: 'Shift',\n shiftKey: true,\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyDownEvent);\n }\n\n const checkbox = this.getSelectionCheckboxForRow(rowIndex);\n checkbox!.click();\n\n if (shiftKey) {\n const shiftKeyUpEvent = new KeyboardEvent('keyup', {\n key: 'Shift',\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyUpEvent);\n }\n }\n\n public getGroupRowSelectionState(\n groupRowIndex: number\n ): TableRowSelectionState {\n const checkbox = this.getSelectionCheckboxForGroupRow(groupRowIndex);\n return this.getSelectionStateOfCheckbox(checkbox);\n }\n\n public clickGroupRowSelectionCheckbox(\n groupRowIndex: number,\n shiftKey = false\n ): void {\n if (shiftKey) {\n const shiftKeyDownEvent = new KeyboardEvent('keydown', {\n key: 'Shift',\n shiftKey: true,\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyDownEvent);\n }\n\n const checkbox = this.getSelectionCheckboxForGroupRow(groupRowIndex);\n checkbox!.click();\n\n if (shiftKey) {\n const shiftKeyUpEvent = new KeyboardEvent('keyup', {\n key: 'Shift',\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyUpEvent);\n }\n }\n\n /**\n * @param columnIndex The index of the column to the left of the divider to press.\n */\n public pressRightColumnDivider(columnIndex: number): void {\n this.pressColumnDivider(this.getColumnDivider(columnIndex, false));\n }\n\n /**\n * @param columnIndex The index of the column to the left of the divider to release.\n */\n public releaseRightColumnDivider(columnIndex: number): void {\n this.releaseColumnDivider(this.getColumnDivider(columnIndex, false));\n }\n\n /**\n * @param columnIndex The index of the column to the left of a divider being dragged. Thus, this\n * cannot be given a value representing the last visible column index.\n * @param deltas The series of mouse movements in the x-direction while sizing a column.\n */\n public dragSizeColumnByRightDivider(\n columnIndex: number,\n deltas: readonly number[]\n ): void {\n this.dragSizeColumnByDivider(columnIndex, false, deltas);\n }\n\n /**\n * @param columnIndex The index of the column to the right of a divider being dragged. Thus, this\n * value must be greater than 0 and less than the total number of visible columns.\n * @param deltas The series of mouse movements in the x-direction while sizing a column.\n */\n public dragSizeColumnByLeftDivider(\n columnIndex: number,\n deltas: readonly number[]\n ): void {\n this.dragSizeColumnByDivider(columnIndex, true, deltas);\n }\n\n /**\n * @param columnIndex The index of the column whose right divider we're checking.\n */\n public columnRightDividerHasActiveStyling(columnIndex: number): boolean {\n const divider = this.getColumnDivider(columnIndex, false);\n const currentColor = parseColor(\n window.getComputedStyle(divider).borderLeftColor\n );\n const hoverColor = parseColor(borderHoverColor.getValueFor(divider))!;\n return currentColor!.equalValue(hoverColor);\n }\n\n public isVerticalScrollbarVisible(): boolean {\n return (\n this.tableElement.viewport.clientHeight\n < this.tableElement.viewport.scrollHeight\n );\n }\n\n public isHorizontalScrollbarVisible(): boolean {\n return (\n this.tableElement.viewport.clientWidth\n < this.tableElement.viewport.scrollWidth\n );\n }\n\n public getSortedColumns(): SortedColumn[] {\n return this.tableElement.columns\n .filter(\n x => !x.columnInternals.sortingDisabled\n && typeof x.columnInternals.currentSortIndex === 'number'\n && x.columnInternals.currentSortDirection\n !== TableColumnSortDirection.none\n )\n .sort(\n (a, b) => a.columnInternals.currentSortIndex!\n - b.columnInternals.currentSortIndex!\n )\n .map(x => {\n return {\n columnId: x.columnId,\n sortDirection: x.columnInternals.currentSortDirection\n };\n });\n }\n\n public getGroupedColumns(): string[] {\n return this.tableElement.columns\n .filter(\n x => !x.columnInternals.groupingDisabled\n && typeof x.columnInternals.groupIndex === 'number'\n )\n .sort(\n (a, b) => a.columnInternals.groupIndex!\n - b.columnInternals.groupIndex!\n )\n .map(x => x.columnId ?? '');\n }\n\n public getChildRowCountForGroup(groupRowIndex: number): number {\n const groupRow = this.getGroupRow(groupRowIndex);\n const countDisplayString = groupRow\n .shadowRoot!.querySelector('.group-row-child-count')!\n .textContent!.trim();\n // Remove the parenthesis to get just the number as a string\n const countString = countDisplayString.substring(\n 1,\n countDisplayString.length - 1\n );\n return Number(countString);\n }\n\n /** @internal */\n public isRowHoverStylingEnabled(): boolean {\n const rows: NodeListOf<TableRow | TableGroupRow> = this.tableElement.shadowRoot!.querySelectorAll(\n `${tableRowTag}, ${tableGroupRowTag}`\n );\n const firstRowAllowsHover = rows[0]!.allowHover;\n if (Array.from(rows).some(x => x.allowHover !== firstRowAllowsHover)) {\n throw new Error('Rows inconsistently allow hover styling');\n }\n return firstRowAllowsHover;\n }\n\n /** @internal */\n public getGroupRowHeaderView(groupRowIndex: number): TableGroupHeaderView {\n const groupRow = this.getGroupRow(groupRowIndex);\n return groupRow.shadowRoot!.querySelector('.group-header-view')!;\n }\n\n /** @internal */\n public getRow(rowIndex: number): TableRow {\n const rows = this.tableElement.shadowRoot!.querySelectorAll(tableRowTag);\n if (rowIndex >= rows.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered rows'\n );\n }\n\n return rows.item(rowIndex);\n }\n\n /** @internal */\n public getCell(rowIndex: number, columnIndex: number): TableCell {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll(tableCellTag);\n if (columnIndex >= cells.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return cells.item(columnIndex);\n }\n\n private getRowById(recordId: string): TableRow {\n const row: TableRow | null = this.tableElement.shadowRoot!.querySelector(\n `nimble-table-row[record-id=\"${CSS.escape(recordId)}\"]`\n );\n if (!row) {\n throw new Error(\n 'Row with given id was not found. It may not be scrolled into view.'\n );\n }\n\n return row;\n }\n\n private getCellById(recordId: string, columnId: string): TableCell {\n const row = this.getRowById(recordId);\n const cell: TableCell | null = row.shadowRoot!.querySelector(\n `nimble-table-cell[column-id=\"${CSS.escape(columnId)}\"]`\n );\n\n if (!cell) {\n throw new Error('Cell with given columnId was not found in row');\n }\n\n return cell;\n }\n\n private getCollapseAllButton(): Button | null {\n return this.tableElement.shadowRoot!.querySelector<Button>(\n '.collapse-all-button'\n );\n }\n\n private getExpandCollapseButtonForRow(rowIndex: number): Button | null {\n const row = this.getRow(rowIndex);\n const rowExpandCollapseButton = row.shadowRoot!.querySelector<Button>(\n '.expand-collapse-button'\n );\n if (!rowExpandCollapseButton) {\n const firstCell = this.getCell(rowIndex, 0);\n return firstCell?.shadowRoot!.querySelector<Button>(\n '.expand-collapse-button'\n );\n }\n\n return rowExpandCollapseButton;\n }\n\n private getSelectionCheckboxForRow(rowIndex: number): Checkbox | null {\n const row = this.getRow(rowIndex);\n return row.shadowRoot!.querySelector('.selection-checkbox');\n }\n\n private getSelectionCheckboxForGroupRow(\n groupRowIndex: number\n ): Checkbox | null {\n const groupRow = this.getGroupRow(groupRowIndex);\n return groupRow.shadowRoot!.querySelector('.selection-checkbox');\n }\n\n private getSelectionCheckboxForTable(): Checkbox | null {\n return this.tableElement.shadowRoot!.querySelector<Checkbox>(\n '.header-row .selection-checkbox'\n );\n }\n\n private isCheckboxVisible(checkbox: Checkbox | null): boolean {\n return !!checkbox && !checkbox.hidden;\n }\n\n private getSelectionStateOfCheckbox(\n checkbox: Checkbox | null\n ): TableRowSelectionState {\n if (!checkbox) {\n throw new Error('Cannot get selection state from null checkbox');\n }\n\n if (checkbox.indeterminate) {\n return TableRowSelectionState.partiallySelected;\n }\n if (checkbox.checked) {\n return TableRowSelectionState.selected;\n }\n return TableRowSelectionState.notSelected;\n }\n\n private getGroupRow(groupRowIndex: number): TableGroupRow {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag);\n if (groupRowIndex >= groupRows.length) {\n throw new Error(\n 'Attempting to index past the total number of group rows'\n );\n }\n\n return groupRows.item(groupRowIndex);\n }\n\n private getHeaderContentElement(\n element: HTMLElement | HTMLSlotElement\n ): Node | undefined {\n const nodeChildren = this.isSlotElement(element)\n ? element.assignedNodes()\n : element.shadowRoot?.childNodes;\n if (!nodeChildren) {\n return undefined;\n }\n\n const slotElement = Array.from(nodeChildren)?.find<HTMLSlotElement>(\n this.isSlotElement\n );\n if (slotElement) {\n return this.getHeaderContentElement(slotElement);\n }\n\n return nodeChildren[0]; // header content should be first item in final slot element\n }\n\n private getRenderedMappingColumnIconOrSpinner(\n view: TableCellView | TableGroupHeaderView\n ): Icon | Spinner {\n const viewShadowRoot = view.shadowRoot!;\n const spinnerOrIcon = viewShadowRoot.querySelector(\n '.reserve-icon-size'\n )?.firstElementChild;\n if (\n !(spinnerOrIcon instanceof Icon || spinnerOrIcon instanceof Spinner)\n ) {\n throw new Error('Icon or Spinner not found');\n }\n\n return spinnerOrIcon;\n }\n\n private getColumnDivider(\n columnIndex: number,\n leftDivider: boolean\n ): HTMLElement {\n const headerContainers = this.tableElement.shadowRoot!.querySelectorAll('.header-container');\n if (columnIndex < 0 || columnIndex >= headerContainers.length) {\n throw new Error(\n 'Invalid column index. Index must be greater than or equal to 0 and less than the number of visible columns.'\n );\n }\n const side = leftDivider ? 'left' : 'right';\n const divider = headerContainers[columnIndex]!.querySelector(\n `.column-divider.${side}`\n );\n if (!divider) {\n throw new Error(\n `The provided column index has no ${side} divider associated with it.`\n );\n }\n\n return divider as HTMLElement;\n }\n\n private pressColumnDivider(divider: HTMLElement): number {\n const dividerRect = divider.getBoundingClientRect();\n const clickX = (dividerRect.x + dividerRect.width) / 2;\n const pointerDownEvent = new PointerEvent('pointerdown', {\n // -1 is a value reserved for synthetic events: https://w3c.github.io/pointerevents/#dom-pointerevent-pointerid\n pointerId: -1,\n clientX: clickX,\n clientY: (dividerRect.y + dividerRect.height) / 2\n });\n divider.dispatchEvent(pointerDownEvent);\n\n return clickX;\n }\n\n private releaseColumnDivider(divider: HTMLElement): void {\n divider.dispatchEvent(new PointerEvent('pointerup'));\n }\n\n private dragSizeColumnByDivider(\n columnIndex: number,\n leftDivider: boolean,\n deltas: readonly number[]\n ): void {\n const divider = this.getColumnDivider(columnIndex, leftDivider);\n let currentPointerX = this.pressColumnDivider(divider);\n for (const delta of deltas) {\n currentPointerX += delta;\n const pointerMoveEvent = new PointerEvent('pointermove', {\n clientX: currentPointerX\n });\n divider.dispatchEvent(pointerMoveEvent);\n }\n this.releaseColumnDivider(divider);\n }\n\n private readonly isSlotElement = (\n element: Node | undefined\n ): element is HTMLSlotElement => {\n return element?.nodeName === 'SLOT';\n };\n}\n"]}
1
+ {"version":3,"file":"table.pageobject.js","sourceRoot":"","sources":["../../../../src/table/testing/table.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Checkbox } from '@microsoft/fast-foundation';\nimport { parseColor } from '@microsoft/fast-colors';\nimport type { Table } from '..';\nimport { tableHeaderTag, type TableHeader } from '../components/header';\nimport {\n TableColumnSortDirection,\n type TableRecord,\n TableRowSelectionState\n} from '../types';\nimport { waitForUpdatesAsync } from '../../testing/async-helpers';\nimport { menuButtonTag, type MenuButton } from '../../menu-button';\nimport { tableCellTag, type TableCell } from '../components/cell';\nimport type { TableGroupHeaderView } from '../../table-column/base/group-header-view';\nimport { TableCellView } from '../../table-column/base/cell-view';\nimport { tableRowTag, type TableRow } from '../components/row';\nimport { Anchor, anchorTag } from '../../anchor';\nimport { tableGroupRowTag, type TableGroupRow } from '../components/group-row';\nimport type { Button } from '../../button';\nimport { Icon } from '../../icon-base';\nimport type { IconSeverity } from '../../icon-base/types';\nimport { Spinner, spinnerTag } from '../../spinner';\nimport { borderHoverColor } from '../../theme-provider/design-tokens';\n\n/**\n * Summary information about a column that is sorted in the table for use in the `TablePageObject`.\n */\nexport interface SortedColumn {\n columnId?: string;\n sortDirection: TableColumnSortDirection;\n}\n\n/**\n * Page object for the `nimble-table` component to provide consistent ways\n * of querying and interacting with the component during tests.\n */\nexport class TablePageObject<T extends TableRecord> {\n public constructor(private readonly tableElement: Table<T>) {}\n\n public getRenderedHeaderCount(): number {\n const headers = this.tableElement.shadowRoot!.querySelectorAll(tableHeaderTag)!;\n return headers.length;\n }\n\n public getRenderedCellCountForRow(rowIndex: number): number {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll(tableCellTag);\n return cells.length;\n }\n\n public getHeaderContent(columnIndex: number): Node | undefined {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n tableHeaderTag\n )!;\n if (columnIndex >= headers.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return this.getHeaderContentElement(headers.item(columnIndex));\n }\n\n public getHeaderElement(columnIndex: number): TableHeader {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n tableHeaderTag\n )!;\n if (columnIndex >= headers.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return headers.item(columnIndex);\n }\n\n public getHeaderTitle(columnIndex: number): string {\n const column = this.tableElement.columns[columnIndex];\n return (\n column?.shadowRoot!.firstElementChild?.getAttribute('title') ?? ''\n );\n }\n\n public getHeaderTextContent(columnIndex: number): string {\n return (\n this.getHeaderContent(\n columnIndex\n )?.firstChild?.textContent?.trim() ?? ''\n );\n }\n\n public dispatchEventToHeader(\n columnIndex: number,\n event: Event\n ): boolean | undefined {\n const column = this.tableElement.columns[columnIndex];\n return column?.shadowRoot!.firstElementChild?.dispatchEvent(event);\n }\n\n public getHeaderRenderedWidth(columnIndex: number): number {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n tableHeaderTag\n )!;\n if (columnIndex >= headers.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return headers[columnIndex]!.getBoundingClientRect().width;\n }\n\n public async clickColumnHeader(\n columnIndex: number,\n shiftKeyDown = false\n ): Promise<void> {\n const clickEvent = new MouseEvent('click', {\n shiftKey: shiftKeyDown,\n bubbles: true\n } as MouseEventInit);\n this.getHeaderElement(columnIndex).dispatchEvent(clickEvent);\n await waitForUpdatesAsync();\n }\n\n public getRenderedRowCount(): number {\n return this.tableElement.shadowRoot!.querySelectorAll(tableRowTag)\n .length;\n }\n\n public getRenderedGroupRowCount(): number {\n return this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag)\n .length;\n }\n\n public getAllGroupRowsExpandedState(): boolean[] {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag);\n return Array.from(groupRows).map(row => row.expanded);\n }\n\n public getAllDataRowsExpandedState(): boolean[] {\n const rows = this.tableElement.shadowRoot!.querySelectorAll(tableRowTag);\n return Array.from(rows).map(row => row.expanded);\n }\n\n public getRenderedCellView(\n rowIndex: number,\n columnIndex: number\n ): TableCellView {\n const cell = this.getCell(rowIndex, columnIndex);\n const cellView = cell.cellViewContainer.firstElementChild;\n if (!(cellView instanceof TableCellView)) {\n throw new Error(\n 'Cell view not found in cell - ensure cellViewTag is set for column'\n );\n }\n return cellView as TableCellView;\n }\n\n public getRenderedCellViewById(\n recordId: string,\n columnId: string\n ): TableCellView {\n const cell = this.getCellById(recordId, columnId);\n const cellView = cell.cellViewContainer.firstElementChild;\n if (!(cellView instanceof TableCellView)) {\n throw new Error(\n 'Cell view not found in cell - ensure cellViewTag is set for column'\n );\n }\n return cellView as TableCellView;\n }\n\n public getRenderedCellTextContent(\n rowIndex: number,\n columnIndex: number\n ): string {\n return (\n this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.textContent?.trim() ?? ''\n );\n }\n\n public getRenderedCellAnchor(\n rowIndex: number,\n columnIndex: number\n ): Anchor {\n const anchor = this.getRenderedCellView(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector(anchorTag);\n if (!anchor) {\n throw new Error(\n `Anchor not found at cell ${rowIndex},${columnIndex}`\n );\n }\n return anchor;\n }\n\n public getRenderedMappingColumnCellIconTagName(\n rowIndex: number,\n columnIndex: number\n ): string {\n const iconOrSpinner = this.getRenderedMappingColumnIconOrSpinner(\n this.getRenderedCellView(rowIndex, columnIndex)\n );\n return iconOrSpinner.tagName.toLocaleLowerCase();\n }\n\n public getRenderedMappingColumnCellIconSeverity(\n rowIndex: number,\n columnIndex: number\n ): IconSeverity {\n const iconOrSpinner = this.getRenderedMappingColumnIconOrSpinner(\n this.getRenderedCellView(rowIndex, columnIndex)\n );\n if (iconOrSpinner instanceof Icon) {\n return iconOrSpinner.severity;\n }\n throw new Error('Cell does not contain an icon');\n }\n\n public getRenderedGroupHeaderTextContent(groupRowIndex: number): string {\n return (\n this.getGroupRowHeaderView(\n groupRowIndex\n ).shadowRoot!.textContent?.trim() ?? ''\n );\n }\n\n public getAllRenderedGroupHeaderTextContent(): string[] {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag);\n return Array.from(groupRows).map((_, i) => {\n return this.getRenderedGroupHeaderTextContent(i);\n });\n }\n\n public getCellTitle(rowIndex: number, columnIndex: number): string {\n const cellView = this.getRenderedCellView(rowIndex, columnIndex);\n return (\n cellView.shadowRoot!.firstElementChild?.getAttribute('title') ?? ''\n );\n }\n\n public dispatchEventToCell(\n rowIndex: number,\n columnIndex: number,\n event: Event\n ): boolean | undefined {\n const cellView = this.getRenderedCellView(rowIndex, columnIndex);\n return cellView.shadowRoot!.firstElementChild?.dispatchEvent(event);\n }\n\n public getGroupHeaderTitle(groupRowIndex: number): string {\n const groupHeader = this.getGroupRowHeaderView(groupRowIndex);\n return (\n groupHeader\n .shadowRoot!.querySelector('span')\n ?.getAttribute('title') ?? ''\n );\n }\n\n public dispatchEventToGroupHeader(\n groupRowIndex: number,\n event: Event\n ): boolean | undefined {\n const groupHeader = this.getGroupRowHeaderView(groupRowIndex);\n return groupHeader\n .shadowRoot!.querySelector('span')\n ?.dispatchEvent(event);\n }\n\n public getRecordId(rowIndex: number): string | undefined {\n return this.getRow(rowIndex).recordId;\n }\n\n public getRowWidth(): number {\n const tableRowContainer = this.tableElement.shadowRoot!.querySelector(\n '.table-row-container'\n );\n return tableRowContainer!.scrollWidth;\n }\n\n public async sizeTableToGivenRowWidth(\n rowWidth: number,\n table: Table<T>\n ): Promise<void> {\n if (!table.$fastController.isConnected) {\n throw Error(\n 'The element must be connected before calling this method'\n );\n }\n\n table.style.width = `${\n rowWidth\n + table.headerRowActionContainer.getBoundingClientRect().width\n + table.virtualizer.headerContainerMarginRight\n }px`;\n await waitForUpdatesAsync();\n }\n\n public getCellRenderedWidth(rowIndex: number, columnIndex: number): number {\n const cell = this.getCell(rowIndex, columnIndex);\n const actualWidth = cell.getBoundingClientRect().width;\n // Round to one decimal place. This is to work around a bug in Chrome related to\n // fractional widths (e.g. '1fr') in grid layouts that results in some numerical\n // precision issues. See: https://bugs.chromium.org/p/chromium/issues/detail?id=1515685\n return Math.round(actualWidth * 10) / 10;\n }\n\n public getTotalCellRenderedWidth(): number {\n const row = this.getRow(0);\n const cells = row?.shadowRoot?.querySelectorAll(tableCellTag);\n return Array.from(cells!).reduce((p, c) => {\n return p + c.getBoundingClientRect().width;\n }, 0);\n }\n\n public async scrollToFirstRowAsync(): Promise<void> {\n const scrollElement = this.tableElement.viewport;\n scrollElement.scroll({ top: 0 });\n await waitForUpdatesAsync();\n }\n\n public async scrollToLastRowAsync(): Promise<void> {\n const scrollElement = this.tableElement.viewport;\n scrollElement.scroll({ top: scrollElement.scrollHeight });\n await waitForUpdatesAsync();\n }\n\n public getCellActionMenu(\n rowIndex: number,\n columnIndex: number\n ): MenuButton | null {\n return this.getCell(rowIndex, columnIndex).shadowRoot!.querySelector(\n menuButtonTag\n );\n }\n\n public async clickCellActionMenu(\n rowIndex: number,\n columnIndex: number\n ): Promise<void> {\n this.setRowHoverState(rowIndex, true);\n await waitForUpdatesAsync();\n\n const menuButton = this.getCellActionMenu(rowIndex, columnIndex);\n if (!menuButton) {\n throw new Error('Cannot click on a non-visible action menu');\n }\n\n menuButton.toggleButton!.control.click();\n }\n\n public isCellActionMenuVisible(\n rowIndex: number,\n columnIndex: number\n ): boolean {\n const actionMenu = this.getCellActionMenu(rowIndex, columnIndex);\n if (!actionMenu) {\n return false;\n }\n\n return window.getComputedStyle(actionMenu).display !== 'none';\n }\n\n public setRowHoverState(rowIndex: number, hover: boolean): void {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll(tableCellTag);\n if (hover) {\n cells.forEach(cell => cell.style.setProperty(\n '--ni-private-table-cell-action-menu-display',\n 'block'\n ));\n } else {\n cells.forEach(cell => cell.style.removeProperty(\n '--ni-private-table-cell-action-menu-display'\n ));\n }\n }\n\n public async clickGroupRow(groupRowIndex: number): Promise<void> {\n const groupRow = this.getGroupRow(groupRowIndex);\n groupRow.click();\n await waitForUpdatesAsync();\n }\n\n public async clickRow(\n rowIndex: number,\n modifiers: { shiftKey?: boolean, ctrlKey?: boolean } = {}\n ): Promise<void> {\n const row = this.getRow(rowIndex);\n const event = new MouseEvent('click', modifiers);\n row.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public getIsRowSelectable(rowIndex: number): boolean {\n const row = this.getRow(rowIndex);\n return row.selectable;\n }\n\n public getIsRowSelected(rowIndex: number): boolean {\n const row = this.getRow(rowIndex);\n return row.selected;\n }\n\n public toggleGroupRowExpandedState(groupRowIndex: number): void {\n this.getGroupRow(groupRowIndex).click();\n }\n\n public clickCollapseAllButton(): void {\n this.getCollapseAllButton()?.click();\n }\n\n public clickDataRowExpandCollapseButton(rowIndex: number): void {\n const expandCollapseButton = this.getExpandCollapseButtonForRow(rowIndex);\n if (!expandCollapseButton) {\n throw new Error(\n 'The provided row index has no visible expand collapse button associated with it.'\n );\n }\n\n expandCollapseButton.click();\n }\n\n public isCollapseAllButtonVisible(): boolean {\n const collapseButton = this.getCollapseAllButton();\n if (collapseButton) {\n return (\n window.getComputedStyle(collapseButton).visibility === 'visible'\n );\n }\n return false;\n }\n\n public isCollapseAllButtonSpaceReserved(): boolean {\n const collapseButton = this.getCollapseAllButton();\n if (collapseButton) {\n return window.getComputedStyle(collapseButton).display !== 'none';\n }\n return true;\n }\n\n public isDataRowExpandCollapseButtonVisible(rowIndex: number): boolean {\n const expandCollapseButton = this.getExpandCollapseButtonForRow(rowIndex);\n return expandCollapseButton !== null;\n }\n\n public isDataRowLoadingSpinnerVisible(rowIndex: number): boolean {\n const row = this.getRow(rowIndex);\n const spinner = row.shadowRoot!.querySelector(spinnerTag);\n return spinner !== null;\n }\n\n public isTableSelectionCheckboxVisible(): boolean {\n const checkbox = this.getSelectionCheckboxForTable();\n return this.isCheckboxVisible(checkbox);\n }\n\n public getTableSelectionState(): TableRowSelectionState {\n const checkbox = this.getSelectionCheckboxForTable();\n return this.getSelectionStateOfCheckbox(checkbox);\n }\n\n public clickTableSelectionCheckbox(): void {\n const checkbox = this.getSelectionCheckboxForTable();\n checkbox!.click();\n }\n\n public isRowSelectionCheckboxVisible(rowIndex: number): boolean {\n const checkbox = this.getSelectionCheckboxForRow(rowIndex);\n return this.isCheckboxVisible(checkbox);\n }\n\n public getRowSelectionState(rowIndex: number): TableRowSelectionState {\n const checkbox = this.getSelectionCheckboxForRow(rowIndex);\n return this.getSelectionStateOfCheckbox(checkbox);\n }\n\n public clickRowSelectionCheckbox(rowIndex: number, shiftKey = false): void {\n if (shiftKey) {\n const shiftKeyDownEvent = new KeyboardEvent('keydown', {\n key: 'Shift',\n shiftKey: true,\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyDownEvent);\n }\n\n const checkbox = this.getSelectionCheckboxForRow(rowIndex);\n checkbox!.click();\n\n if (shiftKey) {\n const shiftKeyUpEvent = new KeyboardEvent('keyup', {\n key: 'Shift',\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyUpEvent);\n }\n }\n\n public getGroupRowSelectionState(\n groupRowIndex: number\n ): TableRowSelectionState {\n const checkbox = this.getSelectionCheckboxForGroupRow(groupRowIndex);\n return this.getSelectionStateOfCheckbox(checkbox);\n }\n\n public clickGroupRowSelectionCheckbox(\n groupRowIndex: number,\n shiftKey = false\n ): void {\n if (shiftKey) {\n const shiftKeyDownEvent = new KeyboardEvent('keydown', {\n key: 'Shift',\n shiftKey: true,\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyDownEvent);\n }\n\n const checkbox = this.getSelectionCheckboxForGroupRow(groupRowIndex);\n checkbox!.click();\n\n if (shiftKey) {\n const shiftKeyUpEvent = new KeyboardEvent('keyup', {\n key: 'Shift',\n bubbles: true\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyUpEvent);\n }\n }\n\n /**\n * @param columnIndex The index of the column to the left of the divider to press.\n */\n public pressRightColumnDivider(columnIndex: number): void {\n this.pressColumnDivider(this.getColumnDivider(columnIndex, false));\n }\n\n /**\n * @param columnIndex The index of the column to the left of the divider to release.\n */\n public releaseRightColumnDivider(columnIndex: number): void {\n this.releaseColumnDivider(this.getColumnDivider(columnIndex, false));\n }\n\n /**\n * @param columnIndex The index of the column to the left of a divider being dragged. Thus, this\n * cannot be given a value representing the last visible column index.\n * @param deltas The series of mouse movements in the x-direction while sizing a column.\n */\n public dragSizeColumnByRightDivider(\n columnIndex: number,\n deltas: readonly number[]\n ): void {\n this.dragSizeColumnByDivider(columnIndex, false, deltas);\n }\n\n /**\n * @param columnIndex The index of the column to the right of a divider being dragged. Thus, this\n * value must be greater than 0 and less than the total number of visible columns.\n * @param deltas The series of mouse movements in the x-direction while sizing a column.\n */\n public dragSizeColumnByLeftDivider(\n columnIndex: number,\n deltas: readonly number[]\n ): void {\n this.dragSizeColumnByDivider(columnIndex, true, deltas);\n }\n\n /**\n * @param columnIndex The index of the column whose right divider we're checking.\n */\n public columnRightDividerHasActiveStyling(columnIndex: number): boolean {\n const divider = this.getColumnDivider(columnIndex, false);\n const currentColor = parseColor(\n window.getComputedStyle(divider).borderLeftColor\n );\n const hoverColor = parseColor(borderHoverColor.getValueFor(divider))!;\n return currentColor!.equalValue(hoverColor);\n }\n\n public isVerticalScrollbarVisible(): boolean {\n return (\n this.tableElement.viewport.clientHeight\n < this.tableElement.viewport.scrollHeight\n );\n }\n\n public isHorizontalScrollbarVisible(): boolean {\n return (\n this.tableElement.viewport.clientWidth\n < this.tableElement.viewport.scrollWidth\n );\n }\n\n public getSortedColumns(): SortedColumn[] {\n return this.tableElement.columns\n .filter(\n x => !x.columnInternals.sortingDisabled\n && typeof x.columnInternals.currentSortIndex === 'number'\n && x.columnInternals.currentSortDirection\n !== TableColumnSortDirection.none\n )\n .sort(\n (a, b) => a.columnInternals.currentSortIndex!\n - b.columnInternals.currentSortIndex!\n )\n .map(x => {\n return {\n columnId: x.columnId,\n sortDirection: x.columnInternals.currentSortDirection\n };\n });\n }\n\n public getGroupedColumns(): string[] {\n return this.tableElement.columns\n .filter(\n x => !x.columnInternals.groupingDisabled\n && typeof x.columnInternals.groupIndex === 'number'\n )\n .sort(\n (a, b) => a.columnInternals.groupIndex!\n - b.columnInternals.groupIndex!\n )\n .map(x => x.columnId ?? '');\n }\n\n public getChildRowCountForGroup(groupRowIndex: number): number {\n const groupRow = this.getGroupRow(groupRowIndex);\n const countDisplayString = groupRow\n .shadowRoot!.querySelector('.group-row-child-count')!\n .textContent!.trim();\n // Remove the parenthesis to get just the number as a string\n const countString = countDisplayString.substring(\n 1,\n countDisplayString.length - 1\n );\n return Number(countString);\n }\n\n /** @internal */\n public isRowHoverStylingEnabled(): boolean {\n const rows: NodeListOf<TableRow | TableGroupRow> = this.tableElement.shadowRoot!.querySelectorAll(\n `${tableRowTag}, ${tableGroupRowTag}`\n );\n const firstRowAllowsHover = rows[0]!.allowHover;\n if (Array.from(rows).some(x => x.allowHover !== firstRowAllowsHover)) {\n throw new Error('Rows inconsistently allow hover styling');\n }\n return firstRowAllowsHover;\n }\n\n /** @internal */\n public getGroupRowHeaderView(groupRowIndex: number): TableGroupHeaderView {\n const groupRow = this.getGroupRow(groupRowIndex);\n return groupRow.shadowRoot!.querySelector('.group-header-view')!;\n }\n\n /** @internal */\n public getRow(rowIndex: number): TableRow {\n const rows = this.tableElement.shadowRoot!.querySelectorAll(tableRowTag);\n if (rowIndex >= rows.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered rows'\n );\n }\n\n return rows.item(rowIndex);\n }\n\n /** @internal */\n public getCell(rowIndex: number, columnIndex: number): TableCell {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll(tableCellTag);\n if (columnIndex >= cells.length) {\n throw new Error(\n 'Attempting to index past the total number of rendered columns'\n );\n }\n\n return cells.item(columnIndex);\n }\n\n private getRowById(recordId: string): TableRow {\n const row: TableRow | null = this.tableElement.shadowRoot!.querySelector(\n `nimble-table-row[record-id=\"${CSS.escape(recordId)}\"]`\n );\n if (!row) {\n throw new Error(\n 'Row with given id was not found. It may not be scrolled into view.'\n );\n }\n\n return row;\n }\n\n private getCellById(recordId: string, columnId: string): TableCell {\n const row = this.getRowById(recordId);\n const cell: TableCell | null = row.shadowRoot!.querySelector(\n `nimble-table-cell[column-id=\"${CSS.escape(columnId)}\"]`\n );\n\n if (!cell) {\n throw new Error('Cell with given columnId was not found in row');\n }\n\n return cell;\n }\n\n private getCollapseAllButton(): Button | null {\n return this.tableElement.shadowRoot!.querySelector<Button>(\n '.collapse-all-button'\n );\n }\n\n private getExpandCollapseButtonForRow(rowIndex: number): Button | null {\n const row = this.getRow(rowIndex);\n const rowExpandCollapseButton = row.shadowRoot!.querySelector<Button>(\n '.expand-collapse-button'\n );\n if (!rowExpandCollapseButton) {\n const firstCell = this.getCell(rowIndex, 0);\n return firstCell?.shadowRoot!.querySelector<Button>(\n '.expand-collapse-button'\n );\n }\n\n return rowExpandCollapseButton;\n }\n\n private getSelectionCheckboxForRow(rowIndex: number): Checkbox | null {\n const row = this.getRow(rowIndex);\n return row.shadowRoot!.querySelector('.selection-checkbox');\n }\n\n private getSelectionCheckboxForGroupRow(\n groupRowIndex: number\n ): Checkbox | null {\n const groupRow = this.getGroupRow(groupRowIndex);\n return groupRow.shadowRoot!.querySelector('.selection-checkbox');\n }\n\n private getSelectionCheckboxForTable(): Checkbox | null {\n return this.tableElement.shadowRoot!.querySelector<Checkbox>(\n '.header-row .selection-checkbox'\n );\n }\n\n private isCheckboxVisible(checkbox: Checkbox | null): boolean {\n return !!checkbox && !checkbox.hidden;\n }\n\n private getSelectionStateOfCheckbox(\n checkbox: Checkbox | null\n ): TableRowSelectionState {\n if (!checkbox) {\n throw new Error('Cannot get selection state from null checkbox');\n }\n\n if (checkbox.indeterminate) {\n return TableRowSelectionState.partiallySelected;\n }\n if (checkbox.checked) {\n return TableRowSelectionState.selected;\n }\n return TableRowSelectionState.notSelected;\n }\n\n private getGroupRow(groupRowIndex: number): TableGroupRow {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(tableGroupRowTag);\n if (groupRowIndex >= groupRows.length) {\n throw new Error(\n 'Attempting to index past the total number of group rows'\n );\n }\n\n return groupRows.item(groupRowIndex);\n }\n\n private getHeaderContentElement(\n element: HTMLElement | HTMLSlotElement\n ): Node | undefined {\n const nodeChildren = this.isSlotElement(element)\n ? element.assignedNodes()\n : element.shadowRoot?.childNodes;\n if (!nodeChildren) {\n return undefined;\n }\n\n const slotElement = Array.from(nodeChildren)?.find<HTMLSlotElement>(\n this.isSlotElement\n );\n if (slotElement) {\n return this.getHeaderContentElement(slotElement);\n }\n\n return nodeChildren[0]; // header content should be first item in final slot element\n }\n\n private getRenderedMappingColumnIconOrSpinner(\n view: TableCellView | TableGroupHeaderView\n ): Icon | Spinner {\n const viewShadowRoot = view.shadowRoot!;\n const spinnerOrIcon = viewShadowRoot.querySelector(\n '.reserve-icon-size'\n )?.firstElementChild;\n if (\n !(spinnerOrIcon instanceof Icon || spinnerOrIcon instanceof Spinner)\n ) {\n throw new Error('Icon or Spinner not found');\n }\n\n return spinnerOrIcon;\n }\n\n private getColumnDivider(\n columnIndex: number,\n leftDivider: boolean\n ): HTMLElement {\n const headerContainers = this.tableElement.shadowRoot!.querySelectorAll('.header-container');\n if (columnIndex < 0 || columnIndex >= headerContainers.length) {\n throw new Error(\n 'Invalid column index. Index must be greater than or equal to 0 and less than the number of visible columns.'\n );\n }\n const side = leftDivider ? 'left' : 'right';\n const divider = headerContainers[columnIndex]!.querySelector(\n `.column-divider.${side}`\n );\n if (!divider) {\n throw new Error(\n `The provided column index has no ${side} divider associated with it.`\n );\n }\n\n return divider as HTMLElement;\n }\n\n private pressColumnDivider(divider: HTMLElement): number {\n const dividerRect = divider.getBoundingClientRect();\n const clickX = (dividerRect.x + dividerRect.width) / 2;\n const pointerDownEvent = new PointerEvent('pointerdown', {\n // -1 is a value reserved for synthetic events: https://w3c.github.io/pointerevents/#dom-pointerevent-pointerid\n pointerId: -1,\n clientX: clickX,\n clientY: (dividerRect.y + dividerRect.height) / 2\n });\n divider.dispatchEvent(pointerDownEvent);\n\n return clickX;\n }\n\n private releaseColumnDivider(divider: HTMLElement): void {\n divider.dispatchEvent(new PointerEvent('pointerup'));\n }\n\n private dragSizeColumnByDivider(\n columnIndex: number,\n leftDivider: boolean,\n deltas: readonly number[]\n ): void {\n const divider = this.getColumnDivider(columnIndex, leftDivider);\n let currentPointerX = this.pressColumnDivider(divider);\n for (const delta of deltas) {\n currentPointerX += delta;\n const pointerMoveEvent = new PointerEvent('pointermove', {\n clientX: currentPointerX\n });\n divider.dispatchEvent(pointerMoveEvent);\n }\n this.releaseColumnDivider(divider);\n }\n\n private readonly isSlotElement = (\n element: Node | undefined\n ): element is HTMLSlotElement => {\n return element?.nodeName === 'SLOT';\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { html } from '@microsoft/fast-element';
1
+ import { html, ViewTemplate } from '@microsoft/fast-element';
2
2
  import { TableGroupHeaderView } from '.';
3
3
  const validateGroupHeaderViewTemplate = (groupHeaderViewTag) => {
4
4
  let instance;
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table-column/base/group-header-view/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAG,CAAC;AAEzC,MAAM,+BAA+B,GAAG,CAAC,kBAA0B,EAAQ,EAAE;IACzE,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACV,oDAAoD;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,YAAY,oBAAoB,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACX,+BAA+B,kBAAkB,8DAA8D,CAClH,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,kBAA0B,EACC,EAAE;IAC7B,+BAA+B,CAAC,kBAAkB,CAAC,CAAC;IACpD,OAAO,IAAI,CAAe;WACnB,kBAAkB;iCACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;6BACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,YAAY;;;YAGjE,kBAAkB;KACzB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { html, ViewTemplate } from '@microsoft/fast-element';\nimport type { TableGroupRow } from '../../../table/components/group-row';\nimport { TableGroupHeaderView } from '.';\n\nconst validateGroupHeaderViewTemplate = (groupHeaderViewTag: string): void => {\n let instance;\n try {\n instance = document.createElement(groupHeaderViewTag);\n } catch (ex) {\n // Swallow construction error to report a better one\n }\n if (!(instance instanceof TableGroupHeaderView)) {\n throw new Error(\n `Group header view tag name (${groupHeaderViewTag}) must evaluate to an element extending TableGroupHeaderView`\n );\n }\n};\n\nexport const createGroupHeaderViewTemplate = (\n groupHeaderViewTag: string\n): ViewTemplate<TableGroupRow> => {\n validateGroupHeaderViewTemplate(groupHeaderViewTag);\n return html<TableGroupRow>`\n <${groupHeaderViewTag}\n :groupHeaderValue=\"${x => x.groupRowValue}\"\n :columnConfig=\"${x => x.groupColumn?.columnInternals.columnConfig}\"\n class=\"group-header-view\"\n >\n </${groupHeaderViewTag}>\n `;\n};\n"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table-column/base/group-header-view/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAG,CAAC;AAEzC,MAAM,+BAA+B,GAAG,CAAC,kBAA0B,EAAQ,EAAE;IACzE,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACV,oDAAoD;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,YAAY,oBAAoB,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACX,+BAA+B,kBAAkB,8DAA8D,CAClH,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,kBAA0B,EACC,EAAE;IAC7B,+BAA+B,CAAC,kBAAkB,CAAC,CAAC;IACpD,OAAO,IAAI,CAAe;WACnB,kBAAkB;iCACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;6BACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,YAAY;;;YAGjE,kBAAkB;KACzB,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { html, ViewTemplate } from '@microsoft/fast-element';\nimport type { TableGroupRow } from '../../../table/components/group-row';\nimport { TableGroupHeaderView } from '.';\n\nconst validateGroupHeaderViewTemplate = (groupHeaderViewTag: string): void => {\n let instance;\n try {\n instance = document.createElement(groupHeaderViewTag);\n } catch (ex) {\n // Swallow construction error to report a better one\n }\n if (!(instance instanceof TableGroupHeaderView)) {\n throw new Error(\n `Group header view tag name (${groupHeaderViewTag}) must evaluate to an element extending TableGroupHeaderView`\n );\n }\n};\n\nexport const createGroupHeaderViewTemplate = (\n groupHeaderViewTag: string\n): ViewTemplate<TableGroupRow> => {\n validateGroupHeaderViewTemplate(groupHeaderViewTag);\n return html<TableGroupRow>`\n <${groupHeaderViewTag}\n :groupHeaderValue=\"${x => x.groupRowValue}\"\n :columnConfig=\"${x => x.groupColumn?.columnInternals.columnConfig}\"\n class=\"group-header-view\"\n >\n </${groupHeaderViewTag}>\n `;\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { FoundationElement } from '@microsoft/fast-foundation';
2
- import { ColumnInternals, ColumnInternalsOptions } from './models/column-internals';
2
+ import { ColumnInternals, type ColumnInternalsOptions } from './models/column-internals';
3
3
  import type { TableColumnValidity } from './types';
4
4
  import type { ColumnValidator } from './models/column-validator';
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACH,eAAe,EAElB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E;;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;QAE5B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IA0B/B,CAAC;IArBU,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,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,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;CAGJ;AAvCU;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGlB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAGxB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGzB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAIrB;IADN,UAAU;gDACgB","sourcesContent":["import { attr, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport {\n ColumnInternals,\n ColumnInternalsOptions\n} from './models/column-internals';\nimport type { TableColumnValidity } from './types';\nimport type { ColumnValidator } from './models/column-validator';\nimport { slotTextContent } from '../../utilities/models/slot-text-content';\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 /** @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 slotTextContent(this.contentSlot);\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"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACH,eAAe,EAElB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E;;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;QAE5B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IA0B/B,CAAC;IArBU,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,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,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;CAGJ;AAvCU;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGlB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAGxB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGzB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAIrB;IADN,UAAU;gDACgB","sourcesContent":["import { attr, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport {\n ColumnInternals,\n type ColumnInternalsOptions\n} from './models/column-internals';\nimport type { TableColumnValidity } from './types';\nimport type { ColumnValidator } from './models/column-validator';\nimport { slotTextContent } from '../../utilities/models/slot-text-content';\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 /** @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 slotTextContent(this.contentSlot);\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"]}
@@ -1,5 +1,5 @@
1
1
  import { ViewTemplate } from '@microsoft/fast-element';
2
- import { TableColumnAlignment, TableColumnSortDirection, TableFieldName } from '../../../table/types';
2
+ import { TableColumnAlignment, TableColumnSortDirection, type 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';
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { uniqueId } from '@microsoft/fast-web-utilities';
3
- import { observable } from '@microsoft/fast-element';
3
+ import { ViewTemplate, observable } from '@microsoft/fast-element';
4
4
  import { TableColumnAlignment, TableColumnSortDirection } from '../../../table/types';
5
5
  import { TableColumnSortOperation, defaultFractionalWidth, defaultMinPixelWidth } from '../types';
6
6
  import { createGroupHeaderViewTemplate } from '../group-header-view/template';
@@ -1 +1 @@
1
- {"version":3,"file":"column-internals.js","sourceRoot":"","sources":["../../../../../src/table-column/base/models/column-internals.ts"],"names":[],"mappings":"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","sourcesContent":["import { uniqueId } from '@microsoft/fast-web-utilities';\nimport { ViewTemplate, observable } from '@microsoft/fast-element';\nimport {\n TableColumnAlignment,\n TableColumnSortDirection,\n TableFieldName\n} from '../../../table/types';\nimport type { TableCell } from '../../../table/components/cell';\nimport {\n TableColumnSortOperation,\n defaultFractionalWidth,\n defaultMinPixelWidth\n} from '../types';\nimport type { TableGroupRow } from '../../../table/components/group-row';\nimport { createGroupHeaderViewTemplate } from '../group-header-view/template';\nimport { createCellViewTemplate } from '../cell-view/template';\nimport type { ColumnValidator } from './column-validator';\n\nexport interface ColumnInternalsOptions<\n TColumnValidator extends ColumnValidator<[]> = ColumnValidator<[]>\n> {\n /**\n * The tag (element name) of the custom element that renders the cell content for the column.\n * That element should derive from TableCellView<TCellRecord, TColumnConfig>.\n */\n readonly cellViewTag: string;\n\n /**\n * The names of the fields that should be present in TCellRecord.\n * This array is parallel with the field names specified by `dataRecordFieldNames`.\n */\n readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * The tag to use to render the group header content for a column.\n * The element this tag refers to must derive from TableGroupHeaderView.\n */\n readonly groupHeaderViewTag?: string;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n readonly delegatedEvents: readonly string[];\n\n /**\n * The names of slots that need to be forwarded into a cell.\n */\n readonly slotNames?: readonly string[];\n\n /**\n * The sort operation to use for the column (defaults to TableColumnSortOperation.basic)\n */\n readonly sortOperation?: TableColumnSortOperation;\n\n /**\n * The validator for the column\n */\n readonly validator: TColumnValidator;\n}\n\n/**\n * Internal column state configured by plugin authors\n * @internal\n */\nexport class ColumnInternals<\n TColumnConfig,\n TColumnValidator extends ColumnValidator<[]>\n> {\n /**\n * @see ColumnInternalsOptions.cellRecordFieldNames\n */\n public readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * A unique id used internally in the table to identify specific column instances\n */\n public readonly uniqueId = uniqueId('table-column-slot');\n\n /**\n * Template for the cell view\n */\n public readonly cellViewTemplate: ViewTemplate<TableCell>;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n public readonly delegatedEvents: readonly string[];\n\n /**\n * The names of slots that need to be forwarded into a cell.\n */\n public readonly slotNames: readonly string[];\n\n /**\n * The relevant, static configuration a column requires its cell view to have access to.\n */\n @observable\n public columnConfig?: TColumnConfig;\n\n /**\n * The name of the data field that will be used for operations on the table, such as sorting and grouping.\n */\n @observable\n public operandDataRecordFieldName?: TableFieldName;\n\n /**\n * The operation to use when sorting the table by this column.\n */\n @observable\n public sortOperation: TableColumnSortOperation = TableColumnSortOperation.basic;\n\n /**\n * The names of the fields from the row's record that correlate to the data that will be in TCellRecord.\n * This array is parallel with the field names specified by `cellRecordFieldNames`.\n */\n @observable\n public dataRecordFieldNames: readonly (TableFieldName | undefined)[] = [];\n\n /**\n * Template for the group header view\n */\n public readonly groupHeaderViewTemplate?: ViewTemplate<TableGroupRow>;\n\n /**\n * Whether or not this column can be used to group rows by\n */\n @observable\n public groupingDisabled = true;\n\n /**\n * Specifies the grouping precedence of the column within the set of all columns participating in grouping.\n * Columns are rendered in the grouping tree from lowest group-index as the tree root to highest\n * group-index as tree leaves.\n */\n @observable\n public groupIndex?: number;\n\n /**\n * Used by column plugins to set a specific pixel width. Sets currentPixelWidth when changed.\n */\n @observable\n public pixelWidth?: number;\n\n /**\n * Used by column plugins to size a column proportionally to the available\n * width of a row. Sets currentFractionalWidth when changed.\n */\n @observable\n public fractionalWidth = defaultFractionalWidth;\n\n /**\n * The minimum size in pixels according to the design doc\n */\n @observable\n public minPixelWidth = defaultMinPixelWidth;\n\n /**\n * Whether or not resizing the column has been disabled.\n */\n @observable\n public resizingDisabled = false;\n\n /**\n * Whether or not the grouping and sorting indicators should be hidden in the column header\n * when the column is grouped or sorted.\n */\n @observable\n public hideHeaderIndicators = false;\n\n /**\n * How to align the header content.\n */\n @observable\n public headerAlignment: TableColumnAlignment = TableColumnAlignment.left;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the fractionalWidth after updates programmatic or interactive updates.\n */\n @observable\n public currentFractionalWidth = defaultFractionalWidth;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the pixelWidth after programmatic or interactive updates.\n */\n @observable\n public currentPixelWidth?: number;\n\n /**\n * Whether or not this column can be sorted\n */\n @observable\n public sortingDisabled = true;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortIndex after programmatic or interactive updates.\n */\n @observable\n public currentSortIndex?: number;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortDirection after programmatic or interactive updates.\n */\n @observable\n public currentSortDirection: TableColumnSortDirection = TableColumnSortDirection.none;\n\n public readonly validator: TColumnValidator;\n\n public constructor(options: ColumnInternalsOptions<TColumnValidator>) {\n this.cellRecordFieldNames = options.cellRecordFieldNames;\n this.cellViewTemplate = createCellViewTemplate(options.cellViewTag);\n if (options.groupHeaderViewTag) {\n this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(\n options.groupHeaderViewTag\n );\n }\n this.delegatedEvents = options.delegatedEvents;\n this.slotNames = options.slotNames ?? [];\n this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;\n this.validator = options.validator;\n }\n\n protected fractionalWidthChanged(): void {\n this.currentFractionalWidth = this.fractionalWidth;\n }\n\n protected pixelWidthChanged(): void {\n this.currentPixelWidth = this.pixelWidth;\n }\n}\n\nexport function isColumnInternalsProperty(\n changedProperty: string,\n ...args: (keyof ColumnInternals<unknown, ColumnValidator<[]>>)[]\n): boolean {\n for (const arg of args) {\n if (changedProperty === arg) {\n return true;\n }\n }\n return false;\n}\n"]}
1
+ {"version":3,"file":"column-internals.js","sourceRoot":"","sources":["../../../../../src/table-column/base/models/column-internals.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACH,oBAAoB,EACpB,wBAAwB,EAE3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AA6C/D;;;GAGG;AACH,MAAM,OAAO,eAAe;IAmJxB,YAAmB,OAAiD;QA1IpE;;WAEG;QACa,aAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QA6BzD;;WAEG;QAEI,kBAAa,GAA6B,wBAAwB,CAAC,KAAK,CAAC;QAEhF;;;WAGG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;QAO1E;;WAEG;QAEI,qBAAgB,GAAG,IAAI,CAAC;QAgB/B;;;WAGG;QAEI,oBAAe,GAAG,sBAAsB,CAAC;QAEhD;;WAEG;QAEI,kBAAa,GAAG,oBAAoB,CAAC;QAE5C;;WAEG;QAEI,qBAAgB,GAAG,KAAK,CAAC;QAEhC;;;WAGG;QAEI,yBAAoB,GAAG,KAAK,CAAC;QAEpC;;WAEG;QAEI,oBAAe,GAAyB,oBAAoB,CAAC,IAAI,CAAC;QAEzE;;;WAGG;QAEI,2BAAsB,GAAG,sBAAsB,CAAC;QASvD;;WAEG;QAEI,oBAAe,GAAG,IAAI,CAAC;QAS9B;;;WAGG;QAEI,yBAAoB,GAA6B,wBAAwB,CAAC,IAAI,CAAC;QAKlF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,uBAAuB,GAAG,6BAA6B,CACxD,OAAO,CAAC,kBAAkB,CAC7B,CAAC;QACN,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAC7E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAES,sBAAsB;QAC5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC;IACvD,CAAC;IAES,iBAAiB;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;IAC7C,CAAC;CACJ;AAvIU;IADN,UAAU;qDACyB;AAM7B;IADN,UAAU;mEACwC;AAM5C;IADN,UAAU;sDACqE;AAOzE;IADN,UAAU;6DAC+D;AAWnE;IADN,UAAU;yDACoB;AAQxB;IADN,UAAU;mDACgB;AAMpB;IADN,UAAU;mDACgB;AAOpB;IADN,UAAU;wDACqC;AAMzC;IADN,UAAU;sDACiC;AAMrC;IADN,UAAU;yDACqB;AAOzB;IADN,UAAU;6DACyB;AAM7B;IADN,UAAU;wDAC8D;AAOlE;IADN,UAAU;+DAC4C;AAOhD;IADN,UAAU;0DACuB;AAM3B;IADN,UAAU;wDACmB;AAOvB;IADN,UAAU;yDACsB;AAO1B;IADN,UAAU;6DAC2E;AA2B1F,MAAM,UAAU,yBAAyB,CACrC,eAAuB,EACvB,GAAG,IAA6D;IAEhE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,eAAe,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { uniqueId } from '@microsoft/fast-web-utilities';\nimport { ViewTemplate, observable } from '@microsoft/fast-element';\nimport {\n TableColumnAlignment,\n TableColumnSortDirection,\n type TableFieldName\n} from '../../../table/types';\nimport type { TableCell } from '../../../table/components/cell';\nimport {\n TableColumnSortOperation,\n defaultFractionalWidth,\n defaultMinPixelWidth\n} from '../types';\nimport type { TableGroupRow } from '../../../table/components/group-row';\nimport { createGroupHeaderViewTemplate } from '../group-header-view/template';\nimport { createCellViewTemplate } from '../cell-view/template';\nimport type { ColumnValidator } from './column-validator';\n\nexport interface ColumnInternalsOptions<\n TColumnValidator extends ColumnValidator<[]> = ColumnValidator<[]>\n> {\n /**\n * The tag (element name) of the custom element that renders the cell content for the column.\n * That element should derive from TableCellView<TCellRecord, TColumnConfig>.\n */\n readonly cellViewTag: string;\n\n /**\n * The names of the fields that should be present in TCellRecord.\n * This array is parallel with the field names specified by `dataRecordFieldNames`.\n */\n readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * The tag to use to render the group header content for a column.\n * The element this tag refers to must derive from TableGroupHeaderView.\n */\n readonly groupHeaderViewTag?: string;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n readonly delegatedEvents: readonly string[];\n\n /**\n * The names of slots that need to be forwarded into a cell.\n */\n readonly slotNames?: readonly string[];\n\n /**\n * The sort operation to use for the column (defaults to TableColumnSortOperation.basic)\n */\n readonly sortOperation?: TableColumnSortOperation;\n\n /**\n * The validator for the column\n */\n readonly validator: TColumnValidator;\n}\n\n/**\n * Internal column state configured by plugin authors\n * @internal\n */\nexport class ColumnInternals<\n TColumnConfig,\n TColumnValidator extends ColumnValidator<[]>\n> {\n /**\n * @see ColumnInternalsOptions.cellRecordFieldNames\n */\n public readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * A unique id used internally in the table to identify specific column instances\n */\n public readonly uniqueId = uniqueId('table-column-slot');\n\n /**\n * Template for the cell view\n */\n public readonly cellViewTemplate: ViewTemplate<TableCell>;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n public readonly delegatedEvents: readonly string[];\n\n /**\n * The names of slots that need to be forwarded into a cell.\n */\n public readonly slotNames: readonly string[];\n\n /**\n * The relevant, static configuration a column requires its cell view to have access to.\n */\n @observable\n public columnConfig?: TColumnConfig;\n\n /**\n * The name of the data field that will be used for operations on the table, such as sorting and grouping.\n */\n @observable\n public operandDataRecordFieldName?: TableFieldName;\n\n /**\n * The operation to use when sorting the table by this column.\n */\n @observable\n public sortOperation: TableColumnSortOperation = TableColumnSortOperation.basic;\n\n /**\n * The names of the fields from the row's record that correlate to the data that will be in TCellRecord.\n * This array is parallel with the field names specified by `cellRecordFieldNames`.\n */\n @observable\n public dataRecordFieldNames: readonly (TableFieldName | undefined)[] = [];\n\n /**\n * Template for the group header view\n */\n public readonly groupHeaderViewTemplate?: ViewTemplate<TableGroupRow>;\n\n /**\n * Whether or not this column can be used to group rows by\n */\n @observable\n public groupingDisabled = true;\n\n /**\n * Specifies the grouping precedence of the column within the set of all columns participating in grouping.\n * Columns are rendered in the grouping tree from lowest group-index as the tree root to highest\n * group-index as tree leaves.\n */\n @observable\n public groupIndex?: number;\n\n /**\n * Used by column plugins to set a specific pixel width. Sets currentPixelWidth when changed.\n */\n @observable\n public pixelWidth?: number;\n\n /**\n * Used by column plugins to size a column proportionally to the available\n * width of a row. Sets currentFractionalWidth when changed.\n */\n @observable\n public fractionalWidth = defaultFractionalWidth;\n\n /**\n * The minimum size in pixels according to the design doc\n */\n @observable\n public minPixelWidth = defaultMinPixelWidth;\n\n /**\n * Whether or not resizing the column has been disabled.\n */\n @observable\n public resizingDisabled = false;\n\n /**\n * Whether or not the grouping and sorting indicators should be hidden in the column header\n * when the column is grouped or sorted.\n */\n @observable\n public hideHeaderIndicators = false;\n\n /**\n * How to align the header content.\n */\n @observable\n public headerAlignment: TableColumnAlignment = TableColumnAlignment.left;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the fractionalWidth after updates programmatic or interactive updates.\n */\n @observable\n public currentFractionalWidth = defaultFractionalWidth;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the pixelWidth after programmatic or interactive updates.\n */\n @observable\n public currentPixelWidth?: number;\n\n /**\n * Whether or not this column can be sorted\n */\n @observable\n public sortingDisabled = true;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortIndex after programmatic or interactive updates.\n */\n @observable\n public currentSortIndex?: number;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortDirection after programmatic or interactive updates.\n */\n @observable\n public currentSortDirection: TableColumnSortDirection = TableColumnSortDirection.none;\n\n public readonly validator: TColumnValidator;\n\n public constructor(options: ColumnInternalsOptions<TColumnValidator>) {\n this.cellRecordFieldNames = options.cellRecordFieldNames;\n this.cellViewTemplate = createCellViewTemplate(options.cellViewTag);\n if (options.groupHeaderViewTag) {\n this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(\n options.groupHeaderViewTag\n );\n }\n this.delegatedEvents = options.delegatedEvents;\n this.slotNames = options.slotNames ?? [];\n this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;\n this.validator = options.validator;\n }\n\n protected fractionalWidthChanged(): void {\n this.currentFractionalWidth = this.fractionalWidth;\n }\n\n protected pixelWidthChanged(): void {\n this.currentPixelWidth = this.pixelWidth;\n }\n}\n\nexport function isColumnInternalsProperty(\n changedProperty: string,\n ...args: (keyof ColumnInternals<unknown, ColumnValidator<[]>>)[]\n): boolean {\n for (const arg of args) {\n if (changedProperty === arg) {\n return true;\n }\n }\n return false;\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  import type { TableNumberField } from '../../table/types';
2
2
  import { TableColumnTextBase } from '../text-base';
3
3
  import type { ColumnInternalsOptions } from '../base/models/column-internals';
4
- import { DateTextFormat, LocaleMatcherAlgorithm, EraFormat, YearFormat, DayFormat, HourFormat, MinuteFormat, SecondFormat, TimeZoneNameFormat, FormatMatcherAlgorithm, DayPeriodFormat, DateStyle, TimeStyle, HourCycleFormat, MonthFormat, WeekdayFormat } from './types';
4
+ import { DateTextFormat } from './types';
5
+ import type { LocaleMatcherAlgorithm, EraFormat, YearFormat, DayFormat, HourFormat, MinuteFormat, SecondFormat, TimeZoneNameFormat, FormatMatcherAlgorithm, DayPeriodFormat, DateStyle, TimeStyle, HourCycleFormat, MonthFormat, WeekdayFormat } from './types';
5
6
  import { TableColumnDateTextValidator } from './models/table-column-date-text-validator';
6
7
  import type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';
7
8
  export type TableColumnDateTextCellRecord = TableNumberField<'value'>;