@cloudscape-design/components-themeable 3.0.1333 → 3.0.1335

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 (206) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/box/visual-accent.scss +61 -25
  3. package/lib/internal/scss/button/styles.scss +6 -0
  4. package/lib/internal/scss/code-editor/ace-editor.scss +1 -1
  5. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  6. package/lib/internal/scss/side-navigation/styles.scss +10 -3
  7. package/lib/internal/scss/steps/styles.scss +113 -31
  8. package/lib/internal/scss/table/header-cell/styles.scss +42 -14
  9. package/lib/internal/scss/table/styles.scss +6 -0
  10. package/lib/internal/scss/tooltip/styles.scss +22 -0
  11. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js +1 -1
  12. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js.map +1 -1
  13. package/lib/internal/template/box/interfaces.d.ts +1 -1
  14. package/lib/internal/template/box/interfaces.d.ts.map +1 -1
  15. package/lib/internal/template/box/interfaces.js.map +1 -1
  16. package/lib/internal/template/box/styles.css.js +220 -224
  17. package/lib/internal/template/box/styles.scoped.css +293 -313
  18. package/lib/internal/template/box/styles.selectors.js +220 -224
  19. package/lib/internal/template/button/internal.d.ts +2 -0
  20. package/lib/internal/template/button/internal.d.ts.map +1 -1
  21. package/lib/internal/template/button/internal.js +2 -1
  22. package/lib/internal/template/button/internal.js.map +1 -1
  23. package/lib/internal/template/button/styles.css.js +23 -22
  24. package/lib/internal/template/button/styles.scoped.css +74 -69
  25. package/lib/internal/template/button/styles.selectors.js +23 -22
  26. package/lib/internal/template/button-dropdown/internal-interfaces.d.ts +11 -0
  27. package/lib/internal/template/button-dropdown/internal-interfaces.d.ts.map +1 -1
  28. package/lib/internal/template/button-dropdown/internal-interfaces.js.map +1 -1
  29. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  30. package/lib/internal/template/button-dropdown/internal.js +3 -2
  31. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  32. package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts +16 -0
  33. package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts.map +1 -0
  34. package/lib/internal/template/button-group/copy-to-clipboard-item.js +38 -0
  35. package/lib/internal/template/button-group/copy-to-clipboard-item.js.map +1 -0
  36. package/lib/internal/template/button-group/index.d.ts.map +1 -1
  37. package/lib/internal/template/button-group/index.js +9 -1
  38. package/lib/internal/template/button-group/index.js.map +1 -1
  39. package/lib/internal/template/button-group/interfaces.d.ts +38 -2
  40. package/lib/internal/template/button-group/interfaces.d.ts.map +1 -1
  41. package/lib/internal/template/button-group/interfaces.js.map +1 -1
  42. package/lib/internal/template/button-group/internal-interfaces.d.ts +1 -1
  43. package/lib/internal/template/button-group/internal-interfaces.d.ts.map +1 -1
  44. package/lib/internal/template/button-group/internal-interfaces.js.map +1 -1
  45. package/lib/internal/template/button-group/internal.d.ts.map +1 -1
  46. package/lib/internal/template/button-group/internal.js +2 -2
  47. package/lib/internal/template/button-group/internal.js.map +1 -1
  48. package/lib/internal/template/button-group/item-element.d.ts +2 -0
  49. package/lib/internal/template/button-group/item-element.d.ts.map +1 -1
  50. package/lib/internal/template/button-group/item-element.js +13 -3
  51. package/lib/internal/template/button-group/item-element.js.map +1 -1
  52. package/lib/internal/template/code-editor/styles.css.js +33 -33
  53. package/lib/internal/template/code-editor/styles.scoped.css +187 -187
  54. package/lib/internal/template/code-editor/styles.selectors.js +33 -33
  55. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  56. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  57. package/lib/internal/template/i18n/messages/all.ar.js +1 -1
  58. package/lib/internal/template/i18n/messages/all.ar.json +1 -1
  59. package/lib/internal/template/i18n/messages/all.de.js +1 -1
  60. package/lib/internal/template/i18n/messages/all.de.json +1 -1
  61. package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
  62. package/lib/internal/template/i18n/messages/all.en-GB.json +1 -1
  63. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  64. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  65. package/lib/internal/template/i18n/messages/all.es.js +1 -1
  66. package/lib/internal/template/i18n/messages/all.es.json +1 -1
  67. package/lib/internal/template/i18n/messages/all.fr.js +1 -1
  68. package/lib/internal/template/i18n/messages/all.fr.json +1 -1
  69. package/lib/internal/template/i18n/messages/all.id.js +1 -1
  70. package/lib/internal/template/i18n/messages/all.id.json +1 -1
  71. package/lib/internal/template/i18n/messages/all.it.js +1 -1
  72. package/lib/internal/template/i18n/messages/all.it.json +1 -1
  73. package/lib/internal/template/i18n/messages/all.ja.js +1 -1
  74. package/lib/internal/template/i18n/messages/all.ja.json +1 -1
  75. package/lib/internal/template/i18n/messages/all.ko.js +1 -1
  76. package/lib/internal/template/i18n/messages/all.ko.json +1 -1
  77. package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
  78. package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
  79. package/lib/internal/template/i18n/messages/all.tr.js +1 -1
  80. package/lib/internal/template/i18n/messages/all.tr.json +1 -1
  81. package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
  82. package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
  83. package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
  84. package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
  85. package/lib/internal/template/i18n/messages-types.d.ts +19 -0
  86. package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
  87. package/lib/internal/template/i18n/messages-types.js.map +1 -1
  88. package/lib/internal/template/internal/base-component/styles.scoped.css +163 -3
  89. package/lib/internal/template/internal/environment.js +2 -2
  90. package/lib/internal/template/internal/environment.json +2 -2
  91. package/lib/internal/template/internal/generated/styles/tokens.d.ts +35 -38
  92. package/lib/internal/template/internal/generated/styles/tokens.js +35 -38
  93. package/lib/internal/template/internal/generated/theming/index.cjs +585 -774
  94. package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +36 -9
  95. package/lib/internal/template/internal/generated/theming/index.d.ts +36 -9
  96. package/lib/internal/template/internal/generated/theming/index.js +585 -774
  97. package/lib/internal/template/internal/utils/scrollable-containers.d.ts +5 -0
  98. package/lib/internal/template/internal/utils/scrollable-containers.d.ts.map +1 -1
  99. package/lib/internal/template/internal/utils/scrollable-containers.js +16 -0
  100. package/lib/internal/template/internal/utils/scrollable-containers.js.map +1 -1
  101. package/lib/internal/template/side-navigation/implementation.d.ts.map +1 -1
  102. package/lib/internal/template/side-navigation/implementation.js +3 -2
  103. package/lib/internal/template/side-navigation/implementation.js.map +1 -1
  104. package/lib/internal/template/side-navigation/parts.d.ts +2 -1
  105. package/lib/internal/template/side-navigation/parts.d.ts.map +1 -1
  106. package/lib/internal/template/side-navigation/parts.js +14 -13
  107. package/lib/internal/template/side-navigation/parts.js.map +1 -1
  108. package/lib/internal/template/side-navigation/styles.css.js +48 -47
  109. package/lib/internal/template/side-navigation/styles.scoped.css +77 -74
  110. package/lib/internal/template/side-navigation/styles.selectors.js +48 -47
  111. package/lib/internal/template/side-navigation/util.d.ts +1 -0
  112. package/lib/internal/template/side-navigation/util.d.ts.map +1 -1
  113. package/lib/internal/template/side-navigation/util.js +5 -0
  114. package/lib/internal/template/side-navigation/util.js.map +1 -1
  115. package/lib/internal/template/steps/interfaces.d.ts +2 -0
  116. package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
  117. package/lib/internal/template/steps/interfaces.js.map +1 -1
  118. package/lib/internal/template/steps/internal.d.ts.map +1 -1
  119. package/lib/internal/template/steps/internal.js +35 -12
  120. package/lib/internal/template/steps/internal.js.map +1 -1
  121. package/lib/internal/template/steps/styles.css.js +17 -13
  122. package/lib/internal/template/steps/styles.scoped.css +99 -42
  123. package/lib/internal/template/steps/styles.selectors.js +17 -13
  124. package/lib/internal/template/table/clear-sort.d.ts +9 -0
  125. package/lib/internal/template/table/clear-sort.d.ts.map +1 -0
  126. package/lib/internal/template/table/clear-sort.js +15 -0
  127. package/lib/internal/template/table/clear-sort.js.map +1 -0
  128. package/lib/internal/template/table/header-cell/index.d.ts +4 -1
  129. package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
  130. package/lib/internal/template/table/header-cell/index.js +122 -33
  131. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  132. package/lib/internal/template/table/header-cell/sort-menu.d.ts +14 -0
  133. package/lib/internal/template/table/header-cell/sort-menu.d.ts.map +1 -0
  134. package/lib/internal/template/table/header-cell/sort-menu.js +50 -0
  135. package/lib/internal/template/table/header-cell/sort-menu.js.map +1 -0
  136. package/lib/internal/template/table/header-cell/styles.css.js +38 -33
  137. package/lib/internal/template/table/header-cell/styles.scoped.css +101 -76
  138. package/lib/internal/template/table/header-cell/styles.selectors.js +38 -33
  139. package/lib/internal/template/table/header-cell/th-element.d.ts +8 -1
  140. package/lib/internal/template/table/header-cell/th-element.d.ts.map +1 -1
  141. package/lib/internal/template/table/header-cell/th-element.js +6 -2
  142. package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
  143. package/lib/internal/template/table/index.d.ts.map +1 -1
  144. package/lib/internal/template/table/index.js +8 -4
  145. package/lib/internal/template/table/index.js.map +1 -1
  146. package/lib/internal/template/table/interfaces.d.ts +81 -2
  147. package/lib/internal/template/table/interfaces.d.ts.map +1 -1
  148. package/lib/internal/template/table/interfaces.js.map +1 -1
  149. package/lib/internal/template/table/internal.d.ts.map +1 -1
  150. package/lib/internal/template/table/internal.js +40 -9
  151. package/lib/internal/template/table/internal.js.map +1 -1
  152. package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts +16 -0
  153. package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts.map +1 -0
  154. package/lib/internal/template/table/multi-column-sort/live-announcement.js +68 -0
  155. package/lib/internal/template/table/multi-column-sort/live-announcement.js.map +1 -0
  156. package/lib/internal/template/table/multi-column-sort/utils.d.ts +45 -0
  157. package/lib/internal/template/table/multi-column-sort/utils.d.ts.map +1 -0
  158. package/lib/internal/template/table/multi-column-sort/utils.js +76 -0
  159. package/lib/internal/template/table/multi-column-sort/utils.js.map +1 -0
  160. package/lib/internal/template/table/styles.css.js +37 -36
  161. package/lib/internal/template/table/styles.scoped.css +46 -43
  162. package/lib/internal/template/table/styles.selectors.js +37 -36
  163. package/lib/internal/template/table/thead.d.ts +3 -0
  164. package/lib/internal/template/table/thead.d.ts.map +1 -1
  165. package/lib/internal/template/table/thead.js +3 -3
  166. package/lib/internal/template/table/thead.js.map +1 -1
  167. package/lib/internal/template/table/tools-header.d.ts +2 -1
  168. package/lib/internal/template/table/tools-header.d.ts.map +1 -1
  169. package/lib/internal/template/table/tools-header.js +4 -3
  170. package/lib/internal/template/table/tools-header.js.map +1 -1
  171. package/lib/internal/template/table/use-auto-skeleton-rows.d.ts +12 -0
  172. package/lib/internal/template/table/use-auto-skeleton-rows.d.ts.map +1 -0
  173. package/lib/internal/template/table/use-auto-skeleton-rows.js +100 -0
  174. package/lib/internal/template/table/use-auto-skeleton-rows.js.map +1 -0
  175. package/lib/internal/template/test-utils/dom/button-group/index.d.ts +4 -0
  176. package/lib/internal/template/test-utils/dom/button-group/index.js +8 -0
  177. package/lib/internal/template/test-utils/dom/button-group/index.js.map +1 -1
  178. package/lib/internal/template/test-utils/dom/pagination/index.js +2 -2
  179. package/lib/internal/template/test-utils/dom/pagination/index.js.map +1 -1
  180. package/lib/internal/template/test-utils/dom/steps/index.d.ts +4 -0
  181. package/lib/internal/template/test-utils/dom/steps/index.js +6 -0
  182. package/lib/internal/template/test-utils/dom/steps/index.js.map +1 -1
  183. package/lib/internal/template/test-utils/dom/table/index.d.ts +77 -0
  184. package/lib/internal/template/test-utils/dom/table/index.js +87 -2
  185. package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
  186. package/lib/internal/template/test-utils/selectors/button-group/index.d.ts +4 -0
  187. package/lib/internal/template/test-utils/selectors/button-group/index.js +8 -0
  188. package/lib/internal/template/test-utils/selectors/button-group/index.js.map +1 -1
  189. package/lib/internal/template/test-utils/selectors/pagination/index.js +2 -2
  190. package/lib/internal/template/test-utils/selectors/pagination/index.js.map +1 -1
  191. package/lib/internal/template/test-utils/selectors/steps/index.d.ts +4 -0
  192. package/lib/internal/template/test-utils/selectors/steps/index.js +6 -0
  193. package/lib/internal/template/test-utils/selectors/steps/index.js.map +1 -1
  194. package/lib/internal/template/test-utils/selectors/table/index.d.ts +77 -0
  195. package/lib/internal/template/test-utils/selectors/table/index.js +87 -2
  196. package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
  197. package/lib/internal/template/tooltip/internal.d.ts.map +1 -1
  198. package/lib/internal/template/tooltip/internal.js +2 -1
  199. package/lib/internal/template/tooltip/internal.js.map +1 -1
  200. package/lib/internal/template/tooltip/styles.css.js +7 -0
  201. package/lib/internal/template/tooltip/styles.scoped.css +165 -0
  202. package/lib/internal/template/tooltip/styles.selectors.js +8 -0
  203. package/lib/internal/template/top-navigation/use-top-navigation.d.ts.map +1 -1
  204. package/lib/internal/template/top-navigation/use-top-navigation.js +2 -5
  205. package/lib/internal/template/top-navigation/use-top-navigation.js.map +1 -1
  206. package/package.json +1 -1
@@ -7,23 +7,99 @@ import { useSingleTabStopNavigation } from '@cloudscape-design/component-toolkit
7
7
  import { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
8
8
  import { useInternalI18n } from '../../i18n/context';
9
9
  import InternalIcon from '../../icon/internal';
10
+ import ScreenreaderOnly from '../../internal/components/screenreader-only';
11
+ import { fireNonCancelableEvent } from '../../internal/events';
10
12
  import { KeyCode } from '../../internal/keycode';
13
+ import { appendSort, getSortIndex, removeSort, replaceSort, setDirection, toggleDirection, } from '../multi-column-sort/utils';
11
14
  import { Divider, Resizer } from '../resizer';
15
+ import { SortMenu } from './sort-menu';
12
16
  import { TableThElement } from './th-element';
13
17
  import { getSortingIconName, getSortingStatus, isSorted } from './utils';
14
18
  import analyticsSelectors from '../analytics-metadata/styles.css.js';
15
19
  import styles from './styles.css.js';
16
- export function TableHeaderCell({ tabIndex, column, activeSortingColumn, sortingDescending, sortingDisabled, wrapLines, focusedComponent, stuck, sticky, hidden, stripedRows, onClick, colIndex, updateColumn, resizableColumns, resizableStyle, onResizeFinish, isEditable, columnId, stickyState, cellRef, tableRole, resizerRoleDescription, resizerTooltipText, isExpandable, hasDynamicContent, variant, colSpan, rowSpan, columnGroupId, isLastChildOfGroup, isLast, tableVariant, }) {
20
+ export function TableHeaderCell({ tabIndex, column, activeSortingColumn, sortingDescending, sortingDisabled, wrapLines, focusedComponent, stuck, sticky, hidden, stripedRows, onClick, colIndex, updateColumn, resizableColumns, resizableStyle, onResizeFinish, isEditable, columnId, stickyState, cellRef, tableRole, resizerRoleDescription, resizerTooltipText, isExpandable, hasDynamicContent, variant, colSpan, rowSpan, columnGroupId, isLastChildOfGroup, isLast, tableVariant, multiColumnSort, i18nStrings, ariaLabels, }) {
17
21
  var _a;
18
22
  const i18n = useInternalI18n('table');
19
23
  const sortable = !!column.sortingComparator || !!column.sortingField;
20
- const sorted = !!activeSortingColumn && isSorted(column, activeSortingColumn);
21
- const sortingStatus = getSortingStatus(sortable, sorted, !!sortingDescending, !!sortingDisabled);
22
24
  const isGrouped = !!columnGroupId || (rowSpan !== null && rowSpan !== void 0 ? rowSpan : 1) > 1;
23
- const handleClick = () => onClick({
24
- sortingColumn: column,
25
- isDescending: sorted ? !sortingDescending : false,
26
- });
25
+ // The sort menu only renders for a sortable, enabled column under multi-column sort.
26
+ const hasSortMenu = !!multiColumnSort && sortable && !sortingDisabled;
27
+ // Multi-column sort context derived from `multiColumnSort.sortingColumns` when present.
28
+ const multiSortIndex = multiColumnSort ? getSortIndex(multiColumnSort.sortingColumns, column) : null;
29
+ const multiSortEntry = multiSortIndex !== null && multiColumnSort ? multiColumnSort.sortingColumns[multiSortIndex - 1] : undefined;
30
+ const inMultiSort = multiSortIndex !== null;
31
+ const isPrimaryMultiSort = multiSortIndex === 1;
32
+ // Priority badges are only meaningful when 2+ columns are sorted; with a single column, the position number adds no information.
33
+ const showPriorityBadge = !!multiColumnSort && multiColumnSort.sortingColumns.length >= 2 && multiSortIndex !== null;
34
+ // For multi-sort, derive sorted/descending from the matching entry; otherwise fall back to single-sort props.
35
+ const sorted = multiColumnSort ? inMultiSort : !!activeSortingColumn && isSorted(column, activeSortingColumn);
36
+ const descending = multiColumnSort ? !!(multiSortEntry === null || multiSortEntry === void 0 ? void 0 : multiSortEntry.isDescending) : !!sortingDescending;
37
+ const sortingStatus = getSortingStatus(sortable, sorted, descending, !!sortingDisabled);
38
+ // In multi-sort, only the primary column declares aria-sort (ARIA only allows one column sorted at a time).
39
+ const suppressAriaSort = !!multiColumnSort && inMultiSort && !isPrimaryMultiSort;
40
+ // Screen-reader-only text appended to a sorted column header. The visible header text supplies the column name;
41
+ // this adds the sort direction (only when `aria-sort` is suppressed, i.e. secondary columns) and the sort priority.
42
+ const sortDirectionLabel = descending
43
+ ? i18n('ariaLabels.sortDescending', ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.sortDescending)
44
+ : i18n('ariaLabels.sortAscending', ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.sortAscending);
45
+ const sortPriorityLabel = i18n('ariaLabels.sortPriority', ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.sortPriority, format => ({ priority }) => format({ priority }));
46
+ const sortAccessibleText = inMultiSort
47
+ ? [
48
+ suppressAriaSort ? sortDirectionLabel : undefined,
49
+ showPriorityBadge ? sortPriorityLabel === null || sortPriorityLabel === void 0 ? void 0 : sortPriorityLabel({ priority: multiSortIndex !== null && multiSortIndex !== void 0 ? multiSortIndex : 0 }) : undefined,
50
+ ]
51
+ .filter(Boolean)
52
+ .join(' ')
53
+ : '';
54
+ const handleClick = (shiftKey = false) => {
55
+ if (multiColumnSort) {
56
+ const current = multiColumnSort.sortingColumns;
57
+ let next;
58
+ if (shiftKey && !inMultiSort) {
59
+ next = appendSort(current, column, false);
60
+ }
61
+ else if (inMultiSort) {
62
+ next = toggleDirection(current, column);
63
+ }
64
+ else {
65
+ next = replaceSort(column, false);
66
+ }
67
+ fireNonCancelableEvent(multiColumnSort.onChange, { sortingColumns: next });
68
+ return;
69
+ }
70
+ onClick({
71
+ sortingColumn: column,
72
+ isDescending: sorted ? !sortingDescending : false,
73
+ });
74
+ };
75
+ const handleSortMenuAction = (action) => {
76
+ // The sort menu is only rendered when `multiColumnSort` is set (see render below), so this guard
77
+ // exists purely to narrow the type for the accesses that follow and is unreachable at runtime.
78
+ /* istanbul ignore next */
79
+ if (!multiColumnSort) {
80
+ return;
81
+ }
82
+ const current = multiColumnSort.sortingColumns;
83
+ let next;
84
+ switch (action) {
85
+ case 'sort-ascending':
86
+ next = inMultiSort ? setDirection(current, column, false) : replaceSort(column, false);
87
+ break;
88
+ case 'sort-descending':
89
+ next = inMultiSort ? setDirection(current, column, true) : replaceSort(column, true);
90
+ break;
91
+ case 'add-to-sort-ascending':
92
+ next = appendSort(current, column, false);
93
+ break;
94
+ case 'add-to-sort-descending':
95
+ next = appendSort(current, column, true);
96
+ break;
97
+ case 'remove-from-sort':
98
+ next = removeSort(current, column);
99
+ break;
100
+ }
101
+ fireNonCancelableEvent(multiColumnSort.onChange, { sortingColumns: next });
102
+ };
27
103
  // Elements with role="button" do not have the default behavior of <button>, where pressing
28
104
  // Enter or Space will trigger a click event. Therefore we need to add this ourselves.
29
105
  // The native <button> element cannot be used due to a misaligned implementation in Firefox:
@@ -31,7 +107,7 @@ export function TableHeaderCell({ tabIndex, column, activeSortingColumn, sorting
31
107
  const handleKeyPress = ({ nativeEvent: e }) => {
32
108
  if (e.keyCode === KeyCode.enter || e.keyCode === KeyCode.space) {
33
109
  e.preventDefault();
34
- handleClick();
110
+ handleClick(e.shiftKey);
35
111
  }
36
112
  };
37
113
  const headerId = useUniqueId('table-header-');
@@ -47,7 +123,7 @@ export function TableHeaderCell({ tabIndex, column, activeSortingColumn, sorting
47
123
  useResizeObserver(hasDynamicContent ? cellRefObject : () => null, entry => {
48
124
  updateColumn(columnId, entry.borderBoxWidth);
49
125
  });
50
- return (React.createElement(TableThElement, { resizableStyle: resizableStyle, cellRef: cellRefCombined, sortingStatus: sortingStatus, sortingDisabled: sortingDisabled, focusedComponent: focusedComponent, stuck: stuck, sticky: sticky, resizable: resizableColumns, hidden: hidden, stripedRows: stripedRows, colIndex: colIndex, columnId: columnId, stickyState: stickyState, tableRole: tableRole, variant: variant, tableVariant: tableVariant, colSpan: colSpan, rowSpan: rowSpan, columnGroupId: columnGroupId, isLast: isLast, ...(sortingDisabled
126
+ return (React.createElement(TableThElement, { resizableStyle: resizableStyle, cellRef: cellRefCombined, sortingStatus: sortingStatus, sortingDisabled: sortingDisabled, suppressAriaSort: suppressAriaSort, focusedComponent: focusedComponent, stuck: stuck, sticky: sticky, resizable: resizableColumns, hidden: hidden, stripedRows: stripedRows, colIndex: colIndex, columnId: columnId, stickyState: stickyState, tableRole: tableRole, variant: variant, tableVariant: tableVariant, colSpan: colSpan, rowSpan: rowSpan, columnGroupId: columnGroupId, isLast: isLast, ...(sortingDisabled
51
127
  ? {}
52
128
  : getAnalyticsMetadataAttribute({
53
129
  action: 'sort',
@@ -55,32 +131,45 @@ export function TableHeaderCell({ tabIndex, column, activeSortingColumn, sorting
55
131
  position: `${colIndex + 1}`,
56
132
  columnId: column.id ? `${column.id}` : '',
57
133
  label: `.${analyticsSelectors['header-cell-text']}`,
58
- sortingDescending: `${!sortingDescending}`,
134
+ sortingDescending: `${!descending}`,
59
135
  },
60
136
  })) },
61
- React.createElement("div", { ref: clickableHeaderRef, "data-focus-id": `sorting-control-${String(columnId)}`, className: clsx(styles['header-cell-content'], {
62
- [styles['header-cell-fake-focus']]: focusedComponent === `sorting-control-${String(columnId)}`,
63
- [styles['header-cell-content-expandable']]: isExpandable,
64
- }), "aria-label": column.ariaLabel
65
- ? column.ariaLabel({
66
- sorted: sorted,
67
- descending: sorted && !!sortingDescending,
68
- disabled: !!sortingDisabled,
69
- })
70
- : undefined, ...(sortingStatus && !sortingDisabled
71
- ? {
72
- onKeyPress: handleKeyPress,
73
- tabIndex: clickableHeaderTabIndex,
74
- role: 'button',
75
- onClick: handleClick,
76
- }
77
- : {}) },
78
- React.createElement("div", { className: clsx(styles['header-cell-text'], analyticsSelectors['header-cell-text'], wrapLines && styles['header-cell-text-wrap']), id: headerId },
79
- column.header,
80
- isEditable ? (React.createElement("span", { className: styles['edit-icon'] },
81
- React.createElement(InternalIcon, { name: "edit", ariaLabel: i18n('columnDefinitions.editConfig.editIconAriaLabel', (_a = column.editConfig) === null || _a === void 0 ? void 0 : _a.editIconAriaLabel) }))) : null),
82
- sortingStatus && (React.createElement("span", { className: styles['sorting-icon'] },
83
- React.createElement(InternalIcon, { name: getSortingIconName(sortingStatus) })))),
137
+ React.createElement("div", { className: clsx(styles['header-cell-main'], hasSortMenu && styles['header-cell-main-with-menu']) },
138
+ React.createElement("div", { ref: clickableHeaderRef, "data-focus-id": `sorting-control-${String(columnId)}`, className: clsx(styles['header-cell-content'], {
139
+ [styles['header-cell-fake-focus']]: focusedComponent === `sorting-control-${String(columnId)}`,
140
+ [styles['header-cell-content-expandable']]: isExpandable,
141
+ [styles['header-cell-content-multi-sorted']]: showPriorityBadge,
142
+ [styles['header-cell-content-with-menu']]: hasSortMenu,
143
+ }), "aria-label": column.ariaLabel
144
+ ? column.ariaLabel({
145
+ sorted: sorted,
146
+ descending: sorted && descending,
147
+ disabled: !!sortingDisabled,
148
+ sortIndex: multiSortIndex !== null && multiSortIndex !== void 0 ? multiSortIndex : undefined,
149
+ })
150
+ : undefined, ...(sortingStatus && !sortingDisabled
151
+ ? {
152
+ onKeyPress: handleKeyPress,
153
+ tabIndex: clickableHeaderTabIndex,
154
+ role: 'button',
155
+ onClick: event => handleClick(event.shiftKey),
156
+ // Prevent the browser from extending the text selection on Shift+click.
157
+ onMouseDown: (event) => {
158
+ if (event.shiftKey) {
159
+ event.preventDefault();
160
+ }
161
+ },
162
+ }
163
+ : {}) },
164
+ React.createElement("div", { className: clsx(styles['header-cell-text'], analyticsSelectors['header-cell-text'], wrapLines && styles['header-cell-text-wrap']), id: headerId },
165
+ column.header,
166
+ isEditable ? (React.createElement("span", { className: styles['edit-icon'] },
167
+ React.createElement(InternalIcon, { name: "edit", ariaLabel: i18n('columnDefinitions.editConfig.editIconAriaLabel', (_a = column.editConfig) === null || _a === void 0 ? void 0 : _a.editIconAriaLabel) }))) : null),
168
+ sortAccessibleText && React.createElement(ScreenreaderOnly, null, sortAccessibleText),
169
+ sortingStatus && (React.createElement("span", { className: styles['sorting-icon'] },
170
+ showPriorityBadge && (React.createElement("span", { className: styles['sort-priority-badge'], "aria-hidden": "true" }, multiSortIndex)),
171
+ React.createElement(InternalIcon, { name: getSortingIconName(sortingStatus) })))),
172
+ hasSortMenu && (React.createElement(SortMenu, { column: column, inSort: inMultiSort, isSortedAscending: inMultiSort && !descending, isSortedDescending: inMultiSort && descending, i18nStrings: i18nStrings, ariaLabel: ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.sortMenuTriggerLabel, ariaDescribedby: headerId, onAction: handleSortMenuAction }))),
84
173
  resizableColumns ? (React.createElement(Resizer, { tabIndex: tabIndex, focusId: `resize-control-${String(columnId)}`, showFocusRing: focusedComponent === `resize-control-${String(columnId)}`, onWidthUpdate: newWidth => updateColumn(columnId, newWidth), onWidthUpdateCommit: onResizeFinish, ariaLabelledby: headerId, minWidth: typeof column.minWidth === 'string' ? parseInt(column.minWidth) : column.minWidth, roleDescription: i18n('ariaLabels.resizerRoleDescription', resizerRoleDescription),
85
174
  // TODO: Replace with this when strings are available
86
175
  // tooltipText={i18n('ariaLabels.resizerTooltipText', resizerTooltipText)}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table/header-cell/index.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 React, { useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useMergeRefs, useResizeObserver, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { useSingleTabStopNavigation } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { useInternalI18n } from '../../i18n/context';\nimport InternalIcon from '../../icon/internal';\nimport { KeyCode } from '../../internal/keycode';\nimport { GeneratedAnalyticsMetadataTableSort } from '../analytics-metadata/interfaces';\nimport { TableProps } from '../interfaces';\nimport { Divider, Resizer } from '../resizer';\nimport { BaseHeaderCellProps } from './common-props';\nimport { TableThElement } from './th-element';\nimport { getSortingIconName, getSortingStatus, isSorted } from './utils';\n\nimport analyticsSelectors from '../analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nexport interface TableHeaderCellProps<ItemType> extends BaseHeaderCellProps {\n column: TableProps.ColumnDefinition<ItemType>;\n activeSortingColumn?: TableProps.SortingColumn<ItemType>;\n sortingDescending?: boolean;\n sortingDisabled?: boolean;\n stuck?: boolean;\n onClick(detail: TableProps.SortingState<any>): void;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n isEditable?: boolean;\n columnId: PropertyKey;\n isExpandable?: boolean;\n hasDynamicContent?: boolean;\n colSpan?: number;\n rowSpan?: number;\n columnGroupId?: string;\n isLastChildOfGroup?: boolean;\n isLast?: boolean;\n}\n\nexport function TableHeaderCell<ItemType>({\n tabIndex,\n column,\n activeSortingColumn,\n sortingDescending,\n sortingDisabled,\n wrapLines,\n focusedComponent,\n stuck,\n sticky,\n hidden,\n stripedRows,\n onClick,\n colIndex,\n updateColumn,\n resizableColumns,\n resizableStyle,\n onResizeFinish,\n isEditable,\n columnId,\n stickyState,\n cellRef,\n tableRole,\n resizerRoleDescription,\n resizerTooltipText,\n isExpandable,\n hasDynamicContent,\n variant,\n colSpan,\n rowSpan,\n columnGroupId,\n isLastChildOfGroup,\n isLast,\n tableVariant,\n}: TableHeaderCellProps<ItemType>) {\n const i18n = useInternalI18n('table');\n const sortable = !!column.sortingComparator || !!column.sortingField;\n const sorted = !!activeSortingColumn && isSorted(column, activeSortingColumn);\n const sortingStatus = getSortingStatus(sortable, sorted, !!sortingDescending, !!sortingDisabled);\n const isGrouped = !!columnGroupId || (rowSpan ?? 1) > 1;\n const handleClick = () =>\n onClick({\n sortingColumn: column,\n isDescending: sorted ? !sortingDescending : false,\n });\n\n // Elements with role=\"button\" do not have the default behavior of <button>, where pressing\n // Enter or Space will trigger a click event. Therefore we need to add this ourselves.\n // The native <button> element cannot be used due to a misaligned implementation in Firefox:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=843003\n const handleKeyPress = ({ nativeEvent: e }: React.KeyboardEvent) => {\n if (e.keyCode === KeyCode.enter || e.keyCode === KeyCode.space) {\n e.preventDefault();\n handleClick();\n }\n };\n\n const headerId = useUniqueId('table-header-');\n\n const clickableHeaderRef = useRef<HTMLDivElement>(null);\n const { tabIndex: clickableHeaderTabIndex } = useSingleTabStopNavigation(clickableHeaderRef, { tabIndex });\n\n const cellRefObject = useRef<HTMLElement>(null);\n const cellRefCombined = useMergeRefs(cellRef, cellRefObject);\n\n // Keep sticky and non-sticky headers in sync for dynamic cell\n // content changes. This is only needed when:\n // - Column has dynamic content\n // - This is the non-sticky version of a sticky header (hidden === true)\n // - Columns are not resizable\n useResizeObserver(hasDynamicContent ? cellRefObject : () => null, entry => {\n updateColumn(columnId, entry.borderBoxWidth);\n });\n\n return (\n <TableThElement\n resizableStyle={resizableStyle}\n cellRef={cellRefCombined}\n sortingStatus={sortingStatus}\n sortingDisabled={sortingDisabled}\n focusedComponent={focusedComponent}\n stuck={stuck}\n sticky={sticky}\n resizable={resizableColumns}\n hidden={hidden}\n stripedRows={stripedRows}\n colIndex={colIndex}\n columnId={columnId}\n stickyState={stickyState}\n tableRole={tableRole}\n variant={variant}\n tableVariant={tableVariant}\n colSpan={colSpan}\n rowSpan={rowSpan}\n columnGroupId={columnGroupId}\n isLast={isLast}\n {...(sortingDisabled\n ? {}\n : getAnalyticsMetadataAttribute({\n action: 'sort',\n detail: {\n position: `${colIndex + 1}`,\n columnId: column.id ? `${column.id}` : '',\n label: `.${analyticsSelectors['header-cell-text']}`,\n sortingDescending: `${!sortingDescending}`,\n },\n } as GeneratedAnalyticsMetadataTableSort))}\n >\n <div\n ref={clickableHeaderRef}\n data-focus-id={`sorting-control-${String(columnId)}`}\n className={clsx(styles['header-cell-content'], {\n [styles['header-cell-fake-focus']]: focusedComponent === `sorting-control-${String(columnId)}`,\n [styles['header-cell-content-expandable']]: isExpandable,\n })}\n aria-label={\n column.ariaLabel\n ? column.ariaLabel({\n sorted: sorted,\n descending: sorted && !!sortingDescending,\n disabled: !!sortingDisabled,\n })\n : undefined\n }\n {...(sortingStatus && !sortingDisabled\n ? {\n onKeyPress: handleKeyPress,\n tabIndex: clickableHeaderTabIndex,\n role: 'button',\n onClick: handleClick,\n }\n : {})}\n >\n <div\n className={clsx(\n styles['header-cell-text'],\n analyticsSelectors['header-cell-text'],\n wrapLines && styles['header-cell-text-wrap']\n )}\n id={headerId}\n >\n {column.header}\n {isEditable ? (\n <span className={styles['edit-icon']}>\n <InternalIcon\n name=\"edit\"\n ariaLabel={i18n('columnDefinitions.editConfig.editIconAriaLabel', column.editConfig?.editIconAriaLabel)}\n />\n </span>\n ) : null}\n </div>\n {sortingStatus && (\n <span className={styles['sorting-icon']}>\n <InternalIcon name={getSortingIconName(sortingStatus)} />\n </span>\n )}\n </div>\n {resizableColumns ? (\n <Resizer\n tabIndex={tabIndex}\n focusId={`resize-control-${String(columnId)}`}\n showFocusRing={focusedComponent === `resize-control-${String(columnId)}`}\n onWidthUpdate={newWidth => updateColumn(columnId, newWidth)}\n onWidthUpdateCommit={onResizeFinish}\n ariaLabelledby={headerId}\n minWidth={typeof column.minWidth === 'string' ? parseInt(column.minWidth) : column.minWidth}\n roleDescription={i18n('ariaLabels.resizerRoleDescription', resizerRoleDescription)}\n // TODO: Replace with this when strings are available\n // tooltipText={i18n('ariaLabels.resizerTooltipText', resizerTooltipText)}\n tooltipText={resizerTooltipText}\n isBorderless={variant === 'full-page' || variant === 'embedded' || variant === 'borderless'}\n isLast={isLast}\n isGrouped={isGrouped}\n dividerPosition={isLastChildOfGroup ? 'top' : undefined}\n />\n ) : (\n <Divider\n className={styles['resize-divider']}\n position={isLastChildOfGroup ? 'top' : undefined}\n isGrouped={isGrouped}\n />\n )}\n </TableThElement>\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table/header-cell/index.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 React, { useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useMergeRefs, useResizeObserver, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { useSingleTabStopNavigation } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { useInternalI18n } from '../../i18n/context';\nimport InternalIcon from '../../icon/internal';\nimport ScreenreaderOnly from '../../internal/components/screenreader-only';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { GeneratedAnalyticsMetadataTableSort } from '../analytics-metadata/interfaces';\nimport { TableProps } from '../interfaces';\nimport {\n appendSort,\n getSortIndex,\n removeSort,\n replaceSort,\n setDirection,\n toggleDirection,\n} from '../multi-column-sort/utils';\nimport { Divider, Resizer } from '../resizer';\nimport { BaseHeaderCellProps } from './common-props';\nimport { SortMenu, SortMenuAction } from './sort-menu';\nimport { TableThElement } from './th-element';\nimport { getSortingIconName, getSortingStatus, isSorted } from './utils';\n\nimport analyticsSelectors from '../analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nexport interface TableHeaderCellProps<ItemType> extends BaseHeaderCellProps {\n column: TableProps.ColumnDefinition<ItemType>;\n activeSortingColumn?: TableProps.SortingColumn<ItemType>;\n sortingDescending?: boolean;\n sortingDisabled?: boolean;\n stuck?: boolean;\n onClick(detail: TableProps.SortingState<any>): void;\n multiColumnSort?: TableProps.MultiColumnSort<ItemType>;\n i18nStrings?: TableProps.I18nStrings;\n ariaLabels?: TableProps.AriaLabels<ItemType>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n isEditable?: boolean;\n columnId: PropertyKey;\n isExpandable?: boolean;\n hasDynamicContent?: boolean;\n colSpan?: number;\n rowSpan?: number;\n columnGroupId?: string;\n isLastChildOfGroup?: boolean;\n isLast?: boolean;\n}\n\nexport function TableHeaderCell<ItemType>({\n tabIndex,\n column,\n activeSortingColumn,\n sortingDescending,\n sortingDisabled,\n wrapLines,\n focusedComponent,\n stuck,\n sticky,\n hidden,\n stripedRows,\n onClick,\n colIndex,\n updateColumn,\n resizableColumns,\n resizableStyle,\n onResizeFinish,\n isEditable,\n columnId,\n stickyState,\n cellRef,\n tableRole,\n resizerRoleDescription,\n resizerTooltipText,\n isExpandable,\n hasDynamicContent,\n variant,\n colSpan,\n rowSpan,\n columnGroupId,\n isLastChildOfGroup,\n isLast,\n tableVariant,\n multiColumnSort,\n i18nStrings,\n ariaLabels,\n}: TableHeaderCellProps<ItemType>) {\n const i18n = useInternalI18n('table');\n const sortable = !!column.sortingComparator || !!column.sortingField;\n const isGrouped = !!columnGroupId || (rowSpan ?? 1) > 1;\n // The sort menu only renders for a sortable, enabled column under multi-column sort.\n const hasSortMenu = !!multiColumnSort && sortable && !sortingDisabled;\n\n // Multi-column sort context — derived from `multiColumnSort.sortingColumns` when present.\n const multiSortIndex = multiColumnSort ? getSortIndex(multiColumnSort.sortingColumns, column) : null;\n const multiSortEntry =\n multiSortIndex !== null && multiColumnSort ? multiColumnSort.sortingColumns[multiSortIndex - 1] : undefined;\n const inMultiSort = multiSortIndex !== null;\n const isPrimaryMultiSort = multiSortIndex === 1;\n // Priority badges are only meaningful when 2+ columns are sorted; with a single column, the position number adds no information.\n const showPriorityBadge = !!multiColumnSort && multiColumnSort.sortingColumns.length >= 2 && multiSortIndex !== null;\n\n // For multi-sort, derive sorted/descending from the matching entry; otherwise fall back to single-sort props.\n const sorted = multiColumnSort ? inMultiSort : !!activeSortingColumn && isSorted(column, activeSortingColumn);\n const descending = multiColumnSort ? !!multiSortEntry?.isDescending : !!sortingDescending;\n const sortingStatus = getSortingStatus(sortable, sorted, descending, !!sortingDisabled);\n // In multi-sort, only the primary column declares aria-sort (ARIA only allows one column sorted at a time).\n const suppressAriaSort = !!multiColumnSort && inMultiSort && !isPrimaryMultiSort;\n\n // Screen-reader-only text appended to a sorted column header. The visible header text supplies the column name;\n // this adds the sort direction (only when `aria-sort` is suppressed, i.e. secondary columns) and the sort priority.\n const sortDirectionLabel = descending\n ? i18n('ariaLabels.sortDescending', ariaLabels?.sortDescending)\n : i18n('ariaLabels.sortAscending', ariaLabels?.sortAscending);\n const sortPriorityLabel = i18n(\n 'ariaLabels.sortPriority',\n ariaLabels?.sortPriority,\n format =>\n ({ priority }) =>\n format({ priority })\n );\n const sortAccessibleText = inMultiSort\n ? [\n suppressAriaSort ? sortDirectionLabel : undefined,\n showPriorityBadge ? sortPriorityLabel?.({ priority: multiSortIndex ?? 0 }) : undefined,\n ]\n .filter(Boolean)\n .join(' ')\n : '';\n const handleClick = (shiftKey = false) => {\n if (multiColumnSort) {\n const current = multiColumnSort.sortingColumns;\n let next: ReadonlyArray<TableProps.SortingState<ItemType>>;\n if (shiftKey && !inMultiSort) {\n next = appendSort(current, column, false);\n } else if (inMultiSort) {\n next = toggleDirection(current, column);\n } else {\n next = replaceSort(column, false);\n }\n fireNonCancelableEvent(multiColumnSort.onChange, { sortingColumns: next });\n return;\n }\n onClick({\n sortingColumn: column,\n isDescending: sorted ? !sortingDescending : false,\n });\n };\n\n const handleSortMenuAction = (action: SortMenuAction) => {\n // The sort menu is only rendered when `multiColumnSort` is set (see render below), so this guard\n // exists purely to narrow the type for the accesses that follow and is unreachable at runtime.\n /* istanbul ignore next */\n if (!multiColumnSort) {\n return;\n }\n const current = multiColumnSort.sortingColumns;\n let next: ReadonlyArray<TableProps.SortingState<ItemType>>;\n switch (action) {\n case 'sort-ascending':\n next = inMultiSort ? setDirection(current, column, false) : replaceSort(column, false);\n break;\n case 'sort-descending':\n next = inMultiSort ? setDirection(current, column, true) : replaceSort(column, true);\n break;\n case 'add-to-sort-ascending':\n next = appendSort(current, column, false);\n break;\n case 'add-to-sort-descending':\n next = appendSort(current, column, true);\n break;\n case 'remove-from-sort':\n next = removeSort(current, column);\n break;\n }\n fireNonCancelableEvent(multiColumnSort.onChange, { sortingColumns: next });\n };\n\n // Elements with role=\"button\" do not have the default behavior of <button>, where pressing\n // Enter or Space will trigger a click event. Therefore we need to add this ourselves.\n // The native <button> element cannot be used due to a misaligned implementation in Firefox:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=843003\n const handleKeyPress = ({ nativeEvent: e }: React.KeyboardEvent) => {\n if (e.keyCode === KeyCode.enter || e.keyCode === KeyCode.space) {\n e.preventDefault();\n handleClick(e.shiftKey);\n }\n };\n\n const headerId = useUniqueId('table-header-');\n\n const clickableHeaderRef = useRef<HTMLDivElement>(null);\n const { tabIndex: clickableHeaderTabIndex } = useSingleTabStopNavigation(clickableHeaderRef, { tabIndex });\n\n const cellRefObject = useRef<HTMLElement>(null);\n const cellRefCombined = useMergeRefs(cellRef, cellRefObject);\n\n // Keep sticky and non-sticky headers in sync for dynamic cell\n // content changes. This is only needed when:\n // - Column has dynamic content\n // - This is the non-sticky version of a sticky header (hidden === true)\n // - Columns are not resizable\n useResizeObserver(hasDynamicContent ? cellRefObject : () => null, entry => {\n updateColumn(columnId, entry.borderBoxWidth);\n });\n\n return (\n <TableThElement\n resizableStyle={resizableStyle}\n cellRef={cellRefCombined}\n sortingStatus={sortingStatus}\n sortingDisabled={sortingDisabled}\n suppressAriaSort={suppressAriaSort}\n focusedComponent={focusedComponent}\n stuck={stuck}\n sticky={sticky}\n resizable={resizableColumns}\n hidden={hidden}\n stripedRows={stripedRows}\n colIndex={colIndex}\n columnId={columnId}\n stickyState={stickyState}\n tableRole={tableRole}\n variant={variant}\n tableVariant={tableVariant}\n colSpan={colSpan}\n rowSpan={rowSpan}\n columnGroupId={columnGroupId}\n isLast={isLast}\n {...(sortingDisabled\n ? {}\n : getAnalyticsMetadataAttribute({\n action: 'sort',\n detail: {\n position: `${colIndex + 1}`,\n columnId: column.id ? `${column.id}` : '',\n label: `.${analyticsSelectors['header-cell-text']}`,\n sortingDescending: `${!descending}`,\n },\n } as GeneratedAnalyticsMetadataTableSort))}\n >\n <div className={clsx(styles['header-cell-main'], hasSortMenu && styles['header-cell-main-with-menu'])}>\n <div\n ref={clickableHeaderRef}\n data-focus-id={`sorting-control-${String(columnId)}`}\n className={clsx(styles['header-cell-content'], {\n [styles['header-cell-fake-focus']]: focusedComponent === `sorting-control-${String(columnId)}`,\n [styles['header-cell-content-expandable']]: isExpandable,\n [styles['header-cell-content-multi-sorted']]: showPriorityBadge,\n [styles['header-cell-content-with-menu']]: hasSortMenu,\n })}\n aria-label={\n column.ariaLabel\n ? column.ariaLabel({\n sorted: sorted,\n descending: sorted && descending,\n disabled: !!sortingDisabled,\n sortIndex: multiSortIndex ?? undefined,\n })\n : undefined\n }\n {...(sortingStatus && !sortingDisabled\n ? {\n onKeyPress: handleKeyPress,\n tabIndex: clickableHeaderTabIndex,\n role: 'button',\n onClick: event => handleClick(event.shiftKey),\n // Prevent the browser from extending the text selection on Shift+click.\n onMouseDown: (event: React.MouseEvent) => {\n if (event.shiftKey) {\n event.preventDefault();\n }\n },\n }\n : {})}\n >\n <div\n className={clsx(\n styles['header-cell-text'],\n analyticsSelectors['header-cell-text'],\n wrapLines && styles['header-cell-text-wrap']\n )}\n id={headerId}\n >\n {column.header}\n {isEditable ? (\n <span className={styles['edit-icon']}>\n <InternalIcon\n name=\"edit\"\n ariaLabel={i18n(\n 'columnDefinitions.editConfig.editIconAriaLabel',\n column.editConfig?.editIconAriaLabel\n )}\n />\n </span>\n ) : null}\n </div>\n {sortAccessibleText && <ScreenreaderOnly>{sortAccessibleText}</ScreenreaderOnly>}\n {sortingStatus && (\n <span className={styles['sorting-icon']}>\n {showPriorityBadge && (\n <span className={styles['sort-priority-badge']} aria-hidden=\"true\">\n {multiSortIndex}\n </span>\n )}\n <InternalIcon name={getSortingIconName(sortingStatus)} />\n </span>\n )}\n </div>\n {hasSortMenu && (\n <SortMenu<ItemType>\n column={column}\n inSort={inMultiSort}\n isSortedAscending={inMultiSort && !descending}\n isSortedDescending={inMultiSort && descending}\n i18nStrings={i18nStrings}\n ariaLabel={ariaLabels?.sortMenuTriggerLabel}\n ariaDescribedby={headerId}\n onAction={handleSortMenuAction}\n />\n )}\n </div>\n {resizableColumns ? (\n <Resizer\n tabIndex={tabIndex}\n focusId={`resize-control-${String(columnId)}`}\n showFocusRing={focusedComponent === `resize-control-${String(columnId)}`}\n onWidthUpdate={newWidth => updateColumn(columnId, newWidth)}\n onWidthUpdateCommit={onResizeFinish}\n ariaLabelledby={headerId}\n minWidth={typeof column.minWidth === 'string' ? parseInt(column.minWidth) : column.minWidth}\n roleDescription={i18n('ariaLabels.resizerRoleDescription', resizerRoleDescription)}\n // TODO: Replace with this when strings are available\n // tooltipText={i18n('ariaLabels.resizerTooltipText', resizerTooltipText)}\n tooltipText={resizerTooltipText}\n isBorderless={variant === 'full-page' || variant === 'embedded' || variant === 'borderless'}\n isLast={isLast}\n isGrouped={isGrouped}\n dividerPosition={isLastChildOfGroup ? 'top' : undefined}\n />\n ) : (\n <Divider\n className={styles['resize-divider']}\n position={isLastChildOfGroup ? 'top' : undefined}\n isGrouped={isGrouped}\n />\n )}\n </TableThElement>\n );\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { TableProps } from '../interfaces';
2
+ export type SortMenuAction = 'sort-ascending' | 'sort-descending' | 'add-to-sort-ascending' | 'add-to-sort-descending' | 'remove-from-sort';
3
+ export interface SortMenuProps<T> {
4
+ column: TableProps.ColumnDefinition<T>;
5
+ inSort: boolean;
6
+ isSortedAscending: boolean;
7
+ isSortedDescending: boolean;
8
+ i18nStrings?: TableProps.I18nStrings;
9
+ ariaLabel?: string;
10
+ ariaDescribedby?: string;
11
+ onAction: (action: SortMenuAction) => void;
12
+ }
13
+ export declare function SortMenu<T>({ inSort, isSortedAscending, isSortedDescending, i18nStrings, ariaLabel, ariaDescribedby, onAction, }: SortMenuProps<T>): JSX.Element;
14
+ //# sourceMappingURL=sort-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-menu.d.ts","sourceRoot":"","sources":["../../../../src/table/header-cell/sort-menu.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,GACxB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAC1B,MAAM,EACN,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,aAAa,CAAC,CAAC,CAAC,eA+DlB"}
@@ -0,0 +1,50 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import React from 'react';
4
+ import InternalButtonDropdown from '../../button-dropdown/internal';
5
+ import { useInternalI18n } from '../../i18n/context';
6
+ export function SortMenu({ inSort, isSortedAscending, isSortedDescending, i18nStrings, ariaLabel, ariaDescribedby, onAction, }) {
7
+ var _a, _b, _c, _d, _e, _f, _g;
8
+ const i18n = useInternalI18n('table');
9
+ const items = [
10
+ {
11
+ id: 'sort-ascending',
12
+ itemType: 'checkbox',
13
+ text: (_a = i18n('i18nStrings.sortDropdownSortAscending', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownSortAscending)) !== null && _a !== void 0 ? _a : '',
14
+ checked: isSortedAscending,
15
+ },
16
+ {
17
+ id: 'sort-descending',
18
+ itemType: 'checkbox',
19
+ text: (_b = i18n('i18nStrings.sortDropdownSortDescending', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownSortDescending)) !== null && _b !== void 0 ? _b : '',
20
+ checked: isSortedDescending,
21
+ },
22
+ {
23
+ id: 'multi-column-sort-group',
24
+ itemType: 'group',
25
+ text: (_c = i18n('i18nStrings.sortDropdownMultiColumnSortGroup', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownMultiColumnSortGroup)) !== null && _c !== void 0 ? _c : '',
26
+ items: [
27
+ {
28
+ id: 'add-to-sort-ascending',
29
+ text: (_d = i18n('i18nStrings.sortDropdownAddToSortAscending', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownAddToSortAscending)) !== null && _d !== void 0 ? _d : '',
30
+ disabled: inSort,
31
+ disabledReason: i18n('i18nStrings.sortDropdownAddToSortDisabledReason', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownAddToSortDisabledReason),
32
+ },
33
+ {
34
+ id: 'add-to-sort-descending',
35
+ text: (_e = i18n('i18nStrings.sortDropdownAddToSortDescending', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownAddToSortDescending)) !== null && _e !== void 0 ? _e : '',
36
+ disabled: inSort,
37
+ disabledReason: i18n('i18nStrings.sortDropdownAddToSortDisabledReason', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownAddToSortDisabledReason),
38
+ },
39
+ {
40
+ id: 'remove-from-sort',
41
+ text: (_f = i18n('i18nStrings.sortDropdownRemoveFromSort', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownRemoveFromSort)) !== null && _f !== void 0 ? _f : '',
42
+ disabled: !inSort,
43
+ disabledReason: i18n('i18nStrings.sortDropdownRemoveFromSortDisabledReason', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.sortDropdownRemoveFromSortDisabledReason),
44
+ },
45
+ ],
46
+ },
47
+ ];
48
+ return (React.createElement(InternalButtonDropdown, { items: items, variant: "icon", compactTrigger: true, expandToViewport: true, ariaLabel: (_g = i18n('ariaLabels.sortMenuTriggerLabel', ariaLabel)) !== null && _g !== void 0 ? _g : '', ariaDescribedby: ariaDescribedby, onItemClick: ({ detail }) => onAction(detail.id) }));
49
+ }
50
+ //# sourceMappingURL=sort-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-menu.js","sourceRoot":"","sources":["../../../../src/table/header-cell/sort-menu.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,sBAAsB,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAqBrD,MAAM,UAAU,QAAQ,CAAI,EAC1B,MAAM,EACN,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,eAAe,EACf,QAAQ,GACS;;IACjB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAsC;QAC/C;YACE,EAAE,EAAE,gBAAgB;YACpB,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAA,IAAI,CAAC,uCAAuC,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,yBAAyB,CAAC,mCAAI,EAAE;YACjG,OAAO,EAAE,iBAAiB;SAC3B;QACD;YACE,EAAE,EAAE,iBAAiB;YACrB,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAA,IAAI,CAAC,wCAAwC,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,0BAA0B,CAAC,mCAAI,EAAE;YACnG,OAAO,EAAE,kBAAkB;SAC5B;QACD;YACE,EAAE,EAAE,yBAAyB;YAC7B,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,MAAA,IAAI,CAAC,8CAA8C,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gCAAgC,CAAC,mCAAI,EAAE;YAC/G,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,uBAAuB;oBAC3B,IAAI,EAAE,MAAA,IAAI,CAAC,4CAA4C,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,8BAA8B,CAAC,mCAAI,EAAE;oBAC3G,QAAQ,EAAE,MAAM;oBAChB,cAAc,EAAE,IAAI,CAClB,iDAAiD,EACjD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mCAAmC,CACjD;iBACF;gBACD;oBACE,EAAE,EAAE,wBAAwB;oBAC5B,IAAI,EAAE,MAAA,IAAI,CAAC,6CAA6C,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,+BAA+B,CAAC,mCAAI,EAAE;oBAC7G,QAAQ,EAAE,MAAM;oBAChB,cAAc,EAAE,IAAI,CAClB,iDAAiD,EACjD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,mCAAmC,CACjD;iBACF;gBACD;oBACE,EAAE,EAAE,kBAAkB;oBACtB,IAAI,EAAE,MAAA,IAAI,CAAC,wCAAwC,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,0BAA0B,CAAC,mCAAI,EAAE;oBACnG,QAAQ,EAAE,CAAC,MAAM;oBACjB,cAAc,EAAE,IAAI,CAClB,sDAAsD,EACtD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,wCAAwC,CACtD;iBACF;aACF;SACF;KACF,CAAC;IAEF,OAAO,CACL,oBAAC,sBAAsB,IACrB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAC,MAAM,EACd,cAAc,EAAE,IAAI,EACpB,gBAAgB,EAAE,IAAI,EACtB,SAAS,EAAE,MAAA,IAAI,CAAC,iCAAiC,EAAE,SAAS,CAAC,mCAAI,EAAE,EACnE,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAoB,CAAC,GAClE,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { ButtonDropdownProps } from '../../button-dropdown/interfaces';\nimport InternalButtonDropdown from '../../button-dropdown/internal';\nimport { useInternalI18n } from '../../i18n/context';\nimport { TableProps } from '../interfaces';\n\nexport type SortMenuAction =\n | 'sort-ascending'\n | 'sort-descending'\n | 'add-to-sort-ascending'\n | 'add-to-sort-descending'\n | 'remove-from-sort';\n\nexport interface SortMenuProps<T> {\n column: TableProps.ColumnDefinition<T>;\n inSort: boolean;\n isSortedAscending: boolean;\n isSortedDescending: boolean;\n i18nStrings?: TableProps.I18nStrings;\n ariaLabel?: string;\n ariaDescribedby?: string;\n onAction: (action: SortMenuAction) => void;\n}\n\nexport function SortMenu<T>({\n inSort,\n isSortedAscending,\n isSortedDescending,\n i18nStrings,\n ariaLabel,\n ariaDescribedby,\n onAction,\n}: SortMenuProps<T>) {\n const i18n = useInternalI18n('table');\n\n const items: ButtonDropdownProps.ItemOrGroup[] = [\n {\n id: 'sort-ascending',\n itemType: 'checkbox',\n text: i18n('i18nStrings.sortDropdownSortAscending', i18nStrings?.sortDropdownSortAscending) ?? '',\n checked: isSortedAscending,\n },\n {\n id: 'sort-descending',\n itemType: 'checkbox',\n text: i18n('i18nStrings.sortDropdownSortDescending', i18nStrings?.sortDropdownSortDescending) ?? '',\n checked: isSortedDescending,\n },\n {\n id: 'multi-column-sort-group',\n itemType: 'group',\n text: i18n('i18nStrings.sortDropdownMultiColumnSortGroup', i18nStrings?.sortDropdownMultiColumnSortGroup) ?? '',\n items: [\n {\n id: 'add-to-sort-ascending',\n text: i18n('i18nStrings.sortDropdownAddToSortAscending', i18nStrings?.sortDropdownAddToSortAscending) ?? '',\n disabled: inSort,\n disabledReason: i18n(\n 'i18nStrings.sortDropdownAddToSortDisabledReason',\n i18nStrings?.sortDropdownAddToSortDisabledReason\n ),\n },\n {\n id: 'add-to-sort-descending',\n text: i18n('i18nStrings.sortDropdownAddToSortDescending', i18nStrings?.sortDropdownAddToSortDescending) ?? '',\n disabled: inSort,\n disabledReason: i18n(\n 'i18nStrings.sortDropdownAddToSortDisabledReason',\n i18nStrings?.sortDropdownAddToSortDisabledReason\n ),\n },\n {\n id: 'remove-from-sort',\n text: i18n('i18nStrings.sortDropdownRemoveFromSort', i18nStrings?.sortDropdownRemoveFromSort) ?? '',\n disabled: !inSort,\n disabledReason: i18n(\n 'i18nStrings.sortDropdownRemoveFromSortDisabledReason',\n i18nStrings?.sortDropdownRemoveFromSortDisabledReason\n ),\n },\n ],\n },\n ];\n\n return (\n <InternalButtonDropdown\n items={items}\n variant=\"icon\"\n compactTrigger={true}\n expandToViewport={true}\n ariaLabel={i18n('ariaLabels.sortMenuTriggerLabel', ariaLabel) ?? ''}\n ariaDescribedby={ariaDescribedby}\n onItemClick={({ detail }) => onAction(detail.id as SortMenuAction)}\n />\n );\n}\n"]}
@@ -1,38 +1,43 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "header-cell": "awsui_header-cell_1spae_wqnmg_149",
5
- "header-cell-fake-focus": "awsui_header-cell-fake-focus_1spae_wqnmg_183",
6
- "header-cell-group": "awsui_header-cell-group_1spae_wqnmg_204",
7
- "header-cell-grouped": "awsui_header-cell-grouped_1spae_wqnmg_204",
8
- "header-cell-spans-rows": "awsui_header-cell-spans-rows_1spae_wqnmg_204",
9
- "resize-divider": "awsui_resize-divider_1spae_wqnmg_209",
10
- "header-cell-sticky": "awsui_header-cell-sticky_1spae_wqnmg_212",
11
- "header-cell-stuck": "awsui_header-cell-stuck_1spae_wqnmg_218",
12
- "header-cell-variant-full-page": "awsui_header-cell-variant-full-page_1spae_wqnmg_218",
13
- "header-cell-hidden": "awsui_header-cell-hidden_1spae_wqnmg_224",
14
- "header-cell-variant-embedded": "awsui_header-cell-variant-embedded_1spae_wqnmg_227",
15
- "is-visual-refresh": "awsui_is-visual-refresh_1spae_wqnmg_227",
16
- "sticky-cell": "awsui_sticky-cell_1spae_wqnmg_227",
17
- "header-cell-variant-borderless": "awsui_header-cell-variant-borderless_1spae_wqnmg_227",
18
- "header-cell-sortable": "awsui_header-cell-sortable_1spae_wqnmg_230",
19
- "table-variant-full-page": "awsui_table-variant-full-page_1spae_wqnmg_251",
20
- "sticky-cell-pad-left": "awsui_sticky-cell-pad-left_1spae_wqnmg_254",
21
- "has-selection": "awsui_has-selection_1spae_wqnmg_254",
22
- "sticky-cell-last-inline-start": "awsui_sticky-cell-last-inline-start_1spae_wqnmg_257",
23
- "sticky-cell-last-inline-end": "awsui_sticky-cell-last-inline-end_1spae_wqnmg_269",
24
- "sorting-icon": "awsui_sorting-icon_1spae_wqnmg_279",
25
- "edit-icon": "awsui_edit-icon_1spae_wqnmg_287",
26
- "header-cell-content": "awsui_header-cell-content_1spae_wqnmg_293",
27
- "header-cell-content-expandable": "awsui_header-cell-content-expandable_1spae_wqnmg_299",
28
- "header-cell-disabled": "awsui_header-cell-disabled_1spae_wqnmg_354",
29
- "header-cell-sorted": "awsui_header-cell-sorted_1spae_wqnmg_354",
30
- "header-cell-text": "awsui_header-cell-text_1spae_wqnmg_385",
31
- "header-cell-text-wrap": "awsui_header-cell-text-wrap_1spae_wqnmg_389",
32
- "header-cell-ascending": "awsui_header-cell-ascending_1spae_wqnmg_395",
33
- "header-cell-descending": "awsui_header-cell-descending_1spae_wqnmg_396",
34
- "has-striped-rows": "awsui_has-striped-rows_1spae_wqnmg_510",
35
- "sticky-cell-pad-inline-start": "awsui_sticky-cell-pad-inline-start_1spae_wqnmg_510",
36
- "header-cell-resizable": "awsui_header-cell-resizable_1spae_wqnmg_522"
4
+ "header-cell": "awsui_header-cell_1spae_1oja5_149",
5
+ "header-cell-fake-focus": "awsui_header-cell-fake-focus_1spae_1oja5_183",
6
+ "header-cell-group": "awsui_header-cell-group_1spae_1oja5_204",
7
+ "header-cell-grouped": "awsui_header-cell-grouped_1spae_1oja5_204",
8
+ "header-cell-spans-rows": "awsui_header-cell-spans-rows_1spae_1oja5_204",
9
+ "resize-divider": "awsui_resize-divider_1spae_1oja5_209",
10
+ "header-cell-sticky": "awsui_header-cell-sticky_1spae_1oja5_212",
11
+ "header-cell-stuck": "awsui_header-cell-stuck_1spae_1oja5_218",
12
+ "header-cell-variant-full-page": "awsui_header-cell-variant-full-page_1spae_1oja5_218",
13
+ "header-cell-hidden": "awsui_header-cell-hidden_1spae_1oja5_224",
14
+ "header-cell-variant-embedded": "awsui_header-cell-variant-embedded_1spae_1oja5_227",
15
+ "is-visual-refresh": "awsui_is-visual-refresh_1spae_1oja5_227",
16
+ "sticky-cell": "awsui_sticky-cell_1spae_1oja5_227",
17
+ "header-cell-variant-borderless": "awsui_header-cell-variant-borderless_1spae_1oja5_227",
18
+ "header-cell-sortable": "awsui_header-cell-sortable_1spae_1oja5_230",
19
+ "table-variant-full-page": "awsui_table-variant-full-page_1spae_1oja5_251",
20
+ "sticky-cell-pad-left": "awsui_sticky-cell-pad-left_1spae_1oja5_254",
21
+ "has-selection": "awsui_has-selection_1spae_1oja5_254",
22
+ "sticky-cell-last-inline-start": "awsui_sticky-cell-last-inline-start_1spae_1oja5_257",
23
+ "sticky-cell-last-inline-end": "awsui_sticky-cell-last-inline-end_1spae_1oja5_269",
24
+ "sorting-icon": "awsui_sorting-icon_1spae_1oja5_279",
25
+ "header-cell-main": "awsui_header-cell-main_1spae_1oja5_287",
26
+ "sort-priority-badge": "awsui_sort-priority-badge_1spae_1oja5_292",
27
+ "edit-icon": "awsui_edit-icon_1spae_1oja5_296",
28
+ "header-cell-content": "awsui_header-cell-content_1spae_1oja5_302",
29
+ "header-cell-content-expandable": "awsui_header-cell-content-expandable_1spae_1oja5_308",
30
+ "header-cell-content-multi-sorted": "awsui_header-cell-content-multi-sorted_1spae_1oja5_366",
31
+ "header-cell-disabled": "awsui_header-cell-disabled_1spae_1oja5_369",
32
+ "header-cell-sorted": "awsui_header-cell-sorted_1spae_1oja5_369",
33
+ "header-cell-main-with-menu": "awsui_header-cell-main-with-menu_1spae_1oja5_373",
34
+ "header-cell-content-with-menu": "awsui_header-cell-content-with-menu_1spae_1oja5_378",
35
+ "header-cell-text": "awsui_header-cell-text_1spae_1oja5_410",
36
+ "header-cell-text-wrap": "awsui_header-cell-text-wrap_1spae_1oja5_414",
37
+ "header-cell-ascending": "awsui_header-cell-ascending_1spae_1oja5_420",
38
+ "header-cell-descending": "awsui_header-cell-descending_1spae_1oja5_421",
39
+ "has-striped-rows": "awsui_has-striped-rows_1spae_1oja5_535",
40
+ "sticky-cell-pad-inline-start": "awsui_sticky-cell-pad-inline-start_1spae_1oja5_535",
41
+ "header-cell-resizable": "awsui_header-cell-resizable_1spae_1oja5_547"
37
42
  };
38
43