@gooddata/sdk-ui-dashboard 11.59.0-alpha.1 → 11.59.0

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/NOTICE CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
9
9
 
10
- Date generated: 2026-9-24
10
+ Date generated: 2026-9-25
11
11
 
12
- Revision ID: a3cc69b7a770939c70d7dd00fe468ca5cf8d9429
12
+ Revision ID: 7aafbc41b1e160f8395e93ba8e2641b345382639
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -24657,7 +24657,7 @@ MIT
24657
24657
 
24658
24658
  Authors: se.mo.moosavi@gmail.com
24659
24659
  Package Manager: NPM
24660
- Project URL: https://www.npmjs.com/package/date-fns-jalali
24660
+ Project URL: https://github.com/date-fns-jalali/date-fns-jalali#readme
24661
24661
  Package Download URL: https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz
24662
24662
  Dependency Path: react-day-picker > date-fns-jalali
24663
24663
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -64914,4 +64914,4 @@ File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
64914
64914
  --------------------------------------------------------------------------------
64915
64915
  --------------------------------------------------------------------------------
64916
64916
 
64917
- Report Generated by FOSSA on 2026-9-24
64917
+ Report Generated by FOSSA on 2026-9-25
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.59.0-alpha.1";
1
+ export declare const LIB_VERSION = "11.59.0";
2
2
  export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
4
4
  //# sourceMappingURL=__version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"__version.d.ts","sourceRoot":"","sources":["../src/__version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,eAAO,MAAM,eAAe,uCAAuC,CAAC;AAEpE,eAAO,MAAM,QAAQ,+BAA+B,CAAC"}
1
+ {"version":3,"file":"__version.d.ts","sourceRoot":"","sources":["../src/__version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,eAAO,MAAM,eAAe,uCAAuC,CAAC;AAEpE,eAAO,MAAM,QAAQ,+BAA+B,CAAC"}
package/esm/__version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.59.0-alpha.1";
3
+ export const LIB_VERSION = "11.59.0";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
@@ -33,7 +33,7 @@ export function KdaAttributesDropdown({ buttonLabel, attributesCount, validAttri
33
33
  closeDropdown();
34
34
  };
35
35
  return (_jsxs("div", { ...ariaAttributes, "aria-labelledby": undefined, "aria-label": popupLabel, className: "gd-kda-attributes-dropdown__body", children: [_jsx("div", { className: "gd-kda-attributes-dropdown__header", children: popupLabel }), _jsx(InvertableSelectVirtualised, { className: "gd-kda-attributes-select", adaptiveWidth: true, items: filteredOptions, totalItemsCount: filteredOptions.length, itemHeight: ITEM_HEIGHT, getItemKey: getAttributeKey, getItemTitle: getAttributeTitle, isItemQuestionMarkEnabled: () => false, isInverted: isInverted, selectedItems: selection, canSubmitOnKeyDown: !isApplyDisabled, onApplyButtonClick: handleApply, onSelect: onSelect, searchString: searchString, onSearch: setSearchString, renderItem: (itemProps) => {
36
- const group = mapAttributes.get(itemProps.item.attribute.id);
36
+ const group = mapAttributes.get(getAttributeKey(itemProps.item));
37
37
  const driverCount = group?.significantDrivers.length ?? 0;
38
38
  const count = driverCount > 0 ? `(${driverCount})` : "-";
39
39
  const countAriaLabel = driverCount > 0
@@ -1,4 +1,8 @@
1
1
  import { type ICatalogAttribute } from "@gooddata/sdk-model";
2
+ /**
3
+ * Keys the item by its typed ref, so that a label and a computed attribute with the same id are two rows.
4
+ * objRefToString would drop the `type` and collapse the two into one.
5
+ */
2
6
  export declare const getAttributeKey: (item: ICatalogAttribute) => string;
3
7
  export declare const getAttributeTitle: (item: ICatalogAttribute) => string;
4
8
  export declare function useKdaAttributesSelection(validAttributes: ICatalogAttribute[], initialAttributes: ICatalogAttribute[]): {
@@ -1 +1 @@
1
- {"version":3,"file":"useKdaAttributesSelection.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/composition/hooks/useKdaAttributesSelection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,eAAe,SAAU,iBAAiB,WAAsB,CAAC;AAC9E,eAAO,MAAM,iBAAiB,SAAU,iBAAiB,WAAyB,CAAC;AAEnF,wBAAgB,yBAAyB,CACrC,eAAe,EAAE,iBAAiB,EAAE,EACpC,iBAAiB,EAAE,iBAAiB,EAAE;;;;;;;;8BAuCO,iBAAiB,EAAE,YAAY,OAAO;;EAgBtF"}
1
+ {"version":3,"file":"useKdaAttributesSelection.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/composition/hooks/useKdaAttributesSelection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AAE9E;;;GAGG;AACH,eAAO,MAAM,eAAe,SAAU,iBAAiB,WAAwC,CAAC;AAChG,eAAO,MAAM,iBAAiB,SAAU,iBAAiB,WAAyB,CAAC;AAEnF,wBAAgB,yBAAyB,CACrC,eAAe,EAAE,iBAAiB,EAAE,EACpC,iBAAiB,EAAE,iBAAiB,EAAE;;;;;;;;8BAuCO,iBAAiB,EAAE,YAAY,OAAO;;EAgBtF"}
@@ -1,6 +1,11 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useCallback, useMemo, useState } from "react";
3
- export const getAttributeKey = (item) => item.attribute.id;
3
+ import { serializeObjRef } from "@gooddata/sdk-model";
4
+ /**
5
+ * Keys the item by its typed ref, so that a label and a computed attribute with the same id are two rows.
6
+ * objRefToString would drop the `type` and collapse the two into one.
7
+ */
8
+ export const getAttributeKey = (item) => serializeObjRef(item.attribute.ref);
4
9
  export const getAttributeTitle = (item) => item.attribute.title;
5
10
  export function useKdaAttributesSelection(validAttributes, initialAttributes) {
6
11
  const [searchString, setSearchString] = useState("");
@@ -1 +1 @@
1
- {"version":3,"file":"useKdaValidAttributes.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/composition/hooks/useKdaValidAttributes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AAK9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAK5D,wBAAgB,qBAAqB;;;;;EA4CpC"}
1
+ {"version":3,"file":"useKdaValidAttributes.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/composition/hooks/useKdaValidAttributes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AAK9E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAO5D,wBAAgB,qBAAqB;;;;;EA4CpC"}
@@ -5,6 +5,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide
5
5
  import { selectCatalogAttributesWithComputed } from "../../../model/store/catalog/catalogSelectors.js";
6
6
  import { useSummaryDrivers } from "../../hooks/useSummaryDrivers.js";
7
7
  import { useKdaState } from "../../providers/KdaState.js";
8
+ import { getAttributeKey } from "./useKdaAttributesSelection.js";
8
9
  const SEARCH_BAR_THRESHOLD = 7;
9
10
  export function useKdaValidAttributes() {
10
11
  const { state } = useKdaState();
@@ -18,7 +19,7 @@ export function useKdaValidAttributes() {
18
19
  })
19
20
  .map((a) => {
20
21
  const group = list.find((item) => a.displayForms.some((df) => areObjRefsEqual(df.ref, item.displayForm)));
21
- mapAttributes.set(a.attribute.id, group);
22
+ mapAttributes.set(getAttributeKey(a), group);
22
23
  return [a, group];
23
24
  })
24
25
  .sort(([, a], [, b]) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useAttribute.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/hooks/useAttribute.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,MAAM,EAGd,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,YAAY,WAKb,MAAM,4DAmBpB"}
1
+ {"version":3,"file":"useAttribute.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/hooks/useAttribute.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,MAAM,EAGd,MAAM,qBAAqB,CAAC;AAQ7B,wBAAgB,YAAY,WAKb,MAAM,4DAoBpB"}
@@ -12,9 +12,10 @@ export function useAttribute() {
12
12
  }
13
13
  const matches = (a) => areObjRefsEqual(ref, a.attribute.ref) ||
14
14
  a.attribute.displayForms.some((df) => areObjRefsEqual(df.ref, ref));
15
- // Key driver refs come back untyped (the changeAnalysis response has no type
16
- // discriminator), so an id shared by a label and a computed attribute is ambiguous.
17
- // Plain attributes are matched first to make the resolution deterministic.
15
+ // A key driver ref carries its type (`displayForm` or `computedAttribute`), so a label and a
16
+ // computed attribute with the same id resolve to different catalog items. A backend without
17
+ // `attributeRef` sends the ref untyped; then only the id compares, and matching plain
18
+ // attributes first keeps that resolution deterministic.
18
19
  return (attributes.find(matches) ??
19
20
  computedAttributes.map(catalogComputedAttributeAsCatalogAttribute).find(matches) ??
20
21
  null);
@@ -1,6 +1,6 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
- import { objRefToString } from "@gooddata/sdk-model";
3
+ import { serializeObjRef } from "@gooddata/sdk-model";
4
4
  import { useKdaState } from "../providers/KdaState.js";
5
5
  import { useAttribute } from "./useAttribute.js";
6
6
  export function useSummaryDrivers() {
@@ -9,7 +9,7 @@ export function useSummaryDrivers() {
9
9
  return useMemo(() => {
10
10
  //Groups
11
11
  const groups = state.items.reduce((prev, { data }) => {
12
- const ref = objRefToString(data.attribute);
12
+ const ref = serializeObjRef(data.attribute);
13
13
  if (!prev[ref]) {
14
14
  prev[ref] = createKdaGroup(ref, data.attribute, data.displayForm, data.title, data.description);
15
15
  }
@@ -21,7 +21,7 @@ export function useSummaryDrivers() {
21
21
  }, {});
22
22
  //Selected fill empty groups
23
23
  state.selectedAttributes.reduce((prev, current) => {
24
- const ref = objRefToString(current);
24
+ const ref = serializeObjRef(current);
25
25
  if (!prev[ref]) {
26
26
  const attribute = attributeFinder(current);
27
27
  if (attribute) {
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.58.12"
8
+ "packageVersion": "7.59.2"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.59.0-alpha.1",
3
+ "version": "11.59.0",
4
4
  "description": "GoodData SDK - Dashboard Component",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -60,27 +60,27 @@
60
60
  "ts-invariant": "0.10.3",
61
61
  "tslib": "2.8.1",
62
62
  "uuid": "11.1.1",
63
- "@gooddata/sdk-backend-base": "11.59.0-alpha.1",
64
- "@gooddata/sdk-backend-spi": "11.59.0-alpha.1",
65
- "@gooddata/sdk-model": "11.59.0-alpha.1",
66
- "@gooddata/sdk-ui": "11.59.0-alpha.1",
67
- "@gooddata/sdk-ui-charts": "11.59.0-alpha.1",
68
- "@gooddata/sdk-ui-ext": "11.59.0-alpha.1",
69
- "@gooddata/sdk-ui-filters": "11.59.0-alpha.1",
70
- "@gooddata/sdk-ui-geo": "11.59.0-alpha.1",
71
- "@gooddata/sdk-ui-kit": "11.59.0-alpha.1",
72
- "@gooddata/sdk-ui-semantic-search": "11.59.0-alpha.1",
73
- "@gooddata/sdk-ui-vis-commons": "11.59.0-alpha.1",
74
- "@gooddata/util": "11.59.0-alpha.1",
75
- "@gooddata/sdk-ui-pivot": "11.59.0-alpha.1",
76
- "@gooddata/sdk-ui-theme-provider": "11.59.0-alpha.1"
63
+ "@gooddata/sdk-backend-base": "11.59.0",
64
+ "@gooddata/sdk-model": "11.59.0",
65
+ "@gooddata/sdk-backend-spi": "11.59.0",
66
+ "@gooddata/sdk-ui-charts": "11.59.0",
67
+ "@gooddata/sdk-ui": "11.59.0",
68
+ "@gooddata/sdk-ui-ext": "11.59.0",
69
+ "@gooddata/sdk-ui-filters": "11.59.0",
70
+ "@gooddata/sdk-ui-geo": "11.59.0",
71
+ "@gooddata/sdk-ui-kit": "11.59.0",
72
+ "@gooddata/sdk-ui-pivot": "11.59.0",
73
+ "@gooddata/sdk-ui-semantic-search": "11.59.0",
74
+ "@gooddata/sdk-ui-vis-commons": "11.59.0",
75
+ "@gooddata/sdk-ui-theme-provider": "11.59.0",
76
+ "@gooddata/util": "11.59.0"
77
77
  },
78
78
  "devDependencies": {
79
- "@microsoft/api-documenter": "7.30.10",
80
- "@microsoft/api-extractor": "7.58.12",
81
- "@testing-library/dom": "10.4.1",
79
+ "@microsoft/api-documenter": "7.30.16",
80
+ "@microsoft/api-extractor": "7.59.2",
81
+ "@testing-library/dom": "10.4.2",
82
82
  "@testing-library/react": "16.3.0",
83
- "@testing-library/user-event": "14.6.1",
83
+ "@testing-library/user-event": "14.6.7",
84
84
  "@types/lodash-es": "4.17.12",
85
85
  "@types/node": "24.12.0",
86
86
  "@types/raf": "3.4.3",
@@ -115,12 +115,12 @@
115
115
  "typescript": "7.0.2",
116
116
  "vitest": "4.1.11",
117
117
  "vitest-dom": "0.1.1",
118
- "@gooddata/eslint-config": "11.59.0-alpha.1",
119
- "@gooddata/i18n-toolkit": "11.59.0-alpha.1",
120
- "@gooddata/oxlint-config": "11.59.0-alpha.1",
121
- "@gooddata/reference-workspace": "11.59.0-alpha.1",
122
- "@gooddata/stylelint-config": "11.59.0-alpha.1",
123
- "@gooddata/sdk-backend-mockingbird": "11.59.0-alpha.1"
118
+ "@gooddata/eslint-config": "11.59.0",
119
+ "@gooddata/reference-workspace": "11.59.0",
120
+ "@gooddata/i18n-toolkit": "11.59.0",
121
+ "@gooddata/oxlint-config": "11.59.0",
122
+ "@gooddata/sdk-backend-mockingbird": "11.59.0",
123
+ "@gooddata/stylelint-config": "11.59.0"
124
124
  },
125
125
  "peerDependencies": {
126
126
  "react": "^18.0.0 || ^19.0.0",
@@ -7,14 +7,14 @@
7
7
  display: flex;
8
8
  flex-direction: column;
9
9
  align-items: flex-start;
10
- gap: 10px;
10
+ gap: 20px;
11
11
  }
12
12
  .gdc-insight-not-saved-dialog .gd-ui-kit-button {
13
13
  font-weight: 700;
14
14
  }
15
15
  .gdc-insight-not-saved-dialog ul {
16
16
  padding: 0;
17
- margin: -5px 0 0 18px;
17
+ margin: -10px 0 0 18px;
18
18
  list-style: none;
19
19
  }
20
20
  .gdc-insight-not-saved-dialog ul li {
@@ -33336,14 +33336,14 @@ body.gd-kda-dialog-opened .highcharts-tooltip-container {
33336
33336
  display: flex;
33337
33337
  flex-direction: column;
33338
33338
  align-items: flex-start;
33339
- gap: 10px;
33339
+ gap: 20px;
33340
33340
  }
33341
33341
  .gdc-insight-not-saved-dialog .gd-ui-kit-button {
33342
33342
  font-weight: 700;
33343
33343
  }
33344
33344
  .gdc-insight-not-saved-dialog ul {
33345
33345
  padding: 0;
33346
- margin: -5px 0 0 18px;
33346
+ margin: -10px 0 0 18px;
33347
33347
  list-style: none;
33348
33348
  }
33349
33349
  .gdc-insight-not-saved-dialog ul li {
@@ -6,7 +6,7 @@
6
6
  display: flex;
7
7
  flex-direction: column;
8
8
  align-items: flex-start;
9
- gap: 10px;
9
+ gap: 20px;
10
10
 
11
11
  .gd-ui-kit-button {
12
12
  font-weight: 700;
@@ -14,7 +14,7 @@
14
14
 
15
15
  ul {
16
16
  padding: 0;
17
- margin: -5px 0 0 18px;
17
+ margin: -10px 0 0 18px;
18
18
  list-style: none;
19
19
 
20
20
  li {