@gooddata/sdk-ui-dashboard 11.43.0-alpha.2 → 11.43.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.
Files changed (45) hide show
  1. package/NOTICE +4826 -13873
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/index.d.ts +1 -1
  5. package/esm/index.d.ts.map +1 -1
  6. package/esm/index.js +1 -1
  7. package/esm/model/commandHandlers/dashboard/common/filterViews.d.ts +2 -2
  8. package/esm/model/commandHandlers/dashboard/common/filterViews.d.ts.map +1 -1
  9. package/esm/model/commandHandlers/dashboard/common/filterViews.js +1 -5
  10. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +1 -1
  11. package/esm/model/commandHandlers/dashboard/resetDashboardHandler.js +1 -1
  12. package/esm/model/queryServices/queryWidgetFilters.d.ts +1 -1
  13. package/esm/model/queryServices/queryWidgetFilters.d.ts.map +1 -1
  14. package/esm/model/queryServices/queryWidgetFilters.js +19 -36
  15. package/esm/model/store/config/configSelectors.d.ts +0 -6
  16. package/esm/model/store/config/configSelectors.d.ts.map +1 -1
  17. package/esm/model/store/config/configSelectors.js +0 -8
  18. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +1 -1
  19. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts.map +1 -1
  20. package/esm/model/store/tabs/parameters/parametersHelpers.js +2 -2
  21. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +6 -0
  22. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts.map +1 -1
  23. package/esm/model/store/tabs/parameters/parametersSelectors.js +11 -4
  24. package/esm/model/store/topBar/topBarSelectors.d.ts.map +1 -1
  25. package/esm/model/store/topBar/topBarSelectors.js +4 -4
  26. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
  27. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +18 -13
  28. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
  29. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +3 -4
  30. package/esm/presentation/export/DefaultDashboardExportVariables.d.ts.map +1 -1
  31. package/esm/presentation/export/DefaultDashboardExportVariables.js +13 -8
  32. package/esm/presentation/export/DefaultDashboardExportVariables.test.d.ts +2 -0
  33. package/esm/presentation/export/DefaultDashboardExportVariables.test.d.ts.map +1 -0
  34. package/esm/presentation/export/DefaultDashboardExportVariables.test.js +58 -0
  35. package/esm/presentation/export/types.d.ts +2 -1
  36. package/esm/presentation/export/types.d.ts.map +1 -1
  37. package/esm/presentation/export/useExportData.d.ts.map +1 -1
  38. package/esm/presentation/export/useExportData.js +6 -0
  39. package/esm/presentation/filterBar/filterBar/DefaultFilterBarContainer.d.ts.map +1 -1
  40. package/esm/presentation/filterBar/filterBar/DefaultFilterBarContainer.js +3 -3
  41. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -1
  42. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +2 -2
  43. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -1
  44. package/esm/sdk-ui-dashboard.d.ts +2 -8
  45. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"parametersSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/model/store/tabs/parameters/parametersSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,OAAO,EACH,KAAK,wBAAwB,EAGhC,MAAM,sBAAsB,CAAC;AAkB9B;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,CAG9E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAG/E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,wBAAwB,EAAE,CAGzF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,GAAG,SAAS,CAMtF,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,EAAE,CAC7C,GAAG,EAAE,MAAM,KACV,iBAAiB,CAAC,wBAAwB,GAAG,SAAS,CAI1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAGlG,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAa7F,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kCAAkC,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CA4BnG,CAAC;AA6BN;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAchE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,EAAE,iBAAiB,CAChE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,CAa/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EAAE,iBAAiB,CAAC,OAAO,CAGjF,CAAC;AA6BF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uCAAuC,EAAE,CAClD,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,sBAAsB,EAAE,CA6B9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+CAA+C,EAAE,CAC1D,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,sBAAsB,EAAE,CAW9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2CAA2C,EAAE,CACtD,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,mBAAmB,EAAE,CAe3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,+BAA+B,EAAE,CAC1C,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,KAC9B,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAGX,CAAC"}
1
+ {"version":3,"file":"parametersSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/model/store/tabs/parameters/parametersSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAa7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,OAAO,EACH,KAAK,wBAAwB,EAGhC,MAAM,sBAAsB,CAAC;AAmB9B;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,CAG9E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAG/E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,wBAAwB,EAAE,CAGzF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,GAAG,SAAS,CAMtF,CAAC;AAEP;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,EAAE,CAC7C,GAAG,EAAE,MAAM,KACV,iBAAiB,CAAC,wBAAwB,GAAG,SAAS,CAI1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAGlG,CAAC;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG,SAAS,CAa7F,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kCAAkC,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CA4BnG,CAAC;AA6BN;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAchE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,EAAE,iBAAiB,CAChE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,CAa/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EAAE,iBAAiB,CAAC,OAAO,CAGjF,CAAC;AA6BF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uCAAuC,EAAE,CAClD,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,sBAAsB,EAAE,CA6B9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,+CAA+C,EAAE,CAC1D,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,sBAAsB,EAAE,CAW9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2CAA2C,EAAE,CACtD,GAAG,EAAE,MAAM,GAAG,SAAS,KACtB,iBAAiB,CAAC,mBAAmB,EAAE,CAe3C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,+BAA+B,EAAE,CAC1C,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,KAC9B,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAGX,CAAC;AA6DxD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,yBAAyB,EAAE,CAI1F,CAAC"}
@@ -8,11 +8,12 @@ import { selectEnableParameters } from "../../config/configSelectors.js";
8
8
  import { selectInsightsMap } from "../../insights/insightsSelectors.js";
9
9
  import { selectIsInEditMode } from "../../renderMode/renderModeSelectors.js";
10
10
  import { selectAllTabsInsightWidgetContexts } from "../layout/layoutSelectors.js";
11
- import { selectActiveTab, selectTabs } from "../tabsSelectors.js";
11
+ import { selectActiveOrDefaultTabLocalIdentifier, selectActiveTab, selectTabs } from "../tabsSelectors.js";
12
12
  import { DEFAULT_TAB_ID } from "../tabsState.js";
13
- import { EMPTY_EXPORT_PARAMETERS, applyRuntimeOverride, buildPersistedByTabAndRef, buildWidgetScopeTabRefSelections, collectExportOverrides, collectReferencedParameterRefs, computeParameterResetTargets, computeParameterResetValue, smartPersistResolvedEntry, workspaceParametersByRef, } from "./parametersHelpers.js";
13
+ import { EMPTY_EXPORT_PARAMETERS_BY_TAB, applyRuntimeOverride, buildPersistedByTabAndRef, buildWidgetScopeTabRefSelections, collectExportOverrides, collectReferencedParameterRefs, computeParameterResetTargets, computeParameterResetValue, smartPersistResolvedEntry, workspaceParametersByRef, } from "./parametersHelpers.js";
14
14
  import { parametersInitialState, pickTabParametersSource, } from "./parametersState.js";
15
15
  const EMPTY_PARAMETERS = [];
16
+ const EMPTY_EXPORT_PARAMETERS = [];
16
17
  const EMPTY_PARAMETER_VALUES = [];
17
18
  const EMPTY_TABS = [];
18
19
  const EMPTY_RESET_TARGETS = [];
@@ -293,16 +294,22 @@ export const selectExportEffectiveParameters = (widgetIds) => widgetIds?.length
293
294
  : selectExportEffectiveParametersDashboardScope;
294
295
  const selectExportEffectiveParametersDashboardScope = createSelector(selectTabs, selectEnableParameters, selectCatalogParameters, selectCatalogParametersIsLoaded, (tabs, isEnabled, catalogParameters, isCatalogLoaded) => {
295
296
  if (!isEnabled || !isCatalogLoaded || !tabs?.length) {
296
- return EMPTY_EXPORT_PARAMETERS;
297
+ return EMPTY_EXPORT_PARAMETERS_BY_TAB;
297
298
  }
298
299
  const workspaceByRef = new Map(catalogParameters.map((parameter) => [objRefToString(parameter.ref), parameter]));
299
300
  return collectExportOverrides(tabs.map((tab) => ({ tab })), workspaceByRef);
300
301
  });
301
302
  const selectExportEffectiveParametersForWidgets = createMemoizedSelector((widgetIds) => createSelector(selectAllTabsInsightWidgetContexts, selectInsightsMap, selectEnableParameters, selectCatalogParameters, selectCatalogParametersIsLoaded, selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, (widgetContexts, insights, isEnabled, catalogParameters, isCatalogLoaded, measureParameters, measureParametersStatus) => {
302
303
  if (!isEnabled || !isCatalogLoaded || measureParametersStatus !== "loaded") {
303
- return EMPTY_EXPORT_PARAMETERS;
304
+ return EMPTY_EXPORT_PARAMETERS_BY_TAB;
304
305
  }
305
306
  const workspaceByRef = new Map(catalogParameters.map((parameter) => [objRefToString(parameter.ref), parameter]));
306
307
  const tabRefSelections = buildWidgetScopeTabRefSelections(widgetContexts, widgetIds, insights, measureParameters);
307
308
  return collectExportOverrides(tabRefSelections, workspaceByRef);
308
309
  }));
310
+ /**
311
+ * Active-tab slice of {@link selectExportEffectiveParameters}.
312
+ *
313
+ * @internal
314
+ */
315
+ export const selectActiveTabExportParameters = createSelector(selectExportEffectiveParametersDashboardScope, selectActiveOrDefaultTabLocalIdentifier, (parametersByTab, activeTabId) => parametersByTab[activeTabId] ?? EMPTY_EXPORT_PARAMETERS);
@@ -1 +1 @@
1
- {"version":3,"file":"topBarSelectors.d.ts","sourceRoot":"","sources":["../../../../src/model/store/topBar/topBarSelectors.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG1E;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,OAAO,CAO7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,iBAAiB,CAAC,OAAO,CAIxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAAiB,CAAC,OAAO,CAI/D,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,WAE3D;AAED;;GAEG;AACH,eAAO,MAAM,qCAAqC,EAAE,iBAAiB,CAAC,OAAO,CAK5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uCAAuC,EAAE,iBAAiB,CAAC,OAAO,CAO9E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAMhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAOhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAAE,iBAAiB,CAAC,OAAO,CAIxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CAAC,OAAO,CAuBjE,CAAC;AAEF;;GAEG;AACH,wBAAgB,6CAA6C,CAAC,KAAK,EAAE,cAAc,WAElF;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAAiB,CAAC,OAAO,CAuBrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAAiB,CAAC,OAAO,CAMlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAAiB,CAAC,OAAO,CAMrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,OAAO,CAYnE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,OAAO,CAW7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,OAAO,CAkB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,OAAO,CAM5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,OAAO,CAM1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAAiB,CAAC,OAAO,CAM/D,CAAC"}
1
+ {"version":3,"file":"topBarSelectors.d.ts","sourceRoot":"","sources":["../../../../src/model/store/topBar/topBarSelectors.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG1E;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,OAAO,CAO7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,iBAAiB,CAAC,OAAO,CAIxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAAiB,CAAC,OAAO,CAI/D,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,WAE3D;AAED;;GAEG;AACH,eAAO,MAAM,qCAAqC,EAAE,iBAAiB,CAAC,OAAO,CAK5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uCAAuC,EAAE,iBAAiB,CAAC,OAAO,CAO9E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAMhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAAiB,CAAC,OAAO,CAOhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAAE,iBAAiB,CAAC,OAAO,CAIxE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,CAAC,OAAO,CAuBjE,CAAC;AAEF;;GAEG;AACH,wBAAgB,6CAA6C,CAAC,KAAK,EAAE,cAAc,WAElF;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAAiB,CAAC,OAAO,CAuBrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAAiB,CAAC,OAAO,CAMlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,iBAAiB,CAAC,OAAO,CAMrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,OAAO,CAYnE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,OAAO,CAW7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,OAAO,CAkB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,OAAO,CAM5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,OAAO,CAM1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAAiB,CAAC,OAAO,CAK/D,CAAC"}
@@ -1,7 +1,7 @@
1
- // (C) 2021-2025 GoodData Corporation
1
+ // (C) 2021-2026 GoodData Corporation
2
2
  import { createSelector } from "@reduxjs/toolkit";
3
3
  import { selectSupportsCrossFiltering } from "../backendCapabilities/backendCapabilitiesSelectors.js";
4
- import { selectEnableAutomationManagement, selectEnableDashboardShareDialogLink, selectEnableFilterViews, selectEnableKDCrossFiltering, selectEnableKPIDashboardExportPDF, selectEnableSlideshowExports, selectIsExport, selectIsReadOnly, selectIsSaveAsNewButtonHidden, selectIsShareButtonHidden, selectIsWhiteLabeled, } from "../config/configSelectors.js";
4
+ import { selectEnableAutomationManagement, selectEnableDashboardShareDialogLink, selectEnableKDCrossFiltering, selectEnableKPIDashboardExportPDF, selectEnableSlideshowExports, selectIsExport, selectIsReadOnly, selectIsSaveAsNewButtonHidden, selectIsShareButtonHidden, selectIsWhiteLabeled, } from "../config/configSelectors.js";
5
5
  import { selectCanEditDashboardPermission, selectCanEditLockedDashboardPermission, selectCanShareDashboardPermission, selectCanShareLockedDashboardPermission, } from "../dashboardPermissions/dashboardPermissionsSelectors.js";
6
6
  import { selectListedDashboardsMap } from "../listedDashboards/listedDashboardsSelectors.js";
7
7
  import { selectIsDashboardLoading } from "../loading/loadingSelectors.js";
@@ -156,6 +156,6 @@ export const selectDeleteVisible = createSelector(selectIsInEditMode, selectMenu
156
156
  *
157
157
  * @internal
158
158
  */
159
- export const selectFilterViewsVisible = createSelector(selectEnableFilterViews, selectDisableFilterViews, (enableFilterViews, disableFilterViews) => {
160
- return enableFilterViews && !disableFilterViews;
159
+ export const selectFilterViewsVisible = createSelector(selectDisableFilterViews, (disableFilterViews) => {
160
+ return !disableFilterViews;
161
161
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAU5B,MAAM,qBAAqB,CAAC;AAqB7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAM3F,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAmBzF,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAu2B7B"}
1
+ {"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAU5B,MAAM,qBAAqB,CAAC;AAqB7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAM3F,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAmBzF,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA62B7B"}
@@ -1,5 +1,5 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
- import { useCallback, useMemo, useState } from "react";
2
+ import { useCallback, useMemo, useRef, useState } from "react";
3
3
  import { useIntl } from "react-intl";
4
4
  import { invariant } from "ts-invariant";
5
5
  import { DEFAULT_CSV_DELIMITER, insightProperties, isAutomationExternalUserRecipient, isAutomationUnknownUserRecipient, isAutomationUserRecipient, isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isInsightWidget, isWidget, objRefToString, } from "@gooddata/sdk-model";
@@ -110,10 +110,17 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
110
110
  parametersByTab: parametersByTabForNewAutomation,
111
111
  }));
112
112
  const [originalAutomation] = useState(editedAutomation);
113
+ // Holds the wire outside the automation so it survives a rebuild from zero export definitions —
114
+ // with no definitions `setExportParametersByTab` has nowhere to store it.
115
+ // Seeded from the stored wire.
116
+ const latestParametersWireRef = useRef(getAutomationExportParametersByTab(editedAutomation));
113
117
  // The user-edit path into `content.parametersByTab`: re-encoded wire in, every export definition
114
118
  // patched. Handed to `useAutomationExportParameters`, which owns when to call it. Definition
115
119
  // rebuilds preserve the wire separately via `withRebuiltExportDefinitions`.
116
- const setParametersWire = useCallback((wire) => setEditedAutomation((automation) => setExportParametersByTab(automation, wire)), []);
120
+ const setParametersWire = useCallback((wire) => {
121
+ latestParametersWireRef.current = wire;
122
+ setEditedAutomation((automation) => setExportParametersByTab(automation, wire));
123
+ }, []);
117
124
  const selectedAttachments = useMemo(() => {
118
125
  return (editedAutomation.exportDefinitions
119
126
  ?.map((exportDefinition) => exportDefinition.requestPayload.format)
@@ -128,7 +135,7 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
128
135
  setEditedAutomation((s) => ({
129
136
  ...s,
130
137
  schedule: {
131
- ...(s.schedule ?? {}),
138
+ ...s.schedule,
132
139
  cron: cronExpression,
133
140
  firstRun: toModifiedISOStringToTimezone(startDate ?? new Date(), timezone).iso,
134
141
  },
@@ -157,7 +164,7 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
157
164
  setEditedAutomation((s) => ({
158
165
  ...s,
159
166
  details: {
160
- ...(s.details ?? {}),
167
+ ...s.details,
161
168
  subject: value,
162
169
  },
163
170
  }));
@@ -167,7 +174,7 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
167
174
  setEditedAutomation((s) => ({
168
175
  ...s,
169
176
  details: {
170
- ...(s.details ?? {}),
177
+ ...s.details,
171
178
  message: value,
172
179
  },
173
180
  }));
@@ -188,7 +195,7 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
188
195
  format,
189
196
  }));
190
197
  const updatedExportDefinitions = [...keptExportDefinitions, ...newExportDefinitions];
191
- return withRebuiltExportDefinitions(s, updatedExportDefinitions);
198
+ return withRebuiltExportDefinitions(s, updatedExportDefinitions, latestParametersWireRef.current);
192
199
  });
193
200
  };
194
201
  const onWidgetAttachmentsChange = (formats) => {
@@ -212,7 +219,7 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
212
219
  defaultPdfPageSize,
213
220
  }));
214
221
  const updatedExportDefinitions = [...keptExportDefinitions, ...newExportDefinitions];
215
- return withRebuiltExportDefinitions(s, updatedExportDefinitions);
222
+ return withRebuiltExportDefinitions(s, updatedExportDefinitions, latestParametersWireRef.current);
216
223
  });
217
224
  };
218
225
  const onXlsxSettingsChange = useCallback((settings) => {
@@ -629,14 +636,12 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
629
636
  };
630
637
  }
631
638
  /**
632
- * Replaces an automation's export definitions while preserving the current parameter wire. Freshly
633
- * built definitions carry no `content.parametersByTab`, so without this the stored parameters would
634
- * silently drop on any attachment-format change the one place "rebuild definitions" stays paired
635
- * with "keep parameters".
639
+ * Rebuilds the export definitions and re-applies the parameter wire (fresh definitions carry no
640
+ * `content.parametersByTab`). The wire is passed in rather than read off `automation` so it survives
641
+ * a rebuild from zero definitionssee `latestParametersWireRef`.
636
642
  */
637
- function withRebuiltExportDefinitions(automation, exportDefinitions) {
643
+ function withRebuiltExportDefinitions(automation, exportDefinitions, parametersByTab) {
638
644
  const next = { ...automation, exportDefinitions };
639
- const parametersByTab = getAutomationExportParametersByTab(automation);
640
645
  return parametersByTab ? setExportParametersByTab(next, parametersByTab) : next;
641
646
  }
642
647
  function newDashboardExportDefinitionMetadataObjectDefinition({ dashboardId, dashboardTitle, dashboardFilters, filtersByTab, format, templateId, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultDashboardSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoD,MAAM,OAAO,CAAC;AAsC5F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAGhE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,SAAS,EACT,OAAO,EACP,QAAQ,EACX,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAqMrD"}
1
+ {"version":3,"file":"DefaultDashboardSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoD,MAAM,OAAO,CAAC;AAqC5F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAGhE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,SAAS,EACT,OAAO,EACP,QAAQ,EACX,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAkMrD"}
@@ -7,7 +7,7 @@ import { Bubble, BubbleHoverTrigger, ConfirmDialog, DialogListHeader, Dropdown,
7
7
  import { queryDateDatasetsForInsight, } from "../../model/queries/insights.js";
8
8
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
9
9
  import { useDashboardQueryProcessing } from "../../model/react/useDashboardQueryProcessing.js";
10
- import { selectDateFormat, selectEnableAlertsEvaluationFrequencySetup, selectEnableDashboardSectionHeadersDateDataSet, selectEnableFilterViews, selectIsWhiteLabeled, selectLocale, selectSettings, selectWeekStart, } from "../../model/store/config/configSelectors.js";
10
+ import { selectDateFormat, selectEnableAlertsEvaluationFrequencySetup, selectEnableDashboardSectionHeadersDateDataSet, selectIsWhiteLabeled, selectLocale, selectSettings, selectWeekStart, } from "../../model/store/config/configSelectors.js";
11
11
  import { selectCrossFilteringEnabledAndSupported } from "../../model/store/topBar/topBarSelectors.js";
12
12
  import { useDialogData } from "./useDialogData.js";
13
13
  /**
@@ -22,7 +22,6 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
22
22
  const locale = useDashboardSelector(selectLocale);
23
23
  const isCrossFilteringEnabledAndSupported = useDashboardSelector(selectCrossFilteringEnabledAndSupported);
24
24
  const enableAlertsEvaluationFrequencySetup = useDashboardSelector(selectEnableAlertsEvaluationFrequencySetup);
25
- const isFilterViewsFeatureEnabled = useDashboardSelector(selectEnableFilterViews);
26
25
  const settings = useDashboardSelector(selectSettings);
27
26
  const isWhiteLabeled = useDashboardSelector(selectIsWhiteLabeled);
28
27
  const enableDashboardSectionHeadersDateDataSet = useDashboardSelector(selectEnableDashboardSectionHeadersDateDataSet);
@@ -62,7 +61,7 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
62
61
  disableUserFilterReset: newValue,
63
62
  });
64
63
  } })
65
- ] })) : null, isFilterViewsFeatureEnabled ? (_jsx(ConfigurationOption, { label: intl.formatMessage({
64
+ ] })) : null, _jsx(ConfigurationOption, { label: intl.formatMessage({
66
65
  id: "filters.configurationPanel.filterViews.toggle",
67
66
  }), tooltip: intl.formatMessage({ id: "filters.configurationPanel.filterViews.toggle.tooltip" }, {
68
67
  p: (chunks) => _jsx("p", { children: chunks }),
@@ -71,7 +70,7 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
71
70
  ...currentData,
72
71
  disableFilterViews: newValue,
73
72
  });
74
- } })) : null, _jsx(ConfigurationOption, { label: intl.formatMessage({ id: "filters.configurationPanel.userFilterSave.toggle" }), tooltip: intl.formatMessage({
73
+ } }), _jsx(ConfigurationOption, { label: intl.formatMessage({ id: "filters.configurationPanel.userFilterSave.toggle" }), tooltip: intl.formatMessage({
75
74
  id: "filters.configurationPanel.userFilterSave.toggle.tooltip",
76
75
  }), isChecked: !currentData.disableUserFilterSave, onChange: (newValue) => {
77
76
  setCurrentData({
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultDashboardExportVariables.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/DefaultDashboardExportVariables.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD;;GAEG;AACH,MAAM,WAAW,qCAAqC;IAClD,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAAE,UAAU,EAAE,EAAE,qCAAqC,kDA4EpG"}
1
+ {"version":3,"file":"DefaultDashboardExportVariables.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/DefaultDashboardExportVariables.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD;;GAEG;AACH,MAAM,WAAW,qCAAqC;IAClD,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAAE,UAAU,EAAE,EAAE,qCAAqC,kDAyEpG"}
@@ -6,6 +6,7 @@ import { useTheme } from "@gooddata/sdk-ui-theme-provider";
6
6
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
7
7
  import { selectConfig } from "../../model/store/config/configSelectors.js";
8
8
  import { selectDashboardDescriptor, selectDashboardId } from "../../model/store/meta/metaSelectors.js";
9
+ import { selectActiveTabExportParameters } from "../../model/store/tabs/parameters/parametersSelectors.js";
9
10
  import { selectCurrentUser } from "../../model/store/user/userSelectors.js";
10
11
  import { useDashboardRelatedFilters } from "./hooks/useDashboardRelatedFilters.js";
11
12
  import { useMetaExportData, useMetaExportImageData, useMetaPaletteData } from "./useExportData.js";
@@ -20,21 +21,25 @@ export function DefaultDashboardExportVariables({ renderMode }) {
20
21
  const dashboardId = useDashboardSelector(selectDashboardId);
21
22
  const dashboardDescriptor = useDashboardSelector(selectDashboardDescriptor);
22
23
  const { dateFilters, attributeFilters, measureValueFilters, isError, isLoading } = useDashboardRelatedFilters(run);
24
+ const parameters = useDashboardSelector(selectActiveTabExportParameters);
23
25
  const theme = useTheme();
24
26
  if (!run) {
25
27
  return null;
26
28
  }
29
+ const filterGroups = [
30
+ { kind: "date", items: dateFilters, attrs: exportData?.filters?.dateFilter },
31
+ { kind: "attribute", items: attributeFilters, attrs: exportData?.filters?.attributeFilter },
32
+ { kind: "measureValue", items: measureValueFilters, attrs: exportData?.filters?.measureValueFilter },
33
+ ];
34
+ const hasEntries = dateFilters.length + attributeFilters.length + measureValueFilters.length + parameters.length > 0;
27
35
  return (_jsxs("div", { className: "gd-dashboard-meta", ...exportData?.root, children: [
28
- _jsx("div", { ...exportData?.id, children: dashboardId }), dashboardDescriptor.title ? _jsx("div", { ...exportData?.title, children: dashboardDescriptor.title }) : null, dashboardDescriptor.description ? (_jsx("div", { ...exportData?.description, children: dashboardDescriptor.description })) : null, dashboardDescriptor.tags && dashboardDescriptor.tags.length > 0 ? (_jsx("div", { ...exportData?.tags?.root, children: dashboardDescriptor.tags.map((tag, i) => (_jsx("span", { ...exportData?.tags?.tag, children: tag }, i))) })) : null, _jsx("div", { ...exportData?.filters?.root, ...exportData?.filters?.rootData(isLoading, isError), children: dateFilters.length > 0 || attributeFilters.length > 0 || measureValueFilters.length > 0 ? (_jsxs(_Fragment, { children: [dateFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.dateFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
36
+ _jsx("div", { ...exportData?.id, children: dashboardId }), dashboardDescriptor.title ? _jsx("div", { ...exportData?.title, children: dashboardDescriptor.title }) : null, dashboardDescriptor.description ? (_jsx("div", { ...exportData?.description, children: dashboardDescriptor.description })) : null, dashboardDescriptor.tags && dashboardDescriptor.tags.length > 0 ? (_jsx("div", { ...exportData?.tags?.root, children: dashboardDescriptor.tags.map((tag, i) => (_jsx("span", { ...exportData?.tags?.tag, children: tag }, i))) })) : null, _jsx("div", { ...exportData?.filters?.root, ...exportData?.filters?.rootData(isLoading, isError), children: hasEntries ? (_jsxs(_Fragment, { children: [filterGroups.flatMap(({ kind, items, attrs }) => items.map((filter, i) => (_jsxs("div", { ...attrs, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
29
37
  _jsx("span", { ...exportData?.filters?.filter.name, children: filter?.title }),
30
38
  " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: filter?.subtitle })
31
- ] }, i))), attributeFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.attributeFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
32
- _jsx("span", { ...exportData?.filters?.filter.name, children: filter?.title }),
33
- " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: filter?.subtitle })
34
- ] }, i))), measureValueFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.measureValueFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
35
- _jsx("span", { ...exportData?.filters?.filter.name, children: filter?.title }),
36
- " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: filter?.subtitle })
37
- ] }, i)))] })) : null }), user?.fullName ? _jsx("div", { ...exportData?.user, children: user.fullName }) : null, conf.workspaceDescriptor ? (_jsx("div", { ...exportData?.workspace, children: conf.workspaceDescriptor.title })) : null, _jsx(MetaImage, { image: theme?.images?.logo, type: "logo" }), _jsx(MetaImage, { image: theme?.images?.coverImage, type: "cover-image" }), _jsx(Palette, { data: theme?.palette?.complementary })
39
+ ] }, `${kind}-${i}`)))), parameters.map((parameter, i) => (_jsxs("div", { ...exportData?.filters?.parameter, children: [
40
+ _jsx("span", { ...exportData?.filters?.filter.name, children: parameter.title }),
41
+ " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: parameter.value })
42
+ ] }, `parameter-${i}`)))] })) : null }), user?.fullName ? _jsx("div", { ...exportData?.user, children: user.fullName }) : null, conf.workspaceDescriptor ? (_jsx("div", { ...exportData?.workspace, children: conf.workspaceDescriptor.title })) : null, _jsx(MetaImage, { image: theme?.images?.logo, type: "logo" }), _jsx(MetaImage, { image: theme?.images?.coverImage, type: "cover-image" }), _jsx(Palette, { data: theme?.palette?.complementary })
38
43
  ] }));
39
44
  }
40
45
  function MetaImage({ image, type, }) {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DefaultDashboardExportVariables.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultDashboardExportVariables.test.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/DefaultDashboardExportVariables.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { render } from "@testing-library/react";
4
+ import { describe, expect, it, vi } from "vitest";
5
+ import { selectConfig } from "../../model/store/config/configSelectors.js";
6
+ import { selectDashboardDescriptor } from "../../model/store/meta/metaSelectors.js";
7
+ import { selectIsInExportMode } from "../../model/store/renderMode/renderModeSelectors.js";
8
+ import { selectActiveTabExportParameters } from "../../model/store/tabs/parameters/parametersSelectors.js";
9
+ vi.mock("../../model/react/DashboardStoreProvider.js", () => ({
10
+ useDashboardSelector: vi.fn(),
11
+ }));
12
+ vi.mock("./hooks/useDashboardRelatedFilters.js", () => ({
13
+ useDashboardRelatedFilters: () => ({
14
+ dateFilters: [],
15
+ attributeFilters: [],
16
+ measureValueFilters: [],
17
+ isLoading: false,
18
+ isError: false,
19
+ isSuccess: true,
20
+ }),
21
+ }));
22
+ import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
23
+ import { DefaultDashboardExportVariables } from "./DefaultDashboardExportVariables.js";
24
+ // Scoping lives in the selector (tested separately); here we drive its output.
25
+ function mockSelectors(parameters) {
26
+ const values = new Map([
27
+ [selectIsInExportMode, true],
28
+ [selectActiveTabExportParameters, parameters],
29
+ [selectConfig, {}],
30
+ [selectDashboardDescriptor, {}],
31
+ ]);
32
+ vi.mocked(useDashboardSelector).mockImplementation((selector) => values.get(selector));
33
+ }
34
+ function parameterEntries(container) {
35
+ return Array.from(container.querySelectorAll('[data-export-meta-filter-type="parameter"]')).map((node) => ({
36
+ name: node.querySelector('[data-export-meta-type="dashboard-filter-name"]')?.textContent ?? "",
37
+ value: node.querySelector('[data-export-meta-type="dashboard-filter-value"]')?.textContent ?? "",
38
+ // export-builder blocks on this per entry; missing/loading would hang the export.
39
+ status: node.getAttribute("data-export-meta-filter-status"),
40
+ }));
41
+ }
42
+ describe("DefaultDashboardExportVariables", () => {
43
+ it("renders active parameter overrides as ready entries in the filters block", () => {
44
+ mockSelectors([{ id: "topn", title: "Top N", value: "5" }]);
45
+ const { container } = render(_jsx(DefaultDashboardExportVariables, { renderMode: "export" }));
46
+ expect(parameterEntries(container)).toEqual([{ name: "Top N", value: "5", status: "loaded" }]);
47
+ });
48
+ it("renders no parameter entries when there are no active overrides", () => {
49
+ mockSelectors([]);
50
+ const { container } = render(_jsx(DefaultDashboardExportVariables, { renderMode: "export" }));
51
+ expect(parameterEntries(container)).toHaveLength(0);
52
+ });
53
+ it("renders nothing outside export mode", () => {
54
+ mockSelectors([{ id: "topn", title: "Top N", value: "5" }]);
55
+ const { container } = render(_jsx(DefaultDashboardExportVariables, { renderMode: "view" }));
56
+ expect(container.firstChild).toBeNull();
57
+ });
58
+ });
@@ -28,7 +28,7 @@ export type CommonExportDataAttributes = {
28
28
  */
29
29
  export type MetaExportDataAttributes = {
30
30
  "data-export-meta-type"?: ExportMetaType;
31
- "data-export-meta-filter-type"?: "date" | "attribute" | "measureValue";
31
+ "data-export-meta-filter-type"?: "date" | "attribute" | "measureValue" | "parameter";
32
32
  "data-export-meta-filter-mode"?: "readonly" | "hidden" | "active";
33
33
  "data-export-meta-filter-status"?: "loading" | "loaded" | "error";
34
34
  "data-export-meta-filters-status"?: "loading" | "loaded" | "error";
@@ -58,6 +58,7 @@ export type MetaExportData = {
58
58
  dateFilter: MetaExportDataAttributes;
59
59
  attributeFilter: MetaExportDataAttributes;
60
60
  measureValueFilter: MetaExportDataAttributes;
61
+ parameter: MetaExportDataAttributes;
61
62
  filter: {
62
63
  name: MetaExportDataAttributes;
63
64
  value: MetaExportDataAttributes;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExportData.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/useExportData.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EACH,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAEvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAClC,MAAM,YAAY,CAAC;AAsCpB;;GAEG;AACH,eAAO,MAAM,sBAAsB,iJAalC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,kDA+BhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,gHA6B3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,mEAyB/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,sCAUjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,uIAiBtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,kCAmE7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,mIAelC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;CAwB9B,CAAC"}
1
+ {"version":3,"file":"useExportData.d.ts","sourceRoot":"","sources":["../../../src/presentation/export/useExportData.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EACH,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAEvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAClC,MAAM,YAAY,CAAC;AAsCpB;;GAEG;AACH,eAAO,MAAM,sBAAsB,iJAalC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,kDA+BhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,gHA6B3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,mEAyB/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,sCAUjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,uIAiBtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,kCAyE7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,mIAelC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;CAwB9B,CAAC"}
@@ -205,6 +205,12 @@ export const useMetaExportData = () => {
205
205
  "data-export-meta-type": "dashboard-filter",
206
206
  "data-export-meta-filter-type": "measureValue",
207
207
  },
208
+ parameter: {
209
+ "data-export-meta-type": "dashboard-filter",
210
+ "data-export-meta-filter-type": "parameter",
211
+ // No per-row fetch like filters. A rendered row is always complete.
212
+ "data-export-meta-filter-status": "loaded",
213
+ },
208
214
  filter: {
209
215
  name: {
210
216
  "data-export-meta-type": "dashboard-filter-name",
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultFilterBarContainer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,SAAS,EAOjB,MAAM,OAAO,CAAC;AA0af;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CAQ/E"}
1
+ {"version":3,"file":"DefaultFilterBarContainer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,SAAS,EAOjB,MAAM,OAAO,CAAC;AAwaf;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CAQ/E"}
@@ -12,7 +12,7 @@ import { isDashboardFilterContextSelectionReset, isDashboardFilterContextWorking
12
12
  import { isDashboardParametersSelectionReset } from "../../../model/events/parameters.js";
13
13
  import { useDashboardEventsContext } from "../../../model/react/DashboardEventsContext.js";
14
14
  import { useDashboardDispatch, useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
15
- import { selectEnableFilterViews, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectLocale, } from "../../../model/store/config/configSelectors.js";
15
+ import { selectIsApplyFiltersAllAtOnceEnabledAndSet, selectLocale, } from "../../../model/store/config/configSelectors.js";
16
16
  import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
17
17
  import { selectIsWorkingFilterContextChanged, selectNamesOfFiltersWithInvalidSelection, } from "../../../model/store/tabs/filterContext/filterContextSelectors.js";
18
18
  import { BulletsBar as FlexibleBulletsBar } from "../../flexibleLayout/dragAndDrop/Resize/BulletsBar.js";
@@ -30,7 +30,6 @@ const Measure = defaultImport(DefaultMeasure);
30
30
  function DefaultFilterBarContainerCore({ children }) {
31
31
  const { rows, height, isFilterBarExpanded, scrollable, setFilterBarExpanded, setCalculatedRows } = useFilterBarState();
32
32
  const dropRef = useFilterExpansionByDragAndDrop(rows.length > 1, isFilterBarExpanded, setFilterBarExpanded);
33
- const isFilterViewsFeatureFlagEnabled = useDashboardSelector(selectEnableFilterViews);
34
33
  const isWorkingFilterContextChanged = useDashboardSelector(selectIsWorkingFilterContextChanged);
35
34
  const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
36
35
  const filtersWithInvalidSelection = useDashboardSelector(selectNamesOfFiltersWithInvalidSelection);
@@ -74,7 +73,8 @@ function DefaultFilterBarContainerCore({ children }) {
74
73
  _jsx(AllFiltersContainer, { setCalculatedRows: setCalculatedRows, isAutoExpanded: expandedAutomatically, children: children }), _jsx(FiltersRows, { rows: rows }), _jsxs("div", { className: "filter-bar-configuration", style: configurationStyle, children: [isApplyAllAtOnceEnabledAndSet && isWorkingFilterContextChanged ? (_jsx(UiTooltip, { content: bubbleText, triggerBy: ["hover", "focus"], disabled: !bubbleText, anchor: _jsx(UiButton, { accessibilityConfig: {
75
74
  ariaHaspopup: "dialog",
76
75
  ariaLabel: bubbleText,
77
- }, label: intl.formatMessage({ id: "apply" }), variant: "primary", onClick: applyAllDashboardFilters, isDisabled: hasInvalidFilterSelections }) })) : null, isFilterViewsFeatureFlagEnabled ? _jsx(FilterViews, {}) : null] })
76
+ }, label: intl.formatMessage({ id: "apply" }), variant: "primary", onClick: applyAllDashboardFilters, isDisabled: hasInvalidFilterSelections }) })) : null, _jsx(FilterViews, {})
77
+ ] })
78
78
  ] }), _jsx(ShowAllFiltersButton, { isFilterBarExpanded: isFilterBarExpanded, isVisible: rows.length > 1, onToggle: (isExpanded) => setFilterBarExpanded(isExpanded) }), isInEditMode ? _jsx(FlexibleBulletsBar, {}) : null] }), isWorkingFilterContextChanged && isApplyAllAtOnceEnabledAndSet ? (_jsx("div", { "aria-hidden": "true", className: "filters-message", style: { marginTop: rows.length > 1 ? "35px" : "10px" }, children: _jsx(Message, { type: "progress", children: _jsx(FormattedMessage, { id: "filterBar.unappliedFiltersNotification", values: {
79
79
  link: (chunks) => (_jsx("strong", { children: _jsxs(BubbleHoverTrigger, { showDelay: 100, hideDelay: 0, children: [
80
80
  _jsx(UiButton, { variant: "link", onClick: applyAllDashboardFilters, label: chunks, isDisabled: hasInvalidFilterSelections }), hasInvalidFilterSelections ? (_jsx(Bubble, { children: bubbleText })) : null] }) })),
@@ -742,7 +742,7 @@ export const fi_FI = {
742
742
  "insightAlert.config.accessibility.title": "Hälytyksen mukautettu nimi",
743
743
  "insightAlert.config.when": "Milloin",
744
744
  "insightAlert.config.for": "Kohteelle",
745
- "insightAlert.config.condition": "Kunto",
745
+ "insightAlert.config.condition": "Ehto",
746
746
  "insightAlert.config.threshold": "Kynnysarvo",
747
747
  "insightAlert.config.comparison": "Vertailu",
748
748
  "insightAlert.config.recipients": "Vastaanottajat",
@@ -365,7 +365,7 @@ export const nl_NL = {
365
365
  "attributesDropdown.save": "Opslaan",
366
366
  "attributesDropdown.filterBy": "Filteren volgens",
367
367
  "attributesDropdown.displayValuesAs": "Waarden tonen als",
368
- "attributesDropdown.title": "titel",
368
+ "attributesDropdown.title": "Titel",
369
369
  "attributesDropdown.title.reset": "Reset",
370
370
  "attributesDropdown.selectionMode": "Selectie",
371
371
  "attributesDropdown.selectionMode.multi": "Meerdere waarden",
@@ -495,7 +495,7 @@ export const nl_NL = {
495
495
  "configurationPanel.drillConfig.filterSelection.drillToDashboardRankingFilter.tooltip": "Top-/bottomfilters kunnen niet worden doorgegeven aan het doeldashboard.",
496
496
  "rankingFilter.preview.top_without_attribute_plain": "Top {value} van {measure}",
497
497
  "rankingFilter.preview.bottom_without_attribute_plain": "Bottom {value} van {measure}",
498
- "configurationPanel.visualprops.sectionTitle": "titel",
498
+ "configurationPanel.visualprops.sectionTitle": "Titel",
499
499
  "configurationPanel.visualprops.hideTitle": "Titel verbergen",
500
500
  "configurationPanel.visualprops.sectionDescription": "Beschrijving",
501
501
  "configurationPanel.visualprops.inheritDescription": "Erven",
@@ -742,7 +742,7 @@ export const zh_Hans = {
742
742
  "insightAlert.config.accessibility.title": "警报的自定义名称",
743
743
  "insightAlert.config.when": "何时",
744
744
  "insightAlert.config.for": "为了",
745
- "insightAlert.config.condition": "健康)状况",
745
+ "insightAlert.config.condition": "条件",
746
746
  "insightAlert.config.threshold": "临界点",
747
747
  "insightAlert.config.comparison": "比较",
748
748
  "insightAlert.config.recipients": "收件人",
@@ -20197,6 +20197,7 @@ export declare type MetaExportData = {
20197
20197
  dateFilter: MetaExportDataAttributes;
20198
20198
  attributeFilter: MetaExportDataAttributes;
20199
20199
  measureValueFilter: MetaExportDataAttributes;
20200
+ parameter: MetaExportDataAttributes;
20200
20201
  filter: {
20201
20202
  name: MetaExportDataAttributes;
20202
20203
  value: MetaExportDataAttributes;
@@ -20212,7 +20213,7 @@ export declare type MetaExportData = {
20212
20213
  */
20213
20214
  export declare type MetaExportDataAttributes = {
20214
20215
  "data-export-meta-type"?: ExportMetaType;
20215
- "data-export-meta-filter-type"?: "date" | "attribute" | "measureValue";
20216
+ "data-export-meta-filter-type"?: "date" | "attribute" | "measureValue" | "parameter";
20216
20217
  "data-export-meta-filter-mode"?: "readonly" | "hidden" | "active";
20217
20218
  "data-export-meta-filter-status"?: "loading" | "loaded" | "error";
20218
20219
  "data-export-meta-filters-status"?: "loading" | "loaded" | "error";
@@ -23917,13 +23918,6 @@ export declare const selectEnableFilterControlInDrillingConfiguration: Dashboard
23917
23918
  */
23918
23919
  export declare const selectEnableFilterValuesResolutionInDrillEvents: DashboardSelector<boolean>;
23919
23920
 
23920
- /**
23921
- * Returns whether filter views are enabled.
23922
- *
23923
- * @internal
23924
- */
23925
- export declare const selectEnableFilterViews: DashboardSelector<boolean>;
23926
-
23927
23921
  /**
23928
23922
  * Returns whether fiscal calendars feature flag is enabled.
23929
23923
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.43.0-alpha.2",
3
+ "version": "11.43.0-alpha.3",
4
4
  "description": "GoodData SDK - Dashboard Component",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -60,19 +60,19 @@
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.43.0-alpha.2",
64
- "@gooddata/sdk-backend-spi": "11.43.0-alpha.2",
65
- "@gooddata/sdk-model": "11.43.0-alpha.2",
66
- "@gooddata/sdk-ui": "11.43.0-alpha.2",
67
- "@gooddata/sdk-ui-charts": "11.43.0-alpha.2",
68
- "@gooddata/sdk-ui-ext": "11.43.0-alpha.2",
69
- "@gooddata/sdk-ui-filters": "11.43.0-alpha.2",
70
- "@gooddata/sdk-ui-kit": "11.43.0-alpha.2",
71
- "@gooddata/sdk-ui-pivot": "11.43.0-alpha.2",
72
- "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.2",
73
- "@gooddata/sdk-ui-vis-commons": "11.43.0-alpha.2",
74
- "@gooddata/sdk-ui-geo": "11.43.0-alpha.2",
75
- "@gooddata/util": "11.43.0-alpha.2"
63
+ "@gooddata/sdk-backend-spi": "11.43.0-alpha.3",
64
+ "@gooddata/sdk-ui": "11.43.0-alpha.3",
65
+ "@gooddata/sdk-backend-base": "11.43.0-alpha.3",
66
+ "@gooddata/sdk-model": "11.43.0-alpha.3",
67
+ "@gooddata/sdk-ui-charts": "11.43.0-alpha.3",
68
+ "@gooddata/sdk-ui-ext": "11.43.0-alpha.3",
69
+ "@gooddata/sdk-ui-filters": "11.43.0-alpha.3",
70
+ "@gooddata/sdk-ui-geo": "11.43.0-alpha.3",
71
+ "@gooddata/sdk-ui-kit": "11.43.0-alpha.3",
72
+ "@gooddata/sdk-ui-pivot": "11.43.0-alpha.3",
73
+ "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.3",
74
+ "@gooddata/sdk-ui-vis-commons": "11.43.0-alpha.3",
75
+ "@gooddata/util": "11.43.0-alpha.3"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@microsoft/api-documenter": "^7.17.0",
@@ -118,12 +118,12 @@
118
118
  "typescript": "5.9.3",
119
119
  "vitest": "4.1.8",
120
120
  "vitest-dom": "0.1.1",
121
- "@gooddata/eslint-config": "11.43.0-alpha.2",
122
- "@gooddata/i18n-toolkit": "11.43.0-alpha.2",
123
- "@gooddata/oxlint-config": "11.43.0-alpha.2",
124
- "@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.2",
125
- "@gooddata/stylelint-config": "11.43.0-alpha.2",
126
- "@gooddata/reference-workspace": "11.43.0-alpha.2"
121
+ "@gooddata/eslint-config": "11.43.0-alpha.3",
122
+ "@gooddata/i18n-toolkit": "11.43.0-alpha.3",
123
+ "@gooddata/oxlint-config": "11.43.0-alpha.3",
124
+ "@gooddata/reference-workspace": "11.43.0-alpha.3",
125
+ "@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.3",
126
+ "@gooddata/stylelint-config": "11.43.0-alpha.3"
127
127
  },
128
128
  "peerDependencies": {
129
129
  "react": "^18.0.0 || ^19.0.0",