@gooddata/sdk-ui-dashboard 11.48.0-alpha.2 → 11.48.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.
Files changed (149) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/kdaDialog/composition/KdaAttributesDropdown.d.ts +15 -0
  4. package/esm/kdaDialog/composition/KdaAttributesDropdown.d.ts.map +1 -0
  5. package/esm/kdaDialog/composition/KdaAttributesDropdown.js +66 -0
  6. package/esm/kdaDialog/composition/KdaAttributesSelectItem.d.ts +14 -0
  7. package/esm/kdaDialog/composition/KdaAttributesSelectItem.d.ts.map +1 -0
  8. package/esm/kdaDialog/composition/KdaAttributesSelectItem.js +33 -0
  9. package/esm/kdaDialog/composition/KeyDriversFooter.d.ts.map +1 -1
  10. package/esm/kdaDialog/composition/KeyDriversFooter.js +24 -78
  11. package/esm/kdaDialog/composition/hooks/useKdaAttributesSelection.d.ts +15 -0
  12. package/esm/kdaDialog/composition/hooks/useKdaAttributesSelection.d.ts.map +1 -0
  13. package/esm/kdaDialog/composition/hooks/useKdaAttributesSelection.js +51 -0
  14. package/esm/kdaDialog/composition/hooks/useKdaValidAttributes.d.ts +9 -0
  15. package/esm/kdaDialog/composition/hooks/useKdaValidAttributes.d.ts.map +1 -0
  16. package/esm/kdaDialog/composition/hooks/useKdaValidAttributes.js +45 -0
  17. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +2 -2
  18. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadUser.d.ts +2 -1
  19. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadUser.d.ts.map +1 -1
  20. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadUser.js +8 -1
  21. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.d.ts.map +1 -1
  22. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.js +1 -0
  23. package/esm/model/store/config/configSelectors.d.ts +6 -0
  24. package/esm/model/store/config/configSelectors.d.ts.map +1 -1
  25. package/esm/model/store/config/configSelectors.js +8 -0
  26. package/esm/model/store/meta/index.d.ts +1 -0
  27. package/esm/model/store/meta/index.d.ts.map +1 -1
  28. package/esm/model/store/meta/metaReducers.d.ts +4 -0
  29. package/esm/model/store/meta/metaReducers.d.ts.map +1 -1
  30. package/esm/model/store/meta/metaReducers.js +6 -0
  31. package/esm/model/store/meta/metaSelectors.d.ts +12 -0
  32. package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
  33. package/esm/model/store/meta/metaSelectors.js +25 -1
  34. package/esm/model/store/meta/metaState.d.ts +1 -1
  35. package/esm/model/store/meta/metaState.d.ts.map +1 -1
  36. package/esm/model/types/commonTypes.d.ts +16 -2
  37. package/esm/model/types/commonTypes.d.ts.map +1 -1
  38. package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertAttributeSelect.d.ts.map +1 -1
  39. package/esm/presentation/automations/alerting/DefaultAlertingDialog/components/AlertAttributeSelect.js +2 -6
  40. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertThreshold.d.ts +20 -0
  41. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertThreshold.d.ts.map +1 -0
  42. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertThreshold.js +16 -0
  43. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
  44. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +12 -8
  45. package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/Alert.d.ts.map +1 -1
  46. package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/Alert.js +2 -2
  47. package/esm/presentation/dashboard/DashboardHeader/DashboardTabs.d.ts.map +1 -1
  48. package/esm/presentation/dashboard/DashboardHeader/DashboardTabs.js +2 -2
  49. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.d.ts.map +1 -1
  50. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.js +1 -0
  51. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
  52. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +12 -2
  53. package/esm/presentation/dashboardSettingsDialog/types.d.ts +1 -0
  54. package/esm/presentation/dashboardSettingsDialog/types.d.ts.map +1 -1
  55. package/esm/presentation/dashboardSettingsDialog/types.js +1 -1
  56. package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
  57. package/esm/presentation/dashboardSettingsDialog/useDialogData.js +3 -1
  58. package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionModeItem.js +1 -1
  59. package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionType/SelectionTypeItem.js +1 -1
  60. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +4 -1
  61. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  62. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +4 -1
  63. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +4 -1
  64. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  65. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +5 -2
  66. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +4 -1
  67. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  68. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +4 -1
  69. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +21 -1
  70. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  71. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +25 -5
  72. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +4 -1
  73. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  74. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +4 -1
  75. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +4 -1
  76. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  77. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +5 -2
  78. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +4 -1
  79. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  80. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +5 -2
  81. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +4 -1
  82. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  83. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +5 -2
  84. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +4 -1
  85. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  86. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +5 -2
  87. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +4 -1
  88. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  89. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +4 -1
  90. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +4 -1
  91. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  92. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +5 -2
  93. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +4 -1
  94. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  95. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +5 -2
  96. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +4 -1
  97. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  98. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +4 -1
  99. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +4 -1
  100. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  101. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +6 -3
  102. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +4 -1
  103. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  104. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +5 -2
  105. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +4 -1
  106. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  107. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +7 -4
  108. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +4 -1
  109. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  110. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +6 -3
  111. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +4 -1
  112. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  113. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +12 -9
  114. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +4 -1
  115. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  116. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +5 -2
  117. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +4 -1
  118. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  119. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +4 -1
  120. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +4 -1
  121. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  122. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +6 -3
  123. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +4 -1
  124. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  125. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +4 -1
  126. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +4 -1
  127. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  128. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +4 -1
  129. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +4 -1
  130. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  131. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +7 -4
  132. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +4 -1
  133. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  134. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +4 -1
  135. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +4 -1
  136. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  137. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +4 -1
  138. package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.d.ts.map +1 -1
  139. package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.js +2 -2
  140. package/esm/sdk-ui-dashboard.d.ts +18 -2
  141. package/package.json +21 -21
  142. package/styles/css/alerting.css +0 -6
  143. package/styles/css/alerting.css.map +1 -1
  144. package/styles/css/kdaDialog.css +30 -9
  145. package/styles/css/kdaDialog.css.map +1 -1
  146. package/styles/css/main.css +30 -15
  147. package/styles/css/main.css.map +1 -1
  148. package/styles/scss/alerting.scss +0 -6
  149. package/styles/scss/kdaDialog.scss +30 -9
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.48.0-alpha.2";
1
+ export declare const LIB_VERSION = "11.48.0-alpha.4";
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
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.48.0-alpha.2";
3
+ export const LIB_VERSION = "11.48.0-alpha.4";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
@@ -0,0 +1,15 @@
1
+ import { type ICatalogAttribute } from "@gooddata/sdk-model";
2
+ import { type IKdaItemGroup } from "../internalTypes.js";
3
+ export interface IKdaAttributesDropdownProps {
4
+ buttonLabel: string;
5
+ attributesCount: number;
6
+ validAttributes: ICatalogAttribute[];
7
+ initialAttributes: ICatalogAttribute[];
8
+ mapAttributes: Map<string, IKdaItemGroup | undefined>;
9
+ isSearchBarVisible: boolean;
10
+ onApply: (selected: ICatalogAttribute[]) => void;
11
+ onOpen: () => void;
12
+ onClose: () => void;
13
+ }
14
+ export declare function KdaAttributesDropdown({ buttonLabel, attributesCount, validAttributes, initialAttributes, mapAttributes, isSearchBarVisible, onApply, onOpen, onClose }: IKdaAttributesDropdownProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=KdaAttributesDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KdaAttributesDropdown.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/KdaAttributesDropdown.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAW7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYzD,MAAM,WAAW,2BAA2B;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC,CAAC;IACtD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,EAClC,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,MAAM,EACN,OAAO,EACV,EAAE,2BAA2B,2CA0K7B"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2025-2026 GoodData Corporation
3
+ import { useId } from "react";
4
+ import { FormattedMessage, useIntl } from "react-intl";
5
+ import { Dropdown, InvertableSelectSearchBar, InvertableSelectVirtualised, SeparatorLine, UiButton, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
6
+ import { getAttributeKey, getAttributeTitle, useKdaAttributesSelection, } from "./hooks/useKdaAttributesSelection.js";
7
+ import { KdaAttributesSelectItem } from "./KdaAttributesSelectItem.js";
8
+ const ITEM_HEIGHT = 28;
9
+ const ALIGN_POINTS = [{ align: "tl bl" }];
10
+ export function KdaAttributesDropdown({ buttonLabel, attributesCount, validAttributes, initialAttributes, mapAttributes, isSearchBarVisible, onApply, onOpen, onClose, }) {
11
+ const intl = useIntl();
12
+ const labelKeyDriversId = useId();
13
+ const dropdownButtonId = useIdPrefixed("kda-attributes-dropdown-button");
14
+ const { searchString, setSearchString, selection, isInverted, filteredOptions, resolvedSelection, isApplyDisabled, onSelect, resetSelection, } = useKdaAttributesSelection(validAttributes, initialAttributes);
15
+ const popupLabel = intl.formatMessage({
16
+ id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.popupLabel",
17
+ });
18
+ return (_jsx(Dropdown, { className: "gd-kda-attributes-dropdown", closeOnEscape: true, autofocusOnOpen: true, overlayPositionType: "sameAsTarget", alignPoints: ALIGN_POINTS, returnFocusTo: dropdownButtonId, onOpenStateChanged: (isOpen) => {
19
+ if (isOpen) {
20
+ resetSelection();
21
+ onOpen();
22
+ }
23
+ else {
24
+ onClose();
25
+ }
26
+ }, renderButton: ({ toggleDropdown, isOpen, buttonRef, dropdownId }) => (_jsx(UiButton, { id: dropdownButtonId, dataTestId: `${attributesCount}_attributes`, ref: buttonRef, variant: "tertiary", iconAfter: "settings", isSelected: isOpen, label: buttonLabel, onClick: toggleDropdown, accessibilityConfig: {
27
+ ariaHaspopup: "dialog",
28
+ ariaExpanded: isOpen,
29
+ ariaControls: isOpen ? dropdownId : undefined,
30
+ } })), renderBody: ({ closeDropdown, ariaAttributes }) => {
31
+ const handleApply = () => {
32
+ onApply(resolvedSelection);
33
+ closeDropdown();
34
+ };
35
+ return (_jsxs("div", { ...ariaAttributes, "aria-labelledby": undefined, "aria-label": popupLabel, className: "gd-kda-attributes-dropdown__body", children: [
36
+ _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) => {
37
+ const group = mapAttributes.get(itemProps.item.attribute.id);
38
+ const driverCount = group?.significantDrivers.length ?? 0;
39
+ const count = driverCount > 0 ? `(${driverCount})` : "-";
40
+ const countAriaLabel = driverCount > 0
41
+ ? intl.formatMessage({
42
+ id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.countLabel",
43
+ }, { count: driverCount })
44
+ : intl.formatMessage({
45
+ id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.noDrivers",
46
+ });
47
+ return (_jsx(KdaAttributesSelectItem, { ...itemProps, right: _jsx("span", { className: "gd-kda-attributes-dropdown__key_drivers", "aria-label": countAriaLabel, children: count }) }));
48
+ }, renderSearchBar: isSearchBarVisible
49
+ ? ({ onSearch, searchString: search, searchPlaceholder }) => (_jsx(InvertableSelectSearchBar, { onSearch: onSearch, searchString: search, searchPlaceholder: searchPlaceholder, isSmall: true, onEscKeyPress: (e) => {
50
+ if (search) {
51
+ e.stopPropagation();
52
+ }
53
+ else {
54
+ closeDropdown();
55
+ }
56
+ } }))
57
+ : () => _jsx("div", { className: "gd-kda-attributes-dropdown__no-search" }), renderActions: () => (_jsxs("div", { className: "gd-kda-attributes-dropdown__subheader", children: [
58
+ _jsx("div", { className: "gd-kda-attributes-dropdown__subheader__attribute", children: _jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.detail.table.attribute" }) }), _jsx("div", { className: "gd-kda-attributes-dropdown__subheader__key_drivers", id: labelKeyDriversId, children: _jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.detail.table.drivers" }) })
59
+ ] })) }), _jsxs("div", { className: "gd-kda-attributes-dropdown__actions", children: [
60
+ _jsx(SeparatorLine, {}), _jsxs("div", { className: "gd-kda-attributes-dropdown__actions-buttons", children: [
61
+ _jsx(UiButton, { variant: "secondary", size: "small", onClick: closeDropdown, label: intl.formatMessage({ id: "gs.list.cancel" }) }), _jsx(UiButton, { variant: "primary", size: "small", isDisabled: isApplyDisabled, onClick: handleApply, label: intl.formatMessage({ id: "gs.list.apply" }) })
62
+ ] })
63
+ ] })
64
+ ] }));
65
+ } }));
66
+ }
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ export interface IKdaAttributesSelectItemProps<T> {
3
+ item: T;
4
+ title: string;
5
+ isSelected: boolean;
6
+ focusedAction?: string;
7
+ index?: number;
8
+ onSelect: () => void;
9
+ onDeselect: () => void;
10
+ onSelectOnly: () => void;
11
+ right?: ReactNode;
12
+ }
13
+ export declare function KdaAttributesSelectItem<T>({ item, title, isSelected, focusedAction, index, onSelect, onDeselect, onSelectOnly, right }: IKdaAttributesSelectItemProps<T>): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=KdaAttributesSelectItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KdaAttributesSelectItem.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/KdaAttributesSelectItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AASrE,MAAM,WAAW,6BAA6B,CAAC,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EACvC,IAAI,EACJ,KAAK,EACL,UAAU,EACV,aAAa,EACb,KAAK,EACL,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,KAAK,EACR,EAAE,6BAA6B,CAAC,CAAC,CAAC,2CAkFlC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2025-2026 GoodData Corporation
3
+ import { useCallback } from "react";
4
+ import cx from "classnames";
5
+ import { FormattedMessage, useIntl } from "react-intl";
6
+ import { SELECT_ITEM_ACTION, ScopedIdStore, UiLink } from "@gooddata/sdk-ui-kit";
7
+ const ONLY_ACTION = "only";
8
+ export function KdaAttributesSelectItem({ item, title, isSelected, focusedAction, index, onSelect, onDeselect, onSelectOnly, right, }) {
9
+ const intl = useIntl();
10
+ const makeId = ScopedIdStore.useContextStoreOptional((ctx) => ctx.makeId);
11
+ const onItemClick = useCallback(() => {
12
+ if (isSelected) {
13
+ onDeselect();
14
+ }
15
+ else {
16
+ onSelect();
17
+ }
18
+ }, [isSelected, onSelect, onDeselect]);
19
+ const onOnlyClick = useCallback((event) => {
20
+ event.stopPropagation();
21
+ onSelectOnly();
22
+ }, [onSelectOnly]);
23
+ const classes = cx("gd-kda-attributes-select-item", "gd-attribute-filter-elements-select-item__next", "gd-list-item", "has-only-visible", { "is-selected": isSelected }, {
24
+ "gd-attribute-filter-list-item--isFocused": !!focusedAction,
25
+ "gd-attribute-filter-list-item--isFocusedSelectItem": focusedAction === SELECT_ITEM_ACTION,
26
+ });
27
+ return (_jsxs("div", { className: classes, onClick: onItemClick, role: "row", tabIndex: -1, "aria-rowindex": index, "aria-label": title, children: [
28
+ _jsx("div", { role: "gridcell", className: "gd-attribute-filter-list-item-label", children: _jsxs("label", { className: "input-checkbox-label", children: [
29
+ _jsx("input", { tabIndex: focusedAction === SELECT_ITEM_ACTION ? 0 : -1, id: makeId?.({ item, specifier: SELECT_ITEM_ACTION }), type: "checkbox", className: "input-checkbox", readOnly: true, checked: isSelected }), _jsx("span", { className: "input-label-text", children: title })
30
+ ] }) }), _jsx("div", { className: cx("gd-list-item-only", {
31
+ "gd-list-item-only--isFocusedSelectItem": focusedAction === ONLY_ACTION,
32
+ }), role: "gridcell", children: _jsx(UiLink, { onClick: onOnlyClick, id: makeId?.({ item, specifier: ONLY_ACTION }), variant: "primary", flipUnderline: true, role: "button", "aria-label": intl.formatMessage({ id: "attributesDropdown.onlyLabel" }, { itemTitle: title }), tabIndex: focusedAction === ONLY_ACTION ? 0 : -1, children: _jsx(FormattedMessage, { id: "gs.list.only" }) }) }), right ? (_jsx("div", { role: "gridcell", className: "gd-kda-attributes-select-item__right", children: right })) : null] }));
33
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"KeyDriversFooter.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/KeyDriversFooter.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,gBAAgB,mDAyM/B"}
1
+ {"version":3,"file":"KeyDriversFooter.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/composition/KeyDriversFooter.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,gBAAgB,mDA2E/B"}
@@ -1,19 +1,16 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  // (C) 2025-2026 GoodData Corporation
3
- import { useId, useMemo } from "react";
4
- import { FormattedMessage, useIntl } from "react-intl";
3
+ import { useCallback } from "react";
4
+ import { FormattedMessage } from "react-intl";
5
5
  import { areObjRefsEqual } from "@gooddata/sdk-model";
6
- import { DropdownInvertableSelect, InvertableSelectItem, UiButton, UiSkeleton } from "@gooddata/sdk-ui-kit";
6
+ import { UiSkeleton } from "@gooddata/sdk-ui-kit";
7
7
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
8
- import { selectCatalogAttributes, selectCatalogIsLoaded, } from "../../model/store/catalog/catalogSelectors.js";
9
- import { useSummaryDrivers } from "../hooks/useSummaryDrivers.js";
8
+ import { selectCatalogIsLoaded } from "../../model/store/catalog/catalogSelectors.js";
10
9
  import { useKdaState } from "../providers/KdaState.js";
10
+ import { useKdaValidAttributes } from "./hooks/useKdaValidAttributes.js";
11
+ import { KdaAttributesDropdown } from "./KdaAttributesDropdown.js";
11
12
  export function KeyDriversFooter() {
12
13
  const { state, setState } = useKdaState();
13
- const list = useSummaryDrivers();
14
- const intl = useIntl();
15
- const labelAttributeId = useId();
16
- const labelKeyDriversId = useId();
17
14
  const isCatalogLoaded = useDashboardSelector(selectCatalogIsLoaded);
18
15
  const isLoading = !isCatalogLoaded ||
19
16
  state.itemsStatus === "pending" ||
@@ -21,34 +18,22 @@ export function KeyDriversFooter() {
21
18
  state.relevantStatus === "pending" ||
22
19
  state.relevantStatus === "loading";
23
20
  const isError = state.itemsStatus === "error";
24
- const allAttributes = useDashboardSelector(selectCatalogAttributes);
25
- const { validAttributes, mapAttributes } = useMemo(() => {
26
- const mapAttributes = new Map();
27
- const validAttributes = allAttributes
28
- .filter((a) => {
29
- return state.relevantAttributes.some((attr) => areObjRefsEqual(attr, a.attribute.ref));
30
- })
31
- .map((a) => {
32
- const group = list.find((item) => a.displayForms.some((df) => areObjRefsEqual(df.ref, item.displayForm)));
33
- mapAttributes.set(a.attribute.ref, group);
34
- return [a, group];
35
- })
36
- .sort(([, a], [, b]) => {
37
- const aIndex = a ? list.indexOf(a) : Number.MAX_VALUE;
38
- const bIndex = b ? list.indexOf(b) : Number.MAX_VALUE;
39
- return aIndex - bIndex;
40
- })
41
- .map(([a]) => a);
42
- return { validAttributes, mapAttributes };
43
- }, [allAttributes, list, state.relevantAttributes]);
44
- const initialAttributes = useMemo(() => {
45
- return state.selectedAttributes
46
- .map((attr) => {
47
- return validAttributes.find((a) => a.displayForms.some((df) => areObjRefsEqual(df.ref, attr)));
48
- })
49
- .filter(Boolean);
50
- }, [state.selectedAttributes, validAttributes]);
51
- const isSearchBarVisible = validAttributes.length > 7;
21
+ const { validAttributes, mapAttributes, initialAttributes, isSearchBarVisible } = useKdaValidAttributes();
22
+ const onApply = useCallback((selected) => {
23
+ setState({
24
+ selectedAttributes: selected.map((item) => {
25
+ const existingRef = state.selectedAttributes.find((ref) => item.displayForms.some((df) => areObjRefsEqual(df.ref, ref)));
26
+ return existingRef ?? item.defaultDisplayForm.ref;
27
+ }),
28
+ selectedUpdated: Date.now(),
29
+ });
30
+ }, [setState, state.selectedAttributes]);
31
+ const onOpen = useCallback(() => {
32
+ setState({ attributesDropdownOpen: true });
33
+ }, [setState]);
34
+ const onClose = useCallback(() => {
35
+ setState({ attributesDropdownOpen: false });
36
+ }, [setState]);
52
37
  //Do not show footer when kda is not loaded at all
53
38
  if (isError) {
54
39
  return null;
@@ -60,46 +45,7 @@ export function KeyDriversFooter() {
60
45
  const buttonLabel = chunks
61
46
  .filter((chunk) => typeof chunk === "string")
62
47
  .join("");
63
- return (_jsx(DropdownInvertableSelect, { closeOnEscape: true, accessibilityConfig: {
64
- triggerRole: "button",
65
- popupRole: "dialog",
66
- popupLabel: intl.formatMessage({
67
- id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.popupLabel",
68
- }),
69
- }, className: "gd-kda-attributes-dropdown", initialValue: initialAttributes, overlayPositionType: "sameAsTarget", initialIsInverted: false, options: validAttributes, onOpen: () => {
70
- setState({
71
- attributesDropdownOpen: true,
72
- });
73
- }, onClose: () => {
74
- setState({
75
- attributesDropdownOpen: false,
76
- });
77
- }, alignPoints: [{ align: "tl bl" }], getItemTitle: (item) => item.attribute.title, getItemKey: (item) => item.attribute.id, onChange: (selectedItems, isInverted) => {
78
- const selected = isInverted
79
- ? validAttributes.filter((a) => !selectedItems.includes(a))
80
- : selectedItems;
81
- setState({
82
- selectedAttributes: selected.map((item) => item.defaultDisplayForm.ref),
83
- selectedUpdated: Date.now(),
84
- });
85
- }, header: _jsx("div", { className: "gd-kda-attributes-dropdown__header", children: _jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.summary.drivers.attributes" }) }), renderSearchBar: isSearchBarVisible
86
- ? undefined
87
- : () => _jsx("div", { className: "gd-kda-attributes-dropdown__no-search" }), renderItem: (props) => (_jsx(InvertableSelectItem, { title: props.title, isSelected: props.isSelected, onClick: props.isSelected ? props.onDeselect : props.onSelect, onOnly: props.onSelectOnly, accessibilityConfig: {
88
- ariaLabelledBy: labelAttributeId,
89
- }, renderRight: () => {
90
- const group = mapAttributes.get(props.item.attribute.ref);
91
- if (!group || group.significantDrivers.length === 0) {
92
- return (_jsx("span", { className: "gd-kda-attributes-dropdown__key_drivers", "aria-labelledby": labelKeyDriversId, children: "-" }));
93
- }
94
- return (_jsxs("span", { className: "gd-kda-attributes-dropdown__key_drivers", "aria-labelledby": labelKeyDriversId, children: ["(", group.significantDrivers.length, ")"] }));
95
- } })), renderButton: ({ buttonRef, isOpen, toggleDropdown, accessibilityConfig, }) => (_jsx(UiButton, { ref: buttonRef, variant: "tertiary", iconAfter: "settings", isSelected: isOpen, label: buttonLabel, onClick: toggleDropdown, accessibilityConfig: {
96
- ...accessibilityConfig,
97
- ariaHaspopup: "dialog",
98
- } })), renderListActions: () => {
99
- return (_jsx(_Fragment, { children: _jsxs("div", { className: "gd-kda-attributes-dropdown__subheader", children: [
100
- _jsx("div", { className: "gd-kda-attributes-dropdown__subheader__attribute", id: labelAttributeId, children: _jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.detail.table.attribute" }) }), _jsx("div", { className: "gd-kda-attributes-dropdown__subheader__key_drivers", id: labelKeyDriversId, children: _jsx(FormattedMessage, { id: "kdaDialog.dialog.keyDrives.overview.detail.table.drivers" }) })
101
- ] }) }));
102
- } }));
48
+ return (_jsx(KdaAttributesDropdown, { buttonLabel: buttonLabel, attributesCount: state.selectedAttributes.length, validAttributes: validAttributes, initialAttributes: initialAttributes, mapAttributes: mapAttributes, isSearchBarVisible: isSearchBarVisible, onApply: onApply, onOpen: onOpen, onClose: onClose }));
103
49
  },
104
50
  } })) }));
105
51
  }
@@ -0,0 +1,15 @@
1
+ import { type ICatalogAttribute } from "@gooddata/sdk-model";
2
+ export declare const getAttributeKey: (item: ICatalogAttribute) => string;
3
+ export declare const getAttributeTitle: (item: ICatalogAttribute) => string;
4
+ export declare function useKdaAttributesSelection(validAttributes: ICatalogAttribute[], initialAttributes: ICatalogAttribute[]): {
5
+ searchString: string;
6
+ setSearchString: import("react").Dispatch<import("react").SetStateAction<string>>;
7
+ selection: ICatalogAttribute[];
8
+ isInverted: boolean;
9
+ filteredOptions: ICatalogAttribute[];
10
+ resolvedSelection: ICatalogAttribute[];
11
+ isApplyDisabled: boolean;
12
+ onSelect: (selectedItems: ICatalogAttribute[], inverted: boolean) => void;
13
+ resetSelection: () => void;
14
+ };
15
+ //# sourceMappingURL=useKdaAttributesSelection.d.ts.map
@@ -0,0 +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,qCAAiD,CAAC;AAC9E,eAAO,MAAM,iBAAiB,qCAAoD,CAAC;AAEnF,wBAAgB,yBAAyB,CACrC,eAAe,EAAE,iBAAiB,EAAE,EACpC,iBAAiB,EAAE,iBAAiB,EAAE;;;;;;;;;;EAuDzC"}
@@ -0,0 +1,51 @@
1
+ // (C) 2025-2026 GoodData Corporation
2
+ import { useCallback, useMemo, useState } from "react";
3
+ export const getAttributeKey = (item) => item.attribute.id;
4
+ export const getAttributeTitle = (item) => item.attribute.title;
5
+ export function useKdaAttributesSelection(validAttributes, initialAttributes) {
6
+ const [searchString, setSearchString] = useState("");
7
+ const [selection, setSelection] = useState(initialAttributes);
8
+ const [isInverted, setIsInverted] = useState(false);
9
+ const resetSelection = useCallback(() => {
10
+ setSelection(initialAttributes);
11
+ setIsInverted(false);
12
+ setSearchString("");
13
+ }, [initialAttributes]);
14
+ const filteredOptions = useMemo(() => {
15
+ if (!searchString) {
16
+ return validAttributes;
17
+ }
18
+ const lowerSearch = searchString.toLowerCase();
19
+ return validAttributes.filter((option) => getAttributeTitle(option).toLowerCase().includes(lowerSearch));
20
+ }, [validAttributes, searchString]);
21
+ const resolvedSelection = useMemo(() => {
22
+ if (!isInverted) {
23
+ return selection;
24
+ }
25
+ const selectedIds = new Set(selection.map(getAttributeKey));
26
+ return validAttributes.filter((a) => !selectedIds.has(getAttributeKey(a)));
27
+ }, [isInverted, selection, validAttributes]);
28
+ const isApplyDisabled = useMemo(() => {
29
+ if (resolvedSelection.length === 0) {
30
+ return true;
31
+ }
32
+ const currentIds = new Set(resolvedSelection.map(getAttributeKey));
33
+ const committedIds = new Set(initialAttributes.map(getAttributeKey));
34
+ return currentIds.size === committedIds.size && [...currentIds].every((id) => committedIds.has(id));
35
+ }, [resolvedSelection, initialAttributes]);
36
+ const onSelect = useCallback((selectedItems, inverted) => {
37
+ setSelection(selectedItems);
38
+ setIsInverted(inverted);
39
+ }, []);
40
+ return {
41
+ searchString,
42
+ setSearchString,
43
+ selection,
44
+ isInverted,
45
+ filteredOptions,
46
+ resolvedSelection,
47
+ isApplyDisabled,
48
+ onSelect,
49
+ resetSelection,
50
+ };
51
+ }
@@ -0,0 +1,9 @@
1
+ import { type ICatalogAttribute } from "@gooddata/sdk-model";
2
+ import { type IKdaItemGroup } from "../../internalTypes.js";
3
+ export declare function useKdaValidAttributes(): {
4
+ validAttributes: ICatalogAttribute[];
5
+ mapAttributes: Map<string, IKdaItemGroup | undefined>;
6
+ initialAttributes: ICatalogAttribute[];
7
+ isSearchBarVisible: boolean;
8
+ };
9
+ //# sourceMappingURL=useKdaValidAttributes.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,45 @@
1
+ // (C) 2025-2026 GoodData Corporation
2
+ import { useMemo } from "react";
3
+ import { areObjRefsEqual } from "@gooddata/sdk-model";
4
+ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
5
+ import { selectCatalogAttributes } from "../../../model/store/catalog/catalogSelectors.js";
6
+ import { useSummaryDrivers } from "../../hooks/useSummaryDrivers.js";
7
+ import { useKdaState } from "../../providers/KdaState.js";
8
+ const SEARCH_BAR_THRESHOLD = 7;
9
+ export function useKdaValidAttributes() {
10
+ const { state } = useKdaState();
11
+ const list = useSummaryDrivers();
12
+ const allAttributes = useDashboardSelector(selectCatalogAttributes);
13
+ const { validAttributes, mapAttributes } = useMemo(() => {
14
+ const mapAttributes = new Map();
15
+ const validAttributes = allAttributes
16
+ .filter((a) => {
17
+ return state.relevantAttributes.some((attr) => areObjRefsEqual(attr, a.attribute.ref));
18
+ })
19
+ .map((a) => {
20
+ const group = list.find((item) => a.displayForms.some((df) => areObjRefsEqual(df.ref, item.displayForm)));
21
+ mapAttributes.set(a.attribute.id, group);
22
+ return [a, group];
23
+ })
24
+ .sort(([, a], [, b]) => {
25
+ const aIndex = a ? list.indexOf(a) : Number.MAX_VALUE;
26
+ const bIndex = b ? list.indexOf(b) : Number.MAX_VALUE;
27
+ return aIndex - bIndex;
28
+ })
29
+ .map(([a]) => a);
30
+ return { validAttributes, mapAttributes };
31
+ }, [allAttributes, list, state.relevantAttributes]);
32
+ const initialAttributes = useMemo(() => {
33
+ return state.selectedAttributes
34
+ .map((attr) => {
35
+ return validAttributes.find((a) => a.displayForms.some((df) => areObjRefsEqual(df.ref, attr)));
36
+ })
37
+ .filter((a) => a !== undefined);
38
+ }, [state.selectedAttributes, validAttributes]);
39
+ return {
40
+ validAttributes,
41
+ mapAttributes,
42
+ initialAttributes,
43
+ isSearchBarVisible: validAttributes.length > SEARCH_BAR_THRESHOLD,
44
+ };
45
+ }
@@ -169,7 +169,7 @@ function* loadExistingDashboard(ctx, cmd, dashboardRef) {
169
169
  call(resolveDashboardConfigAndFeatureFlagDependentCalls, ctx, cmd),
170
170
  call(resolvePermissions, ctx, cmd),
171
171
  call(resolveEntitlements, ctx, cmd),
172
- call(loadUser, ctx),
172
+ call(loadUser, ctx, cmd),
173
173
  call(loadDashboardPermissions, ctx),
174
174
  call(loadDateHierarchyTemplates, ctx),
175
175
  call(loadFilterViews, ctx),
@@ -226,7 +226,7 @@ function* initializeNewDashboard(ctx, cmd) {
226
226
  call(resolvePermissions, ctx, cmd),
227
227
  call(resolveEntitlements, ctx, cmd),
228
228
  call(loadCatalog, ctx, cmd),
229
- call(loadUser, ctx),
229
+ call(loadUser, ctx, cmd),
230
230
  call(loadDashboardList, ctx),
231
231
  call(loadDateHierarchyTemplates, ctx),
232
232
  call(loadFilterViews, ctx),
@@ -1,4 +1,5 @@
1
1
  import { type IUser } from "@gooddata/sdk-model";
2
+ import { type InitializeDashboard } from "../../../commands/dashboard.js";
2
3
  import { type DashboardContext } from "../../../types/commonTypes.js";
3
- export declare function loadUser({ backend }: DashboardContext): Promise<IUser>;
4
+ export declare function loadUser({ backend }: DashboardContext, cmd: InitializeDashboard): Promise<IUser>;
4
5
  //# sourceMappingURL=loadUser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadUser.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/loadUser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,CAEtE"}
1
+ {"version":3,"file":"loadUser.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/loadUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,CAQhG"}
@@ -1,3 +1,10 @@
1
- export function loadUser({ backend }) {
1
+ // (C) 2021-2026 GoodData Corporation
2
+ export function loadUser({ backend }, cmd) {
3
+ // Reuse a user supplied via config instead of re-fetching it, so an embedding application that
4
+ // already resolved the current user does not trigger a duplicate backend request.
5
+ const preloadedUser = cmd.payload.config?.user;
6
+ if (preloadedUser) {
7
+ return Promise.resolve(preloadedUser);
8
+ }
2
9
  return backend.currentUser().getUserWithDetails();
3
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolveDashboardConfig.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAEH,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE/B,MAAM,+BAA+B,CAAC;AA2HvC;;;;GAIG;AACH,wBAAiB,sBAAsB,CACnC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,mBAAmB,GACzB,YAAY,CAAC,uBAAuB,CAAC,CAmEvC;AAoDD;;GAEG;AACH,wBAAiB,kDAAkD,CAC/D,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,mBAAmB,GACzB,YAAY,CAAC;IACZ,cAAc,EAAE,uBAAuB,CAAC;IACxC,cAAc,EAAE;QACZ,yBAAyB,EAAE,MAAM,CAAC;QAClC,yBAAyB,EAAE,MAAM,CAAC;KACrC,CAAC;CACL,CAAC,CAQD"}
1
+ {"version":3,"file":"resolveDashboardConfig.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAEH,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE/B,MAAM,+BAA+B,CAAC;AA2HvC;;;;GAIG;AACH,wBAAiB,sBAAsB,CACnC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,mBAAmB,GACzB,YAAY,CAAC,uBAAuB,CAAC,CAmEvC;AAsDD;;GAEG;AACH,wBAAiB,kDAAkD,CAC/D,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,mBAAmB,GACzB,YAAY,CAAC;IACZ,cAAc,EAAE,uBAAuB,CAAC;IACxC,cAAc,EAAE;QACZ,yBAAyB,EAAE,MAAM,CAAC;QAClC,yBAAyB,EAAE,MAAM,CAAC;KACrC,CAAC;CACL,CAAC,CAQD"}
@@ -154,6 +154,7 @@ const CONFIG_DEFAULTS = {
154
154
  hideShareButton: false,
155
155
  disableCrossFiltering: false,
156
156
  disableUserFilterReset: false,
157
+ disablePersistentFiltersAcrossTabs: false,
157
158
  widgetsOverlay: {},
158
159
  externalRecipient: undefined,
159
160
  hideAddTabButton: false,
@@ -469,4 +469,10 @@ export declare const selectEnableVisualizationFilteringByTags: DashboardSelector
469
469
  * @internal
470
470
  */
471
471
  export declare const selectEnableDashboardDensitySetting: DashboardSelector<boolean>;
472
+ /**
473
+ * Returns whether dashboard persistent filters across tabs feature flag is enabled.
474
+ *
475
+ * @alpha
476
+ */
477
+ export declare const selectEnableDashboardPersistentFiltersAcrossTabs: DashboardSelector<boolean>;
472
478
  //# sourceMappingURL=configSelectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configSelectors.d.ts","sourceRoot":"","sources":["../../../../src/model/store/config/configSelectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configSelectors.d.ts","sourceRoot":"","sources":["../../../../src/model/store/config/configSelectors.ts"],"names":[],"mappings":"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"}
@@ -643,3 +643,11 @@ export const selectEnableVisualizationFilteringByTags = createSelector(selectCon
643
643
  export const selectEnableDashboardDensitySetting = createSelector(selectConfig, (state) => {
644
644
  return state.settings?.enableDashboardDensitySetting ?? false;
645
645
  });
646
+ /**
647
+ * Returns whether dashboard persistent filters across tabs feature flag is enabled.
648
+ *
649
+ * @alpha
650
+ */
651
+ export const selectEnableDashboardPersistentFiltersAcrossTabs = createSelector(selectConfig, (state) => {
652
+ return state.settings?.enableDashboardPersistentFiltersAcrossTabs ?? false;
653
+ });
@@ -11,6 +11,7 @@ export declare const metaActions: {
11
11
  }, "meta/setMeta">;
12
12
  setDashboardTitle: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "meta/setDashboardTitle">;
13
13
  setDisableCrossFiltering: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "meta/setDisableCrossFiltering">;
14
+ setDisablePersistentFiltersAcrossTabs: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "meta/setDisablePersistentFiltersAcrossTabs">;
14
15
  setDisableUserFilterReset: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "meta/setDisableUserFilterReset">;
15
16
  setDisableUserFilterSave: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "meta/setDisableUserFilterSave">;
16
17
  setDisableFilterViews: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "meta/setDisableFilterViews">;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/store/meta/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,gBAAgB,CAAC;AAQ5E,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAqB,CAAC;AAGhF;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;CAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/store/meta/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,gBAAgB,CAAC;AAQ5E,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAqB,CAAC;AAGhF;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAA2B,CAAC"}
@@ -19,6 +19,10 @@ export declare const metaReducers: {
19
19
  payload: boolean;
20
20
  type: string;
21
21
  }>;
22
+ setDisablePersistentFiltersAcrossTabs: MetaReducer<{
23
+ payload: boolean;
24
+ type: string;
25
+ }>;
22
26
  setDisableUserFilterReset: MetaReducer<{
23
27
  payload: boolean;
24
28
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"metaReducers.d.ts","sourceRoot":"","sources":["../../../../src/model/store/meta/metaReducers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEpF,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAEzE,KAAK,cAAc,GAAG;IAClB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAkEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASxB,CAAC"}
1
+ {"version":3,"file":"metaReducers.d.ts","sourceRoot":"","sources":["../../../../src/model/store/meta/metaReducers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEpF,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAEzE,KAAK,cAAc,GAAG;IAClB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAyEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUxB,CAAC"}
@@ -17,6 +17,7 @@ const setMeta = (state, action) => {
17
17
  disableUserFilterReset: dashboard.disableUserFilterReset,
18
18
  disableUserFilterSave: dashboard.disableUserFilterSave,
19
19
  disableFilterViews: dashboard.disableFilterViews,
20
+ disablePersistentFiltersAcrossTabs: dashboard.disablePersistentFiltersAcrossTabs,
20
21
  sectionHeadersDateDataSet: dashboard.sectionHeadersDateDataSet,
21
22
  }
22
23
  : { ...EmptyDashboardDescriptor };
@@ -30,6 +31,10 @@ const setDisableCrossFiltering = (state, action) => {
30
31
  invariant(state.descriptor);
31
32
  state.descriptor.disableCrossFiltering = action.payload;
32
33
  };
34
+ const setDisablePersistentFiltersAcrossTabs = (state, action) => {
35
+ invariant(state.descriptor);
36
+ state.descriptor.disablePersistentFiltersAcrossTabs = action.payload;
37
+ };
33
38
  const setDisableUserFilterReset = (state, action) => {
34
39
  invariant(state.descriptor);
35
40
  state.descriptor.disableUserFilterReset = action.payload;
@@ -54,6 +59,7 @@ export const metaReducers = {
54
59
  setMeta,
55
60
  setDashboardTitle,
56
61
  setDisableCrossFiltering,
62
+ setDisablePersistentFiltersAcrossTabs,
57
63
  setDisableUserFilterReset,
58
64
  setDisableUserFilterSave,
59
65
  setDisableFilterViews,