@gooddata/sdk-ui-pivot 11.2.0-alpha.1 → 11.2.0-alpha.3
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.
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +4 -0
- package/esm/locales.js.map +1 -1
- package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -1
- package/esm/next/components/Header/AttributeHeader.js +7 -6
- package/esm/next/components/Header/AttributeHeader.js.map +1 -1
- package/esm/next/components/Header/EmptyMeasureGroupHeader.d.ts +1 -2
- package/esm/next/components/Header/EmptyMeasureGroupHeader.d.ts.map +1 -1
- package/esm/next/components/Header/EmptyMeasureGroupHeader.js +11 -4
- package/esm/next/components/Header/EmptyMeasureGroupHeader.js.map +1 -1
- package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts +3 -1
- package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts.map +1 -1
- package/esm/next/components/Header/HeaderCell/HeaderMenu.js +6 -3
- package/esm/next/components/Header/HeaderCell/HeaderMenu.js.map +1 -1
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts +5 -4
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.d.ts.map +1 -1
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.js +31 -2
- package/esm/next/components/Header/HeaderCell/HeaderMenuComponents.js.map +1 -1
- package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -1
- package/esm/next/components/Header/MeasureGroupHeader.js +5 -3
- package/esm/next/components/Header/MeasureGroupHeader.js.map +1 -1
- package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -1
- package/esm/next/components/Header/MeasureHeader.js +11 -6
- package/esm/next/components/Header/MeasureHeader.js.map +1 -1
- package/esm/next/components/Header/PivotGroupHeader.d.ts.map +1 -1
- package/esm/next/components/Header/PivotGroupHeader.js +23 -4
- package/esm/next/components/Header/PivotGroupHeader.js.map +1 -1
- package/esm/next/components/Header/SortIndicator.d.ts +14 -0
- package/esm/next/components/Header/SortIndicator.d.ts.map +1 -0
- package/esm/next/components/Header/SortIndicator.js +8 -0
- package/esm/next/components/Header/SortIndicator.js.map +1 -0
- package/esm/next/constants/agGridDefaultProps.d.ts.map +1 -1
- package/esm/next/constants/agGridDefaultProps.js +2 -0
- package/esm/next/constants/agGridDefaultProps.js.map +1 -1
- package/esm/next/features/aggregations/applyTotalsToExecutionDef.d.ts.map +1 -1
- package/esm/next/features/aggregations/applyTotalsToExecutionDef.js +3 -2
- package/esm/next/features/aggregations/applyTotalsToExecutionDef.js.map +1 -1
- package/esm/next/features/aggregations/ordering.d.ts +17 -0
- package/esm/next/features/aggregations/ordering.d.ts.map +1 -0
- package/esm/next/features/aggregations/ordering.js +21 -0
- package/esm/next/features/aggregations/ordering.js.map +1 -0
- package/esm/next/features/drilling/events.d.ts +9 -0
- package/esm/next/features/drilling/events.d.ts.map +1 -0
- package/esm/next/features/drilling/events.js +14 -0
- package/esm/next/features/drilling/events.js.map +1 -0
- package/esm/next/features/drilling/headerMapping.d.ts +2 -1
- package/esm/next/features/drilling/headerMapping.d.ts.map +1 -1
- package/esm/next/features/drilling/headerMapping.js +1 -1
- package/esm/next/features/drilling/headerMapping.js.map +1 -1
- package/esm/next/features/drilling/intersection.d.ts +7 -0
- package/esm/next/features/drilling/intersection.d.ts.map +1 -1
- package/esm/next/features/drilling/intersection.js +32 -2
- package/esm/next/features/drilling/intersection.js.map +1 -1
- package/esm/next/features/drilling/isDrillable.d.ts +10 -0
- package/esm/next/features/drilling/isDrillable.d.ts.map +1 -1
- package/esm/next/features/drilling/isDrillable.js +45 -1
- package/esm/next/features/drilling/isDrillable.js.map +1 -1
- package/esm/next/features/sorting/agGridSortingApi.d.ts.map +1 -1
- package/esm/next/features/sorting/agGridSortingApi.js +13 -4
- package/esm/next/features/sorting/agGridSortingApi.js.map +1 -1
- package/esm/next/features/sorting/applySortByToColDef.d.ts.map +1 -1
- package/esm/next/features/sorting/applySortByToColDef.js +1 -0
- package/esm/next/features/sorting/applySortByToColDef.js.map +1 -1
- package/esm/next/hooks/header/useHeaderDrilling.d.ts +18 -0
- package/esm/next/hooks/header/useHeaderDrilling.d.ts.map +1 -0
- package/esm/next/hooks/header/useHeaderDrilling.js +74 -0
- package/esm/next/hooks/header/useHeaderDrilling.js.map +1 -0
- package/esm/next/hooks/header/useHeaderGroupDrilling.d.ts +15 -0
- package/esm/next/hooks/header/useHeaderGroupDrilling.d.ts.map +1 -0
- package/esm/next/hooks/header/useHeaderGroupDrilling.js +65 -0
- package/esm/next/hooks/header/useHeaderGroupDrilling.js.map +1 -0
- package/esm/next/hooks/header/useHeaderMenu.d.ts +37 -0
- package/esm/next/hooks/header/useHeaderMenu.d.ts.map +1 -0
- package/esm/next/hooks/header/useHeaderMenu.js +65 -0
- package/esm/next/hooks/header/useHeaderMenu.js.map +1 -0
- package/esm/next/hooks/header/useHeaderMenuAggregations.d.ts +15 -0
- package/esm/next/hooks/header/useHeaderMenuAggregations.d.ts.map +1 -0
- package/esm/next/{components/Header/hooks/useHeaderMenuProps.js → hooks/header/useHeaderMenuAggregations.js} +7 -30
- package/esm/next/hooks/header/useHeaderMenuAggregations.js.map +1 -0
- package/esm/next/hooks/header/useHeaderMenuSorting.d.ts +13 -0
- package/esm/next/hooks/header/useHeaderMenuSorting.d.ts.map +1 -0
- package/esm/next/hooks/header/useHeaderMenuSorting.js +69 -0
- package/esm/next/hooks/header/useHeaderMenuSorting.js.map +1 -0
- package/esm/next/hooks/header/useHeaderMenuTextWrapping.d.ts +14 -0
- package/esm/next/hooks/header/useHeaderMenuTextWrapping.d.ts.map +1 -0
- package/esm/next/hooks/header/useHeaderMenuTextWrapping.js +43 -0
- package/esm/next/hooks/header/useHeaderMenuTextWrapping.js.map +1 -0
- package/esm/next/hooks/sorting/useSyncSort.d.ts.map +1 -1
- package/esm/next/hooks/sorting/useSyncSort.js +8 -2
- package/esm/next/hooks/sorting/useSyncSort.js.map +1 -1
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts +1 -1
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.d.ts.map +1 -1
- package/esm/next/hooks/textWrapping/useGetDefaultTextWrapping.js.map +1 -1
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts +1 -1
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.d.ts.map +1 -1
- package/esm/next/hooks/textWrapping/useUpdateTextWrapping.js.map +1 -1
- package/esm/next/hooks/totals/useUpdateTotals.d.ts.map +1 -1
- package/esm/next/hooks/totals/useUpdateTotals.js +7 -4
- package/esm/next/hooks/totals/useUpdateTotals.js.map +1 -1
- package/esm/next/hooks/useDrillingProps.d.ts.map +1 -1
- package/esm/next/hooks/useDrillingProps.js +2 -5
- package/esm/next/hooks/useDrillingProps.js.map +1 -1
- package/esm/next/types/agGrid.d.ts +8 -0
- package/esm/next/types/agGrid.d.ts.map +1 -1
- package/esm/next/types/agGrid.js +11 -1
- package/esm/next/types/agGrid.js.map +1 -1
- package/esm/next/types/menu.d.ts +12 -0
- package/esm/next/types/menu.d.ts.map +1 -1
- package/esm/next/types/menu.js +1 -0
- package/esm/next/types/menu.js.map +1 -1
- package/package.json +10 -10
- package/styles/css/main.css +19 -1
- package/styles/css/main.css.map +1 -1
- package/styles/css/pivotTableNext.css +19 -1
- package/styles/css/pivotTableNext.css.map +1 -1
- package/styles/scss/pivotTableNext.scss +22 -1
- package/esm/next/components/Header/hooks/useHeaderMenu.d.ts +0 -19
- package/esm/next/components/Header/hooks/useHeaderMenu.d.ts.map +0 -1
- package/esm/next/components/Header/hooks/useHeaderMenu.js +0 -24
- package/esm/next/components/Header/hooks/useHeaderMenu.js.map +0 -1
- package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts +0 -18
- package/esm/next/components/Header/hooks/useHeaderMenuProps.d.ts.map +0 -1
- package/esm/next/components/Header/hooks/useHeaderMenuProps.js.map +0 -1
- package/esm/next/components/Header/hooks/useHeaderSorting.d.ts +0 -16
- package/esm/next/components/Header/hooks/useHeaderSorting.d.ts.map +0 -1
- package/esm/next/components/Header/hooks/useHeaderSorting.js +0 -48
- package/esm/next/components/Header/hooks/useHeaderSorting.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyTotalsToExecutionDef.js","sourceRoot":"","sources":["../../../../src/next/features/aggregations/applyTotalsToExecutionDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;
|
|
1
|
+
{"version":3,"file":"applyTotalsToExecutionDef.js","sourceRoot":"","sources":["../../../../src/next/features/aggregations/applyTotalsToExecutionDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAsB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAClC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAmE,EAAE,EAAE,CAC/F,CAAC,mBAAmD,EAAkC,EAAE;IACpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC;IAChF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAEzE,MAAM,SAAS,GAAG,WAAW,CACzB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,mBAAmB,CAAC,CACpF,CACJ,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,mBAAmB,CAAC,CACvF,CACJ,CAAC;IAEF,OAAO;QACH,GAAG,mBAAmB;QACtB,UAAU,EAAE;YACR,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC;YAC9C,oBAAoB,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACvD;QACD,OAAO,EAAE;YACL,cAAc;YACd,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC;YACtC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC;SAC/C;KACJ,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ITotal } from "@gooddata/sdk-model";
|
|
2
|
+
/**
|
|
3
|
+
* Orders totals according to the predefined total type order.
|
|
4
|
+
*
|
|
5
|
+
* This ensures that when column and row aggregations meet at intersections,
|
|
6
|
+
* they maintain consistent ordering so that the intersection is displayed correctly.
|
|
7
|
+
* The ordering follows the same pattern as the old pivot table implementation.
|
|
8
|
+
*
|
|
9
|
+
* Ordering may be used when creating totals inside the table
|
|
10
|
+
* or when totals are provided externally.
|
|
11
|
+
*
|
|
12
|
+
* @param totals - Array of totals to order
|
|
13
|
+
* @returns Ordered array of totals
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare function orderTotals(totals: ITotal[]): ITotal[];
|
|
17
|
+
//# sourceMappingURL=ordering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../../../src/next/features/aggregations/ordering.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAItD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { sortBy } from "lodash-es";
|
|
3
|
+
import { DEFAULT_TOTAL_FUNCTIONS } from "../../constants/internal.js";
|
|
4
|
+
/**
|
|
5
|
+
* Orders totals according to the predefined total type order.
|
|
6
|
+
*
|
|
7
|
+
* This ensures that when column and row aggregations meet at intersections,
|
|
8
|
+
* they maintain consistent ordering so that the intersection is displayed correctly.
|
|
9
|
+
* The ordering follows the same pattern as the old pivot table implementation.
|
|
10
|
+
*
|
|
11
|
+
* Ordering may be used when creating totals inside the table
|
|
12
|
+
* or when totals are provided externally.
|
|
13
|
+
*
|
|
14
|
+
* @param totals - Array of totals to order
|
|
15
|
+
* @returns Ordered array of totals
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export function orderTotals(totals) {
|
|
19
|
+
return sortBy(totals, (total) => DEFAULT_TOTAL_FUNCTIONS.findIndex((rankedItem) => rankedItem === total.type));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ordering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../../../src/next/features/aggregations/ordering.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgB;IACxC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5B,uBAAuB,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,CAAC,CAC/E,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IDrillEvent } from "@gooddata/sdk-ui";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a custom drill event for embedded scenarios
|
|
4
|
+
*
|
|
5
|
+
* @param drillEvent - The drill event to create
|
|
6
|
+
* @returns The custom drill event
|
|
7
|
+
*/
|
|
8
|
+
export declare const createCustomDrillEvent: (drillEvent: IDrillEvent) => CustomEvent<IDrillEvent>;
|
|
9
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,YAAY,WAAW,6BAK7D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* Creates a custom drill event for embedded scenarios
|
|
4
|
+
*
|
|
5
|
+
* @param drillEvent - The drill event to create
|
|
6
|
+
* @returns The custom drill event
|
|
7
|
+
*/
|
|
8
|
+
export const createCustomDrillEvent = (drillEvent) => {
|
|
9
|
+
return new CustomEvent("drill", {
|
|
10
|
+
detail: drillEvent,
|
|
11
|
+
bubbles: true,
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/events.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAIhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAuB,EAAE,EAAE;IAC9D,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE;QAC5B,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { IMappingHeader, ITableColumnDefinition, ITableRowDefinition } from "@gooddata/sdk-ui";
|
|
1
|
+
import { IMappingHeader, ITableColumnDefinition, ITableDataHeaderScope, ITableRowDefinition } from "@gooddata/sdk-ui";
|
|
2
|
+
export declare function extractMappingHeadersUpToPosition(scopes: ITableDataHeaderScope[], position: number): IMappingHeader[];
|
|
2
3
|
export declare function extractAllColumnMappingHeaders(columnDefinition: ITableColumnDefinition): IMappingHeader[];
|
|
3
4
|
export declare function extractRowMappingHeadersAtPosition(rowDefinition: ITableRowDefinition, position: number): IMappingHeader[];
|
|
4
5
|
export declare function extractRowMappingHeadersUpToPosition(rowDefinition: ITableRowDefinition, position: number): IMappingHeader[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerMapping.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"headerMapping.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,qBAAqB,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAgBlB;AAqCD,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,cAAc,EAAE,CAUzG;AAED,wBAAgB,kCAAkC,CAC9C,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAMlB;AAED,wBAAgB,oCAAoC,CAChD,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACjB,cAAc,EAAE,CAMlB;AAED,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAMhG;AAED,wBAAgB,kCAAkC,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAQvG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
|
2
2
|
import { isMeasureDescriptor } from "@gooddata/sdk-model";
|
|
3
|
-
function extractMappingHeadersUpToPosition(scopes, position) {
|
|
3
|
+
export function extractMappingHeadersUpToPosition(scopes, position) {
|
|
4
4
|
return scopes.flatMap((scope, scopeIndex) => {
|
|
5
5
|
if (scopeIndex > position) {
|
|
6
6
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerMapping.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"AAAA,gCAAgC;
|
|
1
|
+
{"version":3,"file":"headerMapping.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/headerMapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,4 +9,11 @@ import { AgGridRowData } from "../../types/internal.js";
|
|
|
9
9
|
* @returns Array of drill intersection elements
|
|
10
10
|
*/
|
|
11
11
|
export declare function createDrillIntersection(colDef: AgGridColumnDef, data: AgGridRowData): IDrillEventIntersectionElement[];
|
|
12
|
+
/**
|
|
13
|
+
* Creates drill intersection elements for a header cell
|
|
14
|
+
*
|
|
15
|
+
* @param colDef - The column definition from ag-grid
|
|
16
|
+
* @returns Array of drill intersection elements
|
|
17
|
+
*/
|
|
18
|
+
export declare function createHeaderDrillIntersection(colDef: AgGridColumnDef): IDrillEventIntersectionElement[];
|
|
12
19
|
//# sourceMappingURL=intersection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,8BAA8B,EAIjC,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAgD,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAuExD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,GACpB,8BAA8B,EAAE,CAIlC;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,8BAA8B,EAAE,CAIvG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
|
2
|
-
import { getDrillIntersection } from "@gooddata/sdk-ui";
|
|
3
|
-
import { extractAllColumnMappingHeaders, extractRowMappingHeadersUpToPosition } from "./headerMapping.js";
|
|
2
|
+
import { getDrillIntersection, isValueColumnDefinition, } from "@gooddata/sdk-ui";
|
|
3
|
+
import { extractAllColumnMappingHeaders, extractMappingHeadersUpToPosition, extractRowMappingHeadersUpToPosition, } from "./headerMapping.js";
|
|
4
|
+
import { isAgGridColumnGroupDef } from "../../types/agGrid.js";
|
|
4
5
|
/**
|
|
5
6
|
* Creates mapping headers for drill intersection for a cell
|
|
6
7
|
*
|
|
@@ -29,6 +30,25 @@ function createCellMappingHeadersForIntersection(colDef, data) {
|
|
|
29
30
|
}
|
|
30
31
|
return mappingHeaders;
|
|
31
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates mapping headers for drill intersection for a header cell
|
|
35
|
+
*
|
|
36
|
+
* @param colDef - The column definition from ag-grid
|
|
37
|
+
* @returns Array of mapping headers
|
|
38
|
+
*/
|
|
39
|
+
function createHeaderMappingHeadersForIntersection(colDef) {
|
|
40
|
+
const columnDefinition = colDef.context?.columnDefinition;
|
|
41
|
+
if (!columnDefinition || !isValueColumnDefinition(columnDefinition)) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const columnScope = columnDefinition.columnScope;
|
|
45
|
+
// With header groups, we use depth to determine which attributes to use for intersection
|
|
46
|
+
// With regular columns, we use all column attributes
|
|
47
|
+
const position = isAgGridColumnGroupDef(colDef)
|
|
48
|
+
? colDef.headerGroupComponentParams?.pivotGroupDepth
|
|
49
|
+
: columnScope.length - 1;
|
|
50
|
+
return extractMappingHeadersUpToPosition(columnDefinition.columnScope, position);
|
|
51
|
+
}
|
|
32
52
|
/**
|
|
33
53
|
* Creates drill intersection elements for a cell
|
|
34
54
|
*
|
|
@@ -40,4 +60,14 @@ export function createDrillIntersection(colDef, data) {
|
|
|
40
60
|
const mappingHeaders = createCellMappingHeadersForIntersection(colDef, data);
|
|
41
61
|
return getDrillIntersection(mappingHeaders);
|
|
42
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates drill intersection elements for a header cell
|
|
65
|
+
*
|
|
66
|
+
* @param colDef - The column definition from ag-grid
|
|
67
|
+
* @returns Array of drill intersection elements
|
|
68
|
+
*/
|
|
69
|
+
export function createHeaderDrillIntersection(colDef) {
|
|
70
|
+
const mappingHeaders = createHeaderMappingHeadersForIntersection(colDef);
|
|
71
|
+
return getDrillIntersection(mappingHeaders);
|
|
72
|
+
}
|
|
43
73
|
//# sourceMappingURL=intersection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AAAA,gCAAgC;
|
|
1
|
+
{"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/intersection.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAGH,oBAAoB,EACpB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,8BAA8B,EAC9B,iCAAiC,EACjC,oCAAoC,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAyC,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGtG;;;;;;GAMG;AACH,SAAS,uCAAuC,CAC5C,MAAuB,EACvB,IAAmB;IAEnB,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAElD,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,cAAc,CAAC,IAAI,CACf,GAAG,oCAAoC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACvF,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,CACf,GAAG,oCAAoC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACvF,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,yCAAyC,CAC9C,MAA8C;IAE9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAE1D,IAAI,CAAC,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAEjD,yFAAyF;IACzF,qDAAqD;IACrD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,0BAA0B,EAAE,eAAe;QACpD,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7B,OAAO,iCAAiC,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACnC,MAAuB,EACvB,IAAmB;IAEnB,MAAM,cAAc,GAAG,uCAAuC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7E,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAuB;IACjE,MAAM,cAAc,GAAG,yCAAyC,CAAC,MAAM,CAAC,CAAC;IAEzE,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -12,4 +12,14 @@ import { AgGridRowData } from "../../types/internal.js";
|
|
|
12
12
|
* @returns True if the cell is drillable, false otherwise
|
|
13
13
|
*/
|
|
14
14
|
export declare function isCellDrillable(colDef: AgGridColumnDef, data: AgGridRowData, drillableItems: ExplicitDrill[], dataViewFacade?: DataViewFacade): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a header cell is drillable based on drillable items and column definition
|
|
17
|
+
*
|
|
18
|
+
* @param colDef - The column definition from ag-grid
|
|
19
|
+
* @param drillableItems - Array of drillable items to check against
|
|
20
|
+
* @param dataViewFacade - Current data view facade for context
|
|
21
|
+
* @param columnHeadersPosition - Position of column headers ("left" or "top")
|
|
22
|
+
* @returns True if the header cell is drillable, false otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare function isHeaderCellDrillable(colDef: AgGridColumnDef, drillableItems: ExplicitDrill[], dataViewFacade?: DataViewFacade, columnHeadersPosition?: string): boolean;
|
|
15
25
|
//# sourceMappingURL=isDrillable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isDrillable.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isDrillable.d.ts","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,cAAc,EACd,aAAa,EAKhB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgDxD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,aAAa,EACnB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAYT;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,CAAC,EAAE,cAAc,EAC/B,qBAAqB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAkBT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
|
2
|
-
import { convertDrillableItemsToPredicates, isSomeHeaderPredicateMatched, } from "@gooddata/sdk-ui";
|
|
2
|
+
import { convertDrillableItemsToPredicates, isSomeHeaderPredicateMatched, isValueColumnDefinition, } from "@gooddata/sdk-ui";
|
|
3
3
|
import { extractAllColumnMappingHeaders, extractAllRowMeasureMappingHeaders, extractRowMappingHeadersAtPosition, } from "./headerMapping.js";
|
|
4
4
|
/**
|
|
5
5
|
* Extracts headers for drill intersection for a cell
|
|
@@ -53,4 +53,48 @@ export function isCellDrillable(colDef, data, drillableItems, dataViewFacade) {
|
|
|
53
53
|
const drillablePredicates = convertDrillableItemsToPredicates(drillableItems);
|
|
54
54
|
return mappingHeaders.some((header) => isSomeHeaderPredicateMatched(drillablePredicates, header, dataViewFacade));
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Extracts headers for drill intersection for a header cell
|
|
58
|
+
*
|
|
59
|
+
* @param colDef - The column definition from ag-grid
|
|
60
|
+
* @param isTransposed - Whether the table is transposed
|
|
61
|
+
* @param columnHeadersPosition - Position of column headers
|
|
62
|
+
* @returns Array of mapping headers
|
|
63
|
+
*/
|
|
64
|
+
function getHeaderCellDrillHeaders(colDef, isTransposed, columnHeadersPosition) {
|
|
65
|
+
// Header drilling only works in transposed mode with headers on left
|
|
66
|
+
if (!isTransposed || columnHeadersPosition !== "left") {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
const columnDefinition = colDef.context?.columnDefinition;
|
|
70
|
+
if (!columnDefinition) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
if (!isValueColumnDefinition(columnDefinition)) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
// For all valid header types, use the standard column mapping extraction
|
|
77
|
+
return extractAllColumnMappingHeaders(columnDefinition);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Checks if a header cell is drillable based on drillable items and column definition
|
|
81
|
+
*
|
|
82
|
+
* @param colDef - The column definition from ag-grid
|
|
83
|
+
* @param drillableItems - Array of drillable items to check against
|
|
84
|
+
* @param dataViewFacade - Current data view facade for context
|
|
85
|
+
* @param columnHeadersPosition - Position of column headers ("left" or "top")
|
|
86
|
+
* @returns True if the header cell is drillable, false otherwise
|
|
87
|
+
*/
|
|
88
|
+
export function isHeaderCellDrillable(colDef, drillableItems, dataViewFacade, columnHeadersPosition) {
|
|
89
|
+
if (!dataViewFacade || !columnHeadersPosition) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const isTransposed = dataViewFacade.data().asTable().isTransposed;
|
|
93
|
+
const mappingHeaders = getHeaderCellDrillHeaders(colDef, isTransposed, columnHeadersPosition);
|
|
94
|
+
if (mappingHeaders.length === 0) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
const drillablePredicates = convertDrillableItemsToPredicates(drillableItems);
|
|
98
|
+
return mappingHeaders.some((header) => isSomeHeaderPredicateMatched(drillablePredicates, header, dataViewFacade));
|
|
99
|
+
}
|
|
56
100
|
//# sourceMappingURL=isDrillable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isDrillable.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"AAAA,gCAAgC;
|
|
1
|
+
{"version":3,"file":"isDrillable.js","sourceRoot":"","sources":["../../../../src/next/features/drilling/isDrillable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agGridSortingApi.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agGridSortingApi.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,aAAa,EAAE,CAmBhE"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
1
2
|
/**
|
|
2
3
|
* Get the current sort model from the grid API
|
|
3
4
|
*
|
|
4
5
|
* @alpha
|
|
5
6
|
*/
|
|
6
7
|
export function getSortModel(gridApi) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const sortedColumns = gridApi.getColumnState().filter((col) => col.sort !== null);
|
|
9
|
+
// Check if any column has sortIndex to preserve multi-sort order
|
|
10
|
+
const hasSortIndex = sortedColumns.some((col) => col.sortIndex !== null);
|
|
11
|
+
if (hasSortIndex) {
|
|
12
|
+
// Sort by sortIndex to preserve the order of multi-sort
|
|
13
|
+
sortedColumns.sort((a, b) => {
|
|
14
|
+
const aIndex = a.sortIndex ?? Number.MAX_SAFE_INTEGER;
|
|
15
|
+
const bIndex = b.sortIndex ?? Number.MAX_SAFE_INTEGER;
|
|
16
|
+
return aIndex - bIndex;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return sortedColumns.map((col) => ({
|
|
11
20
|
colId: col.colId,
|
|
12
21
|
sort: col.sort,
|
|
13
22
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agGridSortingApi.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agGridSortingApi.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/agGridSortingApi.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAMhC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkB;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAElF,iEAAiE;IACjE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IAEzE,IAAI,YAAY,EAAE,CAAC;QACf,wDAAwD;QACxD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;YACtD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;YACtD,OAAO,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,GAAG,CAAC,KAAM;QACjB,IAAI,EAAE,GAAG,CAAC,IAAK;KAClB,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applySortByToColDef.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"applySortByToColDef.d.ts","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC3B,QAAQ,SAAS,EAAE,MACnB,QAAQ,eAAe,KAAG,eAgB1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applySortByToColDef.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;
|
|
1
|
+
{"version":3,"file":"applySortByToColDef.js","sourceRoot":"","sources":["../../../../src/next/features/sorting/applySortByToColDef.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAa,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC5B,CAAC,MAAmB,EAAE,EAAE,CACxB,CAAC,MAAuB,EAAmB,EAAE;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAEjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO;QACH,GAAG,MAAM;QACT,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;KACzC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MouseEvent } from "react";
|
|
2
|
+
import { AgGridHeaderParams } from "../../types/agGrid.js";
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that provides header drilling functionality.
|
|
5
|
+
* Returns a click handler that can be used alongside sorting functionality.
|
|
6
|
+
*
|
|
7
|
+
* @param params - AgGrid header parameters
|
|
8
|
+
* @returns Object with header drilling functions
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function useHeaderDrilling(params: AgGridHeaderParams | null): {
|
|
12
|
+
handleHeaderDrill: (event: MouseEvent) => boolean;
|
|
13
|
+
isDrillable: boolean;
|
|
14
|
+
} | {
|
|
15
|
+
handleHeaderDrill: () => void;
|
|
16
|
+
isDrillable: boolean;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=useHeaderDrilling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderDrilling.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderDrilling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAwB,MAAM,OAAO,CAAC;AAczD,OAAO,EAAmB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;+BAqBnD,UAAU;;;;;EA+CzB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { VisualizationTypes, isValueColumnDefinition, } from "@gooddata/sdk-ui";
|
|
4
|
+
import { useCurrentDataView } from "../../context/CurrentDataViewContext.js";
|
|
5
|
+
import { usePivotTableProps } from "../../context/PivotTablePropsContext.js";
|
|
6
|
+
import { createCustomDrillEvent } from "../../features/drilling/events.js";
|
|
7
|
+
import { createHeaderDrillIntersection } from "../../features/drilling/intersection.js";
|
|
8
|
+
import { isHeaderCellDrillable } from "../../features/drilling/isDrillable.js";
|
|
9
|
+
/**
|
|
10
|
+
* Custom hook that provides header drilling functionality.
|
|
11
|
+
* Returns a click handler that can be used alongside sorting functionality.
|
|
12
|
+
*
|
|
13
|
+
* @param params - AgGrid header parameters
|
|
14
|
+
* @returns Object with header drilling functions
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export function useHeaderDrilling(params) {
|
|
18
|
+
const { drillableItems, onDrill, config } = usePivotTableProps();
|
|
19
|
+
const { currentDataView } = useCurrentDataView();
|
|
20
|
+
/**
|
|
21
|
+
* Check if the header cell is drillable (memoized)
|
|
22
|
+
*/
|
|
23
|
+
const isDrillable = useMemo(() => {
|
|
24
|
+
if (!drillableItems.length || !currentDataView || !params) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const colDef = params.column.getColDef();
|
|
28
|
+
return isHeaderCellDrillable(colDef, drillableItems, currentDataView, config.columnHeadersPosition);
|
|
29
|
+
}, [drillableItems, currentDataView, params, config.columnHeadersPosition]);
|
|
30
|
+
/**
|
|
31
|
+
* Handle header click for drilling
|
|
32
|
+
* This function should be called after sorting logic to avoid interference
|
|
33
|
+
*/
|
|
34
|
+
const handleHeaderDrill = useCallback((event) => {
|
|
35
|
+
if (!onDrill || !isDrillable || !currentDataView || !params) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const colDef = params.column.getColDef();
|
|
39
|
+
const columnDefinition = colDef.context?.columnDefinition;
|
|
40
|
+
const rowIndex = isValueColumnDefinition(columnDefinition)
|
|
41
|
+
? columnDefinition.columnScope.length - 1
|
|
42
|
+
: -1;
|
|
43
|
+
// Create drill context for header
|
|
44
|
+
const drillContext = {
|
|
45
|
+
type: VisualizationTypes.TABLE,
|
|
46
|
+
element: "cell",
|
|
47
|
+
columnIndex: colDef.context?.columnDefinition.columnIndex ?? 0,
|
|
48
|
+
rowIndex,
|
|
49
|
+
row: [], // No row data for header
|
|
50
|
+
intersection: createHeaderDrillIntersection(colDef),
|
|
51
|
+
};
|
|
52
|
+
// Create drill event
|
|
53
|
+
const drillEvent = {
|
|
54
|
+
dataView: currentDataView.dataView,
|
|
55
|
+
drillContext,
|
|
56
|
+
};
|
|
57
|
+
if (onDrill(drillEvent)) {
|
|
58
|
+
const customEvent = createCustomDrillEvent(drillEvent);
|
|
59
|
+
event.target?.dispatchEvent(customEvent);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}, [onDrill, isDrillable, params, currentDataView]);
|
|
64
|
+
return params
|
|
65
|
+
? {
|
|
66
|
+
handleHeaderDrill,
|
|
67
|
+
isDrillable,
|
|
68
|
+
}
|
|
69
|
+
: {
|
|
70
|
+
handleHeaderDrill: () => { },
|
|
71
|
+
isDrillable: false,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=useHeaderDrilling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderDrilling.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderDrilling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MouseEvent } from "react";
|
|
2
|
+
import { AgGridHeaderGroupParams } from "../../types/agGrid.js";
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that provides header drilling functionality for group headers.
|
|
5
|
+
* Returns a click handler that can be used for group header drilling.
|
|
6
|
+
*
|
|
7
|
+
* @param params - AgGrid header group parameters
|
|
8
|
+
* @returns Object with header drilling functions
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function useHeaderGroupDrilling(params: AgGridHeaderGroupParams): {
|
|
12
|
+
handleHeaderDrill: (event: MouseEvent) => boolean;
|
|
13
|
+
isDrillable: boolean;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useHeaderGroupDrilling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderGroupDrilling.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderGroupDrilling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAwB,MAAM,OAAO,CAAC;AASzD,OAAO,EAAwB,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEtF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,uBAAuB;+BAyBtD,UAAU;;EAuCzB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { useCallback, useMemo } from "react";
|
|
3
|
+
import { VisualizationTypes } from "@gooddata/sdk-ui";
|
|
4
|
+
import { useCurrentDataView } from "../../context/CurrentDataViewContext.js";
|
|
5
|
+
import { usePivotTableProps } from "../../context/PivotTablePropsContext.js";
|
|
6
|
+
import { createCustomDrillEvent } from "../../features/drilling/events.js";
|
|
7
|
+
import { createHeaderDrillIntersection } from "../../features/drilling/intersection.js";
|
|
8
|
+
import { isHeaderCellDrillable } from "../../features/drilling/isDrillable.js";
|
|
9
|
+
/**
|
|
10
|
+
* Custom hook that provides header drilling functionality for group headers.
|
|
11
|
+
* Returns a click handler that can be used for group header drilling.
|
|
12
|
+
*
|
|
13
|
+
* @param params - AgGrid header group parameters
|
|
14
|
+
* @returns Object with header drilling functions
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export function useHeaderGroupDrilling(params) {
|
|
18
|
+
const { drillableItems, onDrill, config } = usePivotTableProps();
|
|
19
|
+
const { currentDataView } = useCurrentDataView();
|
|
20
|
+
/**
|
|
21
|
+
* Check if the header group is drillable (memoized)
|
|
22
|
+
*/
|
|
23
|
+
const isDrillable = useMemo(() => {
|
|
24
|
+
if (!drillableItems.length || !currentDataView) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const colGroupDef = params.columnGroup.getColGroupDef();
|
|
28
|
+
return isHeaderCellDrillable(colGroupDef, drillableItems, currentDataView, config.columnHeadersPosition);
|
|
29
|
+
}, [drillableItems, currentDataView, params.columnGroup, config.columnHeadersPosition]);
|
|
30
|
+
/**
|
|
31
|
+
* Handle header group click for drilling
|
|
32
|
+
*/
|
|
33
|
+
const handleHeaderDrill = useCallback((event) => {
|
|
34
|
+
if (!onDrill || !isDrillable || !currentDataView) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const colGroupDef = params.columnGroup.getColGroupDef();
|
|
38
|
+
const rowIndex = colGroupDef.headerGroupComponentParams?.pivotGroupDepth ?? -1;
|
|
39
|
+
// Create drill context for header group
|
|
40
|
+
const drillContext = {
|
|
41
|
+
type: VisualizationTypes.TABLE,
|
|
42
|
+
element: "cell",
|
|
43
|
+
columnIndex: colGroupDef.context?.columnDefinition.columnIndex ?? 0,
|
|
44
|
+
rowIndex,
|
|
45
|
+
row: [], // No row data for header
|
|
46
|
+
intersection: createHeaderDrillIntersection(colGroupDef),
|
|
47
|
+
};
|
|
48
|
+
// Create drill event
|
|
49
|
+
const drillEvent = {
|
|
50
|
+
dataView: currentDataView.dataView,
|
|
51
|
+
drillContext,
|
|
52
|
+
};
|
|
53
|
+
if (onDrill(drillEvent)) {
|
|
54
|
+
const customEvent = createCustomDrillEvent(drillEvent);
|
|
55
|
+
event.target?.dispatchEvent(customEvent);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}, [onDrill, isDrillable, params.columnGroup, currentDataView]);
|
|
60
|
+
return {
|
|
61
|
+
handleHeaderDrill,
|
|
62
|
+
isDrillable,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=useHeaderGroupDrilling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderGroupDrilling.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderGroupDrilling.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAc,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAwC,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAG/E;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA+B;IAClE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACjE,MAAM,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEjD;;OAEG;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAA0B,CAAC;QAChF,OAAO,qBAAqB,CACxB,WAAW,EACX,cAAc,EACd,eAAe,EACf,MAAM,CAAC,qBAAqB,CAC/B,CAAC;IACN,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAExF;;OAEG;IACH,MAAM,iBAAiB,GAAG,WAAW,CACjC,CAAC,KAAiB,EAAE,EAAE;QAClB,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAA0B,CAAC;QAChF,MAAM,QAAQ,GAAG,WAAW,CAAC,0BAA0B,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;QAE/E,wCAAwC;QACxC,MAAM,YAAY,GAA4B;YAC1C,IAAI,EAAE,kBAAkB,CAAC,KAAK;YAC9B,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,WAAW,IAAI,CAAC;YACnE,QAAQ;YACR,GAAG,EAAE,EAAE,EAAE,yBAAyB;YAClC,YAAY,EAAE,6BAA6B,CAAC,WAAW,CAAC;SAC3D,CAAC;QAEF,qBAAqB;QACrB,MAAM,UAAU,GAAgB;YAC5B,QAAQ,EAAE,eAAe,CAAC,QAAQ;YAClC,YAAY;SACf,CAAC;QAEF,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YACvD,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,EACD,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAC9D,CAAC;IAEF,OAAO;QACH,iBAAiB;QACjB,WAAW;KACd,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { MouseEvent } from "react";
|
|
2
|
+
import { IAttributeDescriptor } from "@gooddata/sdk-model";
|
|
3
|
+
import { AgGridHeaderParams } from "../../types/agGrid.js";
|
|
4
|
+
/**
|
|
5
|
+
* Hook for header cell components that handles menu item filtering.
|
|
6
|
+
*
|
|
7
|
+
* @param allowAggregations - Whether aggregation menu items should be included
|
|
8
|
+
* @param allowTextWrapping - Whether text wrapping menu items should be included
|
|
9
|
+
* @param measureIdentifiers - Array of measure identifiers for the cell
|
|
10
|
+
* @param pivotAttributeDescriptors - Array of pivot attribute descriptors
|
|
11
|
+
* @param gridApi - Optional ag-grid API for checking current state
|
|
12
|
+
* @returns Filtered menu items and handlers based on permissions
|
|
13
|
+
*/
|
|
14
|
+
export declare function useHeaderMenu(options: {
|
|
15
|
+
allowAggregations: boolean;
|
|
16
|
+
allowTextWrapping: boolean;
|
|
17
|
+
allowSorting: boolean;
|
|
18
|
+
allowDrilling: boolean;
|
|
19
|
+
}, additionalContext: {
|
|
20
|
+
measureIdentifiers: string[];
|
|
21
|
+
pivotAttributeDescriptors: IAttributeDescriptor[];
|
|
22
|
+
}, agGridHeaderParams: AgGridHeaderParams | null): {
|
|
23
|
+
handleHeaderClick: (event: MouseEvent<HTMLDivElement>) => void;
|
|
24
|
+
hasMenuItems: boolean;
|
|
25
|
+
handleHeaderDrill: ((event: MouseEvent) => boolean) | (() => void);
|
|
26
|
+
isDrillable: boolean;
|
|
27
|
+
sortingItems: import("../../types/menu.js").ISortingMenuItem[];
|
|
28
|
+
sortDirection: import("ag-grid-community").SortDirection | undefined;
|
|
29
|
+
sortIndex: number | undefined;
|
|
30
|
+
handleSortingItemClick: (item: import("../../types/menu.js").ISortingMenuItem) => void;
|
|
31
|
+
handleProgressSort: () => void;
|
|
32
|
+
textWrappingItems: import("../../types/menu.js").ITextWrappingMenuItem[];
|
|
33
|
+
handleTextWrappingItemClick: (item: import("../../types/menu.js").ITextWrappingMenuItem) => void;
|
|
34
|
+
aggregationsItems: import("../../types/menu.js").IAggregationsMenuItem[];
|
|
35
|
+
handleAggregationsItemClick: (item: import("../../types/menu.js").IAggregationsSubMenuItem) => void;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=useHeaderMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeaderMenu.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAM3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CACzB,OAAO,EAAE;IACL,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CAC1B,EACD,iBAAiB,EAAE;IACf,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,yBAAyB,EAAE,oBAAoB,EAAE,CAAC;CACrD,EACD,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;+BA2CX,UAAU,CAAC,cAAc,CAAC;;;;;;;;;;;;;EAuB/D"}
|