@cloudscape-design/components 3.0.1307 → 3.0.1309

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 (187) hide show
  1. package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts.map +1 -1
  2. package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js +4 -2
  3. package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js.map +1 -1
  4. package/app-layout/visual-refresh-toolbar/drawer/global-bottom-drawer.d.ts.map +1 -1
  5. package/app-layout/visual-refresh-toolbar/drawer/global-bottom-drawer.js +4 -2
  6. package/app-layout/visual-refresh-toolbar/drawer/global-bottom-drawer.js.map +1 -1
  7. package/app-layout/visual-refresh-toolbar/drawer/global-drawer.d.ts.map +1 -1
  8. package/app-layout/visual-refresh-toolbar/drawer/global-drawer.js +3 -2
  9. package/app-layout/visual-refresh-toolbar/drawer/global-drawer.js.map +1 -1
  10. package/app-layout/visual-refresh-toolbar/drawer/local-drawer.d.ts.map +1 -1
  11. package/app-layout/visual-refresh-toolbar/drawer/local-drawer.js +2 -2
  12. package/app-layout/visual-refresh-toolbar/drawer/local-drawer.js.map +1 -1
  13. package/app-layout/visual-refresh-toolbar/interfaces.d.ts +1 -0
  14. package/app-layout/visual-refresh-toolbar/interfaces.d.ts.map +1 -1
  15. package/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
  16. package/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
  17. package/app-layout/visual-refresh-toolbar/state/use-app-layout.js +12 -1
  18. package/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
  19. package/badge/styles.css.js +10 -10
  20. package/badge/styles.scoped.css +29 -16
  21. package/badge/styles.selectors.js +10 -10
  22. package/collection-preferences/content-display/content-display-option.js +1 -1
  23. package/collection-preferences/content-display/content-display-option.js.map +1 -1
  24. package/collection-preferences/content-display/index.d.ts +3 -7
  25. package/collection-preferences/content-display/index.d.ts.map +1 -1
  26. package/collection-preferences/content-display/index.js +63 -27
  27. package/collection-preferences/content-display/index.js.map +1 -1
  28. package/collection-preferences/content-display/utils.d.ts +41 -2
  29. package/collection-preferences/content-display/utils.d.ts.map +1 -1
  30. package/collection-preferences/content-display/utils.js +107 -13
  31. package/collection-preferences/content-display/utils.js.map +1 -1
  32. package/collection-preferences/index.d.ts.map +1 -1
  33. package/collection-preferences/index.js +2 -2
  34. package/collection-preferences/index.js.map +1 -1
  35. package/collection-preferences/interfaces.d.ts +30 -2
  36. package/collection-preferences/interfaces.d.ts.map +1 -1
  37. package/collection-preferences/interfaces.js.map +1 -1
  38. package/collection-preferences/styles.css.js +38 -36
  39. package/collection-preferences/styles.scoped.css +81 -37
  40. package/collection-preferences/styles.selectors.js +38 -36
  41. package/collection-preferences/utils.d.ts +1 -0
  42. package/collection-preferences/utils.d.ts.map +1 -1
  43. package/collection-preferences/utils.js +14 -0
  44. package/collection-preferences/utils.js.map +1 -1
  45. package/expandable-section/styles.css.js +35 -35
  46. package/expandable-section/styles.scoped.css +68 -68
  47. package/expandable-section/styles.selectors.js +35 -35
  48. package/i18n/messages/all.all.js +1 -1
  49. package/i18n/messages/all.all.json +1 -1
  50. package/i18n/messages/all.en.js +1 -1
  51. package/i18n/messages/all.en.json +1 -1
  52. package/i18n/messages-types.d.ts +4 -0
  53. package/i18n/messages-types.d.ts.map +1 -1
  54. package/i18n/messages-types.js.map +1 -1
  55. package/icon/interfaces.d.ts +1 -1
  56. package/icon/interfaces.d.ts.map +1 -1
  57. package/icon/interfaces.js.map +1 -1
  58. package/icon/internal.js +2 -2
  59. package/icon/internal.js.map +1 -1
  60. package/icon/styles.css.js +41 -39
  61. package/icon/styles.scoped.css +104 -85
  62. package/icon/styles.selectors.js +41 -39
  63. package/internal/base-component/styles.scoped.css +35 -3
  64. package/internal/environment.js +2 -2
  65. package/internal/environment.json +2 -2
  66. package/internal/generated/styles/tokens.d.ts +23 -1
  67. package/internal/generated/styles/tokens.js +23 -1
  68. package/internal/generated/theming/index.cjs +476 -4
  69. package/internal/generated/theming/index.cjs.d.ts +216 -0
  70. package/internal/generated/theming/index.d.ts +216 -0
  71. package/internal/generated/theming/index.js +476 -4
  72. package/internal/hooks/use-width-change/index.d.ts +12 -0
  73. package/internal/hooks/use-width-change/index.d.ts.map +1 -0
  74. package/internal/hooks/use-width-change/index.js +33 -0
  75. package/internal/hooks/use-width-change/index.js.map +1 -0
  76. package/internal/manifest.json +1 -1
  77. package/manifest.json +2 -2
  78. package/package.json +1 -1
  79. package/pagination/internal.d.ts.map +1 -1
  80. package/pagination/internal.js +4 -1
  81. package/pagination/internal.js.map +1 -1
  82. package/prompt-input/internal.d.ts.map +1 -1
  83. package/prompt-input/internal.js +9 -2
  84. package/prompt-input/internal.js.map +1 -1
  85. package/prompt-input/tokens/use-token-mode.d.ts.map +1 -1
  86. package/prompt-input/tokens/use-token-mode.js +0 -9
  87. package/prompt-input/tokens/use-token-mode.js.map +1 -1
  88. package/table/column-groups/col-group.d.ts +12 -0
  89. package/table/column-groups/col-group.d.ts.map +1 -0
  90. package/table/column-groups/col-group.js +24 -0
  91. package/table/column-groups/col-group.js.map +1 -0
  92. package/table/column-groups/split-utils.d.ts +31 -0
  93. package/table/column-groups/split-utils.d.ts.map +1 -0
  94. package/table/column-groups/split-utils.js +43 -0
  95. package/table/column-groups/split-utils.js.map +1 -0
  96. package/table/column-groups/use-column-groups.d.ts +7 -0
  97. package/table/column-groups/use-column-groups.d.ts.map +1 -0
  98. package/table/column-groups/use-column-groups.js +23 -0
  99. package/table/column-groups/use-column-groups.js.map +1 -0
  100. package/table/column-groups/utils.d.ts +54 -0
  101. package/table/column-groups/utils.d.ts.map +1 -0
  102. package/table/column-groups/utils.js +204 -0
  103. package/table/column-groups/utils.js.map +1 -0
  104. package/table/header-cell/common-props.d.ts +23 -0
  105. package/table/header-cell/common-props.d.ts.map +1 -0
  106. package/table/header-cell/common-props.js +4 -0
  107. package/table/header-cell/common-props.js.map +1 -0
  108. package/table/header-cell/group-header-cell.d.ts +45 -0
  109. package/table/header-cell/group-header-cell.d.ts.map +1 -0
  110. package/table/header-cell/group-header-cell.js +44 -0
  111. package/table/header-cell/group-header-cell.js.map +1 -0
  112. package/table/header-cell/index.d.ts +12 -22
  113. package/table/header-cell/index.d.ts.map +1 -1
  114. package/table/header-cell/index.js +3 -3
  115. package/table/header-cell/index.js.map +1 -1
  116. package/table/header-cell/styles.css.js +33 -30
  117. package/table/header-cell/styles.scoped.css +92 -68
  118. package/table/header-cell/styles.selectors.js +33 -30
  119. package/table/header-cell/th-element.d.ts +16 -0
  120. package/table/header-cell/th-element.d.ts.map +1 -1
  121. package/table/header-cell/th-element.js +6 -4
  122. package/table/header-cell/th-element.js.map +1 -1
  123. package/table/index.d.ts.map +1 -1
  124. package/table/index.js +5 -2
  125. package/table/index.js.map +1 -1
  126. package/table/interfaces.d.ts +37 -1
  127. package/table/interfaces.d.ts.map +1 -1
  128. package/table/interfaces.js.map +1 -1
  129. package/table/internal.d.ts.map +1 -1
  130. package/table/internal.js +17 -5
  131. package/table/internal.js.map +1 -1
  132. package/table/resizer/index.d.ts +9 -2
  133. package/table/resizer/index.d.ts.map +1 -1
  134. package/table/resizer/index.js +5 -5
  135. package/table/resizer/index.js.map +1 -1
  136. package/table/resizer/styles.css.js +16 -13
  137. package/table/resizer/styles.scoped.css +36 -26
  138. package/table/resizer/styles.selectors.js +16 -13
  139. package/table/sticky-header.d.ts +3 -0
  140. package/table/sticky-header.d.ts.map +1 -1
  141. package/table/sticky-header.js +7 -2
  142. package/table/sticky-header.js.map +1 -1
  143. package/table/sticky-scrolling.d.ts.map +1 -1
  144. package/table/sticky-scrolling.js +6 -1
  145. package/table/sticky-scrolling.js.map +1 -1
  146. package/table/styles.css.js +35 -34
  147. package/table/styles.scoped.css +47 -41
  148. package/table/styles.selectors.js +35 -34
  149. package/table/table-role/grid-navigation.d.ts.map +1 -1
  150. package/table/table-role/grid-navigation.js +5 -7
  151. package/table/table-role/grid-navigation.js.map +1 -1
  152. package/table/table-role/table-role-helper.d.ts +3 -0
  153. package/table/table-role/table-role-helper.d.ts.map +1 -1
  154. package/table/table-role/table-role-helper.js +9 -4
  155. package/table/table-role/table-role-helper.js.map +1 -1
  156. package/table/table-role/utils.d.ts +19 -0
  157. package/table/table-role/utils.d.ts.map +1 -1
  158. package/table/table-role/utils.js +86 -7
  159. package/table/table-role/utils.js.map +1 -1
  160. package/table/thead.d.ts +5 -0
  161. package/table/thead.d.ts.map +1 -1
  162. package/table/thead.js +145 -18
  163. package/table/thead.js.map +1 -1
  164. package/table/use-column-widths.d.ts +4 -0
  165. package/table/use-column-widths.d.ts.map +1 -1
  166. package/table/use-column-widths.js +68 -18
  167. package/table/use-column-widths.js.map +1 -1
  168. package/table/use-sticky-header.d.ts.map +1 -1
  169. package/table/use-sticky-header.js +4 -1
  170. package/table/use-sticky-header.js.map +1 -1
  171. package/table/utils.d.ts.map +1 -1
  172. package/table/utils.js +14 -4
  173. package/table/utils.js.map +1 -1
  174. package/test-utils/dom/collection-preferences/content-display-preference.d.ts +28 -2
  175. package/test-utils/dom/collection-preferences/content-display-preference.js +60 -2
  176. package/test-utils/dom/collection-preferences/content-display-preference.js.map +1 -1
  177. package/test-utils/dom/table/index.d.ts +18 -1
  178. package/test-utils/dom/table/index.js +22 -3
  179. package/test-utils/dom/table/index.js.map +1 -1
  180. package/test-utils/selectors/collection-preferences/content-display-preference.d.ts +28 -2
  181. package/test-utils/selectors/collection-preferences/content-display-preference.js +52 -2
  182. package/test-utils/selectors/collection-preferences/content-display-preference.js.map +1 -1
  183. package/test-utils/selectors/table/index.d.ts +18 -1
  184. package/test-utils/selectors/table/index.js +22 -3
  185. package/test-utils/selectors/table/index.js.map +1 -1
  186. package/wizard/wizard-step-list.js +4 -4
  187. package/wizard/wizard-step-list.js.map +1 -1
@@ -42,14 +42,18 @@ const WidthsContext = createContext({
42
42
  getColumnStyles: () => ({}),
43
43
  columnWidths: new Map(),
44
44
  updateColumn: () => { },
45
+ updateGroup: () => { },
45
46
  setCell: () => { },
47
+ setCol: () => { },
46
48
  });
47
- export function ColumnWidthsProvider({ visibleColumns, resizableColumns, containerRef, children }) {
49
+ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, containerRef, groupColumnMap, children, }) {
48
50
  const visibleColumnsRef = useRef(null);
49
51
  const containerWidthRef = useRef(0);
50
52
  const [columnWidths, setColumnWidths] = useState(null);
51
53
  const cellsRef = useRef(new Map());
52
54
  const stickyCellsRef = useRef(new Map());
55
+ const colsRef = useRef(new Map());
56
+ const hasColElements = useRef(false);
53
57
  const getCell = (columnId) => { var _a; return (_a = cellsRef.current.get(columnId)) !== null && _a !== void 0 ? _a : null; };
54
58
  const setCell = (sticky, columnId, node) => {
55
59
  const ref = sticky ? stickyCellsRef : cellsRef;
@@ -60,27 +64,39 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
60
64
  ref.current.delete(columnId);
61
65
  }
62
66
  };
67
+ const setCol = (columnId, node) => {
68
+ if (node) {
69
+ colsRef.current.set(columnId, node);
70
+ hasColElements.current = true;
71
+ }
72
+ else {
73
+ colsRef.current.delete(columnId);
74
+ hasColElements.current = colsRef.current.size > 0;
75
+ }
76
+ };
63
77
  const getColumnStyles = (sticky, columnId) => {
64
78
  var _a, _b, _c;
65
- const column = visibleColumns.find(column => column.id === columnId);
79
+ const column = visibleColumns.find(col => col.id === columnId);
80
+ if (sticky) {
81
+ // For sticky headers, mirror the primary cell's width.
82
+ // Try DOM measurement first (handles columns not in visibleColumns like selection).
83
+ const measured = (_a = cellsRef.current.get(columnId)) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
84
+ /* istanbul ignore next: getBoundingClientRect returns 0 in JSDOM */
85
+ if (measured) {
86
+ return { width: measured };
87
+ }
88
+ return { width: (_b = columnWidths === null || columnWidths === void 0 ? void 0 : columnWidths.get(columnId)) !== null && _b !== void 0 ? _b : column === null || column === void 0 ? void 0 : column.width };
89
+ }
66
90
  if (!column) {
67
91
  return {};
68
92
  }
69
- if (sticky) {
70
- return {
71
- width: ((_a = cellsRef.current.get(column.id)) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width) ||
72
- ((_b = columnWidths === null || columnWidths === void 0 ? void 0 : columnWidths.get(column.id)) !== null && _b !== void 0 ? _b : column.width),
73
- };
74
- }
75
93
  if (resizableColumns && columnWidths) {
76
94
  const isLastColumn = column.id === ((_c = visibleColumns[visibleColumns.length - 1]) === null || _c === void 0 ? void 0 : _c.id);
77
95
  const totalWidth = visibleColumns.reduce((sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH), 0);
78
96
  if (isLastColumn && containerWidthRef.current > totalWidth) {
79
- return { width: 'auto', minWidth: column === null || column === void 0 ? void 0 : column.minWidth };
80
- }
81
- else {
82
- return { width: columnWidths.get(column.id), minWidth: column === null || column === void 0 ? void 0 : column.minWidth };
97
+ return { width: 'auto', minWidth: column.minWidth };
83
98
  }
99
+ return { width: columnWidths.get(column.id), minWidth: column.minWidth };
84
100
  }
85
101
  return {
86
102
  width: column.width,
@@ -91,13 +107,29 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
91
107
  // Imperatively sets width style for a cell avoiding React state.
92
108
  // This allows setting the style as soon container's size change is observed.
93
109
  const updateColumnWidths = useStableCallback(() => {
94
- for (const { id } of visibleColumns) {
95
- const element = cellsRef.current.get(id);
96
- if (element) {
97
- setElementWidths(element, getColumnStyles(false, id));
110
+ // When col elements exist (grouped columns), apply widths to <col> elements.
111
+ // With table-layout:fixed, <col> widths control the actual column widths.
112
+ if (hasColElements.current) {
113
+ for (const { id } of visibleColumns) {
114
+ const colElement = colsRef.current.get(id);
115
+ if (colElement) {
116
+ setElementWidths(colElement, getColumnStyles(false, id));
117
+ }
118
+ const element = cellsRef.current.get(id);
119
+ if (element) {
120
+ setElementWidths(element, getColumnStyles(false, id));
121
+ }
122
+ }
123
+ }
124
+ else {
125
+ for (const { id } of visibleColumns) {
126
+ const element = cellsRef.current.get(id);
127
+ if (element) {
128
+ setElementWidths(element, getColumnStyles(false, id));
129
+ }
98
130
  }
99
131
  }
100
- // Sticky column widths must be synchronized once all real column widths are assigned.
132
+ // Sticky column widths must always be synchronized regardless of columnWidths state.
101
133
  for (const { id } of visibleColumns) {
102
134
  const element = stickyCellsRef.current.get(id);
103
135
  if (element) {
@@ -149,7 +181,25 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
149
181
  function updateColumn(columnId, newWidth) {
150
182
  setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths !== null && columnWidths !== void 0 ? columnWidths : new Map(), newWidth, columnId));
151
183
  }
152
- return (React.createElement(WidthsContext.Provider, { value: { getColumnStyles, columnWidths: columnWidths !== null && columnWidths !== void 0 ? columnWidths : new Map(), updateColumn, setCell } }, children));
184
+ function updateGroup(groupId, newGroupWidth) {
185
+ var _a;
186
+ if (!columnWidths || !groupColumnMap) {
187
+ return;
188
+ }
189
+ const columnIds = (_a = groupColumnMap.get(String(groupId))) !== null && _a !== void 0 ? _a : [];
190
+ const rightmostColumn = columnIds[columnIds.length - 1];
191
+ if (!rightmostColumn) {
192
+ return;
193
+ }
194
+ let currentGroupWidth = 0;
195
+ for (const id of columnIds) {
196
+ currentGroupWidth += columnWidths.get(id) || DEFAULT_COLUMN_WIDTH;
197
+ }
198
+ const delta = newGroupWidth - currentGroupWidth;
199
+ const currentColumnWidth = columnWidths.get(rightmostColumn) || DEFAULT_COLUMN_WIDTH;
200
+ updateColumn(rightmostColumn, currentColumnWidth + delta);
201
+ }
202
+ return (React.createElement(WidthsContext.Provider, { value: { getColumnStyles, columnWidths: columnWidths !== null && columnWidths !== void 0 ? columnWidths : new Map(), updateColumn, updateGroup, setCell, setCol } }, children));
153
203
  }
154
204
  export function useColumnWidths() {
155
205
  return useContext(WidthsContext);
@@ -1 +1 @@
1
- {"version":3,"file":"use-column-widths.js","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,OAAO,EAAoB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAMxC,SAAS,UAAU,CACjB,OAAsD,EACtD,cAAgD;IAEhD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,GAAI,MAAM,CAAC,KAAgB,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAI,MAAM,CAAC,QAAmB,IAAI,KAAK,IAAI,oBAAoB,CAAC;QAC9E,IACE,CAAC,KAAK,IAAI,yDAAyD;YACnE,KAAK,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,kFAAkF;UACtH,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,cAAgD,EAChD,SAAmC,EACnC,QAAgB,EAChB,QAAqB;IAErB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACrE,IAAI,QAAQ,GAAG,oBAAoB,CAAC;IACpC,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,oBAAoB,EAAE,CAAC;QAC7E,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,KAAK,QAAQ,EAAE,CAAC;QACzC,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC;IAC9B,CAAC;IACD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AASD,MAAM,aAAa,GAAG,aAAa,CAAgB;IACjD,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,EAAE,IAAI,GAAG,EAAE;IACvB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;CAClB,CAAC,CAAC;AASH,MAAM,UAAU,oBAAoB,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAsB;IACnH,MAAM,iBAAiB,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAkC,IAAI,CAAC,CAAC;IAExF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,EAA4B,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,EAA4B,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,CAAC,QAAqB,EAAsB,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,mCAAI,IAAI,CAAA,EAAA,CAAC;IACtG,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,QAAqB,EAAE,IAAwB,EAAE,EAAE;QACnF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAe,EAAE,QAAqB,EAAoB,EAAE;;QACnF,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EACH,CAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,0CAAE,qBAAqB,GAAG,KAAK;oBAC9D,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,mCAAI,MAAM,CAAC,KAAK,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,MAAK,MAAA,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,EAAE,CAAA,CAAC;YACjF,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,EACrE,CAAC,CACF,CAAC;YACF,IAAI,YAAY,IAAI,iBAAiB,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,CAAC;YAC5E,CAAC;QACH,CAAC;QACD,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1D,CAAC;IACJ,CAAC,CAAC;IAEF,iEAAiE;IACjE,6EAA6E;IAC7E,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,EAAE;QAChD,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,sFAAsF;QACtF,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gHAAgH;IAChH,iBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE;QACtE,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC;QAC3C,qBAAqB,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,6FAA6F;IAC7F,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,kBAAkB,EAAE,CAAC;QAErB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC;QAC9C,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC3E,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,KAAK,GAAI,MAAM,CAAC,KAAgB,IAAI,oBAAoB,CAAC;oBAC/D,MAAM,QAAQ,GAAI,MAAM,CAAC,QAAmB,IAAI,KAAK,CAAC;oBACtD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,eAAe,CAAC,eAAe,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzE,0FAA0F;IAC1F,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,eAAe,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3D,sGAAsG;QACtG,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,YAAY,CAAC,QAAqB,EAAE,QAAgB;QAC3D,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,OAAO,CACL,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,GAAG,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,IAC/G,QAAQ,CACc,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ColumnWidthStyle, setElementWidths } from './column-widths-utils';\n\nexport const DEFAULT_COLUMN_WIDTH = 120;\n\nexport interface ColumnWidthDefinition extends ColumnWidthStyle {\n id: PropertyKey;\n}\n\nfunction readWidths(\n getCell: (columnId: PropertyKey) => null | HTMLElement,\n visibleColumns: readonly ColumnWidthDefinition[]\n) {\n const result = new Map<PropertyKey, number>();\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n let width = (column.width as number) || 0;\n const minWidth = (column.minWidth as number) || width || DEFAULT_COLUMN_WIDTH;\n if (\n !width && // read width from the DOM if it is missing in the config\n index !== visibleColumns.length - 1 // skip reading for the last column, because it expands to fully fit the container\n ) {\n const colEl = getCell(column.id);\n width = colEl ? getLogicalBoundingClientRect(colEl).inlineSize : DEFAULT_COLUMN_WIDTH;\n }\n result.set(column.id, Math.max(width, minWidth));\n }\n return result;\n}\n\nfunction updateWidths(\n visibleColumns: readonly ColumnWidthDefinition[],\n oldWidths: Map<PropertyKey, number>,\n newWidth: number,\n columnId: PropertyKey\n) {\n const column = visibleColumns.find(column => column.id === columnId);\n let minWidth = DEFAULT_COLUMN_WIDTH;\n if (typeof column?.width === 'number' && column.width < DEFAULT_COLUMN_WIDTH) {\n minWidth = column?.width;\n }\n if (typeof column?.minWidth === 'number') {\n minWidth = column?.minWidth;\n }\n newWidth = Math.max(newWidth, minWidth);\n if (oldWidths.get(columnId) === newWidth) {\n return oldWidths;\n }\n const newWidths = new Map(oldWidths);\n newWidths.set(columnId, newWidth);\n return newWidths;\n}\n\ninterface WidthsContext {\n getColumnStyles(sticky: boolean, columnId: PropertyKey): ColumnWidthStyle;\n columnWidths: Map<PropertyKey, number>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n setCell: (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n getColumnStyles: () => ({}),\n columnWidths: new Map(),\n updateColumn: () => {},\n setCell: () => {},\n});\n\ninterface WidthProviderProps {\n visibleColumns: readonly ColumnWidthDefinition[];\n resizableColumns: boolean | undefined;\n containerRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n}\n\nexport function ColumnWidthsProvider({ visibleColumns, resizableColumns, containerRef, children }: WidthProviderProps) {\n const visibleColumnsRef = useRef<PropertyKey[] | null>(null);\n const containerWidthRef = useRef(0);\n const [columnWidths, setColumnWidths] = useState<null | Map<PropertyKey, number>>(null);\n\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const stickyCellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const getCell = (columnId: PropertyKey): null | HTMLElement => cellsRef.current.get(columnId) ?? null;\n const setCell = (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => {\n const ref = sticky ? stickyCellsRef : cellsRef;\n if (node) {\n ref.current.set(columnId, node);\n } else {\n ref.current.delete(columnId);\n }\n };\n\n const getColumnStyles = (sticky: boolean, columnId: PropertyKey): ColumnWidthStyle => {\n const column = visibleColumns.find(column => column.id === columnId);\n if (!column) {\n return {};\n }\n\n if (sticky) {\n return {\n width:\n cellsRef.current.get(column.id)?.getBoundingClientRect().width ||\n (columnWidths?.get(column.id) ?? column.width),\n };\n }\n\n if (resizableColumns && columnWidths) {\n const isLastColumn = column.id === visibleColumns[visibleColumns.length - 1]?.id;\n const totalWidth = visibleColumns.reduce(\n (sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n if (isLastColumn && containerWidthRef.current > totalWidth) {\n return { width: 'auto', minWidth: column?.minWidth };\n } else {\n return { width: columnWidths.get(column.id), minWidth: column?.minWidth };\n }\n }\n return {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: !resizableColumns ? column.maxWidth : undefined,\n };\n };\n\n // Imperatively sets width style for a cell avoiding React state.\n // This allows setting the style as soon container's size change is observed.\n const updateColumnWidths = useStableCallback(() => {\n for (const { id } of visibleColumns) {\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n // Sticky column widths must be synchronized once all real column widths are assigned.\n for (const { id } of visibleColumns) {\n const element = stickyCellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(true, id));\n }\n }\n });\n\n // Observes container size and requests an update to the last cell width as it depends on the container's width.\n useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {\n containerWidthRef.current = containerWidth;\n requestAnimationFrame(() => updateColumnWidths());\n });\n\n // The widths of the dynamically added columns (after the first render) if not set explicitly\n // will default to the DEFAULT_COLUMN_WIDTH.\n useEffect(() => {\n updateColumnWidths();\n\n if (!resizableColumns) {\n return;\n }\n let updated = false;\n const newColumnWidths = new Map(columnWidths);\n const lastVisible = visibleColumnsRef.current;\n if (lastVisible) {\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n if (!columnWidths?.get(column.id) && lastVisible.indexOf(column.id) === -1) {\n updated = true;\n const width = (column.width as number) || DEFAULT_COLUMN_WIDTH;\n const minWidth = (column.minWidth as number) || width;\n newColumnWidths.set(column.id, Math.max(width, minWidth));\n }\n }\n if (updated) {\n setColumnWidths(newColumnWidths);\n }\n }\n visibleColumnsRef.current = visibleColumns.map(column => column.id);\n }, [columnWidths, resizableColumns, visibleColumns, updateColumnWidths]);\n\n // Read the actual column widths after the first render to employ the browser defaults for\n // those columns without explicit width.\n useEffect(() => {\n if (!resizableColumns) {\n return;\n }\n setColumnWidths(() => readWidths(getCell, visibleColumns));\n // This code is intended to run only at the first render and should not re-run when table props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function updateColumn(columnId: PropertyKey, newWidth: number) {\n setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths ?? new Map(), newWidth, columnId));\n }\n\n return (\n <WidthsContext.Provider value={{ getColumnStyles, columnWidths: columnWidths ?? new Map(), updateColumn, setCell }}>\n {children}\n </WidthsContext.Provider>\n );\n}\n\nexport function useColumnWidths() {\n return useContext(WidthsContext);\n}\n"]}
1
+ {"version":3,"file":"use-column-widths.js","sourceRoot":"","sources":["../../../src/table/use-column-widths.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, { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ColumnWidthStyle, setElementWidths } from './column-widths-utils';\n\nexport const DEFAULT_COLUMN_WIDTH = 120;\n\nexport interface ColumnWidthDefinition extends ColumnWidthStyle {\n id: PropertyKey;\n}\n\nfunction readWidths(\n getCell: (columnId: PropertyKey) => null | HTMLElement,\n visibleColumns: readonly ColumnWidthDefinition[]\n) {\n const result = new Map<PropertyKey, number>();\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n let width = (column.width as number) || 0;\n const minWidth = (column.minWidth as number) || width || DEFAULT_COLUMN_WIDTH;\n if (\n !width && // read width from the DOM if it is missing in the config\n index !== visibleColumns.length - 1 // skip reading for the last column, because it expands to fully fit the container\n ) {\n const colEl = getCell(column.id);\n width = colEl ? getLogicalBoundingClientRect(colEl).inlineSize : DEFAULT_COLUMN_WIDTH;\n }\n result.set(column.id, Math.max(width, minWidth));\n }\n return result;\n}\n\nfunction updateWidths(\n visibleColumns: readonly ColumnWidthDefinition[],\n oldWidths: Map<PropertyKey, number>,\n newWidth: number,\n columnId: PropertyKey\n): Map<PropertyKey, number> {\n const column = visibleColumns.find(column => column.id === columnId);\n let minWidth = DEFAULT_COLUMN_WIDTH;\n if (typeof column?.width === 'number' && column.width < DEFAULT_COLUMN_WIDTH) {\n minWidth = column?.width;\n }\n if (typeof column?.minWidth === 'number') {\n minWidth = column?.minWidth;\n }\n newWidth = Math.max(newWidth, minWidth);\n if (oldWidths.get(columnId) === newWidth) {\n return oldWidths;\n }\n const newWidths = new Map(oldWidths);\n newWidths.set(columnId, newWidth);\n return newWidths;\n}\n\ninterface WidthsContext {\n getColumnStyles(sticky: boolean, columnId: PropertyKey): ColumnWidthStyle;\n columnWidths: Map<PropertyKey, number>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n updateGroup: (groupId: PropertyKey, newWidth: number) => void;\n setCell: (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => void;\n setCol: (columnId: PropertyKey, node: null | HTMLElement) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n getColumnStyles: () => ({}),\n columnWidths: new Map(),\n updateColumn: () => {},\n updateGroup: () => {},\n setCell: () => {},\n setCol: () => {},\n});\n\ninterface WidthProviderProps {\n visibleColumns: readonly ColumnWidthDefinition[];\n resizableColumns: boolean | undefined;\n containerRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n groupColumnMap?: Map<string, string[]>;\n}\n\nexport function ColumnWidthsProvider({\n visibleColumns,\n resizableColumns,\n containerRef,\n groupColumnMap,\n children,\n}: WidthProviderProps) {\n const visibleColumnsRef = useRef<PropertyKey[] | null>(null);\n const containerWidthRef = useRef(0);\n const [columnWidths, setColumnWidths] = useState<null | Map<PropertyKey, number>>(null);\n\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const stickyCellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const colsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const hasColElements = useRef(false);\n const getCell = (columnId: PropertyKey): null | HTMLElement => cellsRef.current.get(columnId) ?? null;\n const setCell = (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => {\n const ref = sticky ? stickyCellsRef : cellsRef;\n if (node) {\n ref.current.set(columnId, node);\n } else {\n ref.current.delete(columnId);\n }\n };\n const setCol = (columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n colsRef.current.set(columnId, node);\n hasColElements.current = true;\n } else {\n colsRef.current.delete(columnId);\n hasColElements.current = colsRef.current.size > 0;\n }\n };\n\n const getColumnStyles = (sticky: boolean, columnId: PropertyKey): ColumnWidthStyle => {\n const column = visibleColumns.find(col => col.id === columnId);\n\n if (sticky) {\n // For sticky headers, mirror the primary cell's width.\n // Try DOM measurement first (handles columns not in visibleColumns like selection).\n const measured = cellsRef.current.get(columnId)?.getBoundingClientRect().width;\n /* istanbul ignore next: getBoundingClientRect returns 0 in JSDOM */\n if (measured) {\n return { width: measured };\n }\n return { width: columnWidths?.get(columnId) ?? column?.width };\n }\n\n if (!column) {\n return {};\n }\n\n if (resizableColumns && columnWidths) {\n const isLastColumn = column.id === visibleColumns[visibleColumns.length - 1]?.id;\n const totalWidth = visibleColumns.reduce(\n (sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n if (isLastColumn && containerWidthRef.current > totalWidth) {\n return { width: 'auto', minWidth: column.minWidth };\n }\n return { width: columnWidths.get(column.id), minWidth: column.minWidth };\n }\n\n return {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: !resizableColumns ? column.maxWidth : undefined,\n };\n };\n\n // Imperatively sets width style for a cell avoiding React state.\n // This allows setting the style as soon container's size change is observed.\n const updateColumnWidths = useStableCallback(() => {\n // When col elements exist (grouped columns), apply widths to <col> elements.\n // With table-layout:fixed, <col> widths control the actual column widths.\n if (hasColElements.current) {\n for (const { id } of visibleColumns) {\n const colElement = colsRef.current.get(id);\n if (colElement) {\n setElementWidths(colElement, getColumnStyles(false, id));\n }\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n } else {\n for (const { id } of visibleColumns) {\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n }\n\n // Sticky column widths must always be synchronized regardless of columnWidths state.\n for (const { id } of visibleColumns) {\n const element = stickyCellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(true, id));\n }\n }\n });\n\n // Observes container size and requests an update to the last cell width as it depends on the container's width.\n useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {\n containerWidthRef.current = containerWidth;\n requestAnimationFrame(() => updateColumnWidths());\n });\n\n // The widths of the dynamically added columns (after the first render) if not set explicitly\n // will default to the DEFAULT_COLUMN_WIDTH.\n useEffect(() => {\n updateColumnWidths();\n\n if (!resizableColumns) {\n return;\n }\n let updated = false;\n const newColumnWidths = new Map(columnWidths);\n const lastVisible = visibleColumnsRef.current;\n if (lastVisible) {\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n if (!columnWidths?.get(column.id) && lastVisible.indexOf(column.id) === -1) {\n updated = true;\n const width = (column.width as number) || DEFAULT_COLUMN_WIDTH;\n const minWidth = (column.minWidth as number) || width;\n newColumnWidths.set(column.id, Math.max(width, minWidth));\n }\n }\n if (updated) {\n setColumnWidths(newColumnWidths);\n }\n }\n visibleColumnsRef.current = visibleColumns.map(column => column.id);\n }, [columnWidths, resizableColumns, visibleColumns, updateColumnWidths]);\n\n // Read the actual column widths after the first render to employ the browser defaults for\n // those columns without explicit width.\n useEffect(() => {\n if (!resizableColumns) {\n return;\n }\n setColumnWidths(() => readWidths(getCell, visibleColumns));\n // This code is intended to run only at the first render and should not re-run when table props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function updateColumn(columnId: PropertyKey, newWidth: number) {\n setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths ?? new Map(), newWidth, columnId));\n }\n\n function updateGroup(groupId: PropertyKey, newGroupWidth: number) {\n if (!columnWidths || !groupColumnMap) {\n return;\n }\n\n const columnIds = groupColumnMap.get(String(groupId)) ?? [];\n const rightmostColumn = columnIds[columnIds.length - 1];\n if (!rightmostColumn) {\n return;\n }\n\n let currentGroupWidth = 0;\n for (const id of columnIds) {\n currentGroupWidth += columnWidths.get(id) || DEFAULT_COLUMN_WIDTH;\n }\n\n const delta = newGroupWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(rightmostColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(rightmostColumn, currentColumnWidth + delta);\n }\n\n return (\n <WidthsContext.Provider\n value={{ getColumnStyles, columnWidths: columnWidths ?? new Map(), updateColumn, updateGroup, setCell, setCol }}\n >\n {children}\n </WidthsContext.Provider>\n );\n}\n\nexport function useColumnWidths() {\n return useContext(WidthsContext);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sticky-header.d.ts","sourceRoot":"","sources":["../../../src/table/use-sticky-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAgC,MAAM,OAAO,CAAC;AAOhE,eAAO,MAAM,eAAe,GAC1B,UAAU,SAAS,CAAC,WAAW,CAAC,EAChC,UAAU,SAAS,CAAC,WAAW,CAAC,EAChC,mBAAmB,SAAS,CAAC,WAAW,CAAC,EACzC,mBAAmB,SAAS,CAAC,WAAW,CAAC,EACzC,iBAAiB,SAAS,CAAC,WAAW,CAAC;4BA4BR,WAAW,GAAG,IAAI;;CAMlD,CAAC"}
1
+ {"version":3,"file":"use-sticky-header.d.ts","sourceRoot":"","sources":["../../../src/table/use-sticky-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAgC,MAAM,OAAO,CAAC;AAOhE,eAAO,MAAM,eAAe,GAC1B,UAAU,SAAS,CAAC,WAAW,CAAC,EAChC,UAAU,SAAS,CAAC,WAAW,CAAC,EAChC,mBAAmB,SAAS,CAAC,WAAW,CAAC,EACzC,mBAAmB,SAAS,CAAC,WAAW,CAAC,EACzC,iBAAiB,SAAS,CAAC,WAAW,CAAC;4BA8BR,WAAW,GAAG,IAAI;;CAMlD,CAAC"}
@@ -8,12 +8,15 @@ export const useStickyHeader = (tableRef, theadRef, secondaryTheadRef, secondary
8
8
  const isMobile = useMobile();
9
9
  // Sync the sizes of the column header copies in the sticky header with the originals
10
10
  const syncColumnHeaderWidths = useCallback(() => {
11
+ var _a;
11
12
  if (tableRef.current &&
12
13
  theadRef.current &&
13
14
  secondaryTheadRef.current &&
14
15
  secondaryTableRef.current &&
15
16
  tableWrapperRef.current) {
16
- tableWrapperRef.current.style.marginBlockStart = `-${theadRef.current.getBoundingClientRect().height}px`;
17
+ // Use the full thead height to account for multi-row headers (grouped columns).
18
+ const thead = (_a = theadRef.current.closest('thead')) !== null && _a !== void 0 ? _a : theadRef.current;
19
+ tableWrapperRef.current.style.marginBlockStart = `-${thead.getBoundingClientRect().height}px`;
17
20
  }
18
21
  }, [theadRef, secondaryTheadRef, secondaryTableRef, tableWrapperRef, tableRef]);
19
22
  useLayoutEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-sticky-header.js","sourceRoot":"","sources":["../../../src/table/use-sticky-header.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAa,WAAW,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,eAAe,EAAE,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3F,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAgC,EAChC,QAAgC,EAChC,iBAAyC,EACzC,iBAAyC,EACzC,eAAuC,EACvC,EAAE;IACF,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,qFAAqF;IACrF,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,IACE,QAAQ,CAAC,OAAO;YAChB,QAAQ,CAAC,OAAO;YAChB,iBAAiB,CAAC,OAAO;YACzB,iBAAiB,CAAC,OAAO;YACzB,eAAe,CAAC,OAAO,EACvB,CAAC;YACD,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC;QAC3G,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChF,eAAe,CAAC,GAAG,EAAE;QACnB,sBAAsB,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC1F,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,CAAC,QAA4B,EAAE,EAAE;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACtC,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RefObject, useCallback, useLayoutEffect } from 'react';\n\nimport { useResizeObserver } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport stickyScrolling, { calculateScrollingOffset, scrollUpBy } from './sticky-scrolling';\n\nexport const useStickyHeader = (\n tableRef: RefObject<HTMLElement>,\n theadRef: RefObject<HTMLElement>,\n secondaryTheadRef: RefObject<HTMLElement>,\n secondaryTableRef: RefObject<HTMLElement>,\n tableWrapperRef: RefObject<HTMLElement>\n) => {\n const isMobile = useMobile();\n // Sync the sizes of the column header copies in the sticky header with the originals\n const syncColumnHeaderWidths = useCallback(() => {\n if (\n tableRef.current &&\n theadRef.current &&\n secondaryTheadRef.current &&\n secondaryTableRef.current &&\n tableWrapperRef.current\n ) {\n tableWrapperRef.current.style.marginBlockStart = `-${theadRef.current.getBoundingClientRect().height}px`;\n }\n }, [theadRef, secondaryTheadRef, secondaryTableRef, tableWrapperRef, tableRef]);\n useLayoutEffect(() => {\n syncColumnHeaderWidths();\n });\n useResizeObserver(theadRef, syncColumnHeaderWidths);\n const scrollToTop = () => {\n if (!isMobile && theadRef.current && secondaryTheadRef.current && tableWrapperRef.current) {\n const scrollDist = calculateScrollingOffset(theadRef.current, secondaryTheadRef.current);\n if (scrollDist > 0) {\n scrollUpBy(scrollDist, tableWrapperRef.current);\n }\n }\n };\n const { scrollToItem } = stickyScrolling(tableWrapperRef, secondaryTheadRef);\n const scrollToRow = (itemNode: HTMLElement | null) => {\n if (!isMobile) {\n scrollToItem(itemNode);\n }\n };\n return { scrollToRow, scrollToTop };\n};\n"]}
1
+ {"version":3,"file":"use-sticky-header.js","sourceRoot":"","sources":["../../../src/table/use-sticky-header.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAa,WAAW,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,eAAe,EAAE,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3F,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAgC,EAChC,QAAgC,EAChC,iBAAyC,EACzC,iBAAyC,EACzC,eAAuC,EACvC,EAAE;IACF,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,qFAAqF;IACrF,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;;QAC9C,IACE,QAAQ,CAAC,OAAO;YAChB,QAAQ,CAAC,OAAO;YAChB,iBAAiB,CAAC,OAAO;YACzB,iBAAiB,CAAC,OAAO;YACzB,eAAe,CAAC,OAAO,EACvB,CAAC;YACD,gFAAgF;YAChF,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAI,QAAQ,CAAC,OAAO,CAAC;YACpE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC;QAChG,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChF,eAAe,CAAC,GAAG,EAAE;QACnB,sBAAsB,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC1F,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,CAAC,QAA4B,EAAE,EAAE;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACtC,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RefObject, useCallback, useLayoutEffect } from 'react';\n\nimport { useResizeObserver } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport stickyScrolling, { calculateScrollingOffset, scrollUpBy } from './sticky-scrolling';\n\nexport const useStickyHeader = (\n tableRef: RefObject<HTMLElement>,\n theadRef: RefObject<HTMLElement>,\n secondaryTheadRef: RefObject<HTMLElement>,\n secondaryTableRef: RefObject<HTMLElement>,\n tableWrapperRef: RefObject<HTMLElement>\n) => {\n const isMobile = useMobile();\n // Sync the sizes of the column header copies in the sticky header with the originals\n const syncColumnHeaderWidths = useCallback(() => {\n if (\n tableRef.current &&\n theadRef.current &&\n secondaryTheadRef.current &&\n secondaryTableRef.current &&\n tableWrapperRef.current\n ) {\n // Use the full thead height to account for multi-row headers (grouped columns).\n const thead = theadRef.current.closest('thead') ?? theadRef.current;\n tableWrapperRef.current.style.marginBlockStart = `-${thead.getBoundingClientRect().height}px`;\n }\n }, [theadRef, secondaryTheadRef, secondaryTableRef, tableWrapperRef, tableRef]);\n useLayoutEffect(() => {\n syncColumnHeaderWidths();\n });\n useResizeObserver(theadRef, syncColumnHeaderWidths);\n const scrollToTop = () => {\n if (!isMobile && theadRef.current && secondaryTheadRef.current && tableWrapperRef.current) {\n const scrollDist = calculateScrollingOffset(theadRef.current, secondaryTheadRef.current);\n if (scrollDist > 0) {\n scrollUpBy(scrollDist, tableWrapperRef.current);\n }\n }\n };\n const { scrollToItem } = stickyScrolling(tableWrapperRef, secondaryTheadRef);\n const scrollToRow = (itemNode: HTMLElement | null) => {\n if (!isMobile) {\n scrollToItem(itemNode);\n }\n };\n return { scrollToRow, scrollToTop };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAKtE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,QAK/F,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,QAKvF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,QAAQ,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,oBAEpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,UAAU,CAAC,OAAO,GAAG,SAAS,KAAG,sBAAsB,CAAC,SAAS,CAG5G,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAChE,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QASpE;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,EAC7C,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;CAClE,6CASA;AA8BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;;EAOvG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAKtE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,QAK/F,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,QAKvF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,QAAQ,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,oBAEpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,UAAU,CAAC,OAAO,GAAG,SAAS,KAAG,sBAAsB,CAAC,SAAS,CAG5G,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAChE,iBAAiB,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QASpE;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,EAC7C,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;CAClE,6CASA;AA4BD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;;EAOvG"}
package/table/utils.js CHANGED
@@ -46,10 +46,8 @@ export function getVisibleColumnDefinitions({ columnDisplay, visibleColumns, col
46
46
  }
47
47
  function getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions, }) {
48
48
  const columnDefinitionsById = columnDefinitions.reduce((accumulator, item) => (item.id === undefined ? accumulator : { ...accumulator, [item.id]: item }), {});
49
- return columnDisplay
50
- .filter(item => item.visible)
51
- .map(item => columnDefinitionsById[item.id])
52
- .filter(Boolean);
49
+ const visibleIds = flattenVisibleColumnIds(columnDisplay);
50
+ return visibleIds.map(id => columnDefinitionsById[id]).filter(Boolean);
53
51
  }
54
52
  function getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions, }) {
55
53
  const ids = new Set(visibleColumns);
@@ -63,4 +61,16 @@ export function getStickyClassNames(styles, props) {
63
61
  [styles['sticky-cell-last-inline-end']]: !!(props === null || props === void 0 ? void 0 : props.lastInsetInlineEnd),
64
62
  };
65
63
  }
64
+ function flattenVisibleColumnIds(items) {
65
+ const ids = [];
66
+ for (const item of items) {
67
+ if (item.type === 'group') {
68
+ ids.push(...flattenVisibleColumnIds(item.children));
69
+ }
70
+ else if (item.visible) {
71
+ ids.push(item.id);
72
+ }
73
+ }
74
+ return ids;
75
+ }
66
76
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/table/utils.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAMzE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,OAA8B,EAAE,IAAO,EAAE,EAAE;IACzE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,OAAQ,IAAY,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,OAA0C,EAAE,IAAO,EAAE,KAAa,EAAE,EAAE;IAClG,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,OAA0C,EAAE,IAAO,EAAE,EAAE;IAC1F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,MAAsC,EAAE,KAAa,EAAE,EAAE;IACvF,OAAO,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAuC,EAAqC,EAAE;IAC/G,MAAM,gBAAgB,GAAG,CAAC,OAAO,IAAI,OAAO,KAAK,WAAW,CAAC;IAC7D,OAAO,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,iBAAgE,EAChE,iBAAmE;IAEnE,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,QAAQ,CACN,OAAO,EACP,8IAA8I,CAC/I,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAI,EAC7C,aAAa,EACb,cAAc,EACd,iBAAiB,GAKlB;IACC,uDAAuD;IACvD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,4CAA4C,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,OAAO,6CAA6C,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,4CAA4C,CAAI,EACvD,aAAa,EACb,iBAAiB,GAIlB;IACC,MAAM,qBAAqB,GAAmD,iBAAiB,CAAC,MAAM,CACpG,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAClG,EAAE,CACH,CAAC;IACF,OAAO,aAAa;SACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;SAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3C,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,6CAA6C,CAAI,EACxD,cAAc,EACd,iBAAiB,GAIlB;IACC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA8B,EAAE,KAAoC;IACtG,OAAO;QACL,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;QAChC,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAA;QACjE,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,oBAAoB,CAAA;QACxE,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,CAAA;KACrE,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { InternalContainerProps } from '../container/internal';\nimport { TableProps } from './interfaces';\nimport { StickyColumnsCellState } from './sticky-columns';\n\nexport const applyTrackBy = <T>(trackBy: TableProps.TrackBy<T>, item: T) => {\n if (typeof trackBy === 'function') {\n return trackBy(item);\n }\n return (item as any)[trackBy];\n};\n\nexport const getItemKey = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T, index: number) => {\n if (!trackBy) {\n return index;\n }\n return applyTrackBy(trackBy, item);\n};\n\nexport const getTrackableValue = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T) => {\n if (!trackBy) {\n return item;\n }\n return applyTrackBy(trackBy, item);\n};\n\nexport const getColumnKey = <T>(column: TableProps.ColumnDefinition<T>, index: number) => {\n return column.id || index;\n};\n\nexport const toContainerVariant = (variant: TableProps.Variant | undefined): InternalContainerProps['variant'] => {\n const isDefaultVariant = !variant || variant === 'container';\n return isDefaultVariant ? 'default' : variant === 'borderless' ? 'embedded' : variant;\n};\n\nexport function checkSortingState<T>(\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>,\n sortingComparator: TableProps.SortingColumn<T>['sortingComparator']\n) {\n const matchedColumn = columnDefinitions.filter(column => column.sortingComparator === sortingComparator)[0];\n if (!matchedColumn) {\n warnOnce(\n 'Table',\n 'Currently active sorting comparator was not found in any columns. Make sure to provide the same comparator function instance on each render.'\n );\n }\n}\n\nexport function getVisibleColumnDefinitions<T>({\n columnDisplay,\n visibleColumns,\n columnDefinitions,\n}: {\n columnDisplay?: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n visibleColumns?: ReadonlyArray<string>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n // columnsDisplay has a precedence over visibleColumns.\n if (columnDisplay) {\n return getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions });\n } else if (visibleColumns) {\n return getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions });\n } else {\n return columnDefinitions;\n }\n}\n\nfunction getVisibleColumnDefinitionsFromColumnDisplay<T>({\n columnDisplay,\n columnDefinitions,\n}: {\n columnDisplay: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n const columnDefinitionsById: Record<string, TableProps.ColumnDefinition<T>> = columnDefinitions.reduce(\n (accumulator, item) => (item.id === undefined ? accumulator : { ...accumulator, [item.id]: item }),\n {}\n );\n return columnDisplay\n .filter(item => item.visible)\n .map(item => columnDefinitionsById[item.id])\n .filter(Boolean);\n}\n\nfunction getVisibleColumnDefinitionsFromVisibleColumns<T>({\n visibleColumns,\n columnDefinitions,\n}: {\n visibleColumns: ReadonlyArray<string>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n const ids = new Set(visibleColumns);\n return columnDefinitions.filter(({ id }) => id !== undefined && ids.has(id));\n}\n\nexport function getStickyClassNames(styles: Record<string, string>, props: StickyColumnsCellState | null) {\n return {\n [styles['sticky-cell']]: !!props,\n [styles['sticky-cell-pad-inline-start']]: !!props?.padInlineStart,\n [styles['sticky-cell-last-inline-start']]: !!props?.lastInsetInlineStart,\n [styles['sticky-cell-last-inline-end']]: !!props?.lastInsetInlineEnd,\n };\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/table/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\nimport { warnOnce } from '@cloudscape-design/component-toolkit/internal';\n\nimport { InternalContainerProps } from '../container/internal';\nimport { TableProps } from './interfaces';\nimport { StickyColumnsCellState } from './sticky-columns';\n\nexport const applyTrackBy = <T>(trackBy: TableProps.TrackBy<T>, item: T) => {\n if (typeof trackBy === 'function') {\n return trackBy(item);\n }\n return (item as any)[trackBy];\n};\n\nexport const getItemKey = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T, index: number) => {\n if (!trackBy) {\n return index;\n }\n return applyTrackBy(trackBy, item);\n};\n\nexport const getTrackableValue = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T) => {\n if (!trackBy) {\n return item;\n }\n return applyTrackBy(trackBy, item);\n};\n\nexport const getColumnKey = <T>(column: TableProps.ColumnDefinition<T>, index: number) => {\n return column.id || index;\n};\n\nexport const toContainerVariant = (variant: TableProps.Variant | undefined): InternalContainerProps['variant'] => {\n const isDefaultVariant = !variant || variant === 'container';\n return isDefaultVariant ? 'default' : variant === 'borderless' ? 'embedded' : variant;\n};\n\nexport function checkSortingState<T>(\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>,\n sortingComparator: TableProps.SortingColumn<T>['sortingComparator']\n) {\n const matchedColumn = columnDefinitions.filter(column => column.sortingComparator === sortingComparator)[0];\n if (!matchedColumn) {\n warnOnce(\n 'Table',\n 'Currently active sorting comparator was not found in any columns. Make sure to provide the same comparator function instance on each render.'\n );\n }\n}\n\nexport function getVisibleColumnDefinitions<T>({\n columnDisplay,\n visibleColumns,\n columnDefinitions,\n}: {\n columnDisplay?: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n visibleColumns?: ReadonlyArray<string>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n // columnsDisplay has a precedence over visibleColumns.\n if (columnDisplay) {\n return getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions });\n } else if (visibleColumns) {\n return getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions });\n } else {\n return columnDefinitions;\n }\n}\n\nfunction getVisibleColumnDefinitionsFromColumnDisplay<T>({\n columnDisplay,\n columnDefinitions,\n}: {\n columnDisplay: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n const columnDefinitionsById: Record<string, TableProps.ColumnDefinition<T>> = columnDefinitions.reduce(\n (accumulator, item) => (item.id === undefined ? accumulator : { ...accumulator, [item.id]: item }),\n {}\n );\n const visibleIds = flattenVisibleColumnIds(columnDisplay);\n return visibleIds.map(id => columnDefinitionsById[id]).filter(Boolean);\n}\n\nfunction getVisibleColumnDefinitionsFromVisibleColumns<T>({\n visibleColumns,\n columnDefinitions,\n}: {\n visibleColumns: ReadonlyArray<string>;\n columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n const ids = new Set(visibleColumns);\n return columnDefinitions.filter(({ id }) => id !== undefined && ids.has(id));\n}\n\nexport function getStickyClassNames(styles: Record<string, string>, props: StickyColumnsCellState | null) {\n return {\n [styles['sticky-cell']]: !!props,\n [styles['sticky-cell-pad-inline-start']]: !!props?.padInlineStart,\n [styles['sticky-cell-last-inline-start']]: !!props?.lastInsetInlineStart,\n [styles['sticky-cell-last-inline-end']]: !!props?.lastInsetInlineEnd,\n };\n}\n\nfunction flattenVisibleColumnIds(items: ReadonlyArray<TableProps.ColumnDisplayProperties>): string[] {\n const ids: string[] = [];\n for (const item of items) {\n if (item.type === 'group') {\n ids.push(...flattenVisibleColumnIds(item.children));\n } else if (item.visible) {\n ids.push(item.id);\n }\n }\n return ids;\n}\n"]}
@@ -13,8 +13,22 @@ export declare class ContentDisplayOptionWrapper extends ComponentWrapper {
13
13
  findLabel(): ElementWrapper;
14
14
  /**
15
15
  * Returns the visibility toggle for the option item.
16
+ * Note that, despite its typings, this may return null for group items since groups do not have a visibility toggle.
16
17
  */
17
18
  findVisibilityToggle(): ToggleWrapper;
19
+ /**
20
+ * Returns all child option items nested under this item when it is a group.
21
+ * Returns `null` when this item is a leaf column (has no nested children).
22
+ *
23
+ * The children are the leaf-level `ContentDisplayOptionWrapper`s inside the group's
24
+ * nested `InternalList` — i.e. they already carry a drag handle and visibility toggle.
25
+ *
26
+ * @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
27
+ * When omitted, returns all child items regardless of type.
28
+ */
29
+ findChildrenOptions(option?: {
30
+ group?: boolean;
31
+ }): Array<ContentDisplayOptionWrapper> | null;
18
32
  }
19
33
  export default class ContentDisplayPreferenceWrapper extends ComponentWrapper {
20
34
  static rootSelector: string;
@@ -34,9 +48,21 @@ export default class ContentDisplayPreferenceWrapper extends ComponentWrapper {
34
48
  */
35
49
  findOptionByIndex(index: number): ContentDisplayOptionWrapper | null;
36
50
  /**
37
- * Returns options that the user can reorder.
51
+ * Returns the top-level items in the preference list.
52
+ *
53
+ * For tables **without** column grouping this returns all column options.
54
+ * For tables **with** column grouping this returns the top-level entries only
55
+ * (which are group items). Use `.findChildrenOptions()` on a group item to
56
+ * access the leaf columns nested within it.
57
+ *
58
+ * @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
59
+ * When omitted, returns all top-level items regardless of type.
60
+ * @param option.visible When `true`, returns only visible items. When `false`, returns only hidden items.
61
+ * Note that group items have no visibility toggle and are excluded when this filter is active.
38
62
  */
39
- findOptions(): Array<ContentDisplayOptionWrapper>;
63
+ findOptions(option?: {
64
+ group?: boolean;
65
+ }): Array<ContentDisplayOptionWrapper>;
40
66
  /**
41
67
  * Returns the text filter input.
42
68
  */
@@ -27,12 +27,46 @@ class ContentDisplayOptionWrapper extends dom_1.ComponentWrapper {
27
27
  }
28
28
  /**
29
29
  * Returns the visibility toggle for the option item.
30
+ * Note that, despite its typings, this may return null for group items since groups do not have a visibility toggle.
30
31
  */
31
32
  findVisibilityToggle() {
32
33
  return this.getListItem()
33
34
  .findContent()
34
35
  .findComponent(`.${styles_selectors_js_1.default['content-display-option-toggle']}`, toggle_1.default);
35
36
  }
37
+ /**
38
+ * Returns all child option items nested under this item when it is a group.
39
+ * Returns `null` when this item is a leaf column (has no nested children).
40
+ *
41
+ * The children are the leaf-level `ContentDisplayOptionWrapper`s inside the group's
42
+ * nested `InternalList` — i.e. they already carry a drag handle and visibility toggle.
43
+ *
44
+ * @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
45
+ * When omitted, returns all child items regardless of type.
46
+ */
47
+ /* istanbul ignore next: :has() selector not supported in JSDOM */
48
+ findChildrenOptions(option = {}) {
49
+ const groupWrapper = this.getListItem().findContent().find('[data-item-type="group"]');
50
+ if (!groupWrapper) {
51
+ return null;
52
+ }
53
+ const nestedList = groupWrapper.find(`.${list_1.default.rootSelector}`);
54
+ if (!nestedList) {
55
+ return null;
56
+ }
57
+ const list = new list_1.default(nestedList.getElement());
58
+ if (option.group === true) {
59
+ return list
60
+ .findAll(`li:has([data-item-type="group"])`)
61
+ .map(item => new ContentDisplayOptionWrapper(item.getElement()));
62
+ }
63
+ if (option.group === false) {
64
+ return list
65
+ .findAll(`li:has([data-item-type="column"])`)
66
+ .map(item => new ContentDisplayOptionWrapper(item.getElement()));
67
+ }
68
+ return list.findItems().map(item => new ContentDisplayOptionWrapper(item.getElement()));
69
+ }
36
70
  }
37
71
  exports.ContentDisplayOptionWrapper = ContentDisplayOptionWrapper;
38
72
  class ContentDisplayPreferenceWrapper extends dom_1.ComponentWrapper {
@@ -61,9 +95,33 @@ class ContentDisplayPreferenceWrapper extends dom_1.ComponentWrapper {
61
95
  return item && new ContentDisplayOptionWrapper(item.getElement());
62
96
  }
63
97
  /**
64
- * Returns options that the user can reorder.
98
+ * Returns the top-level items in the preference list.
99
+ *
100
+ * For tables **without** column grouping this returns all column options.
101
+ * For tables **with** column grouping this returns the top-level entries only
102
+ * (which are group items). Use `.findChildrenOptions()` on a group item to
103
+ * access the leaf columns nested within it.
104
+ *
105
+ * @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
106
+ * When omitted, returns all top-level items regardless of type.
107
+ * @param option.visible When `true`, returns only visible items. When `false`, returns only hidden items.
108
+ * Note that group items have no visibility toggle and are excluded when this filter is active.
65
109
  */
66
- findOptions() {
110
+ findOptions(option = {}) {
111
+ /* istanbul ignore next: :has() selector not supported in JSDOM */ if (option.group === true) {
112
+ // Only group items — identified by the data-item-type="group" wrapper inside the list item
113
+ return this.getList()
114
+ .findAll(`li:has([data-item-type="group"])`)
115
+ .map(wrapper => new ContentDisplayOptionWrapper(wrapper.getElement()));
116
+ }
117
+ /* istanbul ignore next: :has() selector not supported in JSDOM */
118
+ if (option.group === false) {
119
+ // Only leaf column items — identified by the data-item-type="column" wrapper
120
+ return this.getList()
121
+ .findAll(`li:has([data-item-type="column"])`)
122
+ .map(wrapper => new ContentDisplayOptionWrapper(wrapper.getElement()));
123
+ }
124
+ // No group filter — return all top-level items
67
125
  return this.getList()
68
126
  .findItems()
69
127
  .map(wrapper => new ContentDisplayOptionWrapper(wrapper.getElement()));
@@ -1 +1 @@
1
- {"version":3,"file":"content-display-preference.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/collection-preferences/content-display-preference.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAA0F;AAE1F,kCAAuD;AACvD,gDAA+C;AAC/C,sCAAsC;AAEtC,6FAAyE;AAEzE,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,6BAAM,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;AAErF,MAAa,2BAA4B,SAAQ,sBAAgB;IACvD,WAAW;QACjB,OAAO,IAAI,sBAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,EAAG,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,6BAAM,CAAC,8BAA8B,CAAC,CAAE,CAAC;IACnG,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,WAAW,EAAE;aACtB,WAAW,EAAE;aACb,aAAa,CAAC,IAAI,6BAAM,CAAC,+BAA+B,CAAC,EAAE,EAAE,gBAAa,CAAE,CAAC;IAClF,CAAC;CACF;AA1BD,kEA0BC;AAED,MAAqB,+BAAgC,SAAQ,sBAAgB;IAG3E;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAE,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,aAAa,CAAC,CAAE,CAAC;IAC5D,CAAC;IAEO,OAAO;QACb,OAAO,IAAI,cAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,KAAa;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,IAAI,IAAI,IAAI,2BAA2B,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,EAAE;aAClB,SAAS,EAAE;aACX,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,6BAA6B,CAAC,EAAE,EAAE,qBAAiB,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAClE,CAAC;;AAnDM,4CAAY,GAAG,6BAAM,CAAC,iBAAiB,CAAC,CAAC;kBAD7B,+BAA+B"}
1
+ {"version":3,"file":"content-display-preference.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/collection-preferences/content-display-preference.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,19 @@ export default class TableWrapper extends ComponentWrapper {
15
15
  */
16
16
  findHeaderRegion(): ElementWrapper | null;
17
17
  findFooterSlot(): ElementWrapper | null;
18
- findColumnHeaders(): Array<ElementWrapper>;
18
+ /**
19
+ * Returns column header cells from the table's header region.
20
+ *
21
+ * By default, returns all leaf-column headers (`scope="col"`).
22
+ * For tables without column grouping this is equivalent to the previous behavior.
23
+ * For tables with column grouping this excludes group header cells.
24
+ *
25
+ * @param option.groupId When provided, returns only leaf columns belonging to this group
26
+ * (matched via `data-column-group-id` attribute).
27
+ */
28
+ findColumnHeaders(option?: {
29
+ groupId?: string;
30
+ }): Array<ElementWrapper>;
19
31
  /**
20
32
  * Returns the element the user clicks when resizing a column.
21
33
  *
@@ -45,6 +57,11 @@ export default class TableWrapper extends ComponentWrapper {
45
57
  findEmptyRegion(): ElementWrapper | null;
46
58
  findEmptySlot(): ElementWrapper | null;
47
59
  findLoadingText(): ElementWrapper | null;
60
+ /**
61
+ * Returns the clickable sorting area of a column header.
62
+ *
63
+ * @param colIndex 1-based index of the column.
64
+ */
48
65
  findColumnSortingArea(colIndex: number): ElementWrapper | null;
49
66
  /**
50
67
  * Returns the column that is used for ascending sorting.
@@ -46,7 +46,21 @@ class TableWrapper extends dom_1.ComponentWrapper {
46
46
  findFooterSlot() {
47
47
  return this.containerWrapper.findFooter();
48
48
  }
49
- findColumnHeaders() {
49
+ /**
50
+ * Returns column header cells from the table's header region.
51
+ *
52
+ * By default, returns all leaf-column headers (`scope="col"`).
53
+ * For tables without column grouping this is equivalent to the previous behavior.
54
+ * For tables with column grouping this excludes group header cells.
55
+ *
56
+ * @param option.groupId When provided, returns only leaf columns belonging to this group
57
+ * (matched via `data-column-group-id` attribute).
58
+ */
59
+ findColumnHeaders(option = {}) {
60
+ const { groupId } = option;
61
+ if (groupId !== undefined) {
62
+ return this.findActiveTHead().findAll(`th[data-column-group-id="${groupId}"]`);
63
+ }
50
64
  return this.findActiveTHead().findAll('tr > *');
51
65
  }
52
66
  /**
@@ -55,7 +69,7 @@ class TableWrapper extends dom_1.ComponentWrapper {
55
69
  * @param columnIndex 1-based index of the column containing the resizer.
56
70
  */
57
71
  findColumnResizer(columnIndex) {
58
- return this.findActiveTHead().find(`th:nth-child(${columnIndex}) .${styles_selectors_js_5.default.resizer}`);
72
+ return this.findActiveTHead().find(`th[data-column-index="${columnIndex}"] .${styles_selectors_js_5.default.resizer}, tr:not([data-group-level]) > th:nth-child(${columnIndex}) .${styles_selectors_js_5.default.resizer}`);
59
73
  }
60
74
  /**
61
75
  * Returns a table cell based on given row and column indices.
@@ -95,8 +109,13 @@ class TableWrapper extends dom_1.ComponentWrapper {
95
109
  findLoadingText() {
96
110
  return this.findByClassName(styles_selectors_js_7.default.loading);
97
111
  }
112
+ /**
113
+ * Returns the clickable sorting area of a column header.
114
+ *
115
+ * @param colIndex 1-based index of the column.
116
+ */
98
117
  findColumnSortingArea(colIndex) {
99
- return this.findActiveTHead().find(`tr > *:nth-child(${colIndex}) [role=button]`);
118
+ return this.findActiveTHead().find(`th[data-column-index="${colIndex}"] [role=button], tr:not([data-group-level]) > *:nth-child(${colIndex}) [role=button]`);
100
119
  }
101
120
  /**
102
121
  * Returns the column that is used for ascending sorting.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/table/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,gEAAmG;AAEnG,sEAAqE;AACrE,4CAA4C;AAC5C,8CAA8C;AAC9C,wDAAuD;AACvD,gDAA+C;AAE/C,+GAAuG;AACvG,sFAA0E;AAC1E,wFAA8E;AAC9E,gGAA8F;AAC9F,oFAAuE;AACvE,sFAA2E;AAC3E,4EAAwD;AACxD,yFAA6E;AAE7E,MAAqB,YAAa,SAAQ,sBAAgB;IAA1D;;QAGU,qBAAgB,GAAG,IAAI,mBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IA2MrE,CAAC;IAzMS,eAAe;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,6BAAM,CAAC,OAAO,OAAO,6BAAM,CAAC,KAAK,EAAE,CAAE,CAAC;IAC7D,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,cAAc,CAAC,CAAE,CAAC;IACvD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,WAAmB;QACnC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,gBAAgB,WAAW,MAAM,6BAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,QAAgB,EAAE,WAAmB;QAChD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAChC,sBAAsB,QAAQ,MAAM,6BAAc,CAAC,WAAW,CAAC,cAAc,WAAW,GAAG,CAC5F,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,QAAgB,EAAE,WAAmB;;QACvD,OAAO,MAAA,MAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,0CAAE,IAAI,CAAC,IAAI,6BAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC,mCAAI,IAAI,CAAC;IAC3G,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,6BAAM,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC,6BAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,6BAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,qBAAqB,CAAC,QAAgB;QACpC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,oBAAoB,QAAQ,iBAAiB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,6BAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,6BAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,sBAAsB,QAAQ,MAAM,6BAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,6BAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAiB,CAAC,CAAC;IAChF,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,yBAAqB,CAAC,CAAC;IACpF,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,oBAAc,CAAC,CAAC;IAC7E,CAAC;IAED,yBAAyB;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,gCAA4B,CAAC,CAAC;IAC7F,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,6BAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,oBAAiB,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;;QACtD,OAAO,MAAA,MAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,0CAAE,eAAe,CAAC,6BAAc,CAAC,kBAAkB,CAAC,CAAC,mCAAI,IAAI,CAAC;IAC/G,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,6BAAc,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,wBAAwB;;QAC9B,OAAO,MAAA,MAAA,IAAI,CAAC,eAAe,EAAE,0CAAE,eAAe,CAAC,6BAAc,CAAC,2BAA2B,CAAC,CAAC,mCAAI,IAAI,CAAC;IACtG,CAAC;IAED,yBAAyB;;QACvB,OAAO,MAAA,MAAA,IAAI,CAAC,wBAAwB,EAAE,0CAAE,IAAI,CAAC,uBAAuB,CAAC,mCAAI,IAAI,CAAC;IAChF,CAAC;IAED,2BAA2B;;QACzB,OAAO,MAAA,MAAA,IAAI,CAAC,wBAAwB,EAAE,0CAAE,IAAI,CAAC,oBAAoB,CAAC,mCAAI,IAAI,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,QAAgB;QAC/B,uFAAuF;QACvF,MAAM,WAAW,GAAG,sBAAsB,QAAQ,wCAAwC,CAAC;QAC3F,MAAM,WAAW,GAAG,sBAAsB,QAAQ,MAAM,6BAAkB,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IAEH,YAAY,CAAC,QAAgB;;QAC3B,OAAO,CAAA,MAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,0CAAE,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,MAAK,MAAM,CAAC;IAChG,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,QAAQ,GAAG,IAAI,6BAAwB,CAAC,cAAc,CAAC,oBAAoB,CAAC;QAClF,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,uBAAuB,CAAC,MAAc;QACpC,MAAM,QAAQ,GAAG,IAAI,6BAAwB,CAAC,cAAc,CAAC,oBAAoB,MAAM,IAAI,CAAC;QAC5F,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;;AA5MM,yBAAY,GAAW,6BAAM,CAAC,IAAI,AAAtB,CAAuB;kBADvB,YAAY;AAuL/B;IADC,aAAO;gDAGP"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/dom/table/index.ts"],"names":[],"mappings":"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"}