@gooddata/sdk-ui-pivot 10.40.0-alpha.1 → 10.40.0-alpha.2

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 (132) hide show
  1. package/esm/next/PivotTableNextPluggable.js +2 -1
  2. package/esm/next/PivotTableNextPluggable.js.map +1 -1
  3. package/esm/next/components/Header/AttributeHeader.d.ts +7 -0
  4. package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -0
  5. package/esm/next/components/Header/AttributeHeader.js +14 -0
  6. package/esm/next/components/Header/AttributeHeader.js.map +1 -0
  7. package/esm/next/components/Header/HeaderCell/HeaderCell.d.ts +17 -0
  8. package/esm/next/components/Header/HeaderCell/HeaderCell.d.ts.map +1 -0
  9. package/esm/next/components/Header/HeaderCell/HeaderCell.js +24 -0
  10. package/esm/next/components/Header/HeaderCell/HeaderCell.js.map +1 -0
  11. package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts +12 -0
  12. package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts.map +1 -0
  13. package/esm/next/components/Header/{HeaderMenu.js → HeaderCell/HeaderMenu.js} +15 -9
  14. package/esm/next/components/Header/HeaderCell/HeaderMenu.js.map +1 -0
  15. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts +22 -0
  16. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts.map +1 -0
  17. package/esm/next/components/Header/{HeaderMenuComponents.js → HeaderCell/HeaderMenuComponents.js} +61 -8
  18. package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.js.map +1 -0
  19. package/esm/next/components/Header/MeasureGroupHeader.d.ts +9 -0
  20. package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -0
  21. package/esm/next/components/Header/MeasureGroupHeader.js +24 -0
  22. package/esm/next/components/Header/MeasureGroupHeader.js.map +1 -0
  23. package/esm/next/components/Header/MeasureHeader.d.ts +7 -0
  24. package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -0
  25. package/esm/next/components/Header/MeasureHeader.js +21 -0
  26. package/esm/next/components/Header/MeasureHeader.js.map +1 -0
  27. package/esm/next/components/Header/{PivotGroupHeaderCell.d.ts → PivotGroupHeader.d.ts} +3 -3
  28. package/esm/next/components/Header/PivotGroupHeader.d.ts.map +1 -0
  29. package/esm/next/components/Header/PivotGroupHeader.js +22 -0
  30. package/esm/next/components/Header/PivotGroupHeader.js.map +1 -0
  31. package/esm/next/components/Header/hooks/useHeaderMenu.d.ts +19 -0
  32. package/esm/next/components/Header/hooks/useHeaderMenu.d.ts.map +1 -0
  33. package/esm/next/components/Header/hooks/useHeaderMenu.js +24 -0
  34. package/esm/next/components/Header/hooks/useHeaderMenu.js.map +1 -0
  35. package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts +18 -0
  36. package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts.map +1 -0
  37. package/esm/next/components/Header/hooks/useHeaderMenuProps.js +85 -0
  38. package/esm/next/components/Header/hooks/useHeaderMenuProps.js.map +1 -0
  39. package/esm/next/components/Header/{utils.d.ts → utils/common.d.ts} +1 -1
  40. package/esm/next/components/Header/utils/common.d.ts.map +1 -0
  41. package/esm/next/components/Header/{utils.js → utils/common.js} +1 -1
  42. package/esm/next/components/Header/utils/common.js.map +1 -0
  43. package/esm/next/components/Header/{constructAggregationsMenuItems.d.ts → utils/constructAggregationsMenuItems.d.ts} +1 -1
  44. package/esm/next/components/Header/utils/constructAggregationsMenuItems.d.ts.map +1 -0
  45. package/esm/next/components/Header/{constructAggregationsMenuItems.js → utils/constructAggregationsMenuItems.js} +5 -3
  46. package/esm/next/components/Header/utils/constructAggregationsMenuItems.js.map +1 -0
  47. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.d.ts +4 -0
  48. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.d.ts.map +1 -0
  49. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.js +17 -0
  50. package/esm/next/components/Header/utils/constructTextWrappingMenuItems.js.map +1 -0
  51. package/esm/next/constants/internal.d.ts +1 -1
  52. package/esm/next/constants/internal.js +1 -1
  53. package/esm/next/features/columns/attributeColDef.d.ts.map +1 -1
  54. package/esm/next/features/columns/attributeColDef.js +4 -0
  55. package/esm/next/features/columns/attributeColDef.js.map +1 -1
  56. package/esm/next/features/columns/measureColDef.d.ts.map +1 -1
  57. package/esm/next/features/columns/measureColDef.js +1 -2
  58. package/esm/next/features/columns/measureColDef.js.map +1 -1
  59. package/esm/next/features/pivoting/columnDefsToPivotGroups.d.ts.map +1 -1
  60. package/esm/next/features/pivoting/columnDefsToPivotGroups.js +1 -2
  61. package/esm/next/features/pivoting/columnDefsToPivotGroups.js.map +1 -1
  62. package/esm/next/features/transposition/attributeHeaderColDef.d.ts.map +1 -1
  63. package/esm/next/features/transposition/attributeHeaderColDef.js +3 -0
  64. package/esm/next/features/transposition/attributeHeaderColDef.js.map +1 -1
  65. package/esm/next/features/transposition/measureGroupHeaderColDef.d.ts.map +1 -1
  66. package/esm/next/features/transposition/measureGroupHeaderColDef.js +1 -2
  67. package/esm/next/features/transposition/measureGroupHeaderColDef.js.map +1 -1
  68. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts +9 -0
  69. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts.map +1 -0
  70. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.js +20 -0
  71. package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.js.map +1 -0
  72. package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.d.ts +9 -0
  73. package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.d.ts.map +1 -0
  74. package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.js +24 -0
  75. package/esm/next/hooks/textWrapping/useUpdateDefaultTextWrapping.js.map +1 -0
  76. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts +24 -0
  77. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts.map +1 -0
  78. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js +64 -0
  79. package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js.map +1 -0
  80. package/esm/next/hooks/totals/useUpdateTotals.d.ts +11 -0
  81. package/esm/next/hooks/totals/useUpdateTotals.d.ts.map +1 -0
  82. package/esm/next/hooks/totals/useUpdateTotals.js +47 -0
  83. package/esm/next/hooks/totals/useUpdateTotals.js.map +1 -0
  84. package/esm/next/hooks/useAgGridReactProps.d.ts.map +1 -1
  85. package/esm/next/hooks/useAgGridReactProps.js +4 -1
  86. package/esm/next/hooks/useAgGridReactProps.js.map +1 -1
  87. package/esm/next/hooks/useHeaderComponents.d.ts +8 -0
  88. package/esm/next/hooks/useHeaderComponents.d.ts.map +1 -0
  89. package/esm/next/hooks/useHeaderComponents.js +26 -0
  90. package/esm/next/hooks/useHeaderComponents.js.map +1 -0
  91. package/esm/next/hooks/useTextWrappingProps.js +2 -2
  92. package/esm/next/hooks/useTextWrappingProps.js.map +1 -1
  93. package/esm/next/index.d.ts +1 -0
  94. package/esm/next/index.d.ts.map +1 -1
  95. package/esm/next/index.js.map +1 -1
  96. package/esm/next/types/menu.d.ts +18 -6
  97. package/esm/next/types/menu.d.ts.map +1 -1
  98. package/package.json +10 -10
  99. package/styles/css/main.css +17 -5
  100. package/styles/css/main.css.map +1 -1
  101. package/styles/css/pivotTableNext.css +17 -5
  102. package/styles/css/pivotTableNext.css.map +1 -1
  103. package/styles/scss/pivotTableNext.scss +24 -5
  104. package/esm/next/components/Header/HeaderCellWithMenu.d.ts +0 -13
  105. package/esm/next/components/Header/HeaderCellWithMenu.d.ts.map +0 -1
  106. package/esm/next/components/Header/HeaderCellWithMenu.js +0 -14
  107. package/esm/next/components/Header/HeaderCellWithMenu.js.map +0 -1
  108. package/esm/next/components/Header/HeaderMenu.d.ts +0 -10
  109. package/esm/next/components/Header/HeaderMenu.d.ts.map +0 -1
  110. package/esm/next/components/Header/HeaderMenu.js.map +0 -1
  111. package/esm/next/components/Header/HeaderMenuComponents.d.ts +0 -15
  112. package/esm/next/components/Header/HeaderMenuComponents.d.ts.map +0 -1
  113. package/esm/next/components/Header/HeaderMenuComponents.js.map +0 -1
  114. package/esm/next/components/Header/MeasureGroupHeaderCell.d.ts +0 -9
  115. package/esm/next/components/Header/MeasureGroupHeaderCell.d.ts.map +0 -1
  116. package/esm/next/components/Header/MeasureGroupHeaderCell.js +0 -25
  117. package/esm/next/components/Header/MeasureGroupHeaderCell.js.map +0 -1
  118. package/esm/next/components/Header/MeasureHeaderCell.d.ts +0 -7
  119. package/esm/next/components/Header/MeasureHeaderCell.d.ts.map +0 -1
  120. package/esm/next/components/Header/MeasureHeaderCell.js +0 -22
  121. package/esm/next/components/Header/MeasureHeaderCell.js.map +0 -1
  122. package/esm/next/components/Header/PivotGroupHeaderCell.d.ts.map +0 -1
  123. package/esm/next/components/Header/PivotGroupHeaderCell.js +0 -24
  124. package/esm/next/components/Header/PivotGroupHeaderCell.js.map +0 -1
  125. package/esm/next/components/Header/constructAggregationsMenuItems.d.ts.map +0 -1
  126. package/esm/next/components/Header/constructAggregationsMenuItems.js.map +0 -1
  127. package/esm/next/components/Header/useHeaderMenu.d.ts +0 -8
  128. package/esm/next/components/Header/useHeaderMenu.d.ts.map +0 -1
  129. package/esm/next/components/Header/useHeaderMenu.js +0 -95
  130. package/esm/next/components/Header/useHeaderMenu.js.map +0 -1
  131. package/esm/next/components/Header/utils.d.ts.map +0 -1
  132. package/esm/next/components/Header/utils.js.map +0 -1
@@ -24,7 +24,7 @@ export const CorePivotTableNext = React.memo(PivotTableNextImplementation, (prev
24
24
  return !(executionChanged || deepEqualPropsChanged);
25
25
  });
26
26
  /**
27
- * Exclude columnWidths from config to avoid unnecessary re-executions.
27
+ * Exclude columnWidths, textWrapping from config to avoid unnecessary re-executions.
28
28
  */
29
29
  function sanitizeConfigForUpdate(config) {
30
30
  if (!config) {
@@ -32,6 +32,7 @@ function sanitizeConfigForUpdate(config) {
32
32
  }
33
33
  const clonedConfig = cloneDeep(config);
34
34
  delete clonedConfig.columnSizing?.columnWidths;
35
+ delete clonedConfig.textWrapping;
35
36
  return clonedConfig;
36
37
  }
37
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PivotTableNextPluggable.js","sourceRoot":"","sources":["../../src/next/PivotTableNextPluggable.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAChG,MAAM,gBAAgB,GAClB,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACjE,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtE,MAAM,qBAAqB,GAAG;QAC1B,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QAClC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;QACxC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;QAChC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;QACpC,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC;KACvD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/C,OAAO,CAAC,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAwC;IACrE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/C,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,SAA6B;IACjE,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"PivotTableNextPluggable.js","sourceRoot":"","sources":["../../src/next/PivotTableNextPluggable.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAChG,MAAM,gBAAgB,GAClB,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACjE,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtE,MAAM,qBAAqB,GAAG;QAC1B,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QAClC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;QACxC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;QAChC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;QACtC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;QACpC,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC;KACvD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/C,OAAO,CAAC,CAAC,gBAAgB,IAAI,qBAAqB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAwC;IACrE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;IAC/C,OAAO,YAAY,CAAC,YAAY,CAAC;IACjC,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,SAA6B;IACjE,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { AgGridHeaderParams } from "../../types/agGrid.js";
3
+ /**
4
+ * Renderer for attribute header.
5
+ */
6
+ export declare function AttributeHeader(params: AgGridHeaderParams): React.JSX.Element;
7
+ //# sourceMappingURL=AttributeHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttributeHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/AttributeHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,qBAiBzD"}
@@ -0,0 +1,14 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { HeaderCell } from "./HeaderCell/HeaderCell.js";
4
+ import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
5
+ /**
6
+ * Renderer for attribute header.
7
+ */
8
+ export function AttributeHeader(params) {
9
+ const allowAggregations = false;
10
+ const allowTextWrapping = true;
11
+ const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, [], [], params.api);
12
+ return (React.createElement(HeaderCell, { displayName: params.displayName, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, gridApi: params.api }));
13
+ }
14
+ //# sourceMappingURL=AttributeHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttributeHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/AttributeHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACtD,MAAM,iBAAiB,GAAG,KAAK,CAAC;IAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAE5E,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,EACpD,OAAO,EAAE,MAAM,CAAC,GAAG,GACrB,CACL,CAAC;AACN,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import { IAggregationsSubMenuItem, IAggregationsMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
3
+ import { AgGridApi } from "../../../types/agGrid.js";
4
+ interface IHeaderCellWithMenuProps {
5
+ displayName: React.ReactNode;
6
+ aggregationsItems: IAggregationsMenuItem[];
7
+ textWrappingItems: ITextWrappingMenuItem[];
8
+ onAggregationsItemClick: (item: IAggregationsSubMenuItem) => void;
9
+ onTextWrappingItemClick: (item: ITextWrappingMenuItem) => void;
10
+ gridApi?: AgGridApi;
11
+ }
12
+ /**
13
+ * Reusable wrapper component for header cells.
14
+ */
15
+ export declare function HeaderCell({ displayName, aggregationsItems, textWrappingItems, onAggregationsItemClick, onTextWrappingItemClick, gridApi, }: IHeaderCellWithMenuProps): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
16
+ export {};
17
+ //# sourceMappingURL=HeaderCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderCell.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderCell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,UAAU,wBAAwB;IAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,uBAAuB,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClE,uBAAuB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/D,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACvB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,GACV,EAAE,wBAAwB,gGA0B1B"}
@@ -0,0 +1,24 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React, { useState } from "react";
3
+ import { HeaderMenu } from "./HeaderMenu.js";
4
+ import { e } from "../../../features/styling/bem.js";
5
+ import { usePivotTableProps } from "../../../context/PivotTablePropsContext.js";
6
+ import { useGetDefaultTextWrapping } from "../../../hooks/textWrapping/useGetDefaultTextWrapping.js";
7
+ /**
8
+ * Reusable wrapper component for header cells.
9
+ */
10
+ export function HeaderCell({ displayName, aggregationsItems, textWrappingItems, onAggregationsItemClick, onTextWrappingItemClick, gridApi, }) {
11
+ const [isOpen, setIsOpen] = useState(false);
12
+ const { config } = usePivotTableProps();
13
+ const getCurrentTextWrapping = useGetDefaultTextWrapping();
14
+ const currentTextWrapping = getCurrentTextWrapping(gridApi, config.textWrapping);
15
+ // Enable ellipsis text truncation when the header text is not text wrapping
16
+ const useTruncating = !currentTextWrapping.wrapHeaderText;
17
+ if (!aggregationsItems.length && !textWrappingItems.length) {
18
+ return displayName;
19
+ }
20
+ return (React.createElement("div", { className: e("header-cell-menu", { "is-open": isOpen, truncated: useTruncating }) },
21
+ React.createElement(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: onAggregationsItemClick, onTextWrappingItemClick: onTextWrappingItemClick, isMenuOpened: isOpen, onMenuOpenedChange: (opened) => setIsOpen(opened) }),
22
+ React.createElement("span", null, displayName)));
23
+ }
24
+ //# sourceMappingURL=HeaderCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderCell.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderCell.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,kCAAkC,CAAC;AAMrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AAWrG;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EACvB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,GACgB;IACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAC3D,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAEjF,4EAA4E;IAC5E,MAAM,aAAa,GAAG,CAAC,mBAAmB,CAAC,cAAc,CAAC;IAE1D,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,OAAO,CACH,6BAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;QAClF,oBAAC,UAAU,IACP,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,uBAAuB,EAChD,uBAAuB,EAAE,uBAAuB,EAChD,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GACnD;QACF,kCAAO,WAAW,CAAQ,CACxB,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { IAggregationsSubMenuItem, IAggregationsMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
3
+ export interface IHeaderMenuProps {
4
+ aggregationsItems: IAggregationsMenuItem[];
5
+ textWrappingItems: ITextWrappingMenuItem[];
6
+ onAggregationsItemClick: (item: IAggregationsSubMenuItem) => void;
7
+ onTextWrappingItemClick: (item: ITextWrappingMenuItem) => void;
8
+ isMenuOpened: boolean;
9
+ onMenuOpenedChange: (opened: boolean) => void;
10
+ }
11
+ export declare function HeaderMenu(props: IHeaderMenuProps): React.JSX.Element;
12
+ //# sourceMappingURL=HeaderMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMenu.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,gBAAgB;IAC7B,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,uBAAuB,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClE,uBAAuB,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/D,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAoBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,qBAgEjD"}
@@ -1,7 +1,7 @@
1
1
  // (C) 2025 GoodData Corporation
2
2
  import React from "react";
3
3
  import { UiIcon, UiMenu, Dropdown } from "@gooddata/sdk-ui-kit";
4
- import { e } from "../../features/styling/bem.js";
4
+ import { e } from "../../../features/styling/bem.js";
5
5
  import { buildUiMenuItems, SmallInteractiveItem } from "./HeaderMenuComponents.js";
6
6
  function MenuToggler({ onClick }) {
7
7
  const handleClick = (event) => {
@@ -12,21 +12,27 @@ function MenuToggler({ onClick }) {
12
12
  React.createElement(UiIcon, { type: "ellipsisVertical", ariaHidden: true })));
13
13
  }
14
14
  export function HeaderMenu(props) {
15
- const { items, onItemClick, isMenuOpened, onMenuOpenedChange } = props;
16
- const uiMenuItems = React.useMemo(() => buildUiMenuItems(items), [items]);
15
+ const { aggregationsItems, textWrappingItems, onAggregationsItemClick, onTextWrappingItemClick, isMenuOpened, onMenuOpenedChange, } = props;
16
+ const uiMenuItems = React.useMemo(() => buildUiMenuItems(aggregationsItems, textWrappingItems), [aggregationsItems, textWrappingItems]);
17
17
  const handleSelect = React.useCallback((item) => {
18
- if (item.type === "interactive" && item.data) {
19
- onItemClick(item.data);
20
- onMenuOpenedChange(false);
18
+ if (item.type !== "interactive") {
19
+ return;
21
20
  }
22
- }, [onItemClick, onMenuOpenedChange]);
21
+ if (item.data && item.data.type === "aggregation") {
22
+ onAggregationsItemClick(item.data);
23
+ }
24
+ else if (item.data && item.data.type === "textWrapping") {
25
+ onTextWrappingItemClick(item.data);
26
+ }
27
+ onMenuOpenedChange(false);
28
+ }, [onAggregationsItemClick, onTextWrappingItemClick, onMenuOpenedChange]);
23
29
  const handleToggle = React.useCallback((desired) => {
24
30
  const opened = typeof desired === "boolean" ? desired : !isMenuOpened;
25
31
  onMenuOpenedChange(opened);
26
32
  }, [isMenuOpened, onMenuOpenedChange]);
27
- return (React.createElement(Dropdown, { isOpen: isMenuOpened, onToggle: handleToggle, closeOnEscape: true, closeOnOutsideClick: true, accessibilityConfig: { triggerRole: "button", popupRole: "dialog" }, renderButton: ({ toggleDropdown }) => React.createElement(MenuToggler, { onClick: () => toggleDropdown() }), renderBody: ({ closeDropdown, ariaAttributes }) => (React.createElement(UiMenu, { items: uiMenuItems, onSelect: handleSelect, onClose: closeDropdown, shouldCloseOnSelect: false, containerBottomPadding: "small", ariaAttributes: {
33
+ return (React.createElement(Dropdown, { isOpen: isMenuOpened, onToggle: handleToggle, closeOnEscape: true, closeOnOutsideClick: true, accessibilityConfig: { triggerRole: "button", popupRole: "dialog" }, renderButton: ({ toggleDropdown }) => React.createElement(MenuToggler, { onClick: toggleDropdown }), renderBody: ({ closeDropdown, ariaAttributes }) => (React.createElement(UiMenu, { items: uiMenuItems, onSelect: handleSelect, onClose: closeDropdown, shouldCloseOnSelect: false, containerBottomPadding: "small", ariaAttributes: {
28
34
  id: ariaAttributes.id,
29
35
  "aria-labelledby": ariaAttributes["aria-labelledby"],
30
- }, maxHeight: 260, InteractiveItem: SmallInteractiveItem })) }));
36
+ }, InteractiveItem: SmallInteractiveItem })) }));
31
37
  }
32
38
  //# sourceMappingURL=HeaderMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMenu.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import { IUiMenuInteractiveItemProps, IUiMenuItem } from "@gooddata/sdk-ui-kit";
3
+ import { TotalType } from "@gooddata/sdk-model";
4
+ import { IAggregationsMenuItem, IAggregationsSubMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
5
+ /**
6
+ * Mapping of total types to their display titles.
7
+ */
8
+ export declare const TOTAL_TYPE_TITLES: Record<TotalType, string>;
9
+ export type AggregationsMenuItemData = {
10
+ static: React.ReactNode;
11
+ interactive: IAggregationsSubMenuItem | ITextWrappingMenuItem | null;
12
+ };
13
+ export declare const SmallInteractiveItem: React.FC<IUiMenuInteractiveItemProps<AggregationsMenuItemData>>;
14
+ /**
15
+ * Builds complete UI menu items by combining aggregation and text wrapping items.
16
+ *
17
+ * @param aggregationsItems - The aggregation menu items
18
+ * @param textWrappingItems - The text wrapping menu items
19
+ * @returns Complete array of UI menu items
20
+ */
21
+ export declare function buildUiMenuItems(aggregationsItems: IAggregationsMenuItem[], textWrappingItems: ITextWrappingMenuItem[]): Array<IUiMenuItem<AggregationsMenuItemData>>;
22
+ //# sourceMappingURL=HeaderMenuComponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMenuComponents.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGH,2BAA2B,EAC3B,WAAW,EAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EACH,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACxB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAOvD,CAAC;AA0CF,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,EAAE,wBAAwB,GAAG,qBAAqB,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAEV,CAAC;AAwHxF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,iBAAiB,EAAE,qBAAqB,EAAE,EAC1C,iBAAiB,EAAE,qBAAqB,EAAE,GAC3C,KAAK,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAK9C"}
@@ -2,7 +2,7 @@
2
2
  import React from "react";
3
3
  import { DefaultUiMenuInteractiveItem, Icon, separatorStaticItem, } from "@gooddata/sdk-ui-kit";
4
4
  import { useTheme } from "@gooddata/sdk-ui-theme-provider";
5
- import { e } from "../../features/styling/bem.js";
5
+ import { e } from "../../../features/styling/bem.js";
6
6
  /**
7
7
  * Mapping of total types to their display titles.
8
8
  */
@@ -32,14 +32,27 @@ function SubMenuSectionHeader({ variant }) {
32
32
  React.createElement("span", null, variant === "rows" ? "Rows" : "Columns")));
33
33
  }
34
34
  export const SmallInteractiveItem = (props) => React.createElement(DefaultUiMenuInteractiveItem, { ...props, size: "small" });
35
- export function buildUiMenuItems(items) {
35
+ /**
36
+ * Builds UI menu items for aggregation functionality.
37
+ *
38
+ * @param aggregationsItems - The aggregation menu items to build from
39
+ * @returns Array of UI menu items for aggregations
40
+ */
41
+ function buildUiAggregationMenuItems(aggregationsItems) {
36
42
  const uiItems = [];
37
- // Top header label styled like section headers
38
- uiItems.push({ type: "static", id: "header", data: React.createElement(TopMenuHeader, null) });
39
- items.forEach((item) => {
40
- const isAnyItemActive = [...item.rows, ...item.columns].some((i) => i.isActive);
43
+ let hasAnyAggregationItem = false;
44
+ aggregationsItems.forEach((item) => {
41
45
  const hasRows = item.rows.length > 0;
42
46
  const hasColumns = item.columns.length > 0;
47
+ const hasAny = hasRows || hasColumns;
48
+ if (!hasAny) {
49
+ return;
50
+ }
51
+ if (!hasAnyAggregationItem) {
52
+ uiItems.push({ type: "static", id: "aggregations-header", data: React.createElement(TopMenuHeader, null) });
53
+ hasAnyAggregationItem = true;
54
+ }
55
+ const isAnyItemActive = [...item.rows, ...item.columns].some((i) => i.isActive);
43
56
  const subItems = [];
44
57
  if (hasRows) {
45
58
  subItems.push({
@@ -50,7 +63,7 @@ export function buildUiMenuItems(items) {
50
63
  item.rows.forEach((rowItem) => {
51
64
  subItems.push({
52
65
  type: "interactive",
53
- id: rowItem.key,
66
+ id: rowItem.id,
54
67
  stringTitle: rowItem.title,
55
68
  isSelected: rowItem.isActive,
56
69
  data: rowItem,
@@ -70,7 +83,7 @@ export function buildUiMenuItems(items) {
70
83
  item.columns.forEach((colItem) => {
71
84
  subItems.push({
72
85
  type: "interactive",
73
- id: colItem.key,
86
+ id: colItem.id,
74
87
  stringTitle: colItem.title,
75
88
  isSelected: colItem.isActive,
76
89
  data: colItem,
@@ -88,4 +101,44 @@ export function buildUiMenuItems(items) {
88
101
  });
89
102
  return uiItems;
90
103
  }
104
+ /**
105
+ * Builds UI menu items for text wrapping functionality.
106
+ *
107
+ * @param textWrappingItems - The text wrapping menu items to build from
108
+ * @returns Array of UI menu items for text wrapping
109
+ */
110
+ function buildUiTextWrappingMenuItems(textWrappingItems) {
111
+ const uiItems = [];
112
+ if (textWrappingItems.length > 0) {
113
+ uiItems.push({
114
+ type: "static",
115
+ id: "text-wrapping-header",
116
+ data: (React.createElement("div", { className: e("header-cell-menu-section-header") },
117
+ React.createElement("span", null, "Wrap text"))),
118
+ });
119
+ textWrappingItems.forEach((wrapItem) => {
120
+ uiItems.push({
121
+ type: "interactive",
122
+ id: wrapItem.id,
123
+ stringTitle: wrapItem.title,
124
+ isSelected: wrapItem.isActive,
125
+ data: wrapItem,
126
+ });
127
+ });
128
+ }
129
+ return uiItems;
130
+ }
131
+ /**
132
+ * Builds complete UI menu items by combining aggregation and text wrapping items.
133
+ *
134
+ * @param aggregationsItems - The aggregation menu items
135
+ * @param textWrappingItems - The text wrapping menu items
136
+ * @returns Complete array of UI menu items
137
+ */
138
+ export function buildUiMenuItems(aggregationsItems, textWrappingItems) {
139
+ return [
140
+ ...buildUiAggregationMenuItems(aggregationsItems),
141
+ ...buildUiTextWrappingMenuItems(textWrappingItems),
142
+ ];
143
+ }
91
144
  //# sourceMappingURL=HeaderMenuComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMenuComponents.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/HeaderCell/HeaderMenuComponents.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { AgGridCellRendererParams } from "../../types/agGrid.js";
3
+ /**
4
+ * Renderer for measure group header.
5
+ *
6
+ * This is a special case when measures are in row (transposition).
7
+ */
8
+ export declare const MeasureGroupHeader: (params: AgGridCellRendererParams) => React.JSX.Element;
9
+ //# sourceMappingURL=MeasureGroupHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeasureGroupHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureGroupHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAmB,MAAM,uBAAuB,CAAC;AAUlF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,wBAAwB,sBA+BlE,CAAC"}
@@ -0,0 +1,24 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { HeaderCell } from "./HeaderCell/HeaderCell.js";
4
+ import { getColumnMeasureIdentifier, getPivotAttributeDescriptorsForMeasureGroup, getRowScope, isAggregableRowDefinition, } from "./utils/common.js";
5
+ import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
6
+ /**
7
+ * Renderer for measure group header.
8
+ *
9
+ * This is a special case when measures are in row (transposition).
10
+ */
11
+ export const MeasureGroupHeader = (params) => {
12
+ const colDef = params.colDef;
13
+ const cellData = params.data?.cellDataByColId[colDef.colId];
14
+ const columnDefinition = cellData?.columnDefinition;
15
+ const rowDefinition = cellData?.rowDefinition;
16
+ const pivotAttributeDescriptors = getPivotAttributeDescriptorsForMeasureGroup(columnDefinition);
17
+ const rowScope = getRowScope(rowDefinition);
18
+ const measureIdentifier = getColumnMeasureIdentifier(rowScope);
19
+ const allowAggregations = isAggregableRowDefinition(rowDefinition);
20
+ const allowTextWrapping = false; // due to measures in rows
21
+ const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, measureIdentifier ? [measureIdentifier] : [], pivotAttributeDescriptors, params.api);
22
+ return (React.createElement(HeaderCell, { displayName: params.value, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick }));
23
+ };
24
+ //# sourceMappingURL=MeasureGroupHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeasureGroupHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureGroupHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACH,0BAA0B,EAC1B,2CAA2C,EAC3C,WAAW,EACX,yBAAyB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAgC,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAyB,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,QAAQ,EAAE,gBAAgB,CAAC;IACpD,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,CAAC;IAE9C,MAAM,yBAAyB,GAAG,2CAA2C,CAAC,gBAAgB,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,0BAA0B;IAE3D,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5C,yBAAyB,EACzB,MAAM,CAAC,GAAG,CACb,CAAC;IAEN,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,KAAK,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,GACtD,CACL,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { AgGridHeaderParams } from "../../types/agGrid.js";
3
+ /**
4
+ * Renderer for measure header.
5
+ */
6
+ export declare function MeasureHeader(params: AgGridHeaderParams): React.JSX.Element;
7
+ //# sourceMappingURL=MeasureHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeasureHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAU5E;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,qBA8BvD"}
@@ -0,0 +1,21 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { HeaderCell } from "./HeaderCell/HeaderCell.js";
4
+ import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
5
+ import { getColumnScope, getColumnMeasureIdentifier, getPivotAttributeDescriptors, isAggregableColumnDefinition, } from "./utils/common.js";
6
+ import { useIsTransposed } from "../../hooks/shared/useIsTransposed.js";
7
+ /**
8
+ * Renderer for measure header.
9
+ */
10
+ export function MeasureHeader(params) {
11
+ const isTransposed = useIsTransposed();
12
+ const colDef = params.column.getColDef();
13
+ const columnScope = getColumnScope(colDef.context.columnDefinition);
14
+ const pivotAttributeDescriptors = getPivotAttributeDescriptors(columnScope);
15
+ const measureIdentifier = getColumnMeasureIdentifier(columnScope);
16
+ const allowAggregations = isAggregableColumnDefinition(colDef.context.columnDefinition) && !isTransposed;
17
+ const allowTextWrapping = true;
18
+ const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, measureIdentifier ? [measureIdentifier] : [], pivotAttributeDescriptors, params.api);
19
+ return (React.createElement(HeaderCell, { displayName: params.displayName, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, gridApi: params.api }));
20
+ }
21
+ //# sourceMappingURL=MeasureHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeasureHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACH,cAAc,EACd,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0B;IACpD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAqB,CAAC;IAE5D,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpE,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC5E,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;IACzG,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EAC5C,yBAAyB,EACzB,MAAM,CAAC,GAAG,CACb,CAAC;IAEN,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,EACpD,OAAO,EAAE,MAAM,CAAC,GAAG,GACrB,CACL,CAAC;AACN,CAAC"}
@@ -5,8 +5,8 @@ interface IHeaderGroupCellProps extends AgGridHeaderGroupParams {
5
5
  pivotGroupDepth?: number;
6
6
  }
7
7
  /**
8
- * Cell renderer for pivot group header.
8
+ * Renderer for pivot group header.
9
9
  */
10
- export declare function PivotGroupHeaderCell(params: IHeaderGroupCellProps): string | React.JSX.Element;
10
+ export declare function PivotGroupHeader(params: IHeaderGroupCellProps): React.JSX.Element;
11
11
  export {};
12
- //# sourceMappingURL=PivotGroupHeaderCell.d.ts.map
12
+ //# sourceMappingURL=PivotGroupHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PivotGroupHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/PivotGroupHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAwB,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAUtF,UAAU,qBAAsB,SAAQ,uBAAuB;IAC3D,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,qBA+B7D"}
@@ -0,0 +1,22 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { getColumnScope, getPivotAttributeDescriptors, isAggregableColumnDefinition, } from "./utils/common.js";
4
+ import { useHeaderMenu } from "./hooks/useHeaderMenu.js";
5
+ import { HeaderCell } from "./HeaderCell/HeaderCell.js";
6
+ import { useIsTransposed } from "../../hooks/shared/useIsTransposed.js";
7
+ /**
8
+ * Renderer for pivot group header.
9
+ */
10
+ export function PivotGroupHeader(params) {
11
+ const isTransposed = useIsTransposed();
12
+ const colGroupDef = params.columnGroup.getColGroupDef();
13
+ const columnScope = getColumnScope(colGroupDef.context.columnDefinition);
14
+ const pivotAttributeDescriptors = getPivotAttributeDescriptors(columnScope);
15
+ const allowAggregations = params.pivotGroupDepth !== 0 && // Not description level of the pivoting group
16
+ isAggregableColumnDefinition(colGroupDef.context.columnDefinition) &&
17
+ !isTransposed;
18
+ const allowTextWrapping = true;
19
+ const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenu(allowAggregations, allowTextWrapping, params.measureIdentifiers, pivotAttributeDescriptors, params.api);
20
+ return (React.createElement(HeaderCell, { displayName: params.displayName, aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick }));
21
+ }
22
+ //# sourceMappingURL=PivotGroupHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PivotGroupHeader.js","sourceRoot":"","sources":["../../../../src/next/components/Header/PivotGroupHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,cAAc,EACd,4BAA4B,EAC5B,4BAA4B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAOxE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC1D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAA0B,CAAC;IAEhF,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzE,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE5E,MAAM,iBAAiB,GACnB,MAAM,CAAC,eAAe,KAAK,CAAC,IAAI,8CAA8C;QAC9E,4BAA4B,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAClE,CAAC,YAAY,CAAC;IAClB,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAE/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,aAAa,CACT,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,CAAC,kBAAkB,EACzB,yBAAyB,EACzB,MAAM,CAAC,GAAG,CACb,CAAC;IAEN,OAAO,CACH,oBAAC,UAAU,IACP,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,uBAAuB,EAAE,2BAA2B,EACpD,uBAAuB,EAAE,2BAA2B,GACtD,CACL,CAAC;AACN,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { IAttributeDescriptor } from "@gooddata/sdk-model";
2
+ import { AgGridApi } from "../../../types/agGrid.js";
3
+ /**
4
+ * Hook for header cell components that handles menu item filtering.
5
+ *
6
+ * @param allowAggregations - Whether aggregation menu items should be included
7
+ * @param allowTextWrapping - Whether text wrapping menu items should be included
8
+ * @param measureIdentifiers - Array of measure identifiers for the cell
9
+ * @param pivotAttributeDescriptors - Array of pivot attribute descriptors
10
+ * @param gridApi - Optional ag-grid API for checking current state
11
+ * @returns Filtered menu items and handlers based on permissions
12
+ */
13
+ export declare function useHeaderMenu(allowAggregations: boolean, allowTextWrapping: boolean, measureIdentifiers?: string[], pivotAttributeDescriptors?: IAttributeDescriptor[], gridApi?: AgGridApi): {
14
+ aggregationsItems: import("../../../types/menu.js").IAggregationsMenuItem[];
15
+ textWrappingItems: import("../../../types/menu.js").ITextWrappingMenuItem[];
16
+ handleAggregationsItemClick: (item: import("../../../types/menu.js").IAggregationsSubMenuItem) => void;
17
+ handleTextWrappingItemClick: (item: import("../../../types/menu.js").ITextWrappingMenuItem) => void;
18
+ };
19
+ //# sourceMappingURL=useHeaderMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderMenu.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/hooks/useHeaderMenu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,iBAAiB,EAAE,OAAO,EAC1B,iBAAiB,EAAE,OAAO,EAC1B,kBAAkB,GAAE,MAAM,EAAO,EACjC,yBAAyB,GAAE,oBAAoB,EAAO,EACtD,OAAO,CAAC,EAAE,SAAS;;;;;EActB"}
@@ -0,0 +1,24 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useHeaderMenuProps } from "./useHeaderMenuProps.js";
3
+ /**
4
+ * Hook for header cell components that handles menu item filtering.
5
+ *
6
+ * @param allowAggregations - Whether aggregation menu items should be included
7
+ * @param allowTextWrapping - Whether text wrapping menu items should be included
8
+ * @param measureIdentifiers - Array of measure identifiers for the cell
9
+ * @param pivotAttributeDescriptors - Array of pivot attribute descriptors
10
+ * @param gridApi - Optional ag-grid API for checking current state
11
+ * @returns Filtered menu items and handlers based on permissions
12
+ */
13
+ export function useHeaderMenu(allowAggregations, allowTextWrapping, measureIdentifiers = [], pivotAttributeDescriptors = [], gridApi) {
14
+ const { aggregationsItems, textWrappingItems, handleAggregationsItemClick, handleTextWrappingItemClick } = useHeaderMenuProps(measureIdentifiers, pivotAttributeDescriptors, gridApi);
15
+ const sanitizedAggregationsItems = allowAggregations ? aggregationsItems : [];
16
+ const sanitizedTextWrappingItems = allowTextWrapping ? textWrappingItems : [];
17
+ return {
18
+ aggregationsItems: sanitizedAggregationsItems,
19
+ textWrappingItems: sanitizedTextWrappingItems,
20
+ handleAggregationsItemClick,
21
+ handleTextWrappingItemClick,
22
+ };
23
+ }
24
+ //# sourceMappingURL=useHeaderMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderMenu.js","sourceRoot":"","sources":["../../../../../src/next/components/Header/hooks/useHeaderMenu.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CACzB,iBAA0B,EAC1B,iBAA0B,EAC1B,qBAA+B,EAAE,EACjC,4BAAoD,EAAE,EACtD,OAAmB;IAEnB,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,GACpG,kBAAkB,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAE/E,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,OAAO;QACH,iBAAiB,EAAE,0BAA0B;QAC7C,iBAAiB,EAAE,0BAA0B;QAC7C,2BAA2B;QAC3B,2BAA2B;KAC9B,CAAC;AACN,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { IAttributeDescriptor } from "@gooddata/sdk-model";
2
+ import { IAggregationsSubMenuItem, ITextWrappingMenuItem } from "../../../types/menu.js";
3
+ import { AgGridApi } from "../../../types/agGrid.js";
4
+ /**
5
+ * Hook for header cell components that handles menu items and callbacks.
6
+ *
7
+ * @param measureIdentifiers - Array of measure identifiers for the cell
8
+ * @param pivotAttributeDescriptors - Array of pivot attribute descriptors
9
+ * @param gridApi - Optional ag-grid API for checking current text wrapping state
10
+ * @returns Menu items and callbacks
11
+ */
12
+ export declare const useHeaderMenuProps: (measureIdentifiers: string[], pivotAttributeDescriptors: IAttributeDescriptor[], gridApi?: AgGridApi) => {
13
+ aggregationsItems: import("../../../types/menu.js").IAggregationsMenuItem[];
14
+ handleAggregationsItemClick: (item: IAggregationsSubMenuItem) => void;
15
+ textWrappingItems: ITextWrappingMenuItem[];
16
+ handleTextWrappingItemClick: (item: ITextWrappingMenuItem) => void;
17
+ };
18
+ //# sourceMappingURL=useHeaderMenuProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderMenuProps.d.ts","sourceRoot":"","sources":["../../../../../src/next/components/Header/hooks/useHeaderMenuProps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAyC,MAAM,qBAAqB,CAAC;AAKlG,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAMzF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC3B,oBAAoB,MAAM,EAAE,EAC5B,2BAA2B,oBAAoB,EAAE,EACjD,UAAU,SAAS;;wCA6BwB,wBAAwB;;wCASxB,qBAAqB;CAwBnE,CAAC"}