@gooddata/sdk-ui-pivot 11.11.0-alpha.2 → 11.11.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/next/features/data/createServerSideDataSource.d.ts.map +1 -1
- package/esm/next/features/data/createServerSideDataSource.js +65 -5
- package/esm/next/features/data/createServerSideDataSource.js.map +1 -1
- package/esm/next/features/data/dataViewToRowData.d.ts +3 -1
- package/esm/next/features/data/dataViewToRowData.d.ts.map +1 -1
- package/esm/next/features/data/dataViewToRowData.js +13 -5
- package/esm/next/features/data/dataViewToRowData.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServerSideDataSource.d.ts","sourceRoot":"","sources":["../../../../src/next/features/data/createServerSideDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA+C,MAAM,oBAAoB,CAAC;AAIxG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AAKpG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAKrE;;GAEG;AACH,UAAU,iCAAkC,SAAQ,qBAAqB;IACrE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,uBAAuB,EAAE,6BAA6B,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;IACnE,qBAAqB,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IACpD,iBAAiB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACpF,sBAAsB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAC/E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"createServerSideDataSource.d.ts","sourceRoot":"","sources":["../../../../src/next/features/data/createServerSideDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA+C,MAAM,oBAAoB,CAAC;AAIxG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AAKpG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAKrE;;GAEG;AACH,UAAU,iCAAkC,SAAQ,qBAAqB;IACrE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,uBAAuB,EAAE,6BAA6B,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;IACnE,qBAAqB,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IACpD,iBAAiB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACpF,sBAAsB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAC/E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA4DD;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GAAI,wSAmBxC,iCAAiC,KAAG,qBAAqB,CAAC,aAAa,CA4KzE,CAAC"}
|
|
@@ -7,6 +7,47 @@ import { loadDataView } from "./loadDataView.js";
|
|
|
7
7
|
import { handleExportReady } from "../exports/exports.js";
|
|
8
8
|
import { getSortModel } from "../sorting/agGridSortingApi.js";
|
|
9
9
|
import { sortModelToSortItems } from "../sorting/sortModelToSortItems.js";
|
|
10
|
+
/**
|
|
11
|
+
* Determines if the current page is the first or last page of data.
|
|
12
|
+
* Used for non-pinned grand totals positioning to avoid duplicates.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
function getPageFlags(dataView, measures, rows, startRow, endRow) {
|
|
17
|
+
const [totalRowCount] = dataView.dataView.totalCount;
|
|
18
|
+
// In case of single column attribute, without metrics and rows, backend returns 1 as number of rows, which is not correct.
|
|
19
|
+
const actualRowCount = measures.length === 0 && rows.length === 0 ? 0 : totalRowCount;
|
|
20
|
+
return {
|
|
21
|
+
isFirstPage: startRow === 0,
|
|
22
|
+
isLastPage: endRow >= actualRowCount,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Calculates the backend row offset for loading data.
|
|
27
|
+
*
|
|
28
|
+
* For non-pinned "top" position, grand totals are prepended to the first page,
|
|
29
|
+
* which shifts all data rows by the grand total count. AG grid then tries to call
|
|
30
|
+
* new rows from position X + total count, which skips some values. At the same time,
|
|
31
|
+
* AG grid needs to have final row count, so it can know when to stop loading
|
|
32
|
+
* and what to render. This function adjusts the start and end row
|
|
33
|
+
* to compensate for this shift.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
function getBackendRowOffset(agGridStartRow, agGridEndRow, grandTotalsPosition, isFirstRequest, grandTotalCount) {
|
|
38
|
+
// For non-pinned "top" position, adjust backend offset after first page
|
|
39
|
+
const needsOffsetAdjustment = grandTotalsPosition === "top" && !isFirstRequest && grandTotalCount > 0;
|
|
40
|
+
if (needsOffsetAdjustment) {
|
|
41
|
+
return {
|
|
42
|
+
backendStartRow: agGridStartRow - grandTotalCount,
|
|
43
|
+
backendEndRow: agGridEndRow - grandTotalCount,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
backendStartRow: agGridStartRow,
|
|
48
|
+
backendEndRow: agGridEndRow,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
10
51
|
/**
|
|
11
52
|
* Creates ag-grid server side data source for pivot table, that handles infinite-scrolling.
|
|
12
53
|
*
|
|
@@ -21,6 +62,8 @@ export const createServerSideDataSource = ({ measures, rows, sortBy, initialExec
|
|
|
21
62
|
let lastSortBy = sortBy;
|
|
22
63
|
// Keep track of the current execution result to ensure consistency across getRows calls
|
|
23
64
|
let currentExecutionResult = initialExecutionResult;
|
|
65
|
+
// Track grand total count for offset adjustment in non-pinned "top" position
|
|
66
|
+
let cachedGrandTotalCount = 0;
|
|
24
67
|
/**
|
|
25
68
|
* There is 1 additional request when sorting + pivoting.
|
|
26
69
|
* For some reason, ag-grid sends empty sort model in the first getRows request,
|
|
@@ -29,7 +72,12 @@ export const createServerSideDataSource = ({ measures, rows, sortBy, initialExec
|
|
|
29
72
|
function handleExtraSortRequest(params) {
|
|
30
73
|
setPivotResultColumns(params.api);
|
|
31
74
|
// Extract grand total rows from initial data view (same as normal first request)
|
|
32
|
-
|
|
75
|
+
// Determine page flags for proper grand totals positioning
|
|
76
|
+
const { isFirstPage, isLastPage } = getPageFlags(initialDataView, measures, rows, params.request.startRow ?? 0, params.request.endRow ?? pageSize);
|
|
77
|
+
// This is the first page, but returns empty rowData
|
|
78
|
+
const { grandTotalRowData, grandTotalCount } = dataViewToRowData(initialDataView, columnHeadersPosition, separators, grandTotalsPosition, isFirstPage, isLastPage);
|
|
79
|
+
// Cache grand total count for offset calculations
|
|
80
|
+
cachedGrandTotalCount = grandTotalCount;
|
|
33
81
|
const rowCount = fixRowsCount(initialDataView, measures, rows, grandTotalsPosition, grandTotalCount);
|
|
34
82
|
// Set up grand totals as they may be missing
|
|
35
83
|
setGrandTotalRows(params.api, grandTotalRowData);
|
|
@@ -73,14 +121,23 @@ export const createServerSideDataSource = ({ measures, rows, sortBy, initialExec
|
|
|
73
121
|
return;
|
|
74
122
|
}
|
|
75
123
|
const executionResult = await applyChangedSortToExecutionResult(params);
|
|
124
|
+
const startRow = params.request.startRow ?? 0;
|
|
125
|
+
const endRow = params.request.endRow ?? pageSize;
|
|
126
|
+
const { backendStartRow, backendEndRow } = getBackendRowOffset(startRow, endRow, grandTotalsPosition, isFirstRequest, cachedGrandTotalCount);
|
|
76
127
|
const nextDataView = isFirstRequest
|
|
77
128
|
? initialDataView
|
|
78
129
|
: await loadDataView({
|
|
79
130
|
executionResult,
|
|
80
|
-
startRow:
|
|
81
|
-
endRow:
|
|
131
|
+
startRow: backendStartRow,
|
|
132
|
+
endRow: backendEndRow,
|
|
82
133
|
});
|
|
83
|
-
|
|
134
|
+
// Determine if this is the first or last page for non-pinned grand totals
|
|
135
|
+
const { isFirstPage, isLastPage } = getPageFlags(nextDataView, measures, rows, startRow, endRow);
|
|
136
|
+
const { rowData, grandTotalRowData, grandTotalCount } = dataViewToRowData(nextDataView, columnHeadersPosition, separators, grandTotalsPosition, isFirstPage, isLastPage);
|
|
137
|
+
// Cache grand total count on first request for offset calculations
|
|
138
|
+
if (isFirstRequest) {
|
|
139
|
+
cachedGrandTotalCount = grandTotalCount;
|
|
140
|
+
}
|
|
84
141
|
const successParam = {
|
|
85
142
|
rowData,
|
|
86
143
|
rowCount: fixRowsCount(nextDataView, measures, rows, grandTotalsPosition, grandTotalCount),
|
|
@@ -114,7 +171,10 @@ function fixRowsCount(dataView, measures, rows, grandTotalsPosition, grandTotalC
|
|
|
114
171
|
const [rowsCount] = dataView.dataView.totalCount;
|
|
115
172
|
// In case of single column attribute, without metrics and rows, backend returns 1 as number of rows, which is not correct.
|
|
116
173
|
const baseRowCount = measures.length === 0 && rows.length === 0 ? 0 : rowsCount;
|
|
117
|
-
// When grand totals are in regular row data (not pinned), add them to the row count
|
|
174
|
+
// When grand totals are in regular row data (not pinned), add them to the row count.
|
|
175
|
+
// This tells AG Grid the total number of row indices including grand totals when non-pinned.
|
|
176
|
+
// For "top" position: grand totals are prepended to first page.
|
|
177
|
+
// For "bottom" position: grand totals are appended to last page.
|
|
118
178
|
if (grandTotalCount &&
|
|
119
179
|
grandTotalCount > 0 &&
|
|
120
180
|
grandTotalsPosition &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServerSideDataSource.js","sourceRoot":"","sources":["../../../../src/next/features/data/createServerSideDataSource.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAsD,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAwB1E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACvC,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,QAAQ,EACR,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,UAAU,GACsB,EAAwC,EAAE;IAC1E,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAE9C,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,IAAI,UAAU,GAAG,MAAM,CAAC;IACxB,wFAAwF;IACxF,IAAI,sBAAsB,GAAqB,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"createServerSideDataSource.js","sourceRoot":"","sources":["../../../../src/next/features/data/createServerSideDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,12 @@ import { ColumnHeadersPosition } from "../../types/transposition.js";
|
|
|
10
10
|
* @param columnHeadersPosition - Position of column headers (top or left)
|
|
11
11
|
* @param separators - Number formatting separators
|
|
12
12
|
* @param grandTotalsPosition - Position of grand totals rows (pinnedBottom, pinnedTop, bottom, top)
|
|
13
|
+
* @param isFirstPage - Whether this is the first page of data (for "top" positioning)
|
|
14
|
+
* @param isLastPage - Whether this is the last page of data (for "bottom" positioning)
|
|
13
15
|
*
|
|
14
16
|
* @internal
|
|
15
17
|
*/
|
|
16
|
-
export declare function dataViewToRowData(dataView: DataViewFacade, columnHeadersPosition: ColumnHeadersPosition, separators?: ISeparators, grandTotalsPosition?: GrandTotalsPosition): {
|
|
18
|
+
export declare function dataViewToRowData(dataView: DataViewFacade, columnHeadersPosition: ColumnHeadersPosition, separators?: ISeparators, grandTotalsPosition?: GrandTotalsPosition, isFirstPage?: boolean, isLastPage?: boolean): {
|
|
17
19
|
rowData: AgGridRowData[];
|
|
18
20
|
grandTotalRowData: AgGridRowData[];
|
|
19
21
|
grandTotalCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataViewToRowData.d.ts","sourceRoot":"","sources":["../../../../src/next/features/data/dataViewToRowData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAA4C,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE
|
|
1
|
+
{"version":3,"file":"dataViewToRowData.d.ts","sourceRoot":"","sources":["../../../../src/next/features/data/dataViewToRowData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAA4C,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,cAAc,EACxB,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,CAAC,EAAE,WAAW,EACxB,mBAAmB,GAAE,mBAAoC,EACzD,WAAW,CAAC,EAAE,OAAO,EACrB,UAAU,CAAC,EAAE,OAAO,GACrB;IACC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;CAC3B,CAiDA"}
|
|
@@ -9,10 +9,12 @@ import { columnDefinitionToColId } from "../columns/colId.js";
|
|
|
9
9
|
* @param columnHeadersPosition - Position of column headers (top or left)
|
|
10
10
|
* @param separators - Number formatting separators
|
|
11
11
|
* @param grandTotalsPosition - Position of grand totals rows (pinnedBottom, pinnedTop, bottom, top)
|
|
12
|
+
* @param isFirstPage - Whether this is the first page of data (for "top" positioning)
|
|
13
|
+
* @param isLastPage - Whether this is the last page of data (for "bottom" positioning)
|
|
12
14
|
*
|
|
13
15
|
* @internal
|
|
14
16
|
*/
|
|
15
|
-
export function dataViewToRowData(dataView, columnHeadersPosition, separators, grandTotalsPosition = "pinnedBottom") {
|
|
17
|
+
export function dataViewToRowData(dataView, columnHeadersPosition, separators, grandTotalsPosition = "pinnedBottom", isFirstPage, isLastPage) {
|
|
16
18
|
const tableData = dataView.data({ valueFormatter: createNumberJsFormatter(separators) }).asTable();
|
|
17
19
|
const rowData = [];
|
|
18
20
|
const grandTotalRowData = [];
|
|
@@ -39,12 +41,18 @@ export function dataViewToRowData(dataView, columnHeadersPosition, separators, g
|
|
|
39
41
|
grandTotalRowData.push(...tempGrandTotalRows);
|
|
40
42
|
}
|
|
41
43
|
else if (grandTotalsPosition === "top") {
|
|
42
|
-
// For non-pinned top,
|
|
43
|
-
|
|
44
|
+
// For non-pinned top, only include grand totals on the first page
|
|
45
|
+
// to avoid duplicates when loading more data
|
|
46
|
+
if (isFirstPage) {
|
|
47
|
+
rowData.unshift(...tempGrandTotalRows);
|
|
48
|
+
}
|
|
44
49
|
}
|
|
45
50
|
else {
|
|
46
|
-
// For non-pinned bottom
|
|
47
|
-
|
|
51
|
+
// For non-pinned bottom, only include grand totals on the last page
|
|
52
|
+
// to avoid duplicates when loading more data
|
|
53
|
+
if (isLastPage) {
|
|
54
|
+
rowData.push(...tempGrandTotalRows);
|
|
55
|
+
}
|
|
48
56
|
}
|
|
49
57
|
}
|
|
50
58
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataViewToRowData.js","sourceRoot":"","sources":["../../../../src/next/features/data/dataViewToRowData.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAA0B,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAmC,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAK5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"dataViewToRowData.js","sourceRoot":"","sources":["../../../../src/next/features/data/dataViewToRowData.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-pivot",
|
|
3
|
-
"version": "11.11.0-alpha.
|
|
3
|
+
"version": "11.11.0-alpha.3",
|
|
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": "^11.1.0",
|
|
46
|
-
"@gooddata/sdk-backend-spi": "11.11.0-alpha.
|
|
47
|
-
"@gooddata/sdk-
|
|
48
|
-
"@gooddata/sdk-ui": "11.11.0-alpha.
|
|
49
|
-
"@gooddata/sdk-ui-theme-provider": "11.11.0-alpha.
|
|
50
|
-
"@gooddata/sdk-
|
|
51
|
-
"@gooddata/sdk-ui-vis-commons": "11.11.0-alpha.
|
|
46
|
+
"@gooddata/sdk-backend-spi": "11.11.0-alpha.3",
|
|
47
|
+
"@gooddata/sdk-ui": "11.11.0-alpha.3",
|
|
48
|
+
"@gooddata/sdk-ui-kit": "11.11.0-alpha.3",
|
|
49
|
+
"@gooddata/sdk-ui-theme-provider": "11.11.0-alpha.3",
|
|
50
|
+
"@gooddata/sdk-model": "11.11.0-alpha.3",
|
|
51
|
+
"@gooddata/sdk-ui-vis-commons": "11.11.0-alpha.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@gooddata/stylelint-config": "^5.0.0",
|
|
@@ -91,10 +91,10 @@
|
|
|
91
91
|
"typescript": "5.8.3",
|
|
92
92
|
"vitest": "3.2.4",
|
|
93
93
|
"vitest-dom": "0.1.1",
|
|
94
|
-
"@gooddata/eslint-config": "11.11.0-alpha.
|
|
95
|
-
"@gooddata/reference-workspace": "11.11.0-alpha.
|
|
96
|
-
"@gooddata/sdk-backend-base": "11.11.0-alpha.
|
|
97
|
-
"@gooddata/sdk-backend-mockingbird": "11.11.0-alpha.
|
|
94
|
+
"@gooddata/eslint-config": "11.11.0-alpha.3",
|
|
95
|
+
"@gooddata/reference-workspace": "11.11.0-alpha.3",
|
|
96
|
+
"@gooddata/sdk-backend-base": "11.11.0-alpha.3",
|
|
97
|
+
"@gooddata/sdk-backend-mockingbird": "11.11.0-alpha.3"
|
|
98
98
|
},
|
|
99
99
|
"peerDependencies": {
|
|
100
100
|
"react": "^18.0.0 || ^19.0.0",
|