@ni/nimble-components 29.6.0 → 29.7.1

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 (70) hide show
  1. package/dist/all-components-bundle.js +1334 -68
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +4076 -3811
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/combobox/index.d.ts +3 -6
  6. package/dist/esm/combobox/index.js +4 -12
  7. package/dist/esm/combobox/index.js.map +1 -1
  8. package/dist/esm/combobox/template.js +1 -0
  9. package/dist/esm/combobox/template.js.map +1 -1
  10. package/dist/esm/patterns/dropdown/styles.js +22 -2
  11. package/dist/esm/patterns/dropdown/styles.js.map +1 -1
  12. package/dist/esm/select/index.d.ts +2 -4
  13. package/dist/esm/select/index.js +4 -13
  14. package/dist/esm/select/index.js.map +1 -1
  15. package/dist/esm/select/template.js +1 -0
  16. package/dist/esm/select/template.js.map +1 -1
  17. package/dist/esm/table/components/cell/index.d.ts +9 -0
  18. package/dist/esm/table/components/cell/index.js +20 -0
  19. package/dist/esm/table/components/cell/index.js.map +1 -1
  20. package/dist/esm/table/components/cell/styles.js +17 -1
  21. package/dist/esm/table/components/cell/styles.js.map +1 -1
  22. package/dist/esm/table/components/cell/template.js +10 -2
  23. package/dist/esm/table/components/cell/template.js.map +1 -1
  24. package/dist/esm/table/components/group-row/index.d.ts +11 -3
  25. package/dist/esm/table/components/group-row/index.js +13 -1
  26. package/dist/esm/table/components/group-row/index.js.map +1 -1
  27. package/dist/esm/table/components/group-row/styles.js +7 -1
  28. package/dist/esm/table/components/group-row/styles.js.map +1 -1
  29. package/dist/esm/table/components/group-row/template.js +1 -1
  30. package/dist/esm/table/components/group-row/template.js.map +1 -1
  31. package/dist/esm/table/components/header/styles.js +7 -1
  32. package/dist/esm/table/components/header/styles.js.map +1 -1
  33. package/dist/esm/table/components/row/index.d.ts +16 -4
  34. package/dist/esm/table/components/row/index.js +34 -6
  35. package/dist/esm/table/components/row/index.js.map +1 -1
  36. package/dist/esm/table/components/row/styles.js +39 -1
  37. package/dist/esm/table/components/row/styles.js.map +1 -1
  38. package/dist/esm/table/components/row/template.js +4 -2
  39. package/dist/esm/table/components/row/template.js.map +1 -1
  40. package/dist/esm/table/index.d.ts +22 -2
  41. package/dist/esm/table/index.js +58 -1
  42. package/dist/esm/table/index.js.map +1 -1
  43. package/dist/esm/table/models/keyboard-navigation-manager.d.ts +96 -0
  44. package/dist/esm/table/models/keyboard-navigation-manager.js +1015 -0
  45. package/dist/esm/table/models/keyboard-navigation-manager.js.map +1 -0
  46. package/dist/esm/table/models/table-update-tracker.d.ts +2 -1
  47. package/dist/esm/table/models/table-update-tracker.js +20 -3
  48. package/dist/esm/table/models/table-update-tracker.js.map +1 -1
  49. package/dist/esm/table/models/virtualizer.d.ts +6 -2
  50. package/dist/esm/table/models/virtualizer.js +16 -22
  51. package/dist/esm/table/models/virtualizer.js.map +1 -1
  52. package/dist/esm/table/styles.js +21 -0
  53. package/dist/esm/table/styles.js.map +1 -1
  54. package/dist/esm/table/template.js +21 -3
  55. package/dist/esm/table/template.js.map +1 -1
  56. package/dist/esm/table/testing/table.pageobject.d.ts +7 -2
  57. package/dist/esm/table/testing/table.pageobject.js +16 -9
  58. package/dist/esm/table/testing/table.pageobject.js.map +1 -1
  59. package/dist/esm/table/types.d.ts +38 -0
  60. package/dist/esm/table/types.js +14 -0
  61. package/dist/esm/table/types.js.map +1 -1
  62. package/dist/esm/table-column/anchor/cell-view/index.d.ts +3 -0
  63. package/dist/esm/table-column/anchor/cell-view/index.js +13 -0
  64. package/dist/esm/table-column/anchor/cell-view/index.js.map +1 -1
  65. package/dist/esm/table-column/anchor/cell-view/template.js +4 -2
  66. package/dist/esm/table-column/anchor/cell-view/template.js.map +1 -1
  67. package/dist/esm/table-column/base/cell-view/index.d.ts +5 -0
  68. package/dist/esm/table-column/base/cell-view/index.js +7 -0
  69. package/dist/esm/table-column/base/cell-view/index.js.map +1 -1
  70. package/package.json +1 -1
@@ -12,6 +12,8 @@ import { tableCollapseAllLabel, tableRowOperationColumnLabel, tableSelectAllLabe
12
12
  export const template = html `
13
13
  <template
14
14
  role="treegrid"
15
+ ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
16
+ tabindex="0"
15
17
  aria-multiselectable="${x => x.ariaMultiSelectable}"
16
18
  ${children({ property: 'childItems', filter: elements() })}
17
19
  >
@@ -39,6 +41,8 @@ export const template = html `
39
41
  <span class="checkbox-container">
40
42
  <${checkboxTag}
41
43
  ${ref('selectionCheckbox')}
44
+ ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
45
+ tabindex="-1"
42
46
  class="${x => `selection-checkbox ${x.selectionMode ? x.selectionMode : ''}`}"
43
47
  @change="${(x, c) => x.onAllRowsSelectionChange(c.event)}"
44
48
  title="${x => tableSelectAllLabel.getValueFor(x)}"
@@ -48,6 +52,9 @@ export const template = html `
48
52
  </span>
49
53
  `)}
50
54
  <${buttonTag}
55
+ ${ref('collapseAllButton')}
56
+ ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
57
+ tabindex="-1"
51
58
  class="collapse-all-button ${x => `${x.showCollapseAll ? 'visible' : ''}`}"
52
59
  content-hidden
53
60
  appearance="${ButtonAppearance.ghost}"
@@ -75,9 +82,11 @@ export const template = html `
75
82
  `)}
76
83
  <${tableHeaderTag}
77
84
  class="header"
85
+ ${'' /* tabindex managed dynamically by KeyboardNavigationManager (if column sorting not disabled) */}
78
86
  sort-direction="${x => (typeof x.columnInternals.currentSortIndex === 'number' ? x.columnInternals.currentSortDirection : TableColumnSortDirection.none)}"
79
87
  ?first-sorted-column="${(x, c) => x === c.parent.firstSortedColumn}"
80
88
  ?indicators-hidden="${x => x.columnInternals.hideHeaderIndicators}"
89
+ @keydown="${(x, c) => c.parent.onHeaderKeyDown(x, c.event)}"
81
90
  @click="${(x, c) => c.parent.toggleColumnSort(x, c.event.shiftKey)}"
82
91
  :isGrouped=${x => (typeof x.columnInternals.groupIndex === 'number' && !x.columnInternals.groupingDisabled)}
83
92
  >
@@ -101,15 +110,17 @@ export const template = html `
101
110
  </span>
102
111
  </div>
103
112
  </div>
104
- <div class="table-viewport" ${ref('viewport')}>
113
+ <div class="table-viewport" tabindex="-1" ${ref('viewport')}>
105
114
  <div class="table-scroll"></div>
106
- <div class="table-row-container" ${children({ property: 'rowElements', filter: elements(tableRowTag) })}
115
+ <div class="table-row-container ${x => `${x.showCollapseAll ? 'collapse-all-visible' : ''}`}" ${children({ property: 'rowElements', filter: elements(`${tableRowTag}, ${tableGroupRowTag}`) })}
107
116
  role="rowgroup">
108
117
  ${when(x => x.columns.length > 0 && x.canRenderRows, html `
109
118
  ${repeat(x => x.virtualizer.visibleItems, html `
110
119
  ${when((x, c) => c.parent.tableData[x.index]?.isGroupRow, html `
111
120
  <${tableGroupRowTag}
112
121
  class="group-row"
122
+ ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
123
+ tabindex="-1"
113
124
  :groupRowValue="${(x, c) => c.parent.tableData[x.index]?.groupRowValue}"
114
125
  ?expanded="${(x, c) => c.parent.tableData[x.index]?.isExpanded}"
115
126
  :nestingLevel="${(x, c) => c.parent.tableData[x.index]?.nestingLevel}"
@@ -117,6 +128,9 @@ export const template = html `
117
128
  :groupColumn="${(x, c) => c.parent.tableData[x.index]?.groupColumn}"
118
129
  ?selectable="${(_, c) => c.parent.selectionMode === TableRowSelectionMode.multiple}"
119
130
  selection-state="${(x, c) => c.parent.tableData[x.index]?.selectionState}"
131
+ :resolvedRowIndex="${x => x.index}"
132
+ @focusin="${(_, c) => c.parent.onRowFocusIn(c.event)}"
133
+ @blur="${(_, c) => c.parent.onRowBlur(c.event)}"
120
134
  @group-selection-toggle="${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event)}"
121
135
  @group-expand-toggle="${(x, c) => c.parent.handleGroupRowExpanded(x.index, c.event)}"
122
136
  >
@@ -125,6 +139,8 @@ export const template = html `
125
139
  ${when((x, c) => !c.parent.tableData[x.index]?.isGroupRow, html `
126
140
  <${tableRowTag}
127
141
  class="row"
142
+ ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}
143
+ tabindex="-1"
128
144
  record-id="${(x, c) => c.parent.tableData[x.index]?.id}"
129
145
  ?selectable="${(_, c) => c.parent.selectionMode !== TableRowSelectionMode.none}"
130
146
  ?selected="${(x, c) => c.parent.tableData[x.index]?.selectionState === TableRowSelectionState.selected}"
@@ -136,12 +152,14 @@ export const template = html `
136
152
  :nestingLevel="${(x, c) => c.parent.tableData[x.index]?.nestingLevel}"
137
153
  ?row-operation-grid-cell-hidden="${(_, c) => !c.parent.showRowOperationColumn}"
138
154
  ?loading="${(x, c) => c.parent.tableData[x.index]?.isLoadingChildren}"
155
+ :resolvedRowIndex="${x => x.index}"
139
156
  @click="${(x, c) => c.parent.onRowClick(x.index, c.event)}"
157
+ @focusin="${(_, c) => c.parent.onRowFocusIn(c.event)}"
158
+ @blur="${(_, c) => c.parent.onRowBlur(c.event)}"
140
159
  @row-selection-toggle="${(x, c) => c.parent.onRowSelectionToggle(x.index, c.event)}"
141
160
  @row-action-menu-beforetoggle="${(x, c) => c.parent.onRowActionMenuBeforeToggle(x.index, c.event)}"
142
161
  @row-action-menu-toggle="${(_, c) => c.parent.onRowActionMenuToggle(c.event)}"
143
162
  @row-expand-toggle="${(x, c) => c.parent.handleRowExpanded(x.index)}"
144
- :dataIndex="${x => x.index}"
145
163
  >
146
164
  ${when((x, c) => c.parent.openActionMenuRecordId === c.parent.tableData[x.index]?.id, html `
147
165
  ${repeat((_, c) => c.parent.actionMenuSlots, html `
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"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","sourcesContent":["import {\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 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 aria-multiselectable=\"${x => x.ariaMultiSelectable}\"\n ${children({ property: 'childItems', filter: elements() })}\n >\n <div class=\"table-container ${x => (x.documentShiftKeyDown ? '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-scroll-height: ${x => x.virtualizer.scrollHeight}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 --ni-private-glass-overlay-pointer-events: ${x => (x.layoutManager.isColumnBeingSized ? 'none' : 'default')};\n \">\n <div class=\"glass-overlay\">\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 class=\"${x => `selection-checkbox ${x.selectionMode ? x.selectionMode : ''}`}\"\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 <${buttonTag}\n class=\"collapse-all-button ${x => `${x.showCollapseAll ? 'visible' : ''}`}\"\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 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 @mousedown=\"${(_, c) => c.parent.onLeftDividerMouseDown(c.event as MouseEvent, c.index)}\">\n </div>\n `)}\n <${tableHeaderTag}\n class=\"header\"\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 @click=\"${(x, c) => c.parent.toggleColumnSort(x, (c.event as MouseEvent).shiftKey)}\"\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 @mousedown=\"${(_, c) => c.parent.onRightDividerMouseDown(c.event as MouseEvent, 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\" ${ref('viewport')}>\n <div class=\"table-scroll\"></div>\n <div class=\"table-row-container\" ${children({ property: 'rowElements', filter: elements(tableRowTag) })}\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) => (c.parent as Table).tableData[x.index]?.isGroupRow, html<VirtualItem, Table>`\n <${tableGroupRowTag}\n class=\"group-row\"\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 @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) => !(c.parent as Table).tableData[x.index]?.isGroupRow, html<VirtualItem, Table>`\n <${tableRowTag}\n class=\"row\"\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 :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 @click=\"${(x, c) => c.parent.onRowClick(x.index, c.event as MouseEvent)}\"\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-expand-toggle=\"${(x, c) => c.parent.handleRowExpanded(x.index)}\"\n :dataIndex=\"${x => x.index}\"\n >\n ${when((x, c) => (c.parent as Table).openActionMenuRecordId === (c.parent as Table).tableData[x.index]?.id, html<VirtualItem, Table>`\n ${repeat((_, c) => (c.parent as Table).actionMenuSlots, html<string, Table>`\n <slot\n name=\"${x => x}\"\n slot=\"${x => `row-action-menu-${x}`}\">\n </slot>\n `)}\n `)}\n </${tableRowTag}>\n `)}\n `)}\n `)}\n </div>\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 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 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 <div class=\"table-container ${x => (x.documentShiftKeyDown ? '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-scroll-height: ${x => x.virtualizer.scrollHeight}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 --ni-private-glass-overlay-pointer-events: ${x => (x.layoutManager.isColumnBeingSized ? 'none' : 'default')};\n \">\n <div class=\"glass-overlay\">\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=\"${x => `selection-checkbox ${x.selectionMode ? x.selectionMode : ''}`}\"\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 <${buttonTag}\n ${ref('collapseAllButton')}\n ${'' /* tabindex managed dynamically by KeyboardNavigationManager */}\n tabindex=\"-1\"\n class=\"collapse-all-button ${x => `${x.showCollapseAll ? 'visible' : ''}`}\"\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 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 @mousedown=\"${(_, c) => c.parent.onLeftDividerMouseDown(c.event as MouseEvent, 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 :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 @mousedown=\"${(_, c) => c.parent.onRightDividerMouseDown(c.event as MouseEvent, 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) => (c.parent as Table).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 @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) => !(c.parent as Table).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 :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 @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-expand-toggle=\"${(x, c) => c.parent.handleRowExpanded(x.index)}\"\n >\n ${when((x, c) => (c.parent as Table).openActionMenuRecordId === (c.parent as Table).tableData[x.index]?.id, html<VirtualItem, Table>`\n ${repeat((_, c) => (c.parent as Table).actionMenuSlots, html<string, Table>`\n <slot\n name=\"${x => x}\"\n slot=\"${x => `row-action-menu-${x}`}\">\n </slot>\n `)}\n `)}\n </${tableRowTag}>\n `)}\n `)}\n `)}\n </div>\n </div>\n </div>\n </div>\n </template>\n`;\n"]}
@@ -2,8 +2,10 @@ import type { Table } from '..';
2
2
  import type { TableHeader } from '../components/header';
3
3
  import { TableColumnSortDirection, TableRecord, TableRowSelectionState } from '../types';
4
4
  import type { MenuButton } from '../../menu-button';
5
+ import type { TableCell } from '../components/cell';
5
6
  import type { TableGroupHeaderView } from '../../table-column/base/group-header-view';
6
7
  import { TableCellView } from '../../table-column/base/cell-view';
8
+ import type { TableRow } from '../components/row';
7
9
  import { Anchor } from '../../anchor';
8
10
  /**
9
11
  * Summary information about a column that is sorted in the table for use in the `TablePageObject`.
@@ -47,6 +49,7 @@ export declare class TablePageObject<T extends TableRecord> {
47
49
  sizeTableToGivenRowWidth(rowWidth: number, table: Table<T>): Promise<void>;
48
50
  getCellRenderedWidth(rowIndex: number, columnIndex: number): number;
49
51
  getTotalCellRenderedWidth(): number;
52
+ scrollToFirstRowAsync(): Promise<void>;
50
53
  scrollToLastRowAsync(): Promise<void>;
51
54
  getCellActionMenu(rowIndex: number, columnIndex: number): MenuButton | null;
52
55
  clickCellActionMenu(rowIndex: number, columnIndex: number): Promise<void>;
@@ -94,9 +97,11 @@ export declare class TablePageObject<T extends TableRecord> {
94
97
  getChildRowCountForGroup(groupRowIndex: number): number;
95
98
  /** @internal */
96
99
  getGroupRowHeaderView(groupRowIndex: number): TableGroupHeaderView;
97
- private getRow;
100
+ /** @internal */
101
+ getRow(rowIndex: number): TableRow;
102
+ /** @internal */
103
+ getCell(rowIndex: number, columnIndex: number): TableCell;
98
104
  private getRowById;
99
- private getCell;
100
105
  private getCellById;
101
106
  private getCollapseAllButton;
102
107
  private getExpandCollapseButtonForRow;
@@ -78,7 +78,7 @@ export class TablePageObject {
78
78
  }
79
79
  getRenderedCellView(rowIndex, columnIndex) {
80
80
  const cell = this.getCell(rowIndex, columnIndex);
81
- const cellView = cell.shadowRoot.firstElementChild;
81
+ const cellView = cell.cellViewContainer.firstElementChild;
82
82
  if (!(cellView instanceof TableCellView)) {
83
83
  throw new Error('Cell view not found in cell - ensure cellViewTag is set for column');
84
84
  }
@@ -86,7 +86,7 @@ export class TablePageObject {
86
86
  }
87
87
  getRenderedCellViewById(recordId, columnId) {
88
88
  const cell = this.getCellById(recordId, columnId);
89
- const cellView = cell.shadowRoot.firstElementChild;
89
+ const cellView = cell.cellViewContainer.firstElementChild;
90
90
  if (!(cellView instanceof TableCellView)) {
91
91
  throw new Error('Cell view not found in cell - ensure cellViewTag is set for column');
92
92
  }
@@ -166,6 +166,11 @@ export class TablePageObject {
166
166
  return p + c.getBoundingClientRect().width;
167
167
  }, 0);
168
168
  }
169
+ async scrollToFirstRowAsync() {
170
+ const scrollElement = this.tableElement.viewport;
171
+ scrollElement.scroll({ top: 0 });
172
+ await waitForUpdatesAsync();
173
+ }
169
174
  async scrollToLastRowAsync() {
170
175
  const scrollElement = this.tableElement.viewport;
171
176
  scrollElement.scroll({ top: scrollElement.scrollHeight });
@@ -417,6 +422,7 @@ export class TablePageObject {
417
422
  const groupRow = this.getGroupRow(groupRowIndex);
418
423
  return groupRow.shadowRoot.querySelector('.group-header-view');
419
424
  }
425
+ /** @internal */
420
426
  getRow(rowIndex) {
421
427
  const rows = this.tableElement.shadowRoot.querySelectorAll('nimble-table-row');
422
428
  if (rowIndex >= rows.length) {
@@ -424,13 +430,7 @@ export class TablePageObject {
424
430
  }
425
431
  return rows.item(rowIndex);
426
432
  }
427
- getRowById(recordId) {
428
- const row = this.tableElement.shadowRoot.querySelector(`nimble-table-row[record-id="${CSS.escape(recordId)}"]`);
429
- if (!row) {
430
- throw new Error('Row with given id was not found. It may not be scrolled into view.');
431
- }
432
- return row;
433
- }
433
+ /** @internal */
434
434
  getCell(rowIndex, columnIndex) {
435
435
  const row = this.getRow(rowIndex);
436
436
  const cells = row.shadowRoot.querySelectorAll('nimble-table-cell');
@@ -439,6 +439,13 @@ export class TablePageObject {
439
439
  }
440
440
  return cells.item(columnIndex);
441
441
  }
442
+ getRowById(recordId) {
443
+ const row = this.tableElement.shadowRoot.querySelector(`nimble-table-row[record-id="${CSS.escape(recordId)}"]`);
444
+ if (!row) {
445
+ throw new Error('Row with given id was not found. It may not be scrolled into view.');
446
+ }
447
+ return row;
448
+ }
442
449
  getCellById(recordId, columnId) {
443
450
  const row = this.getRowById(recordId);
444
451
  const cell = row.shadowRoot.querySelector(`nimble-table-cell[column-id="${CSS.escape(columnId)}"]`);
@@ -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 { keyShift } from '@microsoft/fast-web-utilities';\nimport type { Table } from '..';\nimport type { TableHeader } from '../components/header';\nimport {\n TableColumnSortDirection,\n TableRecord,\n TableRowSelectionState\n} from '../types';\nimport { waitForUpdatesAsync } from '../../testing/async-helpers';\nimport type { MenuButton } from '../../menu-button';\nimport type { TableCell } from '../components/cell';\nimport type { TableGroupHeaderView } from '../../table-column/base/group-header-view';\nimport { TableCellView } from '../../table-column/base/cell-view';\nimport type { TableRow } from '../components/row';\nimport { Anchor, anchorTag } from '../../anchor';\nimport type { TableGroupRow } from '../components/group-row';\nimport type { Button } from '../../button';\nimport { Icon } from '../../icon-base';\nimport { Spinner, spinnerTag } from '../../spinner';\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(\n 'nimble-table-header'\n )!;\n return headers.length;\n }\n\n public getRenderedCellCountForRow(rowIndex: number): number {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll('nimble-table-cell');\n return cells.length;\n }\n\n public getHeaderContent(columnIndex: number): Node | undefined {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n 'nimble-table-header'\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 'nimble-table-header'\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 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 'nimble-table-header'\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(\n 'nimble-table-row'\n ).length;\n }\n\n public getRenderedGroupRowCount(): number {\n return this.tableElement.shadowRoot!.querySelectorAll(\n 'nimble-table-group-row'\n ).length;\n }\n\n public getAllGroupRowsExpandedState(): boolean[] {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(\n 'nimble-table-group-row'\n );\n return Array.from(groupRows).map(row => row.expanded);\n }\n\n public getAllDataRowsExpandedState(): boolean[] {\n const rows = this.tableElement.shadowRoot!.querySelectorAll('nimble-table-row');\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.shadowRoot!.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.shadowRoot!.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 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(\n 'nimble-table-group-row'\n );\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('nimble-table-cell');\n return Array.from(cells!).reduce((p, c) => {\n return p + c.getBoundingClientRect().width;\n }, 0);\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(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector<MenuButton>('nimble-menu-button');\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('nimble-table-cell');\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 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: keyShift\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: keyShift\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: keyShift\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: keyShift\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyUpEvent);\n }\n }\n\n /**\n * @param columnIndex The index of the column to the left of a divider being dragged. Thus, this\n * can not 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 const divider = this.getColumnRightDivider(columnIndex);\n if (!divider) {\n throw new Error(\n 'The provided column index has no right divider associated with it.'\n );\n }\n const dividerRect = divider.getBoundingClientRect();\n let currentMouseX = (dividerRect.x + dividerRect.width) / 2;\n const mouseDownEvent = new MouseEvent('mousedown', {\n clientX: currentMouseX,\n clientY: (dividerRect.y + dividerRect.height) / 2\n });\n divider.dispatchEvent(mouseDownEvent);\n\n for (const delta of deltas) {\n currentMouseX += delta;\n const mouseMoveEvent = new MouseEvent('mousemove', {\n clientX: currentMouseX\n });\n document.dispatchEvent(mouseMoveEvent);\n }\n\n const mouseUpEvent = new MouseEvent('mouseup');\n document.dispatchEvent(mouseUpEvent);\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 const divider = this.getColumnLeftDivider(columnIndex);\n if (!divider) {\n throw new Error(\n 'The provided column index has no left divider associated with it.'\n );\n }\n const dividerRect = divider.getBoundingClientRect();\n let currentMouseX = (dividerRect.x + dividerRect.width) / 2;\n const mouseDownEvent = new MouseEvent('mousedown', {\n clientX: currentMouseX,\n clientY: (dividerRect.y + dividerRect.height) / 2\n });\n divider.dispatchEvent(mouseDownEvent);\n\n for (const delta of deltas) {\n currentMouseX += delta;\n const mouseMoveEvent = new MouseEvent('mousemove', {\n clientX: currentMouseX\n });\n document.dispatchEvent(mouseMoveEvent);\n }\n\n const mouseUpEvent = new MouseEvent('mouseup');\n document.dispatchEvent(mouseUpEvent);\n }\n\n public getColumnRightDivider(index: number): HTMLElement | null {\n const headerContainers = this.tableElement.shadowRoot!.querySelectorAll('.header-container');\n if (index < 0 || index >= 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\n return headerContainers[index]!.querySelector('.column-divider.right');\n }\n\n public getColumnLeftDivider(index: number): HTMLElement | null {\n const headerContainers = this.tableElement.shadowRoot!.querySelectorAll('.header-container');\n if (index < 0 || index >= 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\n return headerContainers[index]!.querySelector('.column-divider.left');\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 getGroupRowHeaderView(groupRowIndex: number): TableGroupHeaderView {\n const groupRow = this.getGroupRow(groupRowIndex);\n return groupRow.shadowRoot!.querySelector('.group-header-view')!;\n }\n\n private getRow(rowIndex: number): TableRow {\n const rows = this.tableElement.shadowRoot!.querySelectorAll('nimble-table-row');\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 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 getCell(rowIndex: number, columnIndex: number): TableCell {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll('nimble-table-cell');\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 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(\n 'nimble-table-group-row'\n );\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 readonly isSlotElement = (\n element: Node | undefined\n ): element is HTMLSlotElement => {\n return element?.nodeName === 'SLOT' ?? false;\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 { keyShift } from '@microsoft/fast-web-utilities';\nimport type { Table } from '..';\nimport type { TableHeader } from '../components/header';\nimport {\n TableColumnSortDirection,\n TableRecord,\n TableRowSelectionState\n} from '../types';\nimport { waitForUpdatesAsync } from '../../testing/async-helpers';\nimport type { MenuButton } from '../../menu-button';\nimport type { TableCell } from '../components/cell';\nimport type { TableGroupHeaderView } from '../../table-column/base/group-header-view';\nimport { TableCellView } from '../../table-column/base/cell-view';\nimport type { TableRow } from '../components/row';\nimport { Anchor, anchorTag } from '../../anchor';\nimport type { TableGroupRow } from '../components/group-row';\nimport type { Button } from '../../button';\nimport { Icon } from '../../icon-base';\nimport { Spinner, spinnerTag } from '../../spinner';\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(\n 'nimble-table-header'\n )!;\n return headers.length;\n }\n\n public getRenderedCellCountForRow(rowIndex: number): number {\n const row = this.getRow(rowIndex);\n const cells = row.shadowRoot!.querySelectorAll('nimble-table-cell');\n return cells.length;\n }\n\n public getHeaderContent(columnIndex: number): Node | undefined {\n const headers = this.tableElement.shadowRoot!.querySelectorAll<TableHeader>(\n 'nimble-table-header'\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 'nimble-table-header'\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 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 'nimble-table-header'\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(\n 'nimble-table-row'\n ).length;\n }\n\n public getRenderedGroupRowCount(): number {\n return this.tableElement.shadowRoot!.querySelectorAll(\n 'nimble-table-group-row'\n ).length;\n }\n\n public getAllGroupRowsExpandedState(): boolean[] {\n const groupRows = this.tableElement.shadowRoot!.querySelectorAll(\n 'nimble-table-group-row'\n );\n return Array.from(groupRows).map(row => row.expanded);\n }\n\n public getAllDataRowsExpandedState(): boolean[] {\n const rows = this.tableElement.shadowRoot!.querySelectorAll('nimble-table-row');\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 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(\n 'nimble-table-group-row'\n );\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('nimble-table-cell');\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(\n rowIndex,\n columnIndex\n ).shadowRoot!.querySelector<MenuButton>('nimble-menu-button');\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('nimble-table-cell');\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 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: keyShift\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: keyShift\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: keyShift\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: keyShift\n } as KeyboardEventInit);\n document.dispatchEvent(shiftKeyUpEvent);\n }\n }\n\n /**\n * @param columnIndex The index of the column to the left of a divider being dragged. Thus, this\n * can not 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 const divider = this.getColumnRightDivider(columnIndex);\n if (!divider) {\n throw new Error(\n 'The provided column index has no right divider associated with it.'\n );\n }\n const dividerRect = divider.getBoundingClientRect();\n let currentMouseX = (dividerRect.x + dividerRect.width) / 2;\n const mouseDownEvent = new MouseEvent('mousedown', {\n clientX: currentMouseX,\n clientY: (dividerRect.y + dividerRect.height) / 2\n });\n divider.dispatchEvent(mouseDownEvent);\n\n for (const delta of deltas) {\n currentMouseX += delta;\n const mouseMoveEvent = new MouseEvent('mousemove', {\n clientX: currentMouseX\n });\n document.dispatchEvent(mouseMoveEvent);\n }\n\n const mouseUpEvent = new MouseEvent('mouseup');\n document.dispatchEvent(mouseUpEvent);\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 const divider = this.getColumnLeftDivider(columnIndex);\n if (!divider) {\n throw new Error(\n 'The provided column index has no left divider associated with it.'\n );\n }\n const dividerRect = divider.getBoundingClientRect();\n let currentMouseX = (dividerRect.x + dividerRect.width) / 2;\n const mouseDownEvent = new MouseEvent('mousedown', {\n clientX: currentMouseX,\n clientY: (dividerRect.y + dividerRect.height) / 2\n });\n divider.dispatchEvent(mouseDownEvent);\n\n for (const delta of deltas) {\n currentMouseX += delta;\n const mouseMoveEvent = new MouseEvent('mousemove', {\n clientX: currentMouseX\n });\n document.dispatchEvent(mouseMoveEvent);\n }\n\n const mouseUpEvent = new MouseEvent('mouseup');\n document.dispatchEvent(mouseUpEvent);\n }\n\n public getColumnRightDivider(index: number): HTMLElement | null {\n const headerContainers = this.tableElement.shadowRoot!.querySelectorAll('.header-container');\n if (index < 0 || index >= 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\n return headerContainers[index]!.querySelector('.column-divider.right');\n }\n\n public getColumnLeftDivider(index: number): HTMLElement | null {\n const headerContainers = this.tableElement.shadowRoot!.querySelectorAll('.header-container');\n if (index < 0 || index >= 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\n return headerContainers[index]!.querySelector('.column-divider.left');\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 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('nimble-table-row');\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('nimble-table-cell');\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(\n 'nimble-table-group-row'\n );\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 readonly isSlotElement = (\n element: Node | undefined\n ): element is HTMLSlotElement => {\n return element?.nodeName === 'SLOT' ?? false;\n };\n}\n"]}
@@ -1,5 +1,8 @@
1
+ import type { Checkbox } from '../checkbox';
2
+ import type { MenuButton } from '../menu-button';
1
3
  import type { TableColumn } from '../table-column/base';
2
4
  import type { ValidityObject } from '../utilities/models/validator';
5
+ import type { TableCell } from './components/cell';
3
6
  /**
4
7
  * TableFieldName describes the type associated with keys within
5
8
  * a table's records.
@@ -183,4 +186,39 @@ export interface TableRowState<TData extends TableRecord = TableRecord> {
183
186
  groupColumn?: TableColumn;
184
187
  isParentRow: boolean;
185
188
  isLoadingChildren: boolean;
189
+ resolvedRowIndex?: number;
190
+ }
191
+ /**
192
+ * @internal
193
+ * Table keyboard focus types
194
+ */
195
+ export declare const TableFocusType: {
196
+ readonly none: "none";
197
+ readonly columnHeader: "columnHeader";
198
+ readonly headerActions: "headerActions";
199
+ readonly row: "row";
200
+ readonly rowSelectionCheckbox: "rowSelectionCheckbox";
201
+ readonly cell: "cell";
202
+ readonly cellActionMenu: "cellActionMenu";
203
+ readonly cellContent: "cellContent";
204
+ };
205
+ export type TableFocusType = (typeof TableFocusType)[keyof typeof TableFocusType];
206
+ /**
207
+ * @internal
208
+ * Focusable elements of a table row
209
+ */
210
+ export interface TableRowFocusableElements {
211
+ selectionCheckbox?: Checkbox;
212
+ cells: {
213
+ cell: TableCell;
214
+ actionMenuButton?: MenuButton;
215
+ }[];
216
+ }
217
+ /**
218
+ * @internal
219
+ * Focusable elements of a table's header
220
+ */
221
+ export interface TableHeaderFocusableElements {
222
+ headerActions: HTMLElement[];
223
+ columnHeaders: HTMLElement[];
186
224
  }
@@ -29,4 +29,18 @@ export const TableRowSelectionState = {
29
29
  selected: 'selected',
30
30
  partiallySelected: 'partially-selected'
31
31
  };
32
+ /**
33
+ * @internal
34
+ * Table keyboard focus types
35
+ */
36
+ export const TableFocusType = {
37
+ none: 'none',
38
+ columnHeader: 'columnHeader',
39
+ headerActions: 'headerActions',
40
+ row: 'row',
41
+ rowSelectionCheckbox: 'rowSelectionCheckbox',
42
+ cell: 'cell',
43
+ cellActionMenu: 'cellActionMenu',
44
+ cellContent: 'cellContent'
45
+ };
32
46
  //# sourceMappingURL=types.js.map