@gooddata/sdk-ui-pivot 10.36.0-alpha.2 → 10.36.0-alpha.4
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/next/PivotTableNext.d.ts.map +1 -1
- package/esm/next/PivotTableNext.js +15 -25
- package/esm/next/PivotTableNext.js.map +1 -1
- package/esm/next/context/TableMetadataContext.d.ts +24 -0
- package/esm/next/context/TableMetadataContext.d.ts.map +1 -0
- package/esm/next/context/TableMetadataContext.js +26 -0
- package/esm/next/context/TableMetadataContext.js.map +1 -0
- package/esm/next/dataSource/createServerSideDataSource.d.ts +3 -1
- package/esm/next/dataSource/createServerSideDataSource.d.ts.map +1 -1
- package/esm/next/dataSource/createServerSideDataSource.js +4 -1
- package/esm/next/dataSource/createServerSideDataSource.js.map +1 -1
- package/esm/next/drill/headerMapping.d.ts +7 -0
- package/esm/next/drill/headerMapping.d.ts.map +1 -0
- package/esm/next/drill/headerMapping.js +74 -0
- package/esm/next/drill/headerMapping.js.map +1 -0
- package/esm/next/drill/intersection.d.ts +12 -0
- package/esm/next/drill/intersection.d.ts.map +1 -0
- package/esm/next/drill/intersection.js +38 -0
- package/esm/next/drill/intersection.js.map +1 -0
- package/esm/next/drill/isDrillable.d.ts +15 -0
- package/esm/next/drill/isDrillable.d.ts.map +1 -0
- package/esm/next/drill/isDrillable.js +51 -0
- package/esm/next/drill/isDrillable.js.map +1 -0
- package/esm/next/hooks/useDrilling.d.ts +18 -0
- package/esm/next/hooks/useDrilling.d.ts.map +1 -0
- package/esm/next/hooks/useDrilling.js +81 -0
- package/esm/next/hooks/useDrilling.js.map +1 -0
- package/esm/next/hooks/useServerSideRowModel.d.ts.map +1 -1
- package/esm/next/hooks/useServerSideRowModel.js +4 -1
- package/esm/next/hooks/useServerSideRowModel.js.map +1 -1
- package/esm/next/hooks/useSorting.d.ts +18 -0
- package/esm/next/hooks/useSorting.d.ts.map +1 -0
- package/esm/next/hooks/useSorting.js +34 -0
- package/esm/next/hooks/useSorting.js.map +1 -0
- package/esm/next/mapProps/mapDataViewToAgGridRowData.d.ts.map +1 -1
- package/esm/next/mapProps/mapDataViewToAgGridRowData.js +9 -1
- package/esm/next/mapProps/mapDataViewToAgGridRowData.js.map +1 -1
- package/esm/next/types/public.d.ts +7 -3
- package/esm/next/types/public.d.ts.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotTableNext.d.ts","sourceRoot":"","sources":["../../src/next/PivotTableNext.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"PivotTableNext.d.ts","sourceRoot":"","sources":["../../src/next/PivotTableNext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,OAAO,EAEH,wBAAwB,EACxB,oBAAoB,EACvB,MAAM,mBAAmB,CAAC;AAgB3B;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB,qBAIzD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,qBAoC1D;AAoCD;;;;GAIG;AACH,QAAA,MAAM,0BAA0B,sDAyB9B,CAAC;AAEH,OAAO,EAAE,0BAA0B,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
|
2
|
-
import React, {
|
|
2
|
+
import React, { useMemo } from "react";
|
|
3
3
|
import { AgGridReact } from "ag-grid-react";
|
|
4
4
|
import { ModuleRegistry, AllEnterpriseModule } from "ag-grid-enterprise";
|
|
5
|
+
import isEqual from "lodash/isEqual.js";
|
|
5
6
|
import { ErrorComponent } from "./components/ErrorComponent.js";
|
|
6
7
|
import { LoadingComponent } from "./components/LoadingComponent.js";
|
|
7
8
|
import { useInitExecution, useInitExecutionResult } from "./hooks/useInitExecution.js";
|
|
8
9
|
import { useServerSideRowModel } from "./hooks/useServerSideRowModel.js";
|
|
10
|
+
import { useDrilling } from "./hooks/useDrilling.js";
|
|
11
|
+
import { useSorting } from "./hooks/useSorting.js";
|
|
9
12
|
import { getIsPivotMode, getMeasureGroupDimension, getExecutionProps, getColumnHeadersPosition, } from "./mapProps/props.js";
|
|
10
13
|
import { mapDimensionsToColDefs } from "./mapProps/mapDimensionsToColDefs.js";
|
|
11
|
-
import { mapSortModelToSortItems } from "./mapProps/mapSortModelToSortItems.js";
|
|
12
14
|
import { AG_GRID_DEFAULT_PROPS } from "./constants/agGrid.js";
|
|
13
15
|
import { PAGE_SIZE } from "./constants/internal.js";
|
|
14
|
-
import
|
|
16
|
+
import { TableMetadataProvider } from "./context/TableMetadataContext.js";
|
|
15
17
|
/**
|
|
16
18
|
* Simple wrapper for the core pivot table component that creates execution based on provided props.
|
|
17
19
|
* There is no sophisticated props validation so when used directly, it is recommended to handle the validation yourself.
|
|
@@ -41,7 +43,8 @@ function CorePivotTableNext(props) {
|
|
|
41
43
|
if (status === "pending" || status === "loading") {
|
|
42
44
|
return React.createElement(LoadingComponent, null);
|
|
43
45
|
}
|
|
44
|
-
return React.createElement(
|
|
46
|
+
return (React.createElement(TableMetadataProvider, null,
|
|
47
|
+
React.createElement(RenderAgGrid, { ...props, executionResult: executionResult })));
|
|
45
48
|
}
|
|
46
49
|
function RenderAgGrid(props) {
|
|
47
50
|
useMemo(() => {
|
|
@@ -50,34 +53,17 @@ function RenderAgGrid(props) {
|
|
|
50
53
|
AllEnterpriseModule,
|
|
51
54
|
]);
|
|
52
55
|
}, []);
|
|
53
|
-
const { executionResult, pushData } = props;
|
|
56
|
+
const { executionResult, pushData, drillableItems, onDrill } = props;
|
|
54
57
|
const serverSideRowModelProps = useServerSideRowModel({ ...props, executionResult });
|
|
55
58
|
const measureGroupDimension = getMeasureGroupDimension(props);
|
|
56
59
|
const { sortBy, rows, measures } = getExecutionProps(props);
|
|
60
|
+
const sortingHandlers = useSorting({ pushData, rows, measures });
|
|
61
|
+
const drillingHandlers = useDrilling({ drillableItems, onDrill });
|
|
57
62
|
const columnDefs = executionResult?.dimensions
|
|
58
63
|
? mapDimensionsToColDefs(executionResult.dimensions, measureGroupDimension, sortBy)
|
|
59
64
|
: [];
|
|
60
65
|
const isPivotMode = getIsPivotMode(props);
|
|
61
|
-
|
|
62
|
-
if (!pushData) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
// Get the current sort model from ag-grid
|
|
66
|
-
const sortModel = event.api
|
|
67
|
-
.getColumnState()
|
|
68
|
-
.filter((col) => col.sort !== null)
|
|
69
|
-
.map((col) => ({
|
|
70
|
-
colId: col.colId,
|
|
71
|
-
sort: col.sort,
|
|
72
|
-
}));
|
|
73
|
-
const sortItems = mapSortModelToSortItems(sortModel, rows, measures);
|
|
74
|
-
pushData({
|
|
75
|
-
properties: {
|
|
76
|
-
sortItems,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}, [pushData, rows, measures]);
|
|
80
|
-
return (React.createElement(AgGridReact, { ...AG_GRID_DEFAULT_PROPS, ...serverSideRowModelProps, columnDefs: columnDefs, pivotMode: isPivotMode, onSortChanged: onSortChanged }));
|
|
66
|
+
return (React.createElement(AgGridReact, { ...AG_GRID_DEFAULT_PROPS, ...serverSideRowModelProps, columnDefs: columnDefs, pivotMode: isPivotMode, onSortChanged: sortingHandlers.onSortChanged, onCellClicked: drillingHandlers.onCellClicked, onCellKeyDown: drillingHandlers.onCellKeyDown }));
|
|
81
67
|
}
|
|
82
68
|
/**
|
|
83
69
|
* Memoized wrapper for the AgGridReact component that needs to be provided with prepared execution.
|
|
@@ -93,6 +79,8 @@ const MemoizedCorePivotTableNext = React.memo(CorePivotTableNext, (prevProps, ne
|
|
|
93
79
|
const columnsChanged = !isEqual(prevProps.columns, nextProps.columns);
|
|
94
80
|
const filtersChanged = !isEqual(prevProps.filters, nextProps.filters);
|
|
95
81
|
const sortChanged = !isEqual(prevProps.sortBy, nextProps.sortBy);
|
|
82
|
+
const totalsChanged = !isEqual(prevProps.totals, nextProps.totals);
|
|
83
|
+
const drillableItemsChanged = !isEqual(prevProps.drillableItems, nextProps.drillableItems);
|
|
96
84
|
const themeChanged = prevProps.theme !== nextProps.theme;
|
|
97
85
|
return !(executionChanged ||
|
|
98
86
|
configChanged ||
|
|
@@ -101,6 +89,8 @@ const MemoizedCorePivotTableNext = React.memo(CorePivotTableNext, (prevProps, ne
|
|
|
101
89
|
columnsChanged ||
|
|
102
90
|
filtersChanged ||
|
|
103
91
|
sortChanged ||
|
|
92
|
+
totalsChanged ||
|
|
93
|
+
drillableItemsChanged ||
|
|
104
94
|
themeChanged);
|
|
105
95
|
});
|
|
106
96
|
export { MemoizedCorePivotTableNext as CorePivotTableNext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotTableNext.js","sourceRoot":"","sources":["../../src/next/PivotTableNext.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"PivotTableNext.js","sourceRoot":"","sources":["../../src/next/PivotTableNext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { DataViewFacade } from "@gooddata/sdk-ui";
|
|
3
|
+
/**
|
|
4
|
+
* Context for sharing table metadata between data source and other components
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
interface ITableMetadataContext {
|
|
8
|
+
currentDataView: DataViewFacade | null;
|
|
9
|
+
setCurrentDataView: (dataView: DataViewFacade | null) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Provider for table metadata context
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare function TableMetadataProvider({ children }: {
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
}): React.JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* Hook to access table metadata context
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare function useTableMetadata(): ITableMetadataContext;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=TableMetadataContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableMetadataContext.d.ts","sourceRoot":"","sources":["../../../src/next/context/TableMetadataContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAuC,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,UAAU,qBAAqB;IAC3B,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;CACjE;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,qBAa1E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAMxD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import React, { createContext, useContext, useState } from "react";
|
|
3
|
+
const TableMetadataContext = createContext(undefined);
|
|
4
|
+
/**
|
|
5
|
+
* Provider for table metadata context
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export function TableMetadataProvider({ children }) {
|
|
9
|
+
const [currentDataView, setCurrentDataView] = useState(null);
|
|
10
|
+
return (React.createElement(TableMetadataContext.Provider, { value: {
|
|
11
|
+
currentDataView,
|
|
12
|
+
setCurrentDataView,
|
|
13
|
+
} }, children));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Hook to access table metadata context
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export function useTableMetadata() {
|
|
20
|
+
const context = useContext(TableMetadataContext);
|
|
21
|
+
if (context === undefined) {
|
|
22
|
+
throw new Error("useTableMetadata must be used within a TableMetadataProvider");
|
|
23
|
+
}
|
|
24
|
+
return context;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=TableMetadataContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableMetadataContext.js","sourceRoot":"","sources":["../../../src/next/context/TableMetadataContext.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAa,MAAM,OAAO,CAAC;AAY9E,MAAM,oBAAoB,GAAG,aAAa,CAAoC,SAAS,CAAC,CAAC;AAEzF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAA2B;IACvE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAEpF,OAAO,CACH,oBAAC,oBAAoB,CAAC,QAAQ,IAC1B,KAAK,EAAE;YACH,eAAe;YACf,kBAAkB;SACrB,IAEA,QAAQ,CACmB,CACnC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IServerSideDatasource } from "ag-grid-enterprise";
|
|
2
2
|
import { IExecutionResult } from "@gooddata/sdk-backend-spi";
|
|
3
|
+
import { DataViewFacade } from "@gooddata/sdk-ui";
|
|
3
4
|
import { ColumnHeadersPosition } from "../types/public.js";
|
|
4
5
|
import { AgGridRowData } from "../types/internal.js";
|
|
5
6
|
import { IAttribute, IMeasure, ISortItem } from "@gooddata/sdk-model";
|
|
@@ -13,7 +14,8 @@ interface ICreateServerSideDataSourceParams {
|
|
|
13
14
|
executionResult: IExecutionResult;
|
|
14
15
|
isPivotMode: boolean;
|
|
15
16
|
columnHeadersPosition: ColumnHeadersPosition;
|
|
17
|
+
setCurrentDataView: (dataView: DataViewFacade | null) => void;
|
|
16
18
|
}
|
|
17
|
-
export declare const createServerSideDataSource: ({ measures, rows, sortBy, executionResult, isPivotMode, columnHeadersPosition, }: ICreateServerSideDataSourceParams) => IServerSideDatasource<AgGridRowData>;
|
|
19
|
+
export declare const createServerSideDataSource: ({ measures, rows, sortBy, executionResult, isPivotMode, columnHeadersPosition, setCurrentDataView, }: ICreateServerSideDataSourceParams) => IServerSideDatasource<AgGridRowData>;
|
|
18
20
|
export {};
|
|
19
21
|
//# sourceMappingURL=createServerSideDataSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServerSideDataSource.d.ts","sourceRoot":"","sources":["../../../src/next/dataSource/createServerSideDataSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAA+C,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAQtE;;GAEG;AACH,UAAU,iCAAiC;IACvC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,eAAe,EAAE,gBAAgB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"createServerSideDataSource.d.ts","sourceRoot":"","sources":["../../../src/next/dataSource/createServerSideDataSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAA+C,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAQtE;;GAEG;AACH,UAAU,iCAAiC;IACvC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,eAAe,EAAE,gBAAgB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,kBAAkB,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,0BAA0B,GAAI,sGAQxC,iCAAiC,KAAG,qBAAqB,CAAC,aAAa,CAoEzE,CAAC"}
|
|
@@ -3,13 +3,15 @@ import { AG_GRID_DEFAULT_CACHE_BLOCK_SIZE } from "../constants/agGrid.js";
|
|
|
3
3
|
import { getDesiredSorts } from "../mapProps/mapSortModelToSortItems.js";
|
|
4
4
|
import { mapDataViewToAgGridRowData, } from "../mapProps/mapDataViewToAgGridRowData.js";
|
|
5
5
|
import isEqual from "lodash/isEqual.js";
|
|
6
|
-
export const createServerSideDataSource = ({ measures, rows, sortBy, executionResult, isPivotMode, columnHeadersPosition = "top", }) => {
|
|
6
|
+
export const createServerSideDataSource = ({ measures, rows, sortBy, executionResult, isPivotMode, columnHeadersPosition = "top", setCurrentDataView, }) => {
|
|
7
7
|
const abortController = new AbortController();
|
|
8
8
|
let isFirstRequest = true;
|
|
9
9
|
let resultColumnDefinitionByColId = {};
|
|
10
10
|
return {
|
|
11
11
|
destroy: () => {
|
|
12
12
|
abortController.abort();
|
|
13
|
+
// Clear the context when data source is destroyed
|
|
14
|
+
setCurrentDataView(null);
|
|
13
15
|
},
|
|
14
16
|
getRows: async (params) => {
|
|
15
17
|
const startRow = params.request.startRow ?? 0;
|
|
@@ -41,6 +43,7 @@ export const createServerSideDataSource = ({ measures, rows, sortBy, executionRe
|
|
|
41
43
|
successParam.pivotResultFields = pivotResultFields;
|
|
42
44
|
}
|
|
43
45
|
resultColumnDefinitionByColId = columnDefinitionByColId;
|
|
46
|
+
setCurrentDataView(dataView);
|
|
44
47
|
params.success(successParam);
|
|
45
48
|
params.api.setGridOption("pinnedBottomRowData", grandTotalRowData);
|
|
46
49
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServerSideDataSource.js","sourceRoot":"","sources":["../../../src/next/dataSource/createServerSideDataSource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createServerSideDataSource.js","sourceRoot":"","sources":["../../../src/next/dataSource/createServerSideDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IMappingHeader, ITableRowDefinition, ITableColumnDefinition } from "@gooddata/sdk-ui";
|
|
2
|
+
export declare function extractAllColumnMappingHeaders(columnDefinition: ITableColumnDefinition): IMappingHeader[];
|
|
3
|
+
export declare function extractRowMappingHeadersAtPosition(rowDefinition: ITableRowDefinition, position: number): IMappingHeader[];
|
|
4
|
+
export declare function extractRowMappingHeadersUpToPosition(rowDefinition: ITableRowDefinition, position: number): IMappingHeader[];
|
|
5
|
+
export declare function extractAllRowMappingHeaders(rowDefinition: ITableRowDefinition): IMappingHeader[];
|
|
6
|
+
export declare function extractAllRowMeasureMappingHeaders(rowDefinition: ITableRowDefinition): IMappingHeader[];
|
|
7
|
+
//# sourceMappingURL=headerMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headerMapping.d.ts","sourceRoot":"","sources":["../../../src/next/drill/headerMapping.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACzB,MAAM,kBAAkB,CAAC;AA0D1B,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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { isMeasureDescriptor } from "@gooddata/sdk-model";
|
|
3
|
+
function extractMappingHeadersUpToPosition(scopes, position) {
|
|
4
|
+
return scopes.flatMap((scope, scopeIndex) => {
|
|
5
|
+
if (scopeIndex > position) {
|
|
6
|
+
return [];
|
|
7
|
+
}
|
|
8
|
+
if (scope.type === "measureGroupScope") {
|
|
9
|
+
throw new Error("measureGroupScope header is not supported");
|
|
10
|
+
}
|
|
11
|
+
if (scope.type !== "measureScope") {
|
|
12
|
+
return [scope.header, scope.descriptor];
|
|
13
|
+
}
|
|
14
|
+
return [scope.descriptor];
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function extractMappingHeadersAtPosition(scopes, position) {
|
|
18
|
+
return scopes.flatMap((scope, scopeIndex) => {
|
|
19
|
+
if (scopeIndex !== position) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
if (scope.type === "measureGroupScope") {
|
|
23
|
+
throw new Error("measureGroupScope header is not supported");
|
|
24
|
+
}
|
|
25
|
+
if (scope.type !== "measureScope") {
|
|
26
|
+
return [scope.header, scope.descriptor];
|
|
27
|
+
}
|
|
28
|
+
return [scope.descriptor];
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function extractAllMappingHeaders(scopes) {
|
|
32
|
+
return scopes.flatMap((scope) => {
|
|
33
|
+
if (scope.type === "measureGroupScope") {
|
|
34
|
+
throw new Error("measureGroupScope header is not supported");
|
|
35
|
+
}
|
|
36
|
+
if (scope.type !== "measureScope") {
|
|
37
|
+
return [scope.header, scope.descriptor];
|
|
38
|
+
}
|
|
39
|
+
return [scope.descriptor];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function extractAllColumnMappingHeaders(columnDefinition) {
|
|
43
|
+
if (columnDefinition.type === "value" ||
|
|
44
|
+
columnDefinition.type === "subtotal" ||
|
|
45
|
+
columnDefinition.type === "grandTotal") {
|
|
46
|
+
return extractAllMappingHeaders(columnDefinition.columnScope);
|
|
47
|
+
}
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
export function extractRowMappingHeadersAtPosition(rowDefinition, position) {
|
|
51
|
+
if (rowDefinition.type === "value" || rowDefinition.type === "subtotal") {
|
|
52
|
+
return extractMappingHeadersAtPosition(rowDefinition.rowScope, position);
|
|
53
|
+
}
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
export function extractRowMappingHeadersUpToPosition(rowDefinition, position) {
|
|
57
|
+
if (rowDefinition.type === "value" || rowDefinition.type === "subtotal") {
|
|
58
|
+
return extractMappingHeadersUpToPosition(rowDefinition.rowScope, position);
|
|
59
|
+
}
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
export function extractAllRowMappingHeaders(rowDefinition) {
|
|
63
|
+
if (rowDefinition.type === "value" || rowDefinition.type === "subtotal") {
|
|
64
|
+
return extractAllMappingHeaders(rowDefinition.rowScope);
|
|
65
|
+
}
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
export function extractAllRowMeasureMappingHeaders(rowDefinition) {
|
|
69
|
+
if (rowDefinition.type === "value" || rowDefinition.type === "subtotal") {
|
|
70
|
+
return extractAllMappingHeaders(rowDefinition.rowScope).filter((header) => isMeasureDescriptor(header));
|
|
71
|
+
}
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=headerMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headerMapping.js","sourceRoot":"","sources":["../../../src/next/drill/headerMapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ColDef } from "ag-grid-community";
|
|
2
|
+
import { IDrillEventIntersectionElement } from "@gooddata/sdk-ui";
|
|
3
|
+
import { AgGridRowData } from "../types/internal.js";
|
|
4
|
+
/**
|
|
5
|
+
* Creates drill intersection elements for a cell
|
|
6
|
+
*
|
|
7
|
+
* @param colDef - The column definition from ag-grid
|
|
8
|
+
* @param data - The row data from ag-grid
|
|
9
|
+
* @returns Array of drill intersection elements
|
|
10
|
+
*/
|
|
11
|
+
export declare function createDrillIntersection(colDef: ColDef<AgGridRowData, string>, data: AgGridRowData): IDrillEventIntersectionElement[];
|
|
12
|
+
//# sourceMappingURL=intersection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../src/next/drill/intersection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAwC,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAuCrD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,EACrC,IAAI,EAAE,aAAa,GACpB,8BAA8B,EAAE,CAIlC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { getDrillIntersection } from "@gooddata/sdk-ui";
|
|
2
|
+
import { extractAllColumnMappingHeaders, extractRowMappingHeadersUpToPosition } from "./headerMapping.js";
|
|
3
|
+
/**
|
|
4
|
+
* Creates mapping headers for drill intersection for a cell
|
|
5
|
+
*
|
|
6
|
+
* @param colDef - The column definition from ag-grid
|
|
7
|
+
* @param data - The row data from ag-grid
|
|
8
|
+
* @returns Array of mapping headers
|
|
9
|
+
*/
|
|
10
|
+
function createCellMappingHeadersForIntersection(colDef, data) {
|
|
11
|
+
const mappingHeaders = [];
|
|
12
|
+
const colId = colDef.colId;
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
14
|
+
// @ts-expect-error
|
|
15
|
+
const colData = data.meta[colId];
|
|
16
|
+
const rowDefinition = colData.rowDefinition;
|
|
17
|
+
const columnDefinition = colData.columnDefinition;
|
|
18
|
+
if (colData.type === "attributeHeader") {
|
|
19
|
+
mappingHeaders.push(...extractRowMappingHeadersUpToPosition(rowDefinition, columnDefinition.columnIndex));
|
|
20
|
+
}
|
|
21
|
+
if (colData.type === "value") {
|
|
22
|
+
mappingHeaders.push(...extractRowMappingHeadersUpToPosition(rowDefinition, columnDefinition.columnIndex));
|
|
23
|
+
mappingHeaders.push(...extractAllColumnMappingHeaders(columnDefinition));
|
|
24
|
+
}
|
|
25
|
+
return mappingHeaders;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Creates drill intersection elements for a cell
|
|
29
|
+
*
|
|
30
|
+
* @param colDef - The column definition from ag-grid
|
|
31
|
+
* @param data - The row data from ag-grid
|
|
32
|
+
* @returns Array of drill intersection elements
|
|
33
|
+
*/
|
|
34
|
+
export function createDrillIntersection(colDef, data) {
|
|
35
|
+
const mappingHeaders = createCellMappingHeadersForIntersection(colDef, data);
|
|
36
|
+
return getDrillIntersection(mappingHeaders);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=intersection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../src/next/drill/intersection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,oBAAoB,EAAkC,MAAM,kBAAkB,CAAC;AAExG,OAAO,EAAE,8BAA8B,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAE1G;;;;;;GAMG;AACH,SAAS,uCAAuC,CAC5C,MAAqC,EACrC,IAAmB;IAEnB,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAM,CAAC;IAC5B,6DAA6D;IAC7D,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAoB,CAAC;IAEpD,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;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACnC,MAAqC,EACrC,IAAmB;IAEnB,MAAM,cAAc,GAAG,uCAAuC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE7E,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DataViewFacade, ExplicitDrill } from "@gooddata/sdk-ui";
|
|
2
|
+
import { AgGridRowData } from "../types/internal.js";
|
|
3
|
+
import { ColDef } from "ag-grid-community";
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a cell is drillable based on drillable items and cell data
|
|
6
|
+
*
|
|
7
|
+
* @param colDef - The column definition from ag-grid
|
|
8
|
+
* @param data - The row data from ag-grid
|
|
9
|
+
* @param drillableItems - Array of drillable items to check against
|
|
10
|
+
* @param dv - Current data view facade for context
|
|
11
|
+
* @param isTransposed - Whether the table is transposed
|
|
12
|
+
* @returns True if the cell is drillable, false otherwise
|
|
13
|
+
*/
|
|
14
|
+
export declare function isCellDrillable(colDef: ColDef<AgGridRowData, string>, data: AgGridRowData, drillableItems: ExplicitDrill[], dv: DataViewFacade, isTransposed: boolean): boolean;
|
|
15
|
+
//# sourceMappingURL=isDrillable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDrillable.d.ts","sourceRoot":"","sources":["../../../src/next/drill/isDrillable.ts"],"names":[],"mappings":"AACA,OAAO,EAIH,cAAc,EACd,aAAa,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA8C3C;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,EACrC,IAAI,EAAE,aAAa,EACnB,cAAc,EAAE,aAAa,EAAE,EAC/B,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,OAAO,GACtB,OAAO,CAWT"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { isSomeHeaderPredicateMatched, convertDrillableItemsToPredicates, } from "@gooddata/sdk-ui";
|
|
3
|
+
import { extractAllColumnMappingHeaders, extractAllRowMeasureMappingHeaders, extractRowMappingHeadersAtPosition, } from "./headerMapping.js";
|
|
4
|
+
/**
|
|
5
|
+
* Extracts headers for drill intersection for a cell
|
|
6
|
+
*
|
|
7
|
+
* @param colDef - The column definition from ag-grid
|
|
8
|
+
* @param data - The row data from ag-grid
|
|
9
|
+
* @param isTransposed - Whether the table is transposed
|
|
10
|
+
* @returns Array of mapping headers
|
|
11
|
+
*/
|
|
12
|
+
function getCellDrillHeaders(colDef, data, isTransposed) {
|
|
13
|
+
const mappingHeaders = [];
|
|
14
|
+
const colId = colDef.colId;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
16
|
+
// @ts-expect-error
|
|
17
|
+
const colData = data.meta[colId];
|
|
18
|
+
const rowDefinition = colData.rowDefinition;
|
|
19
|
+
const columnDefinition = colData.columnDefinition;
|
|
20
|
+
if (colData.type === "attributeHeader") {
|
|
21
|
+
mappingHeaders.push(...extractRowMappingHeadersAtPosition(rowDefinition, columnDefinition.columnIndex));
|
|
22
|
+
}
|
|
23
|
+
if (colData.type === "value") {
|
|
24
|
+
if (!isTransposed) {
|
|
25
|
+
mappingHeaders.push(...extractAllColumnMappingHeaders(columnDefinition));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
mappingHeaders.push(...extractAllRowMeasureMappingHeaders(rowDefinition));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return mappingHeaders;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Checks if a cell is drillable based on drillable items and cell data
|
|
35
|
+
*
|
|
36
|
+
* @param colDef - The column definition from ag-grid
|
|
37
|
+
* @param data - The row data from ag-grid
|
|
38
|
+
* @param drillableItems - Array of drillable items to check against
|
|
39
|
+
* @param dv - Current data view facade for context
|
|
40
|
+
* @param isTransposed - Whether the table is transposed
|
|
41
|
+
* @returns True if the cell is drillable, false otherwise
|
|
42
|
+
*/
|
|
43
|
+
export function isCellDrillable(colDef, data, drillableItems, dv, isTransposed) {
|
|
44
|
+
const mappingHeaders = getCellDrillHeaders(colDef, data, isTransposed);
|
|
45
|
+
if (mappingHeaders.length === 0) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const drillablePredicates = convertDrillableItemsToPredicates(drillableItems);
|
|
49
|
+
return mappingHeaders.some((header) => isSomeHeaderPredicateMatched(drillablePredicates, header, dv));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=isDrillable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDrillable.js","sourceRoot":"","sources":["../../../src/next/drill/isDrillable.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAEH,4BAA4B,EAC5B,iCAAiC,GAGpC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,8BAA8B,EAC9B,kCAAkC,EAClC,kCAAkC,GACrC,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,SAAS,mBAAmB,CACxB,MAAqC,EACrC,IAAmB,EACnB,YAAqB;IAErB,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAM,CAAC;IAC5B,6DAA6D;IAC7D,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAoB,CAAC;IAEpD,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,kCAAkC,CAAC,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,CACrF,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,cAAc,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACJ,cAAc,CAAC,IAAI,CAAC,GAAG,kCAAkC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC3B,MAAqC,EACrC,IAAmB,EACnB,cAA+B,EAC/B,EAAkB,EAClB,YAAqB;IAErB,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACvE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,mBAAmB,GAAG,iCAAiC,CAAC,cAAc,CAAC,CAAC;IAE9E,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAsB,EAAE,EAAE,CAClD,4BAA4B,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC,CAChE,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CellKeyDownEvent, CellClickedEvent } from "ag-grid-community";
|
|
2
|
+
import { ExplicitDrill, OnFiredDrillEvent } from "@gooddata/sdk-ui";
|
|
3
|
+
import { AgGridRowData } from "../types/internal.js";
|
|
4
|
+
interface IUseDrillingProps {
|
|
5
|
+
drillableItems?: ExplicitDrill[];
|
|
6
|
+
onDrill?: OnFiredDrillEvent;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Hook that provides drilling handlers for the new pivot table
|
|
10
|
+
*
|
|
11
|
+
* @alpha
|
|
12
|
+
*/
|
|
13
|
+
export declare function useDrilling(props: IUseDrillingProps): {
|
|
14
|
+
onCellClicked: (event: CellClickedEvent<AgGridRowData, string>) => boolean;
|
|
15
|
+
onCellKeyDown: (event: CellKeyDownEvent) => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=useDrilling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrilling.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useDrilling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACH,aAAa,EAGb,iBAAiB,EAGpB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,UAAU,iBAAiB;IACvB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB;2BAKpC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC;2BAsDvC,gBAAgB;EA4B/B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { VisualizationTypes, } from "@gooddata/sdk-ui";
|
|
4
|
+
import { isEnterKey, isSpaceKey } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
import isNil from "lodash/isNil.js";
|
|
6
|
+
import { useTableMetadata } from "../context/TableMetadataContext.js";
|
|
7
|
+
import { isCellDrillable } from "../drill/isDrillable.js";
|
|
8
|
+
import { createDrillIntersection } from "../drill/intersection.js";
|
|
9
|
+
/**
|
|
10
|
+
* Hook that provides drilling handlers for the new pivot table
|
|
11
|
+
*
|
|
12
|
+
* @alpha
|
|
13
|
+
*/
|
|
14
|
+
export function useDrilling(props) {
|
|
15
|
+
const { drillableItems = [], onDrill } = props;
|
|
16
|
+
const { currentDataView } = useTableMetadata();
|
|
17
|
+
const onCellClicked = useCallback((event) => {
|
|
18
|
+
if (!onDrill || drillableItems.length === 0 || !currentDataView) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const { data, rowIndex, colDef } = event;
|
|
22
|
+
if (!data || !colDef || isNil(rowIndex)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const isTransposed = currentDataView.data().asTable().isTransposed;
|
|
26
|
+
if (!isCellDrillable(colDef, data, drillableItems, currentDataView, isTransposed)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const colId = colDef.colId;
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
31
|
+
// @ts-expect-error
|
|
32
|
+
const cellMeta = data.meta?.[colId];
|
|
33
|
+
const columnIndex = cellMeta.columnIndex;
|
|
34
|
+
const rowData = data.row;
|
|
35
|
+
// Create a basic drill context
|
|
36
|
+
const drillContext = {
|
|
37
|
+
type: VisualizationTypes.TABLE,
|
|
38
|
+
element: "cell",
|
|
39
|
+
columnIndex: columnIndex,
|
|
40
|
+
rowIndex: rowIndex,
|
|
41
|
+
row: rowData,
|
|
42
|
+
intersection: createDrillIntersection(colDef, data),
|
|
43
|
+
};
|
|
44
|
+
// Create drill event with actual dataView from context
|
|
45
|
+
const drillEvent = {
|
|
46
|
+
dataView: currentDataView.dataView,
|
|
47
|
+
drillContext,
|
|
48
|
+
};
|
|
49
|
+
if (onDrill(drillEvent)) {
|
|
50
|
+
// Dispatch custom drill event for embedded scenarios
|
|
51
|
+
const customEvent = new CustomEvent("drill", {
|
|
52
|
+
detail: drillEvent,
|
|
53
|
+
bubbles: true,
|
|
54
|
+
});
|
|
55
|
+
event.event?.target?.dispatchEvent(customEvent);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}, [onDrill, drillableItems, currentDataView]);
|
|
60
|
+
const onCellKeyDown = useCallback((event) => {
|
|
61
|
+
if (!onDrill || drillableItems.length === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Check if it's a keyboard event and if Enter or Space was pressed
|
|
65
|
+
if (!event.event || !(event.event instanceof KeyboardEvent)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!isEnterKey(event.event) &&
|
|
69
|
+
!isSpaceKey(event.event)) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Trigger the same drill logic as cell click
|
|
73
|
+
const cellEvent = event;
|
|
74
|
+
onCellClicked(cellEvent);
|
|
75
|
+
}, [onCellClicked, onDrill, drillableItems]);
|
|
76
|
+
return {
|
|
77
|
+
onCellClicked,
|
|
78
|
+
onCellKeyDown,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=useDrilling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrilling.js","sourceRoot":"","sources":["../../../src/next/hooks/useDrilling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useServerSideRowModel.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useServerSideRowModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"useServerSideRowModel.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useServerSideRowModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrD;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAC9B,OAAO,6BAA6B,KACrC,gBAAgB,CAAC,aAAa,CA0BhC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { useMemo } from "react";
|
|
|
3
3
|
import { AG_GRID_PIVOT_RESULT_FIELD_SEPARATOR } from "../constants/agGrid.js";
|
|
4
4
|
import { createServerSideDataSource } from "../dataSource/createServerSideDataSource.js";
|
|
5
5
|
import { getColumnHeadersPosition, getExecutionProps, getIsPivotMode } from "../mapProps/props.js";
|
|
6
|
+
import { useTableMetadata } from "../context/TableMetadataContext.js";
|
|
6
7
|
/**
|
|
7
8
|
* @alpha
|
|
8
9
|
*/
|
|
@@ -11,6 +12,7 @@ export const useServerSideRowModel = (props) => {
|
|
|
11
12
|
const isPivotMode = getIsPivotMode(props);
|
|
12
13
|
const columnHeadersPosition = getColumnHeadersPosition(props);
|
|
13
14
|
const { rows, measures, sortBy } = getExecutionProps(props);
|
|
15
|
+
const { setCurrentDataView } = useTableMetadata();
|
|
14
16
|
const dataSource = useMemo(() => createServerSideDataSource({
|
|
15
17
|
rows,
|
|
16
18
|
measures,
|
|
@@ -18,7 +20,8 @@ export const useServerSideRowModel = (props) => {
|
|
|
18
20
|
isPivotMode,
|
|
19
21
|
executionResult,
|
|
20
22
|
columnHeadersPosition,
|
|
21
|
-
|
|
23
|
+
setCurrentDataView,
|
|
24
|
+
}), [columnHeadersPosition, executionResult, isPivotMode, measures, rows, sortBy, setCurrentDataView]);
|
|
22
25
|
return {
|
|
23
26
|
rowModelType: "serverSide",
|
|
24
27
|
serverSideDatasource: dataSource,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useServerSideRowModel.js","sourceRoot":"","sources":["../../../src/next/hooks/useServerSideRowModel.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"useServerSideRowModel.js","sourceRoot":"","sources":["../../../src/next/hooks/useServerSideRowModel.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,KAAoC,EACL,EAAE;IACjC,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAElD,MAAM,UAAU,GAAG,OAAO,CACtB,GAAG,EAAE,CACD,0BAA0B,CAAC;QACvB,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,WAAW;QACX,eAAe;QACf,qBAAqB;QACrB,kBAAkB;KACrB,CAAC,EACN,CAAC,qBAAqB,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,CACpG,CAAC;IAEF,OAAO;QACH,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,UAAU;QAChC,mCAAmC,EAAE,oCAAoC;KAC5E,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SortChangedEvent } from "ag-grid-community";
|
|
2
|
+
import { IAttribute, IMeasure } from "@gooddata/sdk-model";
|
|
3
|
+
import { IPushData } from "@gooddata/sdk-ui";
|
|
4
|
+
interface IUseSortingProps {
|
|
5
|
+
pushData?: (data: IPushData) => void;
|
|
6
|
+
rows: IAttribute[];
|
|
7
|
+
measures: IMeasure[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Hook that provides sorting handlers for the pivot table
|
|
11
|
+
*
|
|
12
|
+
* @alpha
|
|
13
|
+
*/
|
|
14
|
+
export declare function useSorting(props: IUseSortingProps): {
|
|
15
|
+
onSortChanged: (event: SortChangedEvent) => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=useSorting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSorting.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useSorting.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,UAAU,gBAAgB;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB;2BAIlC,gBAAgB;EA4B/B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { mapSortModelToSortItems } from "../mapProps/mapSortModelToSortItems.js";
|
|
4
|
+
/**
|
|
5
|
+
* Hook that provides sorting handlers for the pivot table
|
|
6
|
+
*
|
|
7
|
+
* @alpha
|
|
8
|
+
*/
|
|
9
|
+
export function useSorting(props) {
|
|
10
|
+
const { pushData, rows, measures } = props;
|
|
11
|
+
const onSortChanged = useCallback((event) => {
|
|
12
|
+
if (!pushData) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
// Get the current sort model from ag-grid
|
|
16
|
+
const sortModel = event.api
|
|
17
|
+
.getColumnState()
|
|
18
|
+
.filter((col) => col.sort !== null)
|
|
19
|
+
.map((col) => ({
|
|
20
|
+
colId: col.colId,
|
|
21
|
+
sort: col.sort,
|
|
22
|
+
}));
|
|
23
|
+
const sortItems = mapSortModelToSortItems(sortModel, rows, measures);
|
|
24
|
+
pushData({
|
|
25
|
+
properties: {
|
|
26
|
+
sortItems,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}, [pushData, rows, measures]);
|
|
30
|
+
return {
|
|
31
|
+
onSortChanged,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=useSorting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSorting.js","sourceRoot":"","sources":["../../../src/next/hooks/useSorting.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAQjF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAuB;IAC9C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE3C,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,KAAuB,EAAE,EAAE;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO;QACX,CAAC;QAED,0CAA0C;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG;aACtB,cAAc,EAAE;aAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;aAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,GAAG,CAAC,KAAM;YACjB,IAAI,EAAE,GAAG,CAAC,IAAK;SAClB,CAAC,CAAC,CAAC;QAER,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAErE,QAAQ,CAAC;YACL,UAAU,EAAE;gBACR,SAAS;aACZ;SACJ,CAAC,CAAC;IACP,CAAC,EACD,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAC7B,CAAC;IAEF,OAAO;QACH,aAAa;KAChB,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapDataViewToAgGridRowData.d.ts","sourceRoot":"","sources":["../../../src/next/mapProps/mapDataViewToAgGridRowData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAyB,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD;;;;GAIG;AACH,MAAM,WAAW,sCAAsC;IACnD,CAAC,cAAc,EAAE,MAAM,GAAG,sBAAsB,CAAC;CACpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,cAAc,EACxB,qBAAqB,GAAE,qBAA6B,GACrD;IACC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,uBAAuB,EAAE,sCAAsC,CAAC;CACnE,
|
|
1
|
+
{"version":3,"file":"mapDataViewToAgGridRowData.d.ts","sourceRoot":"","sources":["../../../src/next/mapProps/mapDataViewToAgGridRowData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAyB,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AASrD;;;;GAIG;AACH,MAAM,WAAW,sCAAsC;IACnD,CAAC,cAAc,EAAE,MAAM,GAAG,sBAAsB,CAAC;CACpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,cAAc,EACxB,qBAAqB,GAAE,qBAA6B,GACrD;IACC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,uBAAuB,EAAE,sCAAsC,CAAC;CACnE,CA2CA"}
|
|
@@ -22,10 +22,18 @@ export function mapDataViewToAgGridRowData(dataView, columnHeadersPosition = "to
|
|
|
22
22
|
const rowData = [];
|
|
23
23
|
const grandTotalRowData = [];
|
|
24
24
|
tableData.data.forEach((row, rowIndex) => {
|
|
25
|
-
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
26
|
+
// @ts-expect-error
|
|
27
|
+
const data = { meta: {}, row: [] };
|
|
26
28
|
row.forEach((cell) => {
|
|
27
29
|
const key = buildColumnKey(cell.columnDefinition, tableData.isTransposed, columnHeadersPosition);
|
|
28
30
|
data[key] = cell.formattedValue;
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
32
|
+
// @ts-expect-error
|
|
33
|
+
data.meta[key] = cell;
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
35
|
+
// @ts-expect-error
|
|
36
|
+
data.row.push(cell.value);
|
|
29
37
|
});
|
|
30
38
|
if (tableData.rowDefinitions[rowIndex].type === "grandTotal") {
|
|
31
39
|
grandTotalRowData.push(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapDataViewToAgGridRowData.js","sourceRoot":"","sources":["../../../src/next/mapProps/mapDataViewToAgGridRowData.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,4BAA4B,EAC5B,6BAA6B,EAC7B,sCAAsC,GACzC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAwB,MAAM,qBAAqB,CAAC;AAWxE;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACtC,QAAwB,EACxB,wBAA+C,KAAK;IAOpD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,MAAM,uBAAuB,GAA2C,EAAE,CAAC;IAC3E,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;QACrD,MAAM,GAAG,GAAG,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC5F,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,uBAAuB,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,iBAAiB,GAAoB,EAAE,CAAC;IAE9C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;QACrC,MAAM,IAAI,GAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mapDataViewToAgGridRowData.js","sourceRoot":"","sources":["../../../src/next/mapProps/mapDataViewToAgGridRowData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IAnalyticalBackend, IExecutionResult, IPreparedExecution } from "@gooddata/sdk-backend-spi";
|
|
2
2
|
import { IAttribute, IFilter, IMeasure, ISortItem, ITheme, ITotal } from "@gooddata/sdk-model";
|
|
3
|
-
import { IVisualizationCallbacks } from "@gooddata/sdk-ui";
|
|
3
|
+
import { IVisualizationCallbacks, ExplicitDrill, IVisualizationProps } from "@gooddata/sdk-ui";
|
|
4
4
|
/**
|
|
5
5
|
* Whether to display measures in columns or rows (transposed).
|
|
6
6
|
*
|
|
@@ -45,7 +45,7 @@ export type PivotTableNextConfig = {
|
|
|
45
45
|
/**
|
|
46
46
|
* @alpha
|
|
47
47
|
*/
|
|
48
|
-
export interface IPivotTableNextProps {
|
|
48
|
+
export interface IPivotTableNextProps extends IVisualizationProps, IVisualizationCallbacks {
|
|
49
49
|
/**
|
|
50
50
|
* Backend to use for the pivot table.
|
|
51
51
|
*/
|
|
@@ -78,6 +78,10 @@ export interface IPivotTableNextProps {
|
|
|
78
78
|
* Sort by to apply to the pivot table.
|
|
79
79
|
*/
|
|
80
80
|
sortBy?: ISortItem[];
|
|
81
|
+
/**
|
|
82
|
+
* Configure drillability; e.g. which parts of the visualization can be interacted with.
|
|
83
|
+
*/
|
|
84
|
+
drillableItems?: ExplicitDrill[];
|
|
81
85
|
/**
|
|
82
86
|
* Configuration for the pivot table.
|
|
83
87
|
*/
|
|
@@ -93,7 +97,7 @@ export interface IPivotTableNextProps {
|
|
|
93
97
|
/**
|
|
94
98
|
* @alpha
|
|
95
99
|
*/
|
|
96
|
-
export interface ICorePivotTableNextProps extends IPivotTableNextProps
|
|
100
|
+
export interface ICorePivotTableNextProps extends IPivotTableNextProps {
|
|
97
101
|
execution: IPreparedExecution;
|
|
98
102
|
theme?: ITheme;
|
|
99
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/next/types/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/next/types/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE/F;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB,EAAE,uBAAuB;IACtF;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IAClE,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC3E,eAAe,EAAE,gBAAgB,CAAC;CACrC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-pivot",
|
|
3
|
-
"version": "10.36.0-alpha.
|
|
3
|
+
"version": "10.36.0-alpha.4",
|
|
4
4
|
"description": "GoodData.UI SDK - Pivot Table",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"ts-invariant": "^0.7.5",
|
|
44
44
|
"tslib": "2.8.1",
|
|
45
45
|
"uuid": "^8.3.2",
|
|
46
|
-
"@gooddata/sdk-
|
|
47
|
-
"@gooddata/sdk-
|
|
48
|
-
"@gooddata/sdk-ui": "10.36.0-alpha.
|
|
49
|
-
"@gooddata/sdk-ui-theme-provider": "10.36.0-alpha.
|
|
50
|
-
"@gooddata/sdk-
|
|
51
|
-
"@gooddata/sdk-ui
|
|
46
|
+
"@gooddata/sdk-backend-spi": "10.36.0-alpha.4",
|
|
47
|
+
"@gooddata/sdk-model": "10.36.0-alpha.4",
|
|
48
|
+
"@gooddata/sdk-ui-vis-commons": "10.36.0-alpha.4",
|
|
49
|
+
"@gooddata/sdk-ui-theme-provider": "10.36.0-alpha.4",
|
|
50
|
+
"@gooddata/sdk-ui-kit": "10.36.0-alpha.4",
|
|
51
|
+
"@gooddata/sdk-ui": "10.36.0-alpha.4"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"react": "^16.10.0 || ^17.0.0 || ^18.0.0",
|
|
@@ -97,9 +97,9 @@
|
|
|
97
97
|
"typescript": "5.8.3",
|
|
98
98
|
"vitest": "3.2.4",
|
|
99
99
|
"vitest-dom": "0.1.1",
|
|
100
|
-
"@gooddata/
|
|
101
|
-
"@gooddata/sdk-backend-
|
|
102
|
-
"@gooddata/
|
|
100
|
+
"@gooddata/sdk-backend-base": "10.36.0-alpha.4",
|
|
101
|
+
"@gooddata/sdk-backend-mockingbird": "10.36.0-alpha.4",
|
|
102
|
+
"@gooddata/reference-workspace": "10.36.0-alpha.4"
|
|
103
103
|
},
|
|
104
104
|
"scripts": {
|
|
105
105
|
"clean": "rm -rf ci dist esm coverage *.log styles/css tsconfig.tsbuildinfo",
|