@gooddata/sdk-ui-pivot 11.4.0 → 11.5.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/esm/next/PivotTableNext.d.ts.map +1 -1
  2. package/esm/next/PivotTableNext.js +10 -2
  3. package/esm/next/PivotTableNext.js.map +1 -1
  4. package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -1
  5. package/esm/next/components/Header/AttributeHeader.js +15 -3
  6. package/esm/next/components/Header/AttributeHeader.js.map +1 -1
  7. package/esm/next/components/Header/EmptyMeasureGroupHeader.d.ts +2 -1
  8. package/esm/next/components/Header/EmptyMeasureGroupHeader.d.ts.map +1 -1
  9. package/esm/next/components/Header/EmptyMeasureGroupHeader.js +6 -2
  10. package/esm/next/components/Header/EmptyMeasureGroupHeader.js.map +1 -1
  11. package/esm/next/components/Header/EmptyMeasureGroupValueHeader.d.ts +8 -0
  12. package/esm/next/components/Header/EmptyMeasureGroupValueHeader.d.ts.map +1 -0
  13. package/esm/next/components/Header/EmptyMeasureGroupValueHeader.js +34 -0
  14. package/esm/next/components/Header/EmptyMeasureGroupValueHeader.js.map +1 -0
  15. package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -1
  16. package/esm/next/components/Header/MeasureGroupHeader.js +21 -2
  17. package/esm/next/components/Header/MeasureGroupHeader.js.map +1 -1
  18. package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -1
  19. package/esm/next/components/Header/MeasureHeader.js +10 -1
  20. package/esm/next/components/Header/MeasureHeader.js.map +1 -1
  21. package/esm/next/components/Header/PivotGroupHeader.d.ts.map +1 -1
  22. package/esm/next/components/Header/PivotGroupHeader.js +8 -2
  23. package/esm/next/components/Header/PivotGroupHeader.js.map +1 -1
  24. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.d.ts +5 -1
  25. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.d.ts.map +1 -1
  26. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.js +11 -7
  27. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.js.map +1 -1
  28. package/esm/next/constants/agGridDefaultProps.d.ts.map +1 -1
  29. package/esm/next/constants/agGridDefaultProps.js +1 -0
  30. package/esm/next/constants/agGridDefaultProps.js.map +1 -1
  31. package/esm/next/features/data/dataViewToColDefs.d.ts.map +1 -1
  32. package/esm/next/features/data/dataViewToColDefs.js +17 -1
  33. package/esm/next/features/data/dataViewToColDefs.js.map +1 -1
  34. package/esm/next/features/pivoting/columnDefsToPivotGroups.d.ts.map +1 -1
  35. package/esm/next/features/pivoting/columnDefsToPivotGroups.js +2 -1
  36. package/esm/next/features/pivoting/columnDefsToPivotGroups.js.map +1 -1
  37. package/esm/next/features/resizing/createColumnWidthItemForColumnDefinition.d.ts.map +1 -1
  38. package/esm/next/features/resizing/createColumnWidthItemForColumnDefinition.js +2 -1
  39. package/esm/next/features/resizing/createColumnWidthItemForColumnDefinition.js.map +1 -1
  40. package/esm/next/features/textWrapping/allowCellWrappingByColumnDefinition.d.ts +29 -0
  41. package/esm/next/features/textWrapping/allowCellWrappingByColumnDefinition.d.ts.map +1 -0
  42. package/esm/next/features/textWrapping/allowCellWrappingByColumnDefinition.js +44 -0
  43. package/esm/next/features/textWrapping/allowCellWrappingByColumnDefinition.js.map +1 -0
  44. package/esm/next/features/textWrapping/applyTextWrappingToColDef.d.ts +9 -0
  45. package/esm/next/features/textWrapping/applyTextWrappingToColDef.d.ts.map +1 -1
  46. package/esm/next/features/textWrapping/applyTextWrappingToColDef.js +35 -9
  47. package/esm/next/features/textWrapping/applyTextWrappingToColDef.js.map +1 -1
  48. package/esm/next/features/textWrapping/applyTextWrappingToGroupDef.d.ts +14 -0
  49. package/esm/next/features/textWrapping/applyTextWrappingToGroupDef.d.ts.map +1 -0
  50. package/esm/next/features/textWrapping/applyTextWrappingToGroupDef.js +28 -0
  51. package/esm/next/features/textWrapping/applyTextWrappingToGroupDef.js.map +1 -0
  52. package/esm/next/features/textWrapping/createColumnTextWrappingItemForColumnDefinition.d.ts +28 -0
  53. package/esm/next/features/textWrapping/createColumnTextWrappingItemForColumnDefinition.d.ts.map +1 -0
  54. package/esm/next/features/textWrapping/createColumnTextWrappingItemForColumnDefinition.js +96 -0
  55. package/esm/next/features/textWrapping/createColumnTextWrappingItemForColumnDefinition.js.map +1 -0
  56. package/esm/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.d.ts +9 -0
  57. package/esm/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.d.ts.map +1 -0
  58. package/esm/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.js +14 -0
  59. package/esm/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.js.map +1 -0
  60. package/esm/next/features/textWrapping/getPivotGroupTextWrappingItemForColumnDefinition.d.ts +18 -0
  61. package/esm/next/features/textWrapping/getPivotGroupTextWrappingItemForColumnDefinition.d.ts.map +1 -0
  62. package/esm/next/features/textWrapping/getPivotGroupTextWrappingItemForColumnDefinition.js +99 -0
  63. package/esm/next/features/textWrapping/getPivotGroupTextWrappingItemForColumnDefinition.js.map +1 -0
  64. package/esm/next/features/textWrapping/isColumnTextWrappingItemMatch.d.ts +13 -0
  65. package/esm/next/features/textWrapping/isColumnTextWrappingItemMatch.d.ts.map +1 -0
  66. package/esm/next/features/textWrapping/isColumnTextWrappingItemMatch.js +18 -0
  67. package/esm/next/features/textWrapping/isColumnTextWrappingItemMatch.js.map +1 -0
  68. package/esm/next/features/transposition/measureGroupValueColDef.js +1 -1
  69. package/esm/next/features/transposition/measureGroupValueColDef.js.map +1 -1
  70. package/esm/next/hooks/columns/useUpdateAgGridColumnDefs.d.ts.map +1 -1
  71. package/esm/next/hooks/columns/useUpdateAgGridColumnDefs.js +18 -2
  72. package/esm/next/hooks/columns/useUpdateAgGridColumnDefs.js.map +1 -1
  73. package/esm/next/hooks/header/useHeaderDrilling.d.ts +2 -5
  74. package/esm/next/hooks/header/useHeaderDrilling.d.ts.map +1 -1
  75. package/esm/next/hooks/header/useHeaderDrilling.js +11 -13
  76. package/esm/next/hooks/header/useHeaderDrilling.js.map +1 -1
  77. package/esm/next/hooks/header/useHeaderMenu.d.ts +23 -3
  78. package/esm/next/hooks/header/useHeaderMenu.d.ts.map +1 -1
  79. package/esm/next/hooks/header/useHeaderMenu.js +9 -2
  80. package/esm/next/hooks/header/useHeaderMenu.js.map +1 -1
  81. package/esm/next/hooks/header/useHeaderMenuSorting.d.ts +2 -2
  82. package/esm/next/hooks/header/useHeaderMenuSorting.d.ts.map +1 -1
  83. package/esm/next/hooks/header/useHeaderMenuSorting.js +23 -24
  84. package/esm/next/hooks/header/useHeaderMenuSorting.js.map +1 -1
  85. package/esm/next/hooks/header/useHeaderMenuTextWrapping.d.ts +6 -5
  86. package/esm/next/hooks/header/useHeaderMenuTextWrapping.d.ts.map +1 -1
  87. package/esm/next/hooks/header/useHeaderMenuTextWrapping.js +341 -23
  88. package/esm/next/hooks/header/useHeaderMenuTextWrapping.js.map +1 -1
  89. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts.map +1 -1
  90. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js +7 -2
  91. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js.map +1 -1
  92. package/esm/next/hooks/useAgGridReactProps.d.ts.map +1 -1
  93. package/esm/next/hooks/useAgGridReactProps.js +8 -0
  94. package/esm/next/hooks/useAgGridReactProps.js.map +1 -1
  95. package/esm/next/hooks/useCellSelectionProps.d.ts +8 -0
  96. package/esm/next/hooks/useCellSelectionProps.d.ts.map +1 -0
  97. package/esm/next/hooks/useCellSelectionProps.js +23 -0
  98. package/esm/next/hooks/useCellSelectionProps.js.map +1 -0
  99. package/esm/next/hooks/useClearCellSelection.d.ts +7 -0
  100. package/esm/next/hooks/useClearCellSelection.d.ts.map +1 -0
  101. package/esm/next/hooks/useClearCellSelection.js +15 -0
  102. package/esm/next/hooks/useClearCellSelection.js.map +1 -0
  103. package/esm/next/hooks/useClipboardProps.d.ts +13 -0
  104. package/esm/next/hooks/useClipboardProps.d.ts.map +1 -0
  105. package/esm/next/hooks/useClipboardProps.js +46 -0
  106. package/esm/next/hooks/useClipboardProps.js.map +1 -0
  107. package/esm/next/hooks/useHeaderComponents.d.ts.map +1 -1
  108. package/esm/next/hooks/useHeaderComponents.js +4 -1
  109. package/esm/next/hooks/useHeaderComponents.js.map +1 -1
  110. package/esm/next/hooks/useInteractionProps.d.ts.map +1 -1
  111. package/esm/next/hooks/useInteractionProps.js +15 -10
  112. package/esm/next/hooks/useInteractionProps.js.map +1 -1
  113. package/esm/next/index.d.ts +4 -2
  114. package/esm/next/index.d.ts.map +1 -1
  115. package/esm/next/index.js +2 -1
  116. package/esm/next/index.js.map +1 -1
  117. package/esm/next/types/agGrid.d.ts +16 -0
  118. package/esm/next/types/agGrid.d.ts.map +1 -1
  119. package/esm/next/types/agGrid.js +22 -0
  120. package/esm/next/types/agGrid.js.map +1 -1
  121. package/esm/next/types/cellSelection.d.ts +17 -0
  122. package/esm/next/types/cellSelection.d.ts.map +1 -0
  123. package/esm/next/types/cellSelection.js +3 -0
  124. package/esm/next/types/cellSelection.js.map +1 -0
  125. package/esm/next/types/locators.d.ts +119 -0
  126. package/esm/next/types/locators.d.ts.map +1 -0
  127. package/esm/next/types/locators.js +79 -0
  128. package/esm/next/types/locators.js.map +1 -0
  129. package/esm/next/types/public.d.ts +2 -1
  130. package/esm/next/types/public.d.ts.map +1 -1
  131. package/esm/next/types/public.js +1 -0
  132. package/esm/next/types/public.js.map +1 -1
  133. package/esm/next/types/resizing.d.ts +1 -117
  134. package/esm/next/types/resizing.d.ts.map +1 -1
  135. package/esm/next/types/resizing.js +2 -76
  136. package/esm/next/types/resizing.js.map +1 -1
  137. package/esm/next/types/textWrapping.d.ts +41 -2
  138. package/esm/next/types/textWrapping.d.ts.map +1 -1
  139. package/package.json +11 -11
@@ -1,43 +1,361 @@
1
1
  // (C) 2025 GoodData Corporation
2
+ import { useCallback, useMemo } from "react";
2
3
  import { useIntl } from "react-intl";
3
- import { constructTextWrappingMenuItems } from "../../components/Header/utils/constructTextWrappingMenuItems.js";
4
+ import { isAttributeColumnDefinition, isAttributeScope, isAttributeTotalScope, } from "@gooddata/sdk-ui";
5
+ import { constructTextWrappingMenuItems, } from "../../components/Header/utils/constructTextWrappingMenuItems.js";
4
6
  import { useAgGridApi } from "../../context/AgGridApiContext.js";
5
7
  import { usePivotTableProps } from "../../context/PivotTablePropsContext.js";
6
- import { useGetDefaultTextWrapping } from "../textWrapping/useGetDefaultTextWrapping.js";
7
- import { useUpdateTextWrapping } from "../textWrapping/useUpdateTextWrapping.js";
8
+ import { createColumnTextWrappingItemForColumnDefinition } from "../../features/textWrapping/createColumnTextWrappingItemForColumnDefinition.js";
9
+ import { getColumnTextWrappingItemForColumnDefinition } from "../../features/textWrapping/getColumnTextWrappingItemForColumnDefinition.js";
10
+ import { getPivotGroupTextWrappingItemForColumnDefinition } from "../../features/textWrapping/getPivotGroupTextWrappingItemForColumnDefinition.js";
11
+ import { isColumnTextWrappingItemMatch } from "../../features/textWrapping/isColumnTextWrappingItemMatch.js";
12
+ import { isAgGridHeaderGroupParams, } from "../../types/agGrid.js";
13
+ import { isAttributeColumnLocator } from "../../types/locators.js";
14
+ import { useGetAgGridColumns } from "../columns/useGetAgGridColumns.js";
15
+ import { useUpdateAgGridColumnDefs } from "../columns/useUpdateAgGridColumnDefs.js";
8
16
  /**
9
- * Hook for header cell components that handles menu items and callbacks.
17
+ * Hook for header cell components that handles menu items and callbacks for per-column text wrapping.
10
18
  *
11
- * @param measureIdentifiers - Array of measure identifiers for the cell
12
- * @param pivotAttributeDescriptors - Array of pivot attribute descriptors
13
- * @param gridApi - Optional ag-grid API for checking current text wrapping state
19
+ * @param agGridHeaderParams - ag-grid header or header group params to identify the current column(s)
20
+ * @param options - options to control which text wrapping items to show
14
21
  * @returns Menu items and callbacks
15
22
  */
16
- export const useHeaderMenuTextWrapping = () => {
23
+ export const useHeaderMenuTextWrapping = (agGridHeaderParams, options) => {
17
24
  const intl = useIntl();
18
- const { config } = usePivotTableProps();
25
+ const { config, pushData } = usePivotTableProps();
19
26
  const { agGridApi } = useAgGridApi();
20
- const { onUpdateTextWrapping } = useUpdateTextWrapping();
21
- const getCurrentTextWrapping = useGetDefaultTextWrapping();
22
- const currentTextWrapping = getCurrentTextWrapping(agGridApi, config.textWrapping);
23
- const textWrappingItems = constructTextWrappingMenuItems({ textWrapping: currentTextWrapping }, intl);
24
- const handleTextWrappingItemClick = (item) => {
27
+ const getAgGridColumns = useGetAgGridColumns();
28
+ const updateAgGridColumnDefs = useUpdateAgGridColumnDefs();
29
+ // Determine if this is a group header or regular header
30
+ const isGroupHeader = agGridHeaderParams ? isAgGridHeaderGroupParams(agGridHeaderParams) : false;
31
+ // Extract pivot group depth for this header (used for exact depth matching)
32
+ const pivotGroupDepth = useMemo(() => {
33
+ if (!isGroupHeader || !agGridHeaderParams) {
34
+ return undefined;
35
+ }
36
+ return agGridHeaderParams.columnGroup.getColGroupDef()
37
+ ?.headerGroupComponentParams?.pivotGroupDepth;
38
+ }, [isGroupHeader, agGridHeaderParams]);
39
+ // Get all column definitions affected by this header (single column or all leaf columns in group)
40
+ const leafColumnDefinitions = useMemo(() => {
41
+ if (!agGridHeaderParams) {
42
+ return [];
43
+ }
44
+ if (isGroupHeader) {
45
+ // Get all leaf columns under this group
46
+ const groupParams = agGridHeaderParams;
47
+ const leafColumns = groupParams.columnGroup.getLeafColumns();
48
+ return leafColumns
49
+ .map((column) => {
50
+ const colDef = column.getColDef();
51
+ return colDef.context?.columnDefinition;
52
+ })
53
+ .filter((def) => def !== undefined);
54
+ }
55
+ else {
56
+ // Regular header - just this column
57
+ const headerParams = agGridHeaderParams;
58
+ const columnDefinition = headerParams.column.getColDef()?.context?.columnDefinition;
59
+ return columnDefinition ? [columnDefinition] : [];
60
+ }
61
+ }, [agGridHeaderParams, isGroupHeader]);
62
+ // Calculate effective wrapping state for this specific header
63
+ const { effectiveWrapText, effectiveWrapHeaderText } = useMemo(() => {
64
+ return calculateEffectiveWrapping(leafColumnDefinitions, isGroupHeader, pivotGroupDepth, config.textWrapping);
65
+ }, [leafColumnDefinitions, isGroupHeader, pivotGroupDepth, config.textWrapping]);
66
+ const textWrappingItems = constructTextWrappingMenuItems({ textWrapping: { wrapText: effectiveWrapText, wrapHeaderText: effectiveWrapHeaderText } }, intl, options);
67
+ const handleTextWrappingItemClick = useCallback((item) => {
68
+ if (leafColumnDefinitions.length === 0 || !agGridApi) {
69
+ return;
70
+ }
25
71
  const effectiveItem = textWrappingItems.find((i) => i.id === item.id);
26
72
  if (!effectiveItem) {
27
73
  return;
28
74
  }
29
- const isHeaderItem = effectiveItem.id === "header";
30
- const newTextWrapping = {
31
- ...currentTextWrapping,
32
- ...(isHeaderItem
33
- ? { wrapHeaderText: !effectiveItem.isActive }
34
- : { wrapText: !effectiveItem.isActive }),
35
- };
36
- onUpdateTextWrapping(newTextWrapping, agGridApi);
37
- };
75
+ // Calculate new wrapping values
76
+ const { newWrapText, newWrapHeaderText } = calculateNewWrappingValues(effectiveItem, effectiveWrapText, effectiveWrapHeaderText);
77
+ // Create overrides for affected columns
78
+ const newOverrides = createOverridesForColumns(leafColumnDefinitions, isGroupHeader, pivotGroupDepth, newWrapText, newWrapHeaderText);
79
+ // Merge and clean up overrides
80
+ const updatedOverrides = mergeAndCleanupOverrides(config.textWrapping?.columnOverrides ?? [], newOverrides, newWrapText, newWrapHeaderText, config.textWrapping?.wrapText, config.textWrapping?.wrapHeaderText);
81
+ // Apply to AG-Grid
82
+ applyTextWrappingToAgGrid(agGridApi, getAgGridColumns, updateAgGridColumnDefs, updatedOverrides, config.textWrapping?.wrapText, config.textWrapping?.wrapHeaderText);
83
+ // Persist to insight
84
+ persistTextWrappingToInsight(pushData, config.textWrapping, updatedOverrides);
85
+ }, [
86
+ leafColumnDefinitions,
87
+ agGridApi,
88
+ textWrappingItems,
89
+ effectiveWrapText,
90
+ effectiveWrapHeaderText,
91
+ config.textWrapping,
92
+ getAgGridColumns,
93
+ updateAgGridColumnDefs,
94
+ pushData,
95
+ isGroupHeader,
96
+ pivotGroupDepth,
97
+ ]);
38
98
  return {
39
99
  textWrappingItems,
40
100
  handleTextWrappingItemClick,
41
101
  };
42
102
  };
103
+ // ============================================================================
104
+ // Helper Functions (Pure, Immutable)
105
+ // ============================================================================
106
+ /**
107
+ * Helper: Filter attribute and total scopes from column scopes
108
+ * @returns New array of filtered scopes
109
+ */
110
+ function getAttributeScopes(columnDef) {
111
+ if (isAttributeColumnDefinition(columnDef) || !("columnScope" in columnDef)) {
112
+ return [];
113
+ }
114
+ return columnDef.columnScope.filter((s) => isAttributeScope(s) || isAttributeTotalScope(s));
115
+ }
116
+ /**
117
+ * Helper: Extract element value from a scope at a specific depth
118
+ * @returns Element value or null
119
+ */
120
+ function getElementFromScope(scope) {
121
+ if (isAttributeScope(scope)) {
122
+ return scope.header.attributeHeaderItem.uri ?? null;
123
+ }
124
+ if (isAttributeTotalScope(scope)) {
125
+ return scope.header.totalHeaderItem.type;
126
+ }
127
+ return null;
128
+ }
129
+ /**
130
+ * Helper: Check if leaf columns have different elements at a given depth
131
+ * Returns true if they have different elements (attribute-level group)
132
+ */
133
+ function hasLeavesWithDifferentElements(leafColumnDefinitions, depth) {
134
+ if (leafColumnDefinitions.length <= 1) {
135
+ return false;
136
+ }
137
+ const firstLeaf = leafColumnDefinitions[0];
138
+ const firstScopes = getAttributeScopes(firstLeaf);
139
+ if (firstScopes.length <= depth) {
140
+ return false;
141
+ }
142
+ const firstElement = getElementFromScope(firstScopes[depth]);
143
+ return leafColumnDefinitions.some((def) => {
144
+ const scopes = getAttributeScopes(def);
145
+ if (scopes.length <= depth)
146
+ return false;
147
+ const element = getElementFromScope(scopes[depth]);
148
+ return element !== firstElement;
149
+ });
150
+ }
151
+ /**
152
+ * Helper: Build expected attribute IDs for a pivot group at a specific depth
153
+ * @returns New array of attribute IDs
154
+ */
155
+ function getExpectedAttributeIds(columnDef, depth) {
156
+ const scopes = getAttributeScopes(columnDef);
157
+ return scopes
158
+ .slice(0, depth + 1)
159
+ .map((s) => {
160
+ if (isAttributeScope(s) || isAttributeTotalScope(s)) {
161
+ return s.descriptor.attributeHeader.localIdentifier;
162
+ }
163
+ return "";
164
+ })
165
+ .filter((id) => id !== "");
166
+ }
167
+ /**
168
+ * Helper: Build expected element values for a pivot group at a specific depth
169
+ * @returns New array of element values
170
+ */
171
+ function getExpectedElements(columnDef, depth) {
172
+ const scopes = getAttributeScopes(columnDef);
173
+ return scopes.slice(0, depth + 1).map((s) => getElementFromScope(s));
174
+ }
175
+ /**
176
+ * Helper: Find an exact depth override for a pivot group
177
+ * @returns Matching override or undefined
178
+ */
179
+ function findExactDepthOverride(columnOverrides, expectedAttributeIds, expectedElements, expectAttributeLevel) {
180
+ return columnOverrides.find((item) => {
181
+ if (item.matchType !== "pivotGroup") {
182
+ return false;
183
+ }
184
+ const attributeLocators = item.locators.filter(isAttributeColumnLocator);
185
+ // Must have exactly the same number of attributes (not more, not less)
186
+ if (attributeLocators.length !== expectedAttributeIds.length) {
187
+ return false;
188
+ }
189
+ // Check if identifiers match
190
+ const idsMatch = attributeLocators.every((loc, idx) => loc.attributeLocatorItem.attributeIdentifier === expectedAttributeIds[idx]);
191
+ if (!idsMatch) {
192
+ return false;
193
+ }
194
+ // Check element matching based on what we expect
195
+ const hasElements = attributeLocators.some((loc) => loc.attributeLocatorItem.element !== undefined);
196
+ if (expectAttributeLevel) {
197
+ // We expect attribute-level (no elements), locator must also have no elements
198
+ return !hasElements;
199
+ }
200
+ else {
201
+ // We expect element-specific, check if elements match
202
+ if (!hasElements) {
203
+ return false; // Locator is attribute-level but we expect element-specific
204
+ }
205
+ return attributeLocators.every((loc, idx) => loc.attributeLocatorItem.element === expectedElements[idx]);
206
+ }
207
+ });
208
+ }
209
+ /**
210
+ * Helper: Calculate effective wrapping state for a header
211
+ * @returns Effective wrapText and wrapHeaderText values
212
+ */
213
+ function calculateEffectiveWrapping(leafColumnDefinitions, isGroupHeader, pivotGroupDepth, textWrapping) {
214
+ const defaultWrapping = {
215
+ effectiveWrapText: textWrapping?.wrapText,
216
+ effectiveWrapHeaderText: textWrapping?.wrapHeaderText,
217
+ };
218
+ if (leafColumnDefinitions.length === 0) {
219
+ return defaultWrapping;
220
+ }
221
+ // For pivot group headers
222
+ if (isGroupHeader && pivotGroupDepth !== undefined) {
223
+ return calculateEffectiveWrappingForPivotGroup(leafColumnDefinitions, pivotGroupDepth, textWrapping, defaultWrapping);
224
+ }
225
+ // For regular headers
226
+ return calculateEffectiveWrappingForRegularHeader(leafColumnDefinitions[0], textWrapping);
227
+ }
228
+ /**
229
+ * Helper: Calculate effective wrapping for pivot group headers
230
+ */
231
+ function calculateEffectiveWrappingForPivotGroup(leafColumnDefinitions, pivotGroupDepth, textWrapping, defaultWrapping) {
232
+ const columnDef = leafColumnDefinitions[0];
233
+ const scopes = getAttributeScopes(columnDef);
234
+ if (scopes.length === 0) {
235
+ return defaultWrapping;
236
+ }
237
+ const expectedAttributeIds = getExpectedAttributeIds(columnDef, pivotGroupDepth);
238
+ const expectedElements = getExpectedElements(columnDef, pivotGroupDepth);
239
+ const expectAttributeLevel = hasLeavesWithDifferentElements(leafColumnDefinitions, pivotGroupDepth);
240
+ const exactDepthOverride = findExactDepthOverride(textWrapping?.columnOverrides ?? [], expectedAttributeIds, expectedElements, expectAttributeLevel);
241
+ return {
242
+ effectiveWrapText: exactDepthOverride ? exactDepthOverride.wrapText : textWrapping?.wrapText,
243
+ effectiveWrapHeaderText: exactDepthOverride
244
+ ? exactDepthOverride.wrapHeaderText
245
+ : textWrapping?.wrapHeaderText,
246
+ };
247
+ }
248
+ /**
249
+ * Helper: Calculate effective wrapping for regular headers
250
+ */
251
+ function calculateEffectiveWrappingForRegularHeader(columnDef, textWrapping) {
252
+ const override = getColumnTextWrappingItemForColumnDefinition(columnDef, textWrapping?.columnOverrides ?? []);
253
+ return {
254
+ effectiveWrapText: override?.wrapText ?? textWrapping?.wrapText,
255
+ effectiveWrapHeaderText: override?.wrapHeaderText ?? textWrapping?.wrapHeaderText,
256
+ };
257
+ }
258
+ /**
259
+ * Helper: Calculate new wrapping values based on which menu item was clicked
260
+ * @returns New wrapText and wrapHeaderText values
261
+ */
262
+ function calculateNewWrappingValues(clickedItem, currentWrapText, currentWrapHeaderText) {
263
+ const isHeaderItem = clickedItem.id === "header";
264
+ return {
265
+ newWrapText: isHeaderItem ? currentWrapText : !clickedItem.isActive,
266
+ newWrapHeaderText: isHeaderItem ? !clickedItem.isActive : currentWrapHeaderText,
267
+ };
268
+ }
269
+ /**
270
+ * Helper: Create text wrapping overrides for columns
271
+ * @returns New array of override items
272
+ */
273
+ function createOverridesForColumns(leafColumnDefinitions, isGroupHeader, pivotGroupDepth, newWrapText, newWrapHeaderText) {
274
+ // For pivot group headers, create a single pivot group override
275
+ if (isGroupHeader && leafColumnDefinitions.length > 0 && pivotGroupDepth !== undefined) {
276
+ return [
277
+ createColumnTextWrappingItemForColumnDefinition(leafColumnDefinitions[0], { wrapText: newWrapText, wrapHeaderText: newWrapHeaderText }, {
278
+ usePivotGroupLocator: true,
279
+ pivotGroupDepth,
280
+ includeElements: !hasLeavesWithDifferentElements(leafColumnDefinitions, pivotGroupDepth),
281
+ }),
282
+ ];
283
+ }
284
+ // For regular headers, create individual column overrides
285
+ return leafColumnDefinitions.map((columnDef) => createColumnTextWrappingItemForColumnDefinition(columnDef, {
286
+ wrapText: newWrapText,
287
+ wrapHeaderText: newWrapHeaderText,
288
+ }));
289
+ }
290
+ /**
291
+ * Helper: Merge new overrides with existing ones and clean up defaults
292
+ * @returns New array of overrides with unnecessary ones removed
293
+ */
294
+ function mergeAndCleanupOverrides(existingOverrides, newOverrides, newWrapText, newWrapHeaderText, globalWrapText, globalWrapHeaderText) {
295
+ let updatedOverrides = [...existingOverrides];
296
+ // Merge new overrides (replace matching ones, add new ones)
297
+ newOverrides.forEach((newOverride) => {
298
+ const existingIndex = updatedOverrides.findIndex((o) => isColumnTextWrappingItemMatch(o, newOverride));
299
+ if (existingIndex >= 0) {
300
+ updatedOverrides[existingIndex] = newOverride;
301
+ }
302
+ else {
303
+ updatedOverrides.push(newOverride);
304
+ }
305
+ });
306
+ // Remove overrides if both values match the global default (no actual override needed)
307
+ if (newWrapText === globalWrapText && newWrapHeaderText === globalWrapHeaderText) {
308
+ updatedOverrides = updatedOverrides.filter((o) => !newOverrides.some((newO) => isColumnTextWrappingItemMatch(o, newO)));
309
+ }
310
+ return updatedOverrides;
311
+ }
312
+ /**
313
+ * Helper: Apply text wrapping settings to AG-Grid column definitions
314
+ */
315
+ function applyTextWrappingToAgGrid(agGridApi, getAgGridColumns, updateAgGridColumnDefs, updatedOverrides, globalWrapText, globalWrapHeaderText) {
316
+ const allColumns = getAgGridColumns(agGridApi);
317
+ if (!allColumns) {
318
+ return;
319
+ }
320
+ const updatedColDefs = allColumns.map((column) => {
321
+ const colDef = column.getColDef();
322
+ const currentWidth = column.getActualWidth();
323
+ const colColumnDefinition = colDef.context?.columnDefinition;
324
+ if (!colColumnDefinition) {
325
+ return colDef;
326
+ }
327
+ // Get effective wrapping values for this column
328
+ const directOverride = getColumnTextWrappingItemForColumnDefinition(colColumnDefinition, updatedOverrides);
329
+ const pivotGroupOverride = getPivotGroupTextWrappingItemForColumnDefinition(colColumnDefinition, updatedOverrides);
330
+ const colWrapText = directOverride?.wrapText ?? pivotGroupOverride?.wrapText ?? globalWrapText;
331
+ const colWrapHeaderText = directOverride?.wrapHeaderText ?? pivotGroupOverride?.wrapHeaderText ?? globalWrapHeaderText;
332
+ return {
333
+ ...colDef,
334
+ wrapText: !!colWrapText,
335
+ wrapHeaderText: !!colWrapHeaderText,
336
+ autoHeight: !!colWrapText,
337
+ autoHeaderHeight: !!colWrapHeaderText,
338
+ width: currentWidth,
339
+ };
340
+ });
341
+ updateAgGridColumnDefs(updatedColDefs, agGridApi);
342
+ }
343
+ /**
344
+ * Helper: Persist text wrapping configuration to insight
345
+ */
346
+ function persistTextWrappingToInsight(pushData, currentTextWrapping, updatedOverrides) {
347
+ if (!pushData) {
348
+ return;
349
+ }
350
+ pushData({
351
+ properties: {
352
+ controls: {
353
+ textWrapping: {
354
+ ...currentTextWrapping,
355
+ columnOverrides: updatedOverrides.length > 0 ? updatedOverrides : undefined,
356
+ },
357
+ },
358
+ },
359
+ });
360
+ }
43
361
  //# sourceMappingURL=useHeaderMenuTextWrapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHeaderMenuTextWrapping.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuTextWrapping.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,8BAA8B,EAAE,MAAM,iEAAiE,CAAC;AACjH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC1C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC;IACrC,MAAM,EAAE,oBAAoB,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACzD,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAE3D,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAC;IAEtG,MAAM,2BAA2B,GAAG,CAAC,IAA2B,EAAE,EAAE;QAChE,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,KAAK,QAAQ,CAAC;QACnD,MAAM,eAAe,GAAG;YACpB,GAAG,mBAAmB;YACtB,GAAG,CAAC,YAAY;gBACZ,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC7C,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SAC/C,CAAC;QAEF,oBAAoB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,OAAO;QACH,iBAAiB;QACjB,2BAA2B;KAC9B,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"useHeaderMenuTextWrapping.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuTextWrapping.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUpdateTextWrapping.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/textWrapping/useUpdateTextWrapping.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB;4CAOX,aAAa,WAAW,SAAS,GAAG,IAAI;EA+CjE"}
1
+ {"version":3,"file":"useUpdateTextWrapping.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/textWrapping/useUpdateTextWrapping.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB;4CAOX,aAAa,WAAW,SAAS,GAAG,IAAI;EAqDjE"}
@@ -2,6 +2,7 @@
2
2
  import { useCallback } from "react";
3
3
  import { useUpdateDefaultTextWrapping } from "./useUpdateDefaultTextWrapping.js";
4
4
  import { usePivotTableProps } from "../../context/PivotTablePropsContext.js";
5
+ import { allowCellWrappingByColumnDefinition } from "../../features/textWrapping/allowCellWrappingByColumnDefinition.js";
5
6
  import { useGetAgGridColumns } from "../columns/useGetAgGridColumns.js";
6
7
  import { useUpdateAgGridColumnDefs } from "../columns/useUpdateAgGridColumnDefs.js";
7
8
  /**
@@ -36,12 +37,16 @@ export function useUpdateTextWrapping() {
36
37
  const updatedColDefs = allColumns?.map((column) => {
37
38
  const colDef = column.getColDef();
38
39
  const currentWidth = column.getActualWidth();
40
+ const columnDefinition = colDef.context?.columnDefinition;
41
+ // Skip wrapText for some columns (performance optimization)
42
+ const allowCellWrapping = columnDefinition && allowCellWrappingByColumnDefinition(columnDefinition);
43
+ const shouldWrapText = wrapText && allowCellWrapping;
39
44
  return {
40
45
  ...colDef,
41
- wrapText,
46
+ wrapText: shouldWrapText,
42
47
  wrapHeaderText,
43
48
  // enable/disable auto sizing only together with wrapping to avoid perf issues
44
- autoHeight: wrapText,
49
+ autoHeight: shouldWrapText,
45
50
  autoHeaderHeight: wrapHeaderText,
46
51
  // preserve current width, otherwise ag-grid will recalculate it and use the stale one
47
52
  width: currentWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"useUpdateTextWrapping.js","sourceRoot":"","sources":["../../../../src/next/hooks/textWrapping/useUpdateTextWrapping.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAC3D,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAC;IACjE,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,MAAM,oBAAoB,GAAG,WAAW,CACpC,CAAC,eAA8B,EAAE,OAAyB,EAAE,EAAE;QAC1D,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC5C,MAAM,cAAc,GAAG,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;YAExD,0FAA0F;YAC1F,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,cAAc,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;gBAE7C,OAAO;oBACH,GAAG,MAAM;oBACT,QAAQ;oBACR,cAAc;oBACd,8EAA8E;oBAC9E,UAAU,EAAE,QAAQ;oBACpB,gBAAgB,EAAE,cAAc;oBAChC,sFAAsF;oBACtF,KAAK,EAAE,YAAY;iBACtB,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACjB,sBAAsB,CAAC,cAAmC,EAAE,OAAO,CAAC,CAAC;YACzE,CAAC;YAED,iFAAiF;YACjF,yBAAyB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC;gBACL,UAAU,EAAE;oBACR,QAAQ,EAAE;wBACN,YAAY,EAAE,eAAe;qBAChC;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,yBAAyB,CAAC,CAClF,CAAC;IAEF,OAAO;QACH,oBAAoB;KACvB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"useUpdateTextWrapping.js","sourceRoot":"","sources":["../../../../src/next/hooks/textWrapping/useUpdateTextWrapping.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,mCAAmC,EAAE,MAAM,oEAAoE,CAAC;AAGzH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAC3D,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAC;IACjE,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,MAAM,oBAAoB,GAAG,WAAW,CACpC,CAAC,eAA8B,EAAE,OAAyB,EAAE,EAAE;QAC1D,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC5C,MAAM,cAAc,GAAG,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;YAExD,0FAA0F;YAC1F,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,cAAc,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC;gBAE1D,4DAA4D;gBAC5D,MAAM,iBAAiB,GACnB,gBAAgB,IAAI,mCAAmC,CAAC,gBAAgB,CAAC,CAAC;gBAC9E,MAAM,cAAc,GAAG,QAAQ,IAAI,iBAAiB,CAAC;gBAErD,OAAO;oBACH,GAAG,MAAM;oBACT,QAAQ,EAAE,cAAc;oBACxB,cAAc;oBACd,8EAA8E;oBAC9E,UAAU,EAAE,cAAc;oBAC1B,gBAAgB,EAAE,cAAc;oBAChC,sFAAsF;oBACtF,KAAK,EAAE,YAAY;iBACtB,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE,CAAC;gBACjB,sBAAsB,CAAC,cAAmC,EAAE,OAAO,CAAC,CAAC;YACzE,CAAC;YAED,iFAAiF;YACjF,yBAAyB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC;gBACL,UAAU,EAAE;oBACR,QAAQ,EAAE;wBACN,YAAY,EAAE,eAAe;qBAChC;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,yBAAyB,CAAC,CAClF,CAAC;IAEF,OAAO;QACH,oBAAoB;KACvB,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAgGridReactProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,mBAAmB,gBA8ClC"}
1
+ {"version":3,"file":"useAgGridReactProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,mBAAmB,gBAoDlC"}
@@ -5,6 +5,8 @@ import { useVirtualColumnAutoResize } from "./resizing/useVirtualColumnAutoResiz
5
5
  import { useAfterRenderCallback } from "./useAfterRenderCallback.js";
6
6
  import { useAgGridApiProps } from "./useAgGridApiProps.js";
7
7
  import { useAutoHeight } from "./useAutoHeight.js";
8
+ import { useCellSelectionProps } from "./useCellSelectionProps.js";
9
+ import { useClipboardProps } from "./useClipboardProps.js";
8
10
  import { useColumnDefsProps } from "./useColumnDefsProps.js";
9
11
  import { useDataLoadingProps } from "./useDataLoadingProps.js";
10
12
  import { useHeaderComponents } from "./useHeaderComponents.js";
@@ -27,6 +29,8 @@ export function useAgGridReactProps() {
27
29
  const enhanceWithColumnSizing = useColumnSizingProps();
28
30
  const enhanceWithSorting = useSortingProps();
29
31
  const enhanceWithInteractions = useInteractionProps();
32
+ const enhanceWithCellSelection = useCellSelectionProps();
33
+ const enhanceWithClipboard = useClipboardProps();
30
34
  const enhanceWithTextWrapping = useTextWrappingProps();
31
35
  const enhanceWithAutoHeight = useAutoHeight();
32
36
  const enhanceWithTheme = useThemeProps();
@@ -42,6 +46,8 @@ export function useAgGridReactProps() {
42
46
  enhanceWithColumnSizing,
43
47
  enhanceWithSorting,
44
48
  enhanceWithInteractions,
49
+ enhanceWithCellSelection,
50
+ enhanceWithClipboard,
45
51
  enhanceWithTextWrapping,
46
52
  enhanceWithAutoHeight,
47
53
  enhanceWithTheme,
@@ -57,6 +63,8 @@ export function useAgGridReactProps() {
57
63
  enhanceWithColumnSizing,
58
64
  enhanceWithSorting,
59
65
  enhanceWithInteractions,
66
+ enhanceWithCellSelection,
67
+ enhanceWithClipboard,
60
68
  enhanceWithTextWrapping,
61
69
  enhanceWithAutoHeight,
62
70
  enhanceWithTheme,
@@ -1 +1 @@
1
- {"version":3,"file":"useAgGridReactProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAC/B,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,CAAC;IACjD,MAAM,6BAA6B,GAAG,mBAAmB,EAAE,CAAC;IAC5D,MAAM,qBAAqB,GAAG,kBAAkB,EAAE,CAAC;IACnD,MAAM,mBAAmB,GAAG,gBAAgB,EAAE,CAAC;IAC/C,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;IACvD,MAAM,kBAAkB,GAAG,eAAe,EAAE,CAAC;IAC7C,MAAM,uBAAuB,GAAG,mBAAmB,EAAE,CAAC;IACtD,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;IACvD,MAAM,qBAAqB,GAAG,aAAa,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC;IACzC,MAAM,2BAA2B,GAAG,mBAAmB,EAAE,CAAC;IAC1D,MAAM,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IACxD,MAAM,kCAAkC,GAAG,0BAA0B,EAAE,CAAC;IAExE,OAAO,OAAO,CAAc,GAAG,EAAE;QAC7B,OAAO;YACH,oBAAoB;YACpB,6BAA6B;YAC7B,qBAAqB;YACrB,mBAAmB;YACnB,uBAAuB;YACvB,kBAAkB;YAClB,uBAAuB;YACvB,uBAAuB;YACvB,qBAAqB;YACrB,gBAAgB;YAChB,2BAA2B;YAC3B,sBAAsB;YACtB,kCAAkC;SACrC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC1D,CAAC,EAAE;QACC,oBAAoB;QACpB,6BAA6B;QAC7B,qBAAqB;QACrB,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;QAClB,uBAAuB;QACvB,uBAAuB;QACvB,qBAAqB;QACrB,gBAAgB;QAChB,2BAA2B;QAC3B,sBAAsB;QACtB,kCAAkC;KACrC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"useAgGridReactProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAC/B,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,CAAC;IACjD,MAAM,6BAA6B,GAAG,mBAAmB,EAAE,CAAC;IAC5D,MAAM,qBAAqB,GAAG,kBAAkB,EAAE,CAAC;IACnD,MAAM,mBAAmB,GAAG,gBAAgB,EAAE,CAAC;IAC/C,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;IACvD,MAAM,kBAAkB,GAAG,eAAe,EAAE,CAAC;IAC7C,MAAM,uBAAuB,GAAG,mBAAmB,EAAE,CAAC;IACtD,MAAM,wBAAwB,GAAG,qBAAqB,EAAE,CAAC;IACzD,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,CAAC;IACjD,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;IACvD,MAAM,qBAAqB,GAAG,aAAa,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC;IACzC,MAAM,2BAA2B,GAAG,mBAAmB,EAAE,CAAC;IAC1D,MAAM,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IACxD,MAAM,kCAAkC,GAAG,0BAA0B,EAAE,CAAC;IAExE,OAAO,OAAO,CAAc,GAAG,EAAE;QAC7B,OAAO;YACH,oBAAoB;YACpB,6BAA6B;YAC7B,qBAAqB;YACrB,mBAAmB;YACnB,uBAAuB;YACvB,kBAAkB;YAClB,uBAAuB;YACvB,wBAAwB;YACxB,oBAAoB;YACpB,uBAAuB;YACvB,qBAAqB;YACrB,gBAAgB;YAChB,2BAA2B;YAC3B,sBAAsB;YACtB,kCAAkC;SACrC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC1D,CAAC,EAAE;QACC,oBAAoB;QACpB,6BAA6B;QAC7B,qBAAqB;QACrB,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,oBAAoB;QACpB,uBAAuB;QACvB,qBAAqB;QACrB,gBAAgB;QAChB,2BAA2B;QAC3B,sBAAsB;QACtB,kCAAkC;KACrC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AgGridProps } from "../types/agGrid.js";
2
+ /**
3
+ * Returns ag-grid props with cell selection configuration applied.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function useCellSelectionProps(): (agGridReactProps: AgGridProps) => AgGridProps;
8
+ //# sourceMappingURL=useCellSelectionProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCellSelectionProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useCellSelectionProps.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CAkBtF"}
@@ -0,0 +1,23 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useCallback } from "react";
3
+ import { usePivotTableProps } from "../context/PivotTablePropsContext.js";
4
+ /**
5
+ * Returns ag-grid props with cell selection configuration applied.
6
+ *
7
+ * @internal
8
+ */
9
+ export function useCellSelectionProps() {
10
+ const { config } = usePivotTableProps();
11
+ const enableCellSelection = config.enableCellSelection ?? true;
12
+ return useCallback((agGridReactProps) => {
13
+ if (enableCellSelection) {
14
+ return agGridReactProps;
15
+ }
16
+ return {
17
+ ...agGridReactProps,
18
+ cellSelection: false,
19
+ suppressCellFocus: true,
20
+ };
21
+ }, [enableCellSelection]);
22
+ }
23
+ //# sourceMappingURL=useCellSelectionProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCellSelectionProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useCellSelectionProps.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC;IAE/D,OAAO,WAAW,CACd,CAAC,gBAA6B,EAAE,EAAE;QAC9B,IAAI,mBAAmB,EAAE,CAAC;YACtB,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QAED,OAAO;YACH,GAAG,gBAAgB;YACnB,aAAa,EAAE,KAAK;YACpB,iBAAiB,EAAE,IAAI;SAC1B,CAAC;IACN,CAAC,EACD,CAAC,mBAAmB,CAAC,CACxB,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hook that provides a function to clear cell selection in the pivot table.
3
+ *
4
+ * @internal
5
+ */
6
+ export declare function useClearCellSelection(): () => void;
7
+ //# sourceMappingURL=useClearCellSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClearCellSelection.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useClearCellSelection.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,IAAI,CAMlD"}
@@ -0,0 +1,15 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useCallback } from "react";
3
+ import { useAgGridApi } from "../context/AgGridApiContext.js";
4
+ /**
5
+ * Hook that provides a function to clear cell selection in the pivot table.
6
+ *
7
+ * @internal
8
+ */
9
+ export function useClearCellSelection() {
10
+ const { agGridApi } = useAgGridApi();
11
+ return useCallback(() => {
12
+ agGridApi?.clearCellSelection();
13
+ }, [agGridApi]);
14
+ }
15
+ //# sourceMappingURL=useClearCellSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClearCellSelection.js","sourceRoot":"","sources":["../../../src/next/hooks/useClearCellSelection.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC,GAAG,EAAE;QACpB,SAAS,EAAE,kBAAkB,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { AgGridProps } from "../types/agGrid.js";
2
+ /**
3
+ * Returns ag-grid props with clipboard processing applied.
4
+ *
5
+ * This hook intercepts the copy operation (Cmd+C / Ctrl+C) to ensure empty values
6
+ * are copied with their display text instead of as empty strings:
7
+ * - Empty attribute values are copied as "(empty value)" or localized equivalent
8
+ * - Empty metric values are copied intentionally as empty
9
+ *
10
+ * @internal
11
+ */
12
+ export declare function useClipboardProps(): (agGridReactProps: AgGridProps) => AgGridProps;
13
+ //# sourceMappingURL=useClipboardProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClipboardProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useClipboardProps.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CA4ClF"}