@cloudscape-design/components 3.0.363 → 3.0.364

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 (96) hide show
  1. package/alert/internal.d.ts.map +1 -1
  2. package/alert/internal.js +13 -14
  3. package/alert/internal.js.map +1 -1
  4. package/alert/styles.css.js +25 -25
  5. package/alert/styles.scoped.css +52 -66
  6. package/alert/styles.selectors.js +25 -25
  7. package/breadcrumb-group/internal.d.ts.map +1 -1
  8. package/breadcrumb-group/internal.js +5 -5
  9. package/breadcrumb-group/internal.js.map +1 -1
  10. package/button-dropdown/interfaces.d.ts +9 -1
  11. package/button-dropdown/interfaces.d.ts.map +1 -1
  12. package/button-dropdown/interfaces.js.map +1 -1
  13. package/button-dropdown/internal.d.ts.map +1 -1
  14. package/button-dropdown/internal.js +9 -2
  15. package/button-dropdown/internal.js.map +1 -1
  16. package/button-dropdown/styles.css.js +15 -14
  17. package/button-dropdown/styles.scoped.css +25 -21
  18. package/button-dropdown/styles.selectors.js +15 -14
  19. package/form/index.d.ts.map +1 -1
  20. package/form/index.js +2 -1
  21. package/form/index.js.map +1 -1
  22. package/internal/analytics/components/analytics-funnel.d.ts +1 -1
  23. package/internal/analytics/components/analytics-funnel.d.ts.map +1 -1
  24. package/internal/analytics/components/analytics-funnel.js +92 -26
  25. package/internal/analytics/components/analytics-funnel.js.map +1 -1
  26. package/internal/analytics/context/analytics-context.d.ts +4 -0
  27. package/internal/analytics/context/analytics-context.d.ts.map +1 -1
  28. package/internal/analytics/context/analytics-context.js +4 -0
  29. package/internal/analytics/context/analytics-context.js.map +1 -1
  30. package/internal/analytics/hooks/use-funnel.d.ts +2 -0
  31. package/internal/analytics/hooks/use-funnel.d.ts.map +1 -1
  32. package/internal/components/menu-dropdown/index.d.ts +1 -1
  33. package/internal/components/menu-dropdown/index.d.ts.map +1 -1
  34. package/internal/components/menu-dropdown/index.js +7 -5
  35. package/internal/components/menu-dropdown/index.js.map +1 -1
  36. package/internal/components/menu-dropdown/interfaces.d.ts +1 -0
  37. package/internal/components/menu-dropdown/interfaces.d.ts.map +1 -1
  38. package/internal/components/menu-dropdown/interfaces.js.map +1 -1
  39. package/internal/environment.js +1 -1
  40. package/internal/environment.json +1 -1
  41. package/internal/manifest.json +1 -1
  42. package/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
  43. package/mixed-line-bar-chart/bar-series.js +14 -3
  44. package/mixed-line-bar-chart/bar-series.js.map +1 -1
  45. package/mixed-line-bar-chart/styles.css.js +11 -11
  46. package/mixed-line-bar-chart/styles.scoped.css +17 -22
  47. package/mixed-line-bar-chart/styles.selectors.js +11 -11
  48. package/modal/internal.d.ts.map +1 -1
  49. package/modal/internal.js +14 -12
  50. package/modal/internal.js.map +1 -1
  51. package/package.json +1 -1
  52. package/progress-bar/index.d.ts.map +1 -1
  53. package/progress-bar/index.js +7 -4
  54. package/progress-bar/index.js.map +1 -1
  55. package/table/body-cell/td-element.d.ts +2 -1
  56. package/table/body-cell/td-element.d.ts.map +1 -1
  57. package/table/body-cell/td-element.js +3 -3
  58. package/table/body-cell/td-element.js.map +1 -1
  59. package/table/header-cell/index.d.ts +1 -1
  60. package/table/header-cell/index.d.ts.map +1 -1
  61. package/table/header-cell/index.js +2 -2
  62. package/table/header-cell/index.js.map +1 -1
  63. package/table/internal.d.ts.map +1 -1
  64. package/table/internal.js +12 -14
  65. package/table/internal.js.map +1 -1
  66. package/table/table-role/index.d.ts +3 -1
  67. package/table/table-role/index.d.ts.map +1 -1
  68. package/table/table-role/index.js +2 -1
  69. package/table/table-role/index.js.map +1 -1
  70. package/table/table-role/interfaces.d.ts +18 -0
  71. package/table/table-role/interfaces.d.ts.map +1 -0
  72. package/table/table-role/interfaces.js +4 -0
  73. package/table/table-role/interfaces.js.map +1 -0
  74. package/table/table-role/table-role-helper.d.ts +16 -4
  75. package/table/table-role/table-role-helper.d.ts.map +1 -1
  76. package/table/table-role/table-role-helper.js +39 -4
  77. package/table/table-role/table-role-helper.js.map +1 -1
  78. package/table/table-role/use-grid-navigation.d.ts +7 -0
  79. package/table/table-role/use-grid-navigation.d.ts.map +1 -0
  80. package/table/table-role/use-grid-navigation.js +185 -0
  81. package/table/table-role/use-grid-navigation.js.map +1 -0
  82. package/table/table-role/utils.d.ts +23 -0
  83. package/table/table-role/utils.d.ts.map +1 -0
  84. package/table/table-role/utils.js +141 -0
  85. package/table/table-role/utils.js.map +1 -0
  86. package/table/thead.d.ts.map +1 -1
  87. package/table/thead.js +4 -4
  88. package/table/thead.js.map +1 -1
  89. package/test-utils/dom/button-dropdown/index.js +1 -3
  90. package/test-utils/dom/button-dropdown/index.js.map +1 -1
  91. package/test-utils/selectors/button-dropdown/index.js +1 -3
  92. package/test-utils/selectors/button-dropdown/index.js.map +1 -1
  93. package/test-utils/tsconfig.tsbuildinfo +1 -1
  94. package/wizard/index.d.ts.map +1 -1
  95. package/wizard/index.js +8 -1
  96. package/wizard/index.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-grid-navigation.js","sourceRoot":"lib/default/","sources":["table/table-role/use-grid-navigation.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useEffect, useMemo } from 'react';\nimport { findFocusinCell, moveFocusBy, moveFocusIn, updateTableIndices } from './utils';\nimport { FocusedCell, GridNavigationAPI, GridNavigationProps } from './interfaces';\nimport { KeyCode } from '../../internal/keycode';\nimport { containsOrEqual } from '../../internal/utils/dom';\n\n/**\n * Makes table with role=\"grid\" navigable with keyboard commands.\n * See https://www.w3.org/WAI/ARIA/apg/patterns/grid\n */\nexport function useGridNavigation({ tableRole, pageSize, getTable }: GridNavigationProps): GridNavigationAPI {\n const model = useMemo(() => new GridNavigationModel(), []);\n\n // Initialize the model with the table container assuming it is mounted synchronously and only once.\n useEffect(\n () => {\n if (tableRole === 'grid') {\n const table = getTable();\n table && model.init(table);\n }\n return () => model.destroy();\n },\n // Assuming getTable is stable.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [model, tableRole]\n );\n\n // Notify the model of the props change.\n useEffect(() => {\n model.update({ pageSize });\n }, [model, pageSize]);\n\n return {};\n}\n\nclass GridNavigationModel {\n // Props\n private _pageSize = 0;\n private _table: null | HTMLTableElement = null;\n\n // State\n private prevFocusedCell: null | FocusedCell = null;\n private focusedCell: null | FocusedCell = null;\n private cleanup = () => {};\n\n public init(table: HTMLTableElement) {\n this._table = table;\n\n this.table.addEventListener('focusin', this.onFocusin);\n this.table.addEventListener('focusout', this.onFocusout);\n this.table.addEventListener('keydown', this.onKeydown);\n\n const mutationObserver = new MutationObserver(this.onMutation);\n mutationObserver.observe(table, { childList: true, subtree: true });\n\n // No need to clean this up as no resources are allocated.\n updateTableIndices(this.table, this.focusedCell ?? this.prevFocusedCell);\n\n this.cleanup = () => {\n this.table.removeEventListener('focusin', this.onFocusin);\n this.table.removeEventListener('focusout', this.onFocusout);\n this.table.removeEventListener('keydown', this.onKeydown);\n\n mutationObserver.disconnect();\n };\n }\n\n public destroy() {\n this.cleanup();\n }\n\n public update({ pageSize }: { pageSize: number }) {\n this._pageSize = pageSize;\n }\n\n private get pageSize() {\n return this._pageSize;\n }\n\n private get table(): HTMLTableElement {\n if (!this._table) {\n throw new Error('Invariant violation: GridNavigationModel is used before initialization.');\n }\n return this._table;\n }\n\n private onFocusin = (event: FocusEvent) => {\n const cell = findFocusinCell(event);\n\n if (!cell) {\n return;\n }\n this.prevFocusedCell = cell;\n this.focusedCell = cell;\n\n updateTableIndices(this.table, cell);\n };\n\n private onFocusout = () => {\n this.focusedCell = null;\n };\n\n private onKeydown = (event: KeyboardEvent) => {\n if (!this.focusedCell) {\n return;\n }\n\n const f2Code = 113;\n const ctrlKey = event.ctrlKey ? 1 : 0;\n const altKey = event.altKey ? 1 : 0;\n const shiftKey = event.shiftKey ? 1 : 0;\n const metaKey = event.metaKey ? 1 : 0;\n const numModifiersPressed = ctrlKey + altKey + shiftKey + metaKey;\n\n let key = event.keyCode;\n if (numModifiersPressed === 1 && event.ctrlKey) {\n key = -key;\n } else if (numModifiersPressed) {\n return;\n }\n\n const from = this.focusedCell;\n const minExtreme = Number.NEGATIVE_INFINITY;\n const maxExtreme = Number.POSITIVE_INFINITY;\n\n // When focus is inside widget cell only intercept Escape and F2 commands to move focus back to cell.\n if (from.widget && from.element !== from.cellElement) {\n if (key === KeyCode.escape || key === f2Code) {\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 0, x: 0 });\n }\n return;\n }\n\n switch (key) {\n case KeyCode.up:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: -1, x: 0 });\n\n case KeyCode.down:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 1, x: 0 });\n\n case KeyCode.left:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 0, x: -1 });\n\n case KeyCode.right:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 0, x: 1 });\n\n case KeyCode.pageUp:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: -this.pageSize, x: 0 });\n\n case KeyCode.pageDown:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: this.pageSize, x: 0 });\n\n case KeyCode.home:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 0, x: minExtreme });\n\n case KeyCode.end:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 0, x: maxExtreme });\n\n case -KeyCode.home:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: minExtreme, x: minExtreme });\n\n case -KeyCode.end:\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: maxExtreme, x: maxExtreme });\n\n case KeyCode.enter:\n if (from.element === from.cellElement) {\n event.preventDefault();\n return moveFocusIn(from);\n }\n break;\n\n case KeyCode.escape:\n if (from.element !== from.cellElement) {\n event.preventDefault();\n return moveFocusBy(this.table, from, { y: 0, x: 0 });\n }\n break;\n\n case f2Code:\n event.preventDefault();\n if (from.element === from.cellElement) {\n return moveFocusIn(from);\n } else {\n return moveFocusBy(this.table, from, { y: 0, x: 0 });\n }\n\n default:\n return;\n }\n };\n\n private onMutation = (mutationRecords: MutationRecord[]) => {\n if (!this.prevFocusedCell) {\n return;\n }\n\n // When focused cell was un-mounted - re-apply focus to the same location.\n for (const record of mutationRecords) {\n if (record.type === 'childList') {\n for (const removedNode of Array.from(record.removedNodes)) {\n if (containsOrEqual(removedNode, this.prevFocusedCell.element)) {\n moveFocusBy(this.table, this.prevFocusedCell, { y: 0, x: 0 });\n }\n }\n }\n }\n\n updateTableIndices(this.table, this.focusedCell ?? this.prevFocusedCell);\n };\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import { FocusedCell } from './interfaces';
2
+ /**
3
+ * Finds focused cell props corresponding the focused element inside the table.
4
+ * The function relies on ARIA colindex/rowindex attributes being set.
5
+ */
6
+ export declare function findFocusinCell(event: FocusEvent): null | FocusedCell;
7
+ /**
8
+ * Moves table focus in the provided direction. The focus can transition between cells or between
9
+ * focusable elements within a cell unless the cell is marked as a widget.
10
+ */
11
+ export declare function moveFocusBy(table: HTMLTableElement, from: FocusedCell, delta: {
12
+ y: number;
13
+ x: number;
14
+ }): void;
15
+ /**
16
+ * Moves focus to the first focusable element inside the cell.
17
+ */
18
+ export declare function moveFocusIn(from: FocusedCell): void;
19
+ /**
20
+ * Ensures exactly one table element is focusable for the entire table to have a single TAB stop.
21
+ */
22
+ export declare function updateTableIndices(table: HTMLTableElement, cell: null | FocusedCell): void;
23
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"lib/default/","sources":["table/table-role/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,WAAW,CA0BrE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,QAsCtG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,QAE5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,QA2BnF"}
@@ -0,0 +1,141 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { getFocusables as getActualFocusables } from '../../internal/components/focus-lock/utils';
4
+ /**
5
+ * Finds focused cell props corresponding the focused element inside the table.
6
+ * The function relies on ARIA colindex/rowindex attributes being set.
7
+ */
8
+ export function findFocusinCell(event) {
9
+ var _a, _b;
10
+ const element = event.target;
11
+ if (!(element instanceof HTMLElement)) {
12
+ return null;
13
+ }
14
+ const cellElement = element.closest('td,th');
15
+ const rowElement = cellElement === null || cellElement === void 0 ? void 0 : cellElement.closest('tr');
16
+ if (!cellElement || !rowElement) {
17
+ return null;
18
+ }
19
+ const colIndex = parseInt((_a = cellElement.getAttribute('aria-colindex')) !== null && _a !== void 0 ? _a : '');
20
+ const rowIndex = parseInt((_b = rowElement.getAttribute('aria-rowindex')) !== null && _b !== void 0 ? _b : '');
21
+ if (isNaN(colIndex) || isNaN(rowIndex)) {
22
+ return null;
23
+ }
24
+ const cellFocusables = getFocusables(cellElement);
25
+ const elementIndex = cellFocusables.indexOf(element);
26
+ const widget = isWidgetCell(cellElement);
27
+ return { rowIndex, colIndex, elementIndex, rowElement, cellElement, element, widget };
28
+ }
29
+ /**
30
+ * Moves table focus in the provided direction. The focus can transition between cells or between
31
+ * focusable elements within a cell unless the cell is marked as a widget.
32
+ */
33
+ export function moveFocusBy(table, from, delta) {
34
+ var _a;
35
+ const targetAriaRowIndex = from.rowIndex + delta.y;
36
+ const targetRow = findTableRowByAriaRowIndex(table, targetAriaRowIndex, delta.y);
37
+ if (!targetRow) {
38
+ return;
39
+ }
40
+ // Move focus to the next focusable element within a cell if eligible.
41
+ const cellFocusables = getFocusables(from.cellElement);
42
+ const eligibleForElementFocus = delta.x && !isWidgetCell(from.element) && (cellFocusables.length === 1 || from.element !== from.cellElement);
43
+ const targetElementIndex = from.elementIndex + delta.x;
44
+ if (eligibleForElementFocus && 0 <= targetElementIndex && targetElementIndex < cellFocusables.length) {
45
+ focus(cellFocusables[targetElementIndex]);
46
+ return;
47
+ }
48
+ const targetAriaColIndex = from.colIndex + delta.x;
49
+ const targetCell = findTableRowCellByAriaColIndex(targetRow, targetAriaColIndex, delta.x);
50
+ if (!targetCell) {
51
+ return;
52
+ }
53
+ // For widget cells always focus on the cell element itself.
54
+ if (isWidgetCell(targetCell)) {
55
+ return focus(targetCell);
56
+ }
57
+ // For zero delta (exiting command) and multi-element cell focus cell itself.
58
+ const targetCellFocusables = getFocusables(targetCell);
59
+ if (delta.x === 0 && delta.y === 0 && targetCellFocusables.length > 1) {
60
+ return focus(targetCell);
61
+ }
62
+ // For non-widget cell focus on the focusable element inside if exactly one is available.
63
+ const focusIndex = delta.x === 0 ? from.elementIndex : targetCellFocusables.length === 1 ? 0 : -1;
64
+ const focusTarget = (_a = targetCellFocusables[focusIndex]) !== null && _a !== void 0 ? _a : targetCell;
65
+ focus(focusTarget);
66
+ }
67
+ /**
68
+ * Moves focus to the first focusable element inside the cell.
69
+ */
70
+ export function moveFocusIn(from) {
71
+ focus(getFirstFocusable(from.cellElement));
72
+ }
73
+ /**
74
+ * Ensures exactly one table element is focusable for the entire table to have a single TAB stop.
75
+ */
76
+ export function updateTableIndices(table, cell) {
77
+ const tableCells = table.querySelectorAll('td,th');
78
+ for (const cell of Array.from(tableCells)) {
79
+ cell.tabIndex = -1;
80
+ cell.setAttribute('data-focusable', 'true');
81
+ }
82
+ for (const focusable of getActualFocusables(table)) {
83
+ focusable.tabIndex = -1;
84
+ focusable.setAttribute('data-focusable', 'true');
85
+ }
86
+ // Make focused element the only focusable element of the table.
87
+ if (cell && table.contains(cell.element)) {
88
+ cell.element.tabIndex = 0;
89
+ // For widget cells also unmute all cell elements to be focusable with Tab/Shift+Tab.
90
+ if (cell.widget) {
91
+ getFocusables(cell.cellElement).forEach(element => (element.tabIndex = 0));
92
+ }
93
+ }
94
+ // Make first table cell the only focusable element of the table.
95
+ else if (tableCells[0]) {
96
+ const cellFocusables = getFocusables(tableCells[0]);
97
+ cellFocusables[0] ? (cellFocusables[0].tabIndex = 0) : (tableCells[0].tabIndex = 0);
98
+ }
99
+ }
100
+ function isWidgetCell(cell) {
101
+ return cell.getAttribute('data-widget-cell') === 'true';
102
+ }
103
+ function getFocusables(element) {
104
+ return Array.from(element.querySelectorAll('[data-focusable="true"]'));
105
+ }
106
+ function getFirstFocusable(element) {
107
+ return getFocusables(element)[0];
108
+ }
109
+ function findTableRowByAriaRowIndex(table, targetAriaRowIndex, delta) {
110
+ var _a;
111
+ let targetRow = null;
112
+ const rowElements = table.querySelectorAll('tr[aria-rowindex]');
113
+ for (let elementIndex = 0; elementIndex < rowElements.length; elementIndex++) {
114
+ const rowIndex = parseInt((_a = rowElements[elementIndex].getAttribute('aria-rowindex')) !== null && _a !== void 0 ? _a : '');
115
+ targetRow = rowElements[elementIndex];
116
+ if (rowIndex === targetAriaRowIndex || (delta < 0 && rowIndex >= targetAriaRowIndex)) {
117
+ break;
118
+ }
119
+ }
120
+ return targetRow;
121
+ }
122
+ function findTableRowCellByAriaColIndex(tableRow, targetAriaColIndex, delta) {
123
+ var _a;
124
+ let targetCell = null;
125
+ const cellElements = tableRow.querySelectorAll('td[aria-colindex],th[aria-colindex]');
126
+ for (let elementIndex = 0; elementIndex < cellElements.length; elementIndex++) {
127
+ const columnIndex = parseInt((_a = cellElements[elementIndex].getAttribute('aria-colindex')) !== null && _a !== void 0 ? _a : '');
128
+ targetCell = cellElements[elementIndex];
129
+ if (columnIndex === targetAriaColIndex || (delta < 0 && columnIndex >= targetAriaColIndex)) {
130
+ break;
131
+ }
132
+ }
133
+ return targetCell;
134
+ }
135
+ function focus(element) {
136
+ if (element) {
137
+ element.tabIndex = 0;
138
+ element.focus();
139
+ }
140
+ }
141
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"lib/default/","sources":["table/table-role/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFocusables as getActualFocusables } from '../../internal/components/focus-lock/utils';\nimport { FocusedCell } from './interfaces';\n\n/**\n * Finds focused cell props corresponding the focused element inside the table.\n * The function relies on ARIA colindex/rowindex attributes being set.\n */\nexport function findFocusinCell(event: FocusEvent): null | FocusedCell {\n const element = event.target;\n\n if (!(element instanceof HTMLElement)) {\n return null;\n }\n\n const cellElement = element.closest('td,th') as null | HTMLTableCellElement;\n const rowElement = cellElement?.closest('tr');\n\n if (!cellElement || !rowElement) {\n return null;\n }\n\n const colIndex = parseInt(cellElement.getAttribute('aria-colindex') ?? '');\n const rowIndex = parseInt(rowElement.getAttribute('aria-rowindex') ?? '');\n if (isNaN(colIndex) || isNaN(rowIndex)) {\n return null;\n }\n\n const cellFocusables = getFocusables(cellElement);\n const elementIndex = cellFocusables.indexOf(element);\n\n const widget = isWidgetCell(cellElement);\n\n return { rowIndex, colIndex, elementIndex, rowElement, cellElement, element, widget };\n}\n\n/**\n * Moves table focus in the provided direction. The focus can transition between cells or between\n * focusable elements within a cell unless the cell is marked as a widget.\n */\nexport function moveFocusBy(table: HTMLTableElement, from: FocusedCell, delta: { y: number; x: number }) {\n const targetAriaRowIndex = from.rowIndex + delta.y;\n const targetRow = findTableRowByAriaRowIndex(table, targetAriaRowIndex, delta.y);\n if (!targetRow) {\n return;\n }\n\n // Move focus to the next focusable element within a cell if eligible.\n const cellFocusables = getFocusables(from.cellElement);\n const eligibleForElementFocus =\n delta.x && !isWidgetCell(from.element) && (cellFocusables.length === 1 || from.element !== from.cellElement);\n const targetElementIndex = from.elementIndex + delta.x;\n if (eligibleForElementFocus && 0 <= targetElementIndex && targetElementIndex < cellFocusables.length) {\n focus(cellFocusables[targetElementIndex]);\n return;\n }\n\n const targetAriaColIndex = from.colIndex + delta.x;\n const targetCell = findTableRowCellByAriaColIndex(targetRow, targetAriaColIndex, delta.x);\n if (!targetCell) {\n return;\n }\n\n // For widget cells always focus on the cell element itself.\n if (isWidgetCell(targetCell)) {\n return focus(targetCell);\n }\n\n // For zero delta (exiting command) and multi-element cell focus cell itself.\n const targetCellFocusables = getFocusables(targetCell);\n if (delta.x === 0 && delta.y === 0 && targetCellFocusables.length > 1) {\n return focus(targetCell);\n }\n\n // For non-widget cell focus on the focusable element inside if exactly one is available.\n const focusIndex = delta.x === 0 ? from.elementIndex : targetCellFocusables.length === 1 ? 0 : -1;\n const focusTarget = targetCellFocusables[focusIndex] ?? targetCell;\n focus(focusTarget);\n}\n\n/**\n * Moves focus to the first focusable element inside the cell.\n */\nexport function moveFocusIn(from: FocusedCell) {\n focus(getFirstFocusable(from.cellElement));\n}\n\n/**\n * Ensures exactly one table element is focusable for the entire table to have a single TAB stop.\n */\nexport function updateTableIndices(table: HTMLTableElement, cell: null | FocusedCell) {\n const tableCells = table.querySelectorAll('td,th') as NodeListOf<HTMLTableCellElement>;\n\n for (const cell of Array.from(tableCells)) {\n cell.tabIndex = -1;\n cell.setAttribute('data-focusable', 'true');\n }\n for (const focusable of getActualFocusables(table)) {\n focusable.tabIndex = -1;\n focusable.setAttribute('data-focusable', 'true');\n }\n\n // Make focused element the only focusable element of the table.\n if (cell && table.contains(cell.element)) {\n cell.element.tabIndex = 0;\n\n // For widget cells also unmute all cell elements to be focusable with Tab/Shift+Tab.\n if (cell.widget) {\n getFocusables(cell.cellElement).forEach(element => (element.tabIndex = 0));\n }\n }\n\n // Make first table cell the only focusable element of the table.\n else if (tableCells[0]) {\n const cellFocusables = getFocusables(tableCells[0]);\n cellFocusables[0] ? (cellFocusables[0].tabIndex = 0) : (tableCells[0].tabIndex = 0);\n }\n}\n\nfunction isWidgetCell(cell: HTMLElement) {\n return cell.getAttribute('data-widget-cell') === 'true';\n}\n\nfunction getFocusables(element: HTMLElement) {\n return Array.from(element.querySelectorAll('[data-focusable=\"true\"]')) as HTMLElement[];\n}\n\nfunction getFirstFocusable(element: HTMLElement) {\n return getFocusables(element)[0] as null | HTMLElement;\n}\n\nfunction findTableRowByAriaRowIndex(table: HTMLTableElement, targetAriaRowIndex: number, delta: number) {\n let targetRow: null | HTMLTableRowElement = null;\n const rowElements = table.querySelectorAll('tr[aria-rowindex]');\n for (let elementIndex = 0; elementIndex < rowElements.length; elementIndex++) {\n const rowIndex = parseInt(rowElements[elementIndex].getAttribute('aria-rowindex') ?? '');\n targetRow = rowElements[elementIndex] as HTMLTableRowElement;\n\n if (rowIndex === targetAriaRowIndex || (delta < 0 && rowIndex >= targetAriaRowIndex)) {\n break;\n }\n }\n return targetRow;\n}\n\nfunction findTableRowCellByAriaColIndex(tableRow: HTMLTableRowElement, targetAriaColIndex: number, delta: number) {\n let targetCell: null | HTMLTableCellElement = null;\n const cellElements = tableRow.querySelectorAll('td[aria-colindex],th[aria-colindex]');\n for (let elementIndex = 0; elementIndex < cellElements.length; elementIndex++) {\n const columnIndex = parseInt(cellElements[elementIndex].getAttribute('aria-colindex') ?? '');\n targetCell = cellElements[elementIndex] as HTMLTableCellElement;\n\n if (columnIndex === targetAriaColIndex || (delta < 0 && columnIndex >= targetAriaColIndex)) {\n break;\n }\n }\n return targetCell;\n}\n\nfunction focus(element: null | HTMLElement) {\n if (element) {\n element.tabIndex = 0;\n element.focus();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"thead.d.ts","sourceRoot":"lib/default/","sources":["table/thead.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAA0B,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AASvF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAA8B,SAAS,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC;IACpD,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACzD,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,iBAAiB,EAAE,MAAM,cAAc,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtG,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC5D,eAAe,EAAE,yBAAyB,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,WAAW,CAAC;IAC/B,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1E,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,KAAK,wFAsIV,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"thead.d.ts","sourceRoot":"lib/default/","sources":["table/thead.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAA0B,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AASvF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAA0D,SAAS,EAAE,MAAM,cAAc,CAAC;AAEjG,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC;IACpD,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACzD,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,iBAAiB,EAAE,MAAM,cAAc,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtG,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC5D,eAAe,EAAE,yBAAyB,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,WAAW,CAAC;IAC/B,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1E,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,KAAK,wFAsIV,CAAC;AAEF,eAAe,KAAK,CAAC"}
package/table/thead.js CHANGED
@@ -14,7 +14,7 @@ import cellStyles from './header-cell/styles.css.js';
14
14
  import headerCellStyles from './header-cell/styles.css.js';
15
15
  import ScreenreaderOnly from '../internal/components/screenreader-only';
16
16
  import { useStickyCellStyles } from './sticky-columns';
17
- import { getTableColHeaderRoleProps } from './table-role';
17
+ import { getTableColHeaderRoleProps, getTableHeaderRowRoleProps } from './table-role';
18
18
  const Thead = React.forwardRef(({ containerWidth, selectionType, getSelectAllProps, columnDefinitions, sortingColumn, sortingDisabled, sortingDescending, resizableColumns, variant, wrapLines, onFocusMove, onSortingChange, onResizeFinish, singleSelectionHeaderAriaLabel, stripedRows, sticky = false, hidden = false, stuck = false, stickyState, selectionColumnId, focusedComponent, onFocusedComponentChange, tableRole, }, outerRef) => {
19
19
  const isVisualRefresh = useVisualRefresh();
20
20
  const headerCellClass = clsx(headerCellStyles['header-cell'], headerCellStyles[`header-cell-variant-${variant}`], sticky && headerCellStyles['header-cell-sticky'], stuck && headerCellStyles['header-cell-stuck'], stripedRows && headerCellStyles['has-striped-rows'], isVisualRefresh && headerCellStyles['is-visual-refresh']);
@@ -26,8 +26,8 @@ const Thead = React.forwardRef(({ containerWidth, selectionType, getSelectAllPro
26
26
  getClassName: props => getStickyClassNames(cellStyles, props),
27
27
  });
28
28
  return (React.createElement("thead", { className: clsx(!hidden && styles['thead-active']) },
29
- React.createElement("tr", Object.assign({}, focusMarkers.all, { ref: outerRef, "aria-rowindex": 1 }),
30
- selectionType ? (React.createElement("th", Object.assign({ className: clsx(headerCellClass, selectionCellClass, hidden && headerCellStyles['header-cell-hidden'], stickyStyles.className), style: stickyStyles.style, ref: stickyStyles.ref, scope: "col" }, getTableColHeaderRoleProps({})), selectionType === 'multi' ? (React.createElement(SelectionControl, Object.assign({ onFocusDown: event => {
29
+ React.createElement("tr", Object.assign({}, focusMarkers.all, { ref: outerRef, "aria-rowindex": 1 }, getTableHeaderRowRoleProps({ tableRole })),
30
+ selectionType ? (React.createElement("th", Object.assign({ className: clsx(headerCellClass, selectionCellClass, hidden && headerCellStyles['header-cell-hidden'], stickyStyles.className), style: stickyStyles.style, ref: stickyStyles.ref, scope: "col" }, getTableColHeaderRoleProps({ tableRole, colIndex: 0 })), selectionType === 'multi' ? (React.createElement(SelectionControl, Object.assign({ onFocusDown: event => {
31
31
  onFocusMove(event.target, -1, +1);
32
32
  }, focusedComponent: focusedComponent, onFocusedComponentChange: onFocusedComponentChange }, getSelectAllProps(), (sticky ? { tabIndex: -1 } : {})))) : (React.createElement(ScreenreaderOnly, null, singleSelectionHeaderAriaLabel)))) : null,
33
33
  columnDefinitions.map((column, colIndex) => {
@@ -47,7 +47,7 @@ const Thead = React.forwardRef(({ containerWidth, selectionType, getSelectAllPro
47
47
  width: widthOverride || column.width,
48
48
  minWidth: sticky ? undefined : column.minWidth,
49
49
  maxWidth: resizableColumns || sticky ? undefined : column.maxWidth,
50
- }, tabIndex: sticky ? -1 : 0, focusedComponent: focusedComponent, onFocusedComponentChange: onFocusedComponentChange, column: column, activeSortingColumn: sortingColumn, sortingDescending: sortingDescending, sortingDisabled: sortingDisabled, wrapLines: wrapLines, hidden: hidden, colIndex: colIndex, columnId: columnId, updateColumn: updateColumn, onResizeFinish: () => onResizeFinish(columnWidths), resizableColumns: resizableColumns, onClick: detail => fireNonCancelableEvent(onSortingChange, detail), isEditable: !!column.editConfig, stickyState: stickyState, cellRef: node => setCell(columnId, node), tableRole: tableRole }));
50
+ }, tabIndex: sticky ? -1 : 0, focusedComponent: focusedComponent, onFocusedComponentChange: onFocusedComponentChange, column: column, activeSortingColumn: sortingColumn, sortingDescending: sortingDescending, sortingDisabled: sortingDisabled, wrapLines: wrapLines, hidden: hidden, colIndex: selectionType ? colIndex + 1 : colIndex, columnId: columnId, updateColumn: updateColumn, onResizeFinish: () => onResizeFinish(columnWidths), resizableColumns: resizableColumns, onClick: detail => fireNonCancelableEvent(onSortingChange, detail), isEditable: !!column.editConfig, stickyState: stickyState, cellRef: node => setCell(columnId, node), tableRole: tableRole }));
51
51
  }))));
52
52
  });
53
53
  export default Thead;
@@ -1 +1 @@
1
- {"version":3,"file":"thead.js","sourceRoot":"lib/default/","sources":["table/thead.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { TableProps } from './interfaces';\nimport SelectionControl from './selection-control';\nimport { focusMarkers, SelectionProps } from './use-selection';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { getColumnKey, getStickyClassNames } from './utils';\nimport { TableHeaderCell } from './header-cell';\nimport { useColumnWidths } from './use-column-widths';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport styles from './styles.css.js';\nimport cellStyles from './header-cell/styles.css.js';\nimport headerCellStyles from './header-cell/styles.css.js';\nimport ScreenreaderOnly from '../internal/components/screenreader-only';\nimport { StickyColumnsModel, useStickyCellStyles } from './sticky-columns';\nimport { getTableColHeaderRoleProps, TableRole } from './table-role';\n\nexport type InteractiveComponent =\n | { type: 'selection' }\n | { type: 'column'; col: number }\n | { type: 'resizer'; col: number };\n\nexport interface TheadProps {\n containerWidth: number | null;\n selectionType: TableProps.SelectionType | undefined;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>;\n sortingColumn: TableProps.SortingColumn<any> | undefined;\n sortingDescending: boolean | undefined;\n sortingDisabled: boolean | undefined;\n variant: TableProps.Variant;\n wrapLines: boolean | undefined;\n resizableColumns: boolean | undefined;\n getSelectAllProps: () => SelectionProps;\n onFocusMove: ((sourceElement: HTMLElement, fromIndex: number, direction: -1 | 1) => void) | undefined;\n onResizeFinish: (newWidths: Record<string, number>) => void;\n onSortingChange: NonCancelableEventHandler<TableProps.SortingState<any>> | undefined;\n sticky?: boolean;\n hidden?: boolean;\n stuck?: boolean;\n singleSelectionHeaderAriaLabel?: string;\n stripedRows?: boolean;\n stickyState: StickyColumnsModel;\n selectionColumnId: PropertyKey;\n focusedComponent?: InteractiveComponent | null;\n onFocusedComponentChange?: (element: InteractiveComponent | null) => void;\n tableRole: TableRole;\n}\n\nconst Thead = React.forwardRef(\n (\n {\n containerWidth,\n selectionType,\n getSelectAllProps,\n columnDefinitions,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n resizableColumns,\n variant,\n wrapLines,\n onFocusMove,\n onSortingChange,\n onResizeFinish,\n singleSelectionHeaderAriaLabel,\n stripedRows,\n sticky = false,\n hidden = false,\n stuck = false,\n stickyState,\n selectionColumnId,\n focusedComponent,\n onFocusedComponentChange,\n tableRole,\n }: TheadProps,\n outerRef: React.Ref<HTMLTableRowElement>\n ) => {\n const isVisualRefresh = useVisualRefresh();\n\n const headerCellClass = clsx(\n headerCellStyles['header-cell'],\n headerCellStyles[`header-cell-variant-${variant}`],\n sticky && headerCellStyles['header-cell-sticky'],\n stuck && headerCellStyles['header-cell-stuck'],\n stripedRows && headerCellStyles['has-striped-rows'],\n isVisualRefresh && headerCellStyles['is-visual-refresh']\n );\n\n const selectionCellClass = clsx(\n styles['selection-control'],\n styles['selection-control-header'],\n isVisualRefresh && styles['is-visual-refresh']\n );\n\n const { columnWidths, totalWidth, updateColumn, setCell } = useColumnWidths();\n\n const stickyStyles = useStickyCellStyles({\n stickyColumns: stickyState,\n columnId: selectionColumnId,\n getClassName: props => getStickyClassNames(cellStyles, props),\n });\n return (\n <thead className={clsx(!hidden && styles['thead-active'])}>\n <tr {...focusMarkers.all} ref={outerRef} aria-rowindex={1}>\n {selectionType ? (\n <th\n className={clsx(\n headerCellClass,\n selectionCellClass,\n hidden && headerCellStyles['header-cell-hidden'],\n stickyStyles.className\n )}\n style={stickyStyles.style}\n ref={stickyStyles.ref}\n scope=\"col\"\n {...getTableColHeaderRoleProps({})}\n >\n {selectionType === 'multi' ? (\n <SelectionControl\n onFocusDown={event => {\n onFocusMove!(event.target as HTMLElement, -1, +1);\n }}\n focusedComponent={focusedComponent}\n onFocusedComponentChange={onFocusedComponentChange}\n {...getSelectAllProps()}\n {...(sticky ? { tabIndex: -1 } : {})}\n />\n ) : (\n <ScreenreaderOnly>{singleSelectionHeaderAriaLabel}</ScreenreaderOnly>\n )}\n </th>\n ) : null}\n\n {columnDefinitions.map((column, colIndex) => {\n const columnId = getColumnKey(column, colIndex);\n\n let widthOverride;\n if (resizableColumns) {\n if (columnWidths) {\n // use stateful value if available\n widthOverride = columnWidths[columnId];\n }\n if (colIndex === columnDefinitions.length - 1 && containerWidth && containerWidth > totalWidth) {\n // let the last column grow and fill the container width\n widthOverride = 'auto';\n }\n }\n return (\n <TableHeaderCell\n key={columnId}\n className={headerCellClass}\n style={{\n width: widthOverride || column.width,\n minWidth: sticky ? undefined : column.minWidth,\n maxWidth: resizableColumns || sticky ? undefined : column.maxWidth,\n }}\n tabIndex={sticky ? -1 : 0}\n focusedComponent={focusedComponent}\n onFocusedComponentChange={onFocusedComponentChange}\n column={column}\n activeSortingColumn={sortingColumn}\n sortingDescending={sortingDescending}\n sortingDisabled={sortingDisabled}\n wrapLines={wrapLines}\n hidden={hidden}\n colIndex={colIndex}\n columnId={columnId}\n updateColumn={updateColumn}\n onResizeFinish={() => onResizeFinish(columnWidths)}\n resizableColumns={resizableColumns}\n onClick={detail => fireNonCancelableEvent(onSortingChange, detail)}\n isEditable={!!column.editConfig}\n stickyState={stickyState}\n cellRef={node => setCell(columnId, node)}\n tableRole={tableRole}\n />\n );\n })}\n </tr>\n </thead>\n );\n }\n);\n\nexport default Thead;\n"]}
1
+ {"version":3,"file":"thead.js","sourceRoot":"lib/default/","sources":["table/thead.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { TableProps } from './interfaces';\nimport SelectionControl from './selection-control';\nimport { focusMarkers, SelectionProps } from './use-selection';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { getColumnKey, getStickyClassNames } from './utils';\nimport { TableHeaderCell } from './header-cell';\nimport { useColumnWidths } from './use-column-widths';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport styles from './styles.css.js';\nimport cellStyles from './header-cell/styles.css.js';\nimport headerCellStyles from './header-cell/styles.css.js';\nimport ScreenreaderOnly from '../internal/components/screenreader-only';\nimport { StickyColumnsModel, useStickyCellStyles } from './sticky-columns';\nimport { getTableColHeaderRoleProps, getTableHeaderRowRoleProps, TableRole } from './table-role';\n\nexport type InteractiveComponent =\n | { type: 'selection' }\n | { type: 'column'; col: number }\n | { type: 'resizer'; col: number };\n\nexport interface TheadProps {\n containerWidth: number | null;\n selectionType: TableProps.SelectionType | undefined;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>;\n sortingColumn: TableProps.SortingColumn<any> | undefined;\n sortingDescending: boolean | undefined;\n sortingDisabled: boolean | undefined;\n variant: TableProps.Variant;\n wrapLines: boolean | undefined;\n resizableColumns: boolean | undefined;\n getSelectAllProps: () => SelectionProps;\n onFocusMove: ((sourceElement: HTMLElement, fromIndex: number, direction: -1 | 1) => void) | undefined;\n onResizeFinish: (newWidths: Record<string, number>) => void;\n onSortingChange: NonCancelableEventHandler<TableProps.SortingState<any>> | undefined;\n sticky?: boolean;\n hidden?: boolean;\n stuck?: boolean;\n singleSelectionHeaderAriaLabel?: string;\n stripedRows?: boolean;\n stickyState: StickyColumnsModel;\n selectionColumnId: PropertyKey;\n focusedComponent?: InteractiveComponent | null;\n onFocusedComponentChange?: (element: InteractiveComponent | null) => void;\n tableRole: TableRole;\n}\n\nconst Thead = React.forwardRef(\n (\n {\n containerWidth,\n selectionType,\n getSelectAllProps,\n columnDefinitions,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n resizableColumns,\n variant,\n wrapLines,\n onFocusMove,\n onSortingChange,\n onResizeFinish,\n singleSelectionHeaderAriaLabel,\n stripedRows,\n sticky = false,\n hidden = false,\n stuck = false,\n stickyState,\n selectionColumnId,\n focusedComponent,\n onFocusedComponentChange,\n tableRole,\n }: TheadProps,\n outerRef: React.Ref<HTMLTableRowElement>\n ) => {\n const isVisualRefresh = useVisualRefresh();\n\n const headerCellClass = clsx(\n headerCellStyles['header-cell'],\n headerCellStyles[`header-cell-variant-${variant}`],\n sticky && headerCellStyles['header-cell-sticky'],\n stuck && headerCellStyles['header-cell-stuck'],\n stripedRows && headerCellStyles['has-striped-rows'],\n isVisualRefresh && headerCellStyles['is-visual-refresh']\n );\n\n const selectionCellClass = clsx(\n styles['selection-control'],\n styles['selection-control-header'],\n isVisualRefresh && styles['is-visual-refresh']\n );\n\n const { columnWidths, totalWidth, updateColumn, setCell } = useColumnWidths();\n\n const stickyStyles = useStickyCellStyles({\n stickyColumns: stickyState,\n columnId: selectionColumnId,\n getClassName: props => getStickyClassNames(cellStyles, props),\n });\n return (\n <thead className={clsx(!hidden && styles['thead-active'])}>\n <tr {...focusMarkers.all} ref={outerRef} aria-rowindex={1} {...getTableHeaderRowRoleProps({ tableRole })}>\n {selectionType ? (\n <th\n className={clsx(\n headerCellClass,\n selectionCellClass,\n hidden && headerCellStyles['header-cell-hidden'],\n stickyStyles.className\n )}\n style={stickyStyles.style}\n ref={stickyStyles.ref}\n scope=\"col\"\n {...getTableColHeaderRoleProps({ tableRole, colIndex: 0 })}\n >\n {selectionType === 'multi' ? (\n <SelectionControl\n onFocusDown={event => {\n onFocusMove!(event.target as HTMLElement, -1, +1);\n }}\n focusedComponent={focusedComponent}\n onFocusedComponentChange={onFocusedComponentChange}\n {...getSelectAllProps()}\n {...(sticky ? { tabIndex: -1 } : {})}\n />\n ) : (\n <ScreenreaderOnly>{singleSelectionHeaderAriaLabel}</ScreenreaderOnly>\n )}\n </th>\n ) : null}\n\n {columnDefinitions.map((column, colIndex) => {\n const columnId = getColumnKey(column, colIndex);\n\n let widthOverride;\n if (resizableColumns) {\n if (columnWidths) {\n // use stateful value if available\n widthOverride = columnWidths[columnId];\n }\n if (colIndex === columnDefinitions.length - 1 && containerWidth && containerWidth > totalWidth) {\n // let the last column grow and fill the container width\n widthOverride = 'auto';\n }\n }\n return (\n <TableHeaderCell\n key={columnId}\n className={headerCellClass}\n style={{\n width: widthOverride || column.width,\n minWidth: sticky ? undefined : column.minWidth,\n maxWidth: resizableColumns || sticky ? undefined : column.maxWidth,\n }}\n tabIndex={sticky ? -1 : 0}\n focusedComponent={focusedComponent}\n onFocusedComponentChange={onFocusedComponentChange}\n column={column}\n activeSortingColumn={sortingColumn}\n sortingDescending={sortingDescending}\n sortingDisabled={sortingDisabled}\n wrapLines={wrapLines}\n hidden={hidden}\n colIndex={selectionType ? colIndex + 1 : colIndex}\n columnId={columnId}\n updateColumn={updateColumn}\n onResizeFinish={() => onResizeFinish(columnWidths)}\n resizableColumns={resizableColumns}\n onClick={detail => fireNonCancelableEvent(onSortingChange, detail)}\n isEditable={!!column.editConfig}\n stickyState={stickyState}\n cellRef={node => setCell(columnId, node)}\n tableRole={tableRole}\n />\n );\n })}\n </tr>\n </thead>\n );\n }\n);\n\nexport default Thead;\n"]}
@@ -18,9 +18,7 @@ const styles_selectors_js_5 = require("../../../button/styles.selectors.js");
18
18
  const index_js_1 = require("../button/index.js");
19
19
  class ButtonDropdownWrapper extends dom_1.ComponentWrapper {
20
20
  findNativeButton() {
21
- // ButtonDropdown always has a button
22
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
23
- return this.findByClassName(styles_selectors_js_1.default['dropdown-trigger']).find(`button.${styles_selectors_js_5.default.button}`);
21
+ return this.findByClassName(styles_selectors_js_1.default['dropdown-trigger']).findByClassName(styles_selectors_js_1.default['test-utils-button-trigger']);
24
22
  }
25
23
  findMainAction() {
26
24
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/button-dropdown/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,qDAA2C;AAC3C,gEAAkH;AAClH,sFAAkE;AAClE,mGAAuF;AACvF,mGAAmF;AACnF,wGAA4F;AAC5F,6EAA+D;AAC/D,iDAA+C;AAE/C,MAAqB,qBAAsB,SAAQ,sBAAgB;IAGjE,gBAAgB;QACd,qCAAqC;QACrC,oEAAoE;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,kBAAkB,CAAC,CAAE,CAAC,IAAI,CAAoB,UAAU,6BAAY,CAAC,MAAM,EAAE,CAAE,CAAC;IACrH,CAAC;IAED,cAAc;;QACZ,OAAO,CACL,MAAA,MAAA,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,eAAe,CAAC,CAAC,0CAAE,aAAa,CAAC,IAAI,6BAAY,CAAC,MAAM,EAAE,EAAE,kBAAa,CAAC,mCAAI,IAAI,CAC/G,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO,IAAA,mBAAa,GAAE,CAAC,IAAI,CAAC,IAAI,6BAAc,CAAC,QAAQ,kBAAkB,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,EAAU;;QACrB,MAAM,YAAY,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC3E,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,YAAY,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,EAAU;;QACnC,MAAM,0BAA0B,GAAG,IAAI,6BAAc,CAAC,UAAU,iBAAiB,EAAE,IAAI,CAAC;QACxF,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,0BAA0B,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACH,mBAAmB;;QACjB,MAAM,uBAAuB,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,IAAI,6BAAU,CAAC,WAAW,EAAE,CAAC;QAC3F,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,uBAAuB,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACH,SAAS;;QACP,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,OAAO,CAAC,IAAI,6BAAU,CAAC,cAAc,CAAC,EAAE,CAAC,KAAI,EAAE,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAA,mBAAa,GAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjF,CAAC;IAGD,YAAY;QACV,IAAA,gBAAG,EAAC,GAAG,EAAE;YACP,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;;AArEM,kCAAY,GAAW,6BAAM,CAAC,iBAAiB,CAAC,CAAC;AAiExD;IADC,aAAO;yDAKP;AAtEH,wCAuEC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/button-dropdown/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,qDAA2C;AAC3C,gEAAkH;AAClH,sFAAkE;AAClE,mGAAuF;AACvF,mGAAmF;AACnF,wGAA4F;AAC5F,6EAA+D;AAC/D,iDAA+C;AAE/C,MAAqB,qBAAsB,SAAQ,sBAAgB;IAGjE,gBAAgB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,kBAAkB,CAAC,CAAE,CAAC,eAAe,CACtE,6BAAM,CAAC,2BAA2B,CAAC,CACnC,CAAC;IACL,CAAC;IAED,cAAc;;QACZ,OAAO,CACL,MAAA,MAAA,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,eAAe,CAAC,CAAC,0CAAE,aAAa,CAAC,IAAI,6BAAY,CAAC,MAAM,EAAE,EAAE,kBAAa,CAAC,mCAAI,IAAI,CAC/G,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,OAAO,IAAA,mBAAa,GAAE,CAAC,IAAI,CAAC,IAAI,6BAAc,CAAC,QAAQ,kBAAkB,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,EAAU;;QACrB,MAAM,YAAY,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC3E,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,YAAY,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,EAAU;;QACnC,MAAM,0BAA0B,GAAG,IAAI,6BAAc,CAAC,UAAU,iBAAiB,EAAE,IAAI,CAAC;QACxF,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,0BAA0B,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACH,mBAAmB;;QACjB,MAAM,uBAAuB,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,IAAI,6BAAU,CAAC,WAAW,EAAE,CAAC;QAC3F,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,uBAAuB,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACH,SAAS;;QACP,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,OAAO,CAAC,IAAI,6BAAU,CAAC,cAAc,CAAC,EAAE,CAAC,KAAI,EAAE,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAA,mBAAa,GAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjF,CAAC;IAGD,YAAY;QACV,IAAA,gBAAG,EAAC,GAAG,EAAE;YACP,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;;AArEM,kCAAY,GAAW,6BAAM,CAAC,iBAAiB,CAAC,CAAC;AAiExD;IADC,aAAO;yDAKP;AAtEH,wCAuEC"}
@@ -9,9 +9,7 @@ const styles_selectors_js_5 = require("../../../button/styles.selectors.js");
9
9
  const index_js_1 = require("../button/index.js");
10
10
  class ButtonDropdownWrapper extends selectors_1.ComponentWrapper {
11
11
  findNativeButton() {
12
- // ButtonDropdown always has a button
13
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
14
- return this.findByClassName(styles_selectors_js_1.default['dropdown-trigger']).find(`button.${styles_selectors_js_5.default.button}`);
12
+ return this.findByClassName(styles_selectors_js_1.default['dropdown-trigger']).findByClassName(styles_selectors_js_1.default['test-utils-button-trigger']);
15
13
  }
16
14
  findMainAction() {
17
15
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/selectors/button-dropdown/index.ts"],"names":[],"mappings":";;AAGA,4EAA+G;AAC/G,sFAAkE;AAClE,mGAAuF;AACvF,mGAAmF;AACnF,wGAA4F;AAC5F,6EAA+D;AAC/D,iDAA+C;AAC/C,MAAqB,qBAAsB,SAAQ,4BAAgB;IAEjE,gBAAgB;QACd,qCAAqC;QACrC,oEAAoE;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,kBAAkB,CAAC,CAAE,CAAC,IAAI,CAAC,UAAU,6BAAY,CAAC,MAAM,EAAE,CAAE,CAAC;IAClG,CAAC;IACD,cAAc;;QACZ,OAAO,MAAA,MAAA,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,eAAe,CAAC,CAAC,0CAAE,aAAa,CAAC,IAAI,6BAAY,CAAC,MAAM,EAAE,EAAE,kBAAa,CAAC,mCAAI,IAAI,CAAC;IACxH,CAAC;IACD,gBAAgB;QACd,OAAO,IAAA,yBAAa,GAAE,CAAC,IAAI,CAAC,IAAI,6BAAc,CAAC,QAAQ,kBAAkB,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,EAAU;;QACrB,MAAM,YAAY,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC3E,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,YAAY,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,EAAU;;QACnC,MAAM,0BAA0B,GAAG,IAAI,6BAAc,CAAC,UAAU,iBAAiB,EAAE,IAAI,CAAC;QACxF,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,0BAA0B,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACH,mBAAmB;;QACjB,MAAM,uBAAuB,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,IAAI,6BAAU,CAAC,WAAW,EAAE,CAAC;QAC3F,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,uBAAuB,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACH,SAAS;;QACP,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,OAAO,CAAC,IAAI,6BAAU,CAAC,cAAc,CAAC,EAAE,CAAC,KAAI,EAAE,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAA,yBAAa,GAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjF,CAAC;;AA1DH,wCA2DC;AA1DQ,kCAAY,GAAW,6BAAM,CAAC,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/selectors/button-dropdown/index.ts"],"names":[],"mappings":";;AAGA,4EAA+G;AAC/G,sFAAkE;AAClE,mGAAuF;AACvF,mGAAmF;AACnF,wGAA4F;AAC5F,6EAA+D;AAC/D,iDAA+C;AAC/C,MAAqB,qBAAsB,SAAQ,4BAAgB;IAEjE,gBAAgB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,kBAAkB,CAAC,CAAE,CAAC,eAAe,CAAC,6BAAM,CAAC,2BAA2B,CAAC,CAAE,CAAC;IACjH,CAAC;IACD,cAAc;;QACZ,OAAO,MAAA,MAAA,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,eAAe,CAAC,CAAC,0CAAE,aAAa,CAAC,IAAI,6BAAY,CAAC,MAAM,EAAE,EAAE,kBAAa,CAAC,mCAAI,IAAI,CAAC;IACxH,CAAC;IACD,gBAAgB;QACd,OAAO,IAAA,yBAAa,GAAE,CAAC,IAAI,CAAC,IAAI,6BAAc,CAAC,QAAQ,kBAAkB,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,EAAU;;QACrB,MAAM,YAAY,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC3E,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,YAAY,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,EAAU;;QACnC,MAAM,0BAA0B,GAAG,IAAI,6BAAc,CAAC,UAAU,iBAAiB,EAAE,IAAI,CAAC;QACxF,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,0BAA0B,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACH,mBAAmB;;QACjB,MAAM,uBAAuB,GAAG,IAAI,6BAAU,CAAC,cAAc,CAAC,IAAI,6BAAU,CAAC,WAAW,EAAE,CAAC;QAC3F,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,IAAI,CAAC,uBAAuB,CAAC,KAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACH,SAAS;;QACP,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,EAAE,0CAAE,OAAO,CAAC,IAAI,6BAAU,CAAC,cAAc,CAAC,EAAE,CAAC,KAAI,EAAE,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAA,yBAAa,GAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjF,CAAC;;AAxDH,wCAyDC;AAxDQ,kCAAY,GAAW,6BAAM,CAAC,iBAAiB,CAAC,CAAC"}