@gooddata/sdk-ui-dashboard 11.40.0-alpha.0 → 11.40.0-alpha.2

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 (85) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/index.d.ts +3 -3
  4. package/esm/index.js +3 -3
  5. package/esm/model/commandHandlers/dashboard/exportToTabularHandler.js +5 -2
  6. package/esm/model/commandHandlers/dashboard/saveAsDashboardHandler.js +6 -0
  7. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js +65 -30
  8. package/esm/model/commandHandlers/index.js +0 -2
  9. package/esm/model/commandHandlers/tabs/createDashboardTabHandler.js +2 -2
  10. package/esm/model/commands/base.d.ts +1 -1
  11. package/esm/model/commands/index.d.ts +2 -2
  12. package/esm/model/commands/tabs.d.ts +0 -35
  13. package/esm/model/commands/tabs.js +0 -16
  14. package/esm/model/events/base.d.ts +1 -1
  15. package/esm/model/events/index.d.ts +2 -2
  16. package/esm/model/events/tabs.d.ts +0 -44
  17. package/esm/model/events/tabs.js +0 -28
  18. package/esm/model/react/useDashboardCommand.d.ts +0 -1
  19. package/esm/model/react/useDashboardCommandProcessing.d.ts +0 -4
  20. package/esm/model/store/tabs/index.d.ts +6 -0
  21. package/esm/model/store/tabs/layout/layoutSelectors.d.ts +41 -1
  22. package/esm/model/store/tabs/layout/layoutSelectors.js +38 -0
  23. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +86 -0
  24. package/esm/model/store/tabs/parameters/parametersHelpers.js +208 -0
  25. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +21 -16
  26. package/esm/model/store/tabs/parameters/parametersSelectors.js +45 -127
  27. package/esm/model/store/tabs/tabsReducers.d.ts +6 -0
  28. package/esm/model/store/tabs/tabsReducers.js +16 -0
  29. package/esm/model/utils/tabLocalIdentifier.d.ts +4 -0
  30. package/esm/model/utils/tabLocalIdentifier.js +12 -0
  31. package/esm/presentation/dashboard/DashboardHeader/DashboardTabs.js +2 -10
  32. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  33. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +1 -0
  34. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  35. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +1 -0
  36. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  37. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +1 -0
  38. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  39. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +1 -0
  40. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  41. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +1 -0
  42. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  43. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -0
  44. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  45. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +1 -0
  46. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  47. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +1 -0
  48. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  49. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +1 -0
  50. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  51. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +1 -0
  52. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  53. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +1 -0
  54. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  55. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +1 -0
  56. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  57. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +1 -0
  58. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  59. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +1 -0
  60. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  61. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +1 -0
  62. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  63. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +1 -0
  64. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  65. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +1 -0
  66. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  67. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +1 -0
  68. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  69. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +1 -0
  70. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  71. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +1 -0
  72. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  73. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +1 -0
  74. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  75. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +1 -0
  76. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  77. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +1 -0
  78. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  79. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -0
  80. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  81. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -0
  82. package/esm/sdk-ui-dashboard.d.ts +35 -94
  83. package/package.json +20 -20
  84. package/esm/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.d.ts +0 -4
  85. package/esm/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.js +0 -40
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.40.0-alpha.0";
1
+ export declare const LIB_VERSION = "11.40.0-alpha.2";
2
2
  export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
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.40.0-alpha.0";
3
+ export const LIB_VERSION = "11.40.0-alpha.2";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
package/esm/index.d.ts CHANGED
@@ -57,10 +57,10 @@ export { type IChangeRenderMode, type IChangeRenderModePayload, type IRenderMode
57
57
  export { type IChangeDashboardDensity, type IChangeDashboardDensityPayload, changeDashboardDensity, type IRequestOpenDensityDialog, requestOpenDensityDialog, } from "./model/commands/density.js";
58
58
  export { type IAddDrillTargets, type IAddDrillTargetsPayload, addDrillTargets, } from "./model/commands/drillTargets.js";
59
59
  export { type ISetShowWidgetAsTable, type ISetShowWidgetAsTablePayload, setShowWidgetAsTable, } from "./model/commands/showWidgetAsTable.js";
60
- export { type ISwitchDashboardTab, type ISwitchDashboardTabPayload, type IConvertDashboardTabFromDefault, type IConvertDashboardTabFromDefaultPayload, type ICreateDashboardTab, type ICreateDashboardTabPayload, type IRepositionDashboardTab, type IRepositionDashboardTabPayload, type IDeleteDashboardTab, type IDeleteDashboardTabPayload, type IStartRenamingDashboardTab, type IStartRenamingDashboardTabPayload, type ICancelRenamingDashboardTab, type ICancelRenamingDashboardTabPayload, type IRenameDashboardTab, type IRenameDashboardTabPayload, switchDashboardTab, repositionDashboardTab, convertDashboardTabFromDefault, createDashboardTab, deleteDashboardTab, startRenamingDashboardTab, cancelRenamingDashboardTab, renameDashboardTab, } from "./model/commands/tabs.js";
60
+ export { type ISwitchDashboardTab, type ISwitchDashboardTabPayload, type ICreateDashboardTab, type ICreateDashboardTabPayload, type IRepositionDashboardTab, type IRepositionDashboardTabPayload, type IDeleteDashboardTab, type IDeleteDashboardTabPayload, type IStartRenamingDashboardTab, type IStartRenamingDashboardTabPayload, type ICancelRenamingDashboardTab, type ICancelRenamingDashboardTabPayload, type IRenameDashboardTab, type IRenameDashboardTabPayload, switchDashboardTab, repositionDashboardTab, createDashboardTab, deleteDashboardTab, startRenamingDashboardTab, cancelRenamingDashboardTab, renameDashboardTab, } from "./model/commands/tabs.js";
61
61
  export { type IDashboardEvent, type DashboardEventType, type ICustomDashboardEvent, type DashboardEventBody, isDashboardEvent, isCustomDashboardEvent, isDashboardEventOrCustomDashboardEvent, } from "./model/events/base.js";
62
62
  export { type DateFilterValidationFailed, type DateFilterValidationFailedPayload, type DashboardInitialized, type DashboardInitializedPayload, type DashboardDeinitialized, type DashboardDeinitializedPayload, type DashboardSaved, type DashboardSavedPayload, type DashboardCopySaved, type DashboardCopySavedPayload, type IDashboardRenamed, type IDashboardRenamedPayload, type IDashboardWasReset, type IDashboardWasResetPayload, type IDashboardDeleted, type IDashboardDeletedPayload, type IDashboardExportToPdfRequested, type IDashboardExportToPdfResolved, type IDashboardExportToPdfResolvedPayload, type DashboardSharingChanged, type DashboardSharingChangedPayload, type IDashboardExportToExcelRequested, type IDashboardExportToExcelResolved, type IDashboardExportToPdfPresentationRequested, type IDashboardExportToPdfPresentationResolved, type IDashboardExportToPptPresentationRequested, type IDashboardExportToPptPresentationResolved, type IDashboardExportToExcelResolvedPayload, type IDashboardExportToPdfPresentationResolvedPayload, type IDashboardExportToPptPresentationResolvedPayload, type IDashboardIgnoreExecutionTimestampChanged, type IDashboardIgnoreExecutionTimestampChangedPayload, type IDashboardExportToImageRequested, type IDashboardExportToImageResolved, type IDashboardExportToImageResolvedPayload, isDashboardSaved, isDashboardCopySaved, isDashboardInitialized, isDashboardDeinitialized, isDashboardRenamed, isDashboardWasReset, isDashboardDeleted, isDateFilterValidationFailed, isDashboardExportToPdfRequested, isDashboardExportToPdfResolved, isDashboardSharingChanged, isDashboardExportToExcelRequested, isDashboardExportToExcelResolved, isDashboardExportToPdfPresentationRequested, isDashboardExportToPdfPresentationResolved, isDashboardExportToPptPresentationResolved, isDashboardExportToPptPresentationRequested, isDashboardExportToImageRequested, isDashboardExportToImageResolved, isDashboardIgnoreExecutionTimestampChanged, } from "./model/events/dashboard.js";
63
- export { type IDashboardTabSwitched, type IDashboardTabSwitchedPayload, type IDashboardTabCreated, type IDashboardTabCreatedPayload, type IDashboardTabConvertedFromDefault, type IDashboardTabConvertedFromDefaultPayload, type IDashboardTabDeleted, type IDashboardTabDeletedPayload, type IDashboardTabRenamingStarted, type IDashboardTabRenamingStartedPayload, type IDashboardTabRenamingCanceled, type IDashboardTabRenamingCanceledPayload, type IDashboardTabRenamed, type IDashboardTabRenamedPayload, dashboardTabSwitched, isDashboardTabSwitched, dashboardTabCreated, isDashboardTabCreated, dashboardTabConvertedFromDefault, isDashboardTabConvertedFromDefault, dashboardTabDeleted, isDashboardTabDeleted, dashboardTabRenamingStarted, isDashboardTabRenamingStarted, dashboardTabRenamingCanceled, isDashboardTabRenamingCanceled, dashboardTabRenamed, isDashboardTabRenamed, } from "./model/events/tabs.js";
63
+ export { type IDashboardTabSwitched, type IDashboardTabSwitchedPayload, type IDashboardTabCreated, type IDashboardTabCreatedPayload, type IDashboardTabDeleted, type IDashboardTabDeletedPayload, type IDashboardTabRenamingStarted, type IDashboardTabRenamingStartedPayload, type IDashboardTabRenamingCanceled, type IDashboardTabRenamingCanceledPayload, type IDashboardTabRenamed, type IDashboardTabRenamedPayload, dashboardTabSwitched, isDashboardTabSwitched, dashboardTabCreated, isDashboardTabCreated, dashboardTabDeleted, isDashboardTabDeleted, dashboardTabRenamingStarted, isDashboardTabRenamingStarted, dashboardTabRenamingCanceled, isDashboardTabRenamingCanceled, dashboardTabRenamed, isDashboardTabRenamed, } from "./model/events/tabs.js";
64
64
  export { type IDashboardParametersSelectionReset, parametersSelectionReset, isDashboardParametersSelectionReset, } from "./model/events/parameters.js";
65
65
  export { type IDashboardCommandStarted, type IDashboardCommandStartedPayload, type IDashboardCommandRejected, type IDashboardCommandFailed, type IDashboardCommandFailedPayload, type ActionFailedErrorReason, type IDashboardQueryRejected, type IDashboardQueryFailed, type IDashboardQueryFailedPayload, type IDashboardQueryStarted, type IDashboardQueryStartedPayload, type IDashboardQueryCompleted, type IDashboardQueryCompletedPayload, isDashboardCommandStarted, isDashboardCommandFailed, isDashboardQueryFailed, isDashboardCommandRejected, isDashboardQueryCompleted, isDashboardQueryRejected, isDashboardQueryStarted, } from "./model/events/general.js";
66
66
  export { type DashboardDateFilterSelectionChanged, type DashboardDateFilterSelectionChangedPayload, type DashboardAttributeFilterSelectionChangedPayload, type DashboardAttributeFilterItemSelectionReplaced, type DashboardAttributeFilterItemSelectionReplacedPayload, type DashboardFilterContextChanged, type DashboardFilterContextChangedPayload, type IDashboardAttributeFilterParentChanged, type IDashboardAttributeFilterParentChangedPayload, type IDashboardAttributeFilterRemoved, type IDashboardAttributeFilterRemovedPayload, type DashboardAttributeFilterSelectionChanged, type IDashboardAttributeTitleChanged, type IDashboardAttributeTitleChangedPayload, type IDashboardAttributeSelectionModeChanged, type IDashboardAttributeSelectionModeChangedPayload, type IDashboardAttributeFilterMoved, type IDashboardAttributeFilterMovedPayload, type IDashboardAttributeFilterAdded, type IDashboardAttributeFilterAddedPayload, type IDashboardAttributeFilterConfigModeChanged, type IDashboardAttributeFilterConfigModeChangedPayload, type IDashboardAttributeFilterConfigLimitingItemsChanged, type IDashboardAttributeFilterConfigLimitingItemsChangedPayload, type IDashboardMeasureValueFilterAdded, type IDashboardMeasureValueFilterAddedPayload, type IDashboardMeasureValueFilterRemoved, type IDashboardMeasureValueFilterRemovedPayload, type IDashboardMeasureValueFilterMoved, type IDashboardMeasureValueFilterMovedPayload, type IDashboardMeasureValueFilterTitleChanged, type IDashboardMeasureValueFilterTitleChangedPayload, type IDashboardMeasureValueFilterConfigModeChanged, type IDashboardMeasureValueFilterConfigModeChangedPayload, type IDashboardFilterViewCreationSucceeded, type IDashboardFilterViewCreationSucceededPayload, type IDashboardFilterViewCreationFailed, type IDashboardFilterViewDeletionSucceeded, type IDashboardFilterViewDeletionSucceededPayload, type IDashboardFilterViewDeletionFailed, type IDashboardFilterViewApplicationSucceeded, type IDashboardFilterViewApplicationSucceededPayload, type IDashboardFilterViewApplicationFailed, type IDashboardFilterViewDefaultStatusChangeSucceeded, type IDashboardFilterViewDefaultStatusChangeSucceededPayload, type IDashboardFilterViewDefaultStatusChangeFailed, type IDashboardFilterViewDefaultStatusChangeFailedPayload, type IDashboardFilterContextSelectionReset, type IDashboardFilterContextWorkingSelectionApplied, type IDashboardMeasureValueFilterConditionChanged, type IDashboardMeasureValueFilterConditionChangedPayload, type IDashboardMeasureValueFilterDimensionalityChanged, type IDashboardMeasureValueFilterDimensionalityChangedPayload, isDashboardMeasureValueFilterAdded, isDashboardMeasureValueFilterRemoved, isDashboardMeasureValueFilterMoved, isDashboardMeasureValueFilterTitleChanged, isDashboardMeasureValueFilterConfigModeChanged, isDashboardMeasureValueFilterConditionChanged, isDashboardMeasureValueFilterDimensionalityChanged, isDashboardAttributeFilterAdded, isDashboardAttributeFilterMoved, isDashboardAttributeFilterParentChanged, isDashboardAttributeFilterRemoved, isDashboardAttributeFilterSelectionChanged, isDashboardAttributeFilterItemSelectionReplaced, isDashboardAttributeFilterSelectionModeChanged, isDashboardAttributeFilterTitleChanged, isDashboardDateFilterSelectionChanged, isDashboardFilterContextChanged, isDashboardAttributeFilterConfigModeChanged, isDashboardAttributeFilterConfigLimitingItemsChanged, isDashboardFilterViewCreationSucceeded, isDashboardFilterViewCreationFailed, isDashboardFilterViewDeletionSucceeded, isDashboardFilterViewDeletionFailed, isDashboardFilterViewApplicationSucceeded, isDashboardFilterViewApplicationFailed, isDashboardFilterViewDefaultStatusChangeSucceeded, isDashboardFilterViewDefaultStatusChangeFailed, isDashboardFilterContextSelectionReset, isDashboardFilterContextWorkingSelectionApplied, filterContextSelectionReset, filterContextWorkingSelectionApplied, } from "./model/events/filters.js";
@@ -140,7 +140,7 @@ export { catalogActions } from "./model/store/catalog/index.js";
140
140
  export type { SetCatalogMeasuresAndFactsPayload, SetCatalogItemsPayload, } from "./model/store/catalog/catalogReducers.js";
141
141
  export type { IAddParameterPayload, IRemoveParameterPayload, ISetParameterRuntimeValuePayload, ISetParameterRuntimeValuesPayload, } from "./model/store/tabs/parameters/parametersReducers.js";
142
142
  export type { IDashboardParameterEntry, IParametersState, } from "./model/store/tabs/parameters/parametersState.js";
143
- export { selectDashboardParameterEntries, selectDashboardParameters, selectEffectiveParameterValuesForWidget, selectHasAnyResettableParameterOnActiveTab, selectIsParametersChanged, selectParameterRuntimeOverrideByRef, } from "./model/store/tabs/parameters/parametersSelectors.js";
143
+ export { selectDashboardParameterEntries, selectDashboardParameters, selectEffectiveParameterValuesForWidget, selectExportEffectiveParameters, selectHasAnyResettableParameterOnActiveTab, selectIsParametersChanged, selectParameterRuntimeOverrideByRef, } from "./model/store/tabs/parameters/parametersSelectors.js";
144
144
  export { drillActions } from "./model/store/drill/index.js";
145
145
  export { selectDrillableItems, selectIsCrossFiltering, selectCrossFilteringItems, selectCrossFilteringItemByWidgetRef, selectCrossFilteringFiltersLocalIdentifiers, selectCrossFilteringFiltersLocalIdentifiersByWidgetRef, selectCrossFilteringSelectedPointsByWidgetRef, selectIsFilterFromCrossFilteringByLocalIdentifier, } from "./model/store/drill/drillSelectors.js";
146
146
  export type { IDrillState } from "./model/store/drill/drillState.js";
package/esm/index.js CHANGED
@@ -42,11 +42,11 @@ export { changeRenderMode, cancelEditRenderMode, switchToEditRenderMode, } from
42
42
  export { changeDashboardDensity, requestOpenDensityDialog, } from "./model/commands/density.js";
43
43
  export { addDrillTargets, } from "./model/commands/drillTargets.js";
44
44
  export { setShowWidgetAsTable, } from "./model/commands/showWidgetAsTable.js";
45
- export { switchDashboardTab, repositionDashboardTab, convertDashboardTabFromDefault, createDashboardTab, deleteDashboardTab, startRenamingDashboardTab, cancelRenamingDashboardTab, renameDashboardTab, } from "./model/commands/tabs.js";
45
+ export { switchDashboardTab, repositionDashboardTab, createDashboardTab, deleteDashboardTab, startRenamingDashboardTab, cancelRenamingDashboardTab, renameDashboardTab, } from "./model/commands/tabs.js";
46
46
  // Re-export from events
47
47
  export { isDashboardEvent, isCustomDashboardEvent, isDashboardEventOrCustomDashboardEvent, } from "./model/events/base.js";
48
48
  export { isDashboardSaved, isDashboardCopySaved, isDashboardInitialized, isDashboardDeinitialized, isDashboardRenamed, isDashboardWasReset, isDashboardDeleted, isDateFilterValidationFailed, isDashboardExportToPdfRequested, isDashboardExportToPdfResolved, isDashboardSharingChanged, isDashboardExportToExcelRequested, isDashboardExportToExcelResolved, isDashboardExportToPdfPresentationRequested, isDashboardExportToPdfPresentationResolved, isDashboardExportToPptPresentationResolved, isDashboardExportToPptPresentationRequested, isDashboardExportToImageRequested, isDashboardExportToImageResolved, isDashboardIgnoreExecutionTimestampChanged, } from "./model/events/dashboard.js";
49
- export { dashboardTabSwitched, isDashboardTabSwitched, dashboardTabCreated, isDashboardTabCreated, dashboardTabConvertedFromDefault, isDashboardTabConvertedFromDefault, dashboardTabDeleted, isDashboardTabDeleted, dashboardTabRenamingStarted, isDashboardTabRenamingStarted, dashboardTabRenamingCanceled, isDashboardTabRenamingCanceled, dashboardTabRenamed, isDashboardTabRenamed, } from "./model/events/tabs.js";
49
+ export { dashboardTabSwitched, isDashboardTabSwitched, dashboardTabCreated, isDashboardTabCreated, dashboardTabDeleted, isDashboardTabDeleted, dashboardTabRenamingStarted, isDashboardTabRenamingStarted, dashboardTabRenamingCanceled, isDashboardTabRenamingCanceled, dashboardTabRenamed, isDashboardTabRenamed, } from "./model/events/tabs.js";
50
50
  export { parametersSelectionReset, isDashboardParametersSelectionReset, } from "./model/events/parameters.js";
51
51
  export { isDashboardCommandStarted, isDashboardCommandFailed, isDashboardQueryFailed, isDashboardCommandRejected, isDashboardQueryCompleted, isDashboardQueryRejected, isDashboardQueryStarted, } from "./model/events/general.js";
52
52
  export { isDashboardMeasureValueFilterAdded, isDashboardMeasureValueFilterRemoved, isDashboardMeasureValueFilterMoved, isDashboardMeasureValueFilterTitleChanged, isDashboardMeasureValueFilterConfigModeChanged, isDashboardMeasureValueFilterConditionChanged, isDashboardMeasureValueFilterDimensionalityChanged, isDashboardAttributeFilterAdded, isDashboardAttributeFilterMoved, isDashboardAttributeFilterParentChanged, isDashboardAttributeFilterRemoved, isDashboardAttributeFilterSelectionChanged, isDashboardAttributeFilterItemSelectionReplaced, isDashboardAttributeFilterSelectionModeChanged, isDashboardAttributeFilterTitleChanged, isDashboardDateFilterSelectionChanged, isDashboardFilterContextChanged, isDashboardAttributeFilterConfigModeChanged, isDashboardAttributeFilterConfigLimitingItemsChanged, isDashboardFilterViewCreationSucceeded, isDashboardFilterViewCreationFailed, isDashboardFilterViewDeletionSucceeded, isDashboardFilterViewDeletionFailed, isDashboardFilterViewApplicationSucceeded, isDashboardFilterViewApplicationFailed, isDashboardFilterViewDefaultStatusChangeSucceeded, isDashboardFilterViewDefaultStatusChangeFailed, isDashboardFilterContextSelectionReset, isDashboardFilterContextWorkingSelectionApplied, filterContextSelectionReset, filterContextWorkingSelectionApplied, } from "./model/events/filters.js";
@@ -101,7 +101,7 @@ export { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab
101
101
  export { selectInsights, selectInsightRefs, selectInsightsMap, selectInsightByRef, selectInsightByWidgetRef, selectRawExportOverridesForInsightByRef, } from "./model/store/insights/insightsSelectors.js";
102
102
  export { selectCatalogIsLoaded, selectAttributesWithDrillDown, selectCatalogAttributes, selectCatalogAttributeDisplayForms, selectCatalogDateDatasets, selectCatalogFacts, selectCatalogMeasures, selectAllCatalogAttributesMap, selectAllCatalogDisplayFormsMap, selectAllCatalogDateDatasetsMap, selectAllCatalogMeasuresMap, selectHasCatalogAttributes, selectHasCatalogMeasures, selectHasCatalogDateDatasets, selectHasCatalogFacts, selectCatalogAttributeHierarchies, selectCatalogDateAttributes, selectDateHierarchyTemplates, selectAdhocDateHierarchies, selectAllCatalogAttributeHierarchies, selectCatalogAttributeDisplayFormsById, selectCatalogParameters, selectCatalogParametersStatus, selectCatalogParametersIsLoaded, selectCatalogMeasureParameters, selectCatalogMeasureParametersStatus, } from "./model/store/catalog/catalogSelectors.js";
103
103
  export { catalogActions } from "./model/store/catalog/index.js";
104
- export { selectDashboardParameterEntries, selectDashboardParameters, selectEffectiveParameterValuesForWidget, selectHasAnyResettableParameterOnActiveTab, selectIsParametersChanged, selectParameterRuntimeOverrideByRef, } from "./model/store/tabs/parameters/parametersSelectors.js";
104
+ export { selectDashboardParameterEntries, selectDashboardParameters, selectEffectiveParameterValuesForWidget, selectExportEffectiveParameters, selectHasAnyResettableParameterOnActiveTab, selectIsParametersChanged, selectParameterRuntimeOverrideByRef, } from "./model/store/tabs/parameters/parametersSelectors.js";
105
105
  export { drillActions } from "./model/store/drill/index.js";
106
106
  export { selectDrillableItems, selectIsCrossFiltering, selectCrossFilteringItems, selectCrossFilteringItemByWidgetRef, selectCrossFilteringFiltersLocalIdentifiers, selectCrossFilteringFiltersLocalIdentifiersByWidgetRef, selectCrossFilteringSelectedPointsByWidgetRef, selectIsFilterFromCrossFilteringByLocalIdentifier, } from "./model/store/drill/drillSelectors.js";
107
107
  export { selectCurrentUser, selectCurrentUserRef } from "./model/store/user/userSelectors.js";
@@ -6,7 +6,8 @@ import { selectExportResultPollingTimeout } from "../../store/config/configSelec
6
6
  import { selectFilterViews } from "../../store/filterViews/filterViewsReducersSelectors.js";
7
7
  import { selectDashboardRef, selectIsFiltersChanged } from "../../store/meta/metaSelectors.js";
8
8
  import { selectFilterContextFilters, selectFiltersByTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
9
- function exportDashboardToTabular(ctx, dashboardRef, title, mergeHeaders, exportInfo, widgetIds, dashboardFiltersOverride, filtersByTab, format, pdfConfiguration, timeout) {
9
+ import { selectExportEffectiveParameters } from "../../store/tabs/parameters/parametersSelectors.js";
10
+ function exportDashboardToTabular(ctx, dashboardRef, title, mergeHeaders, exportInfo, widgetIds, dashboardFiltersOverride, filtersByTab, dashboardTabsParametersOverrides, format, pdfConfiguration, timeout) {
10
11
  const { backend, workspace } = ctx;
11
12
  return backend.workspace(workspace).dashboards().exportDashboardToTabular(dashboardRef, {
12
13
  title,
@@ -15,6 +16,7 @@ function exportDashboardToTabular(ctx, dashboardRef, title, mergeHeaders, export
15
16
  exportInfo,
16
17
  dashboardFiltersOverride,
17
18
  dashboardTabsFiltersOverrides: filtersByTab,
19
+ dashboardTabsParametersOverrides,
18
20
  widgetIds,
19
21
  pdfConfiguration,
20
22
  timeout,
@@ -32,8 +34,9 @@ export function* exportToTabularHandler(ctx, cmd) {
32
34
  const hasDefaultFilterViewApplied = filterViews.some((filterView) => filterView.isDefault);
33
35
  const filterContextFilters = yield select(selectFilterContextFilters);
34
36
  const filtersByTab = yield select(selectFiltersByTab);
37
+ const parametersByTab = yield select(selectExportEffectiveParameters(widgetIds));
35
38
  const timeout = yield select(selectExportResultPollingTimeout);
36
- const result = yield call(exportDashboardToTabular, ctx, dashboardRef, fileName, mergeHeaders, exportInfo, widgetIds, isFilterContextChanged || hasDefaultFilterViewApplied ? filterContextFilters : undefined, isFilterContextChanged || hasDefaultFilterViewApplied ? filtersByTab : undefined, format, pdfConfiguration, timeout);
39
+ const result = yield call(exportDashboardToTabular, ctx, dashboardRef, fileName, mergeHeaders, exportInfo, widgetIds, isFilterContextChanged || hasDefaultFilterViewApplied ? filterContextFilters : undefined, isFilterContextChanged || hasDefaultFilterViewApplied ? filtersByTab : undefined, parametersByTab, format, pdfConfiguration, timeout);
37
40
  // prepend hostname if provided so that the results are downloaded from there, not from where the app is hosted
38
41
  const fullUri = ctx.backend.config.hostname
39
42
  ? new URL(result.uri, ctx.backend.config.hostname).href
@@ -50,6 +50,11 @@ function processExistingTabsForSaveAs(tabs, parametersByTab, useOriginalFilterCo
50
50
  const measureValueFilterConfigsProp = measureValueFilterConfigs?.length
51
51
  ? { measureValueFilterConfigs }
52
52
  : {};
53
+ const filterGroupsConfigProp = tab.filterGroupsConfig
54
+ ? {
55
+ filterGroupsConfig: tab.filterGroupsConfig,
56
+ }
57
+ : {};
53
58
  // Get this tab's specific layout, filter out custom widgets, then process
54
59
  const tabLayout = tab.layout?.layout
55
60
  ? processLayout(filterOutCustomWidgets(tab.layout.layout))
@@ -73,6 +78,7 @@ function processExistingTabsForSaveAs(tabs, parametersByTab, useOriginalFilterCo
73
78
  ...dateFilterConfigsProp,
74
79
  ...attributeFilterConfigsProp,
75
80
  ...measureValueFilterConfigsProp,
81
+ ...filterGroupsConfigProp,
76
82
  // Always persist `parameters` (incl. `[]`) so V1 root fallback never re-hydrates stale
77
83
  // root parameters when every tab has been emptied.
78
84
  parameters: tabParameters,
@@ -2,7 +2,6 @@
2
2
  import { batchActions } from "redux-batched-actions";
3
3
  import { call, put, select } from "redux-saga/effects";
4
4
  import { invariant } from "ts-invariant";
5
- import { v4 as uuid } from "uuid";
6
5
  import { isTempFilterContext, } from "@gooddata/sdk-model";
7
6
  import { dashboardFilterContextIdentity } from "../../../_staging/dashboard/dashboardFilterContext.js";
8
7
  import { dashboardLayoutRemoveIdentity, dashboardLayoutWidgetIdentityMap, } from "../../../_staging/dashboard/dashboardLayout.js";
@@ -20,16 +19,18 @@ import { metaActions } from "../../store/meta/index.js";
20
19
  import { selectDashboardDescriptor, selectPersistedDashboard } from "../../store/meta/metaSelectors.js";
21
20
  import { selectIsInViewMode } from "../../store/renderMode/renderModeSelectors.js";
22
21
  import { savingActions } from "../../store/saving/index.js";
23
- import { selectAttributeFilterConfigsOverrides } from "../../store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
24
- import { selectDateFilterConfigOverrides } from "../../store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
25
- import { selectDateFilterConfigsOverrides } from "../../store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
26
- import { selectFilterContextDefinition, selectFilterContextIdentity, } from "../../store/tabs/filterContext/filterContextSelectors.js";
22
+ import { selectAttributeFilterConfigsOverridesByTab } from "../../store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
23
+ import { selectDateFilterConfigOverridesByTab } from "../../store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
24
+ import { selectDateFilterConfigsOverridesByTab } from "../../store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
25
+ import { selectFilterContextStatesByTab } from "../../store/tabs/filterContext/filterContextSelectors.js";
27
26
  import { tabsActions } from "../../store/tabs/index.js";
28
- import { filterOutCustomWidgets, selectBasicLayout } from "../../store/tabs/layout/layoutSelectors.js";
29
- import { selectMeasureValueFilterConfigsOverrides } from "../../store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
27
+ import { filterOutCustomWidgets, selectBasicLayoutByTab } from "../../store/tabs/layout/layoutSelectors.js";
28
+ import { selectMeasureValueFilterConfigsOverridesByTab } from "../../store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
30
29
  import { selectSmartPersistedTabsParameters } from "../../store/tabs/parameters/parametersSelectors.js";
31
30
  import { selectTabs } from "../../store/tabs/tabsSelectors.js";
31
+ import { DEFAULT_TAB_ID } from "../../store/tabs/tabsState.js";
32
32
  import { isTemporaryIdentity } from "../../utils/dashboardItemUtils.js";
33
+ import { generateTabLocalIdentifier } from "../../utils/tabLocalIdentifier.js";
33
34
  import { changeRenderModeHandler } from "../renderMode/changeRenderModeHandler.js";
34
35
  import { switchDashboardTabHandler } from "../tabs/switchDashboardTabHandler.js";
35
36
  function createDashboard(ctx, saveCtx) {
@@ -69,7 +70,7 @@ export function getDashboardWithSharing(dashboard, sharingSupported = true, isNe
69
70
  * @param parametersByTab - Smart-persisted parameters keyed by tab localIdentifier
70
71
  * @returns Array of IDashboardTab objects ready for saving to backend
71
72
  */
72
- function processExistingTabs(tabs, parametersByTab) {
73
+ function processExistingTabs(tabs, parametersByTab, defaultTabNewLocalIdentifier) {
73
74
  return tabs.map((tab) => {
74
75
  const dateFilterConfig = tab.dateFilterConfig?.dateFilterConfig;
75
76
  const dateFilterConfigProp = dateFilterConfig ? { dateFilterConfig } : {};
@@ -97,7 +98,9 @@ function processExistingTabs(tabs, parametersByTab) {
97
98
  const tabParameters = parametersByTab[tab.localIdentifier] ?? [];
98
99
  const result = {
99
100
  // explicitly type the result to avoid type errors caused by spread operators
100
- localIdentifier: tab.localIdentifier,
101
+ localIdentifier: tab.localIdentifier === DEFAULT_TAB_ID && defaultTabNewLocalIdentifier
102
+ ? defaultTabNewLocalIdentifier
103
+ : tab.localIdentifier,
101
104
  title: tab.title ?? "",
102
105
  // Use each tab's own layout, filter out custom widgets, then process
103
106
  layout: tabLayout ? processLayout(filterOutCustomWidgets(tabLayout)) : undefined,
@@ -127,7 +130,7 @@ function buildOptionalFilterConfigsProps(attributeFilterConfigs, dateFilterConfi
127
130
  function createDefaultTab(layout, rootFilterContext, dateFilterConfig, attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs) {
128
131
  return [
129
132
  {
130
- localIdentifier: uuid(),
133
+ localIdentifier: generateTabLocalIdentifier(),
131
134
  title: "",
132
135
  layout: layout ? processLayout(layout) : undefined,
133
136
  filterContext: rootFilterContext,
@@ -136,14 +139,14 @@ function createDefaultTab(layout, rootFilterContext, dateFilterConfig, attribute
136
139
  },
137
140
  ];
138
141
  }
139
- function resolveProcessedTabs(tabs, rootFilterContext, layout, dateFilterConfig, attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs, parametersByTab) {
142
+ function resolveProcessedTabs(tabs, rootFilterContext, layout, dateFilterConfig, attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs, parametersByTab, defaultTabNewLocalIdentifier) {
140
143
  // If no tabs exist, create a default tab with root-level properties
141
144
  const shouldCreateDefaultTab = !tabs || tabs.length === 0;
142
145
  if (shouldCreateDefaultTab && rootFilterContext) {
143
146
  return createDefaultTab(layout, rootFilterContext, dateFilterConfig, attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs);
144
147
  }
145
148
  if (tabs) {
146
- return processExistingTabs(tabs, parametersByTab);
149
+ return processExistingTabs(tabs, parametersByTab, defaultTabNewLocalIdentifier);
147
150
  }
148
151
  return undefined;
149
152
  }
@@ -156,14 +159,31 @@ function resolveProcessedTabs(tabs, rootFilterContext, layout, dateFilterConfig,
156
159
  function* createDashboardSaveContext(cmd, isNewDashboard) {
157
160
  const persistedDashboard = yield select(selectPersistedDashboard);
158
161
  const dashboardDescriptor = yield select(selectDashboardDescriptor);
159
- const filterContextDefinition = yield select(selectFilterContextDefinition);
160
- const filterContextIdentity = yield select(selectFilterContextIdentity);
161
- const layout = yield select(selectBasicLayout);
162
- const dateFilterConfig = yield select(selectDateFilterConfigOverrides);
163
- const attributeFilterConfigs = yield select(selectAttributeFilterConfigsOverrides);
164
- const dateFilterConfigs = yield select(selectDateFilterConfigsOverrides);
165
- const measureValueFilterConfigs = yield select(selectMeasureValueFilterConfigsOverrides);
166
162
  const tabs = yield select(selectTabs);
163
+ // Generate a real UUID for the UI placeholder tab (DEFAULT_TAB_ID) only when it has never
164
+ // been persisted. If the backend already owns a tab with that identifier (e.g. set intentionally
165
+ // via API or as-code definition) we must leave it unchanged.
166
+ const hasPersistedDefaultTab = persistedDashboard?.tabs?.some((t) => t.localIdentifier === DEFAULT_TAB_ID);
167
+ const defaultTabNewLocalIdentifier = !hasPersistedDefaultTab && tabs?.some((t) => t.localIdentifier === DEFAULT_TAB_ID)
168
+ ? generateTabLocalIdentifier()
169
+ : undefined;
170
+ // Root-level properties must always reflect the first tab, regardless of which tab is active.
171
+ // Using active-tab selectors here would persist the wrong data when saving from a non-first tab.
172
+ const firstTabId = tabs?.[0]?.localIdentifier;
173
+ const filterContextStatesByTab = yield select(selectFilterContextStatesByTab);
174
+ const basicLayoutByTab = yield select(selectBasicLayoutByTab);
175
+ const dateFilterConfigByTab = yield select(selectDateFilterConfigOverridesByTab);
176
+ const attributeFilterConfigsByTab = yield select(selectAttributeFilterConfigsOverridesByTab);
177
+ const dateFilterConfigsByTab = yield select(selectDateFilterConfigsOverridesByTab);
178
+ const measureValueFilterConfigsByTab = yield select(selectMeasureValueFilterConfigsOverridesByTab);
179
+ const firstTabFilterContextState = firstTabId ? filterContextStatesByTab[firstTabId] : undefined;
180
+ const filterContextDefinition = firstTabFilterContextState?.filterContextDefinition;
181
+ const filterContextIdentity = firstTabFilterContextState?.filterContextIdentity;
182
+ const layout = firstTabId ? basicLayoutByTab[firstTabId] : undefined;
183
+ const dateFilterConfig = firstTabId ? dateFilterConfigByTab[firstTabId] : undefined;
184
+ const attributeFilterConfigs = firstTabId ? attributeFilterConfigsByTab[firstTabId] : undefined;
185
+ const dateFilterConfigs = firstTabId ? dateFilterConfigsByTab[firstTabId] : undefined;
186
+ const measureValueFilterConfigs = firstTabId ? measureValueFilterConfigsByTab[firstTabId] : undefined;
167
187
  const parametersByTab = yield select(selectSmartPersistedTabsParameters);
168
188
  const capabilities = yield select(selectBackendCapabilities);
169
189
  /*
@@ -184,7 +204,7 @@ function* createDashboardSaveContext(cmd, isNewDashboard) {
184
204
  ...filterContextDefinition,
185
205
  }
186
206
  : undefined;
187
- const processedTabs = resolveProcessedTabs(tabs, rootFilterContext, layout, dateFilterConfig, attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs, parametersByTab);
207
+ const processedTabs = resolveProcessedTabs(tabs, rootFilterContext, layout, dateFilterConfig, attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs, parametersByTab, defaultTabNewLocalIdentifier);
188
208
  const locale = yield select(selectLocale);
189
209
  const translations = yield call(resolveMessages, locale);
190
210
  const title = (cmd.payload.title ?? dashboardDescriptor.title) || translations[messages.untitled.id];
@@ -195,10 +215,12 @@ function* createDashboardSaveContext(cmd, isNewDashboard) {
195
215
  ...dashboardDescriptor,
196
216
  title,
197
217
  ...dashboardIdentity,
198
- filterContext: {
199
- ...filterContextIdentity,
200
- ...filterContextDefinition,
201
- },
218
+ filterContext: filterContextDefinition
219
+ ? {
220
+ ...filterContextIdentity,
221
+ ...filterContextDefinition,
222
+ }
223
+ : undefined,
202
224
  layout,
203
225
  dateFilterConfig,
204
226
  ...buildOptionalFilterConfigsProps(attributeFilterConfigs, dateFilterConfigs, measureValueFilterConfigs),
@@ -207,13 +229,14 @@ function* createDashboardSaveContext(cmd, isNewDashboard) {
207
229
  };
208
230
  const dashboardToSave = {
209
231
  ...dashboardFromState,
210
- layout: dashboardLayoutRemoveIdentity(layout, isTemporaryIdentity),
232
+ layout: layout ? dashboardLayoutRemoveIdentity(layout, isTemporaryIdentity) : undefined,
211
233
  };
212
234
  return {
213
235
  cmd,
214
236
  persistedDashboard,
215
237
  dashboardFromState,
216
238
  dashboardToSave: getDashboardWithSharing(dashboardToSave, capabilities.supportsAccessControl, isNewDashboard),
239
+ defaultTabNewLocalIdentifier,
217
240
  };
218
241
  }
219
242
  function* save(ctx, saveCtx, saveFn, saveActionName) {
@@ -236,9 +259,15 @@ function* save(ctx, saveCtx, saveFn, saveActionName) {
236
259
  const stateTabs = yield select(selectTabs);
237
260
  // For each tab in the saved dashboard, update its widget identities and filter context identity
238
261
  dashboard.tabs.forEach((savedTab) => {
239
- const stateTab = stateTabs?.find((t) => t.localIdentifier === savedTab.localIdentifier);
262
+ // If this tab was the DEFAULT_TAB_ID placeholder being saved for the first time,
263
+ // find the state tab by DEFAULT_TAB_ID (its current state ID) and use it as the tabId
264
+ // for identity updates. resolveDefaultTab (pushed below) will rename it afterwards.
265
+ const isDefaultTabBeingSaved = savedTab.localIdentifier === saveCtx.defaultTabNewLocalIdentifier;
266
+ const stateTab = isDefaultTabBeingSaved
267
+ ? stateTabs?.find((t) => t.localIdentifier === DEFAULT_TAB_ID)
268
+ : stateTabs?.find((t) => t.localIdentifier === savedTab.localIdentifier);
269
+ const tabIdForUpdate = stateTab?.localIdentifier ?? savedTab.localIdentifier;
240
270
  // Update filter context identity for this tab
241
- // Extract identity directly from the filter context
242
271
  const filterContext = savedTab.filterContext;
243
272
  const filterContextIdentity = filterContext && !isTempFilterContext(filterContext) && filterContext.ref
244
273
  ? {
@@ -248,20 +277,26 @@ function* save(ctx, saveCtx, saveFn, saveActionName) {
248
277
  }
249
278
  : undefined;
250
279
  actions.push(tabsActions.updateFilterContextIdentityForTab({
251
- tabId: savedTab.localIdentifier,
280
+ tabId: tabIdForUpdate,
252
281
  filterContextIdentity,
253
282
  }));
254
283
  // Update widget identities for this tab if both layouts exist
255
284
  if (stateTab?.layout?.layout && savedTab.layout) {
256
- // Filter out custom widgets from state layout to match the saved layout structure
257
285
  const stateLayoutWithoutCustomWidgets = filterOutCustomWidgets(stateTab.layout.layout);
258
286
  const mapping = dashboardLayoutWidgetIdentityMap(stateLayoutWithoutCustomWidgets, savedTab.layout);
259
287
  actions.push(tabsActions.updateWidgetIdentitiesForTab({
260
- tabId: savedTab.localIdentifier,
288
+ tabId: tabIdForUpdate,
261
289
  mapping,
262
290
  }));
263
291
  }
264
292
  });
293
+ // After all identity updates, rename DEFAULT_TAB_ID to its real UUID in state.
294
+ // This makes the identifier stable for filter views, drill targets, and future saves.
295
+ if (saveCtx.defaultTabNewLocalIdentifier) {
296
+ actions.push(tabsActions.resolveDefaultTab({
297
+ newLocalIdentifier: saveCtx.defaultTabNewLocalIdentifier,
298
+ }));
299
+ }
265
300
  }
266
301
  else {
267
302
  // For dashboards without tabs, use the original approach with active tab actions
@@ -87,7 +87,6 @@ import { refreshAutomationsHandlers } from "./scheduledEmail/refreshAutomationsH
87
87
  import { saveScheduledEmailHandler } from "./scheduledEmail/saveScheduledEmailHandler.js";
88
88
  import { handleSetWidgetToShowAsTable } from "./showWidgetAsTable/showWidgetAsTableHandler.js";
89
89
  import { cancelRenamingDashboardTabHandler } from "./tabs/cancelRenamingDashboardTabHandler.js";
90
- import { convertDashboardTabFromDefaultHandler } from "./tabs/convertDashboardTabFromDefaultHandler.js";
91
90
  import { createDashboardTabHandler } from "./tabs/createDashboardTabHandler.js";
92
91
  import { deleteDashboardTabHandler } from "./tabs/deleteDashboardTabHandler.js";
93
92
  import { renameDashboardTabHandler } from "./tabs/renameDashboardTabHandler.js";
@@ -254,7 +253,6 @@ export const DefaultCommandHandlers = {
254
253
  "GDC.DASH/CMD.CHANGE_IGNORE_EXECUTION_TIMESTAMP": changeIgnoreExecutionTimestampHandler,
255
254
  "GDC.DASH/CMD.SHOW_WIDGET_AS_TABLE.SET": handleSetWidgetToShowAsTable,
256
255
  "GDC.DASH/CMD.TAB.CREATE": createDashboardTabHandler,
257
- "GDC.DASH/CMD.TAB.CONVERT_FROM_DEFAULT": convertDashboardTabFromDefaultHandler,
258
256
  "GDC.DASH/CMD.TAB.SWITCH": switchDashboardTabHandler,
259
257
  "GDC.DASH/CMD.TAB.REPOSITION": repositionDashboardTabHandler,
260
258
  "GDC.DASH/CMD.TAB.DELETE": deleteDashboardTabHandler,
@@ -1,6 +1,5 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { call, put, select } from "redux-saga/effects";
3
- import { v4 as uuid } from "uuid";
4
3
  import { createDefaultFilterContext } from "../../../_staging/dashboard/defaultFilterContext.js";
5
4
  import { DEFAULT_FISCAL_DATE_FILTER_PRESET } from "../../../_staging/dateFilterConfig/defaultConfig.js";
6
5
  import { configHasFiscalPresets } from "../../../_staging/dateFilterConfig/validation.js";
@@ -12,6 +11,7 @@ import { selectActiveCalendars, selectDateFilterConfig } from "../../store/confi
12
11
  import { tabsActions } from "../../store/tabs/index.js";
13
12
  import { selectScreen } from "../../store/tabs/layout/layoutSelectors.js";
14
13
  import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js";
14
+ import { generateTabLocalIdentifier } from "../../utils/tabLocalIdentifier.js";
15
15
  import { EmptyDashboardLayout } from "../dashboard/common/dashboardInitialize.js";
16
16
  import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js";
17
17
  const getTabState = ({ title, localIdentifier, isRenaming, filterContext, dateFilterConfig, dateFilterConfigs, attributeFilterConfigs, layout, screen, }) => {
@@ -61,7 +61,7 @@ export function* createDashboardTabHandler(ctx, cmd) {
61
61
  configHasFiscalPresets(dateFilterConfig)
62
62
  ? { ...dateFilterConfig, selectedOption: DEFAULT_FISCAL_DATE_FILTER_PRESET }
63
63
  : dateFilterConfig;
64
- const newTabId = uuid();
64
+ const newTabId = generateTabLocalIdentifier();
65
65
  const newTabFilterContext = createDefaultFilterContext(effectiveDateFilterConfig, true);
66
66
  const newTab = getTabState({
67
67
  localIdentifier: newTabId,
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @public
11
11
  */
12
- export type DashboardCommandType = "GDC.DASH/CMD.INITIALIZE" | "GDC.DASH/CMD.SAVE" | "GDC.DASH/CMD.SAVEAS" | "GDC.DASH/CMD.RESET" | "GDC.DASH/CMD.RENAME" | "GDC.DASH/CMD.DELETE" | "GDC.DASH/CMD.CHANGE_RENDER_MODE" | "GDC.DASH/CMD.SHARING.CHANGE" | "GDC.DASH/CMD.EXPORT.PDF" | "GDC.DASH/CMD.EXPORT.EXCEL" | "GDC.DASH/CMD.EXPORT.PDF_PRESENTATION" | "GDC.DASH/CMD.EXPORT.PPT_PRESENTATION" | "GDC.DASH/CMD.EVENT.TRIGGER" | "GDC.DASH/CMD.EXECUTION_RESULT.UPSERT" | "GDC.DASH/CMD.FILTER_CONTEXT.CHANGE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.CHANGE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.TEXT_ATTRIBUTE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.REMOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.MOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.CHANGE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER_ITEM.REPLACE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_PARENTS" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_DISPLAY_FORM" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_TITLE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_SELECTION_MODE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_DEPENDENT_DATE_FILTERS" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.REMOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.MOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.REMOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.MOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.CHANGE_CONDITION" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.SET_DIMENSIONALITY" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.SET_TITLE" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_MODE" | "GDC.DASH/CMD.MEASURE_VALUE_FILTER_CONFIG.SET_MODE" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_AVAILABLE_MODE" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_LIMITING_ITEMS" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_DISPLAY_AS_LABEL" | "GDC.DASH/CMD.DATE_FILTER_CONFIG.SET_MODE" | "GDC.DASH/CMD.DATE_FILTER_WITH_DIMENSION_CONFIG.SET_MODE" | "GDC.DASH/CMD.DATE_FILTER_CONFIG.SET_TITLE" | "GDC.DASH/CMD.FLUID_LAYOUT.ADD_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.MOVE_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.MOVE_ITEM_TO_NEW_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.REMOVE_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.CHANGE_SECTION_HEADER" | "GDC.DASH/CMD.FLUID_LAYOUT.ADD_ITEMS" | "GDC.DASH/CMD.FLUID_LAYOUT.REPLACE_ITEM" | "GDC.DASH/CMD.FLUID_LAYOUT.MOVE_ITEM" | "GDC.DASH/CMD.FLUID_LAYOUT.REMOVE_ITEM" | "GDC.DASH/CMD.FLUID_LAYOUT.REMOVE_ITEM_BY_WIDGET_REF" | "GDC.DASH/CMD.FLUID_LAYOUT.UNDO" | "GDC.DASH/CMD.FLUID_LAYOUT.RESIZE_HEIGHT" | "GDC.DASH/CMD.FLUID_LAYOUT.RESIZE_WIDTH" | "GDC.DASH/CMD.FLUID_LAYOUT.SET_SCREEN_SIZE" | "GDC.DASH/CMD.FLEXIBLE_LAYOUT.TOGGLE_LAYOUT_SECTION_HEADERS" | "GDC.DASH/CMD.FLEXIBLE_LAYOUT.TOGGLE_LAYOUT_DIRECTION" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_HEADER" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_MEASURE" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_FILTER_SETTINGS" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_COMPARISON" | "GDC.DASH/CMD.KPI_WIDGET.REFRESH" | "GDC.DASH/CMD.KPI_WIDGET.SET_DRILL" | "GDC.DASH/CMD.KPI_WIDGET.REMOVE_DRILL" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_DESCRIPTION" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_CONFIGURATION" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_HEADER" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_DESCRIPTION" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_FILTER_SETTINGS" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_PROPERTIES" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_CONFIGURATION" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_INSIGHT" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_IGNORE_CROSS_FILTERING" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT" | "GDC.DASH/CMD.INSIGHT_WIDGET.MODIFY_DRILLS" | "GDC.DASH/CMD.INSIGHT_WIDGET.REMOVE_DRILLS" | "GDC.DASH/CMD.INSIGHT_WIDGET.REMOVE_DRILL_DOWN" | "GDC.DASH/CMD.INSIGHT_WIDGET.REMOVE_DRILL_TO_URL" | "GDC.DASH/CMD.INSIGHT_WIDGET.ADD_DRILL_DOWN" | "GDC.DASH/CMD.INSIGHT_WIDGET.MODIFY_DRILL_DOWN" | "GDC.DASH/CMD.INSIGHT_WIDGET.REFRESH" | "GDC.DASH/CMD.RICH_TEXT_WIDGET.CHANGE_CONTENT" | "GDC.DASH/CMD.RICH_TEXT_WIDGET.CHANGE_FILTER_SETTINGS" | "GDC.DASH/CMD.VISUALIZATION_SWITCHER_WIDGET.ADD_VISUALIZATION" | "GDC.DASH/CMD.VISUALIZATION_SWITCHER_WIDGET.UPDATE_VISUALIZATIONS" | "GDC.DASH/CMD.ALERT.CREATE" | "GDC.DASH/CMD.ALERT.SAVE" | "GDC.DASH/CMD.SCHEDULED_EMAIL.CREATE" | "GDC.DASH/CMD.SCHEDULED_EMAIL.SAVE" | "GDC.DASH/CMD.DRILL" | "GDC.DASH/CMD.DRILL.DRILL_DOWN" | "GDC.DASH/CMD.DRILL.DRILL_TO_INSIGHT" | "GDC.DASH/CMD.DRILL.DRILL_TO_DASHBOARD" | "GDC.DASH/CMD.DRILL.DRILL_TO_ATTRIBUTE_URL" | "GDC.DASH/CMD.DRILL.DRILL_TO_CUSTOM_URL" | "GDC.DASH/CMD.DRILL.DRILL_TO_LEGACY_DASHBOARD" | "GDC.DASH/CMD.DRILL.DRILLABLE_ITEMS.CHANGE" | "GDC.DASH/CMD.DRILL.CROSS_FILTERING" | "GDC.DASH/CMD.DRILL.KEY_DRIVER_ANALYSIS" | "GDC.DASH/CMD.DRILL_TARGETS.ADD" | "GDC.DASH/CMD.RENDER.ASYNC.REQUEST" | "GDC.DASH/CMD.RENDER.ASYNC.RESOLVE" | "GDC.DASH/CMD.ATTRIBUTE_HIERARCHY_MODIFIED" | "GDC.DASH/CMD.AUTOMATIONS.INITIALIZE" | "GDC.DASH/CMD.AUTOMATIONS.REFRESH" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.SAVE" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.DELETE" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.APPLY" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.RELOAD" | "GDC.DASH/CMD.FILTER_CONTEXT.APPLY_WORKING_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.RESET_WORKING_SELECTION" | "GDC.DASH/CMD.CHANGE_IGNORE_EXECUTION_TIMESTAMP" | "GDC.DASH/CMD.TAB.SWITCH" | "GDC.DASH/CMD.TAB.REPOSITION" | "GDC.DASH/CMD.TAB.CREATE" | "GDC.DASH/CMD.TAB.CONVERT_FROM_DEFAULT" | "GDC.DASH/CMD.TAB.DELETE" | "GDC.DASH/CMD.TAB.RENAME_MODE.START" | "GDC.DASH/CMD.TAB.RENAME_MODE.CANCEL" | "GDC.DASH/CMD.TAB.RENAME" | "GDC.DASH/CMD.USERS.LOAD_ALL" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT_RAW" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT_SLIDES" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT_IMAGE" | "GDC.DASH/CMD.SHOW_WIDGET_AS_TABLE.SET" | "GDC.DASH/CMD.CHANGE_DENSITY" | "GDC.DASH/CMD.OPEN_DENSITY_DIALOG";
12
+ export type DashboardCommandType = "GDC.DASH/CMD.INITIALIZE" | "GDC.DASH/CMD.SAVE" | "GDC.DASH/CMD.SAVEAS" | "GDC.DASH/CMD.RESET" | "GDC.DASH/CMD.RENAME" | "GDC.DASH/CMD.DELETE" | "GDC.DASH/CMD.CHANGE_RENDER_MODE" | "GDC.DASH/CMD.SHARING.CHANGE" | "GDC.DASH/CMD.EXPORT.PDF" | "GDC.DASH/CMD.EXPORT.EXCEL" | "GDC.DASH/CMD.EXPORT.PDF_PRESENTATION" | "GDC.DASH/CMD.EXPORT.PPT_PRESENTATION" | "GDC.DASH/CMD.EVENT.TRIGGER" | "GDC.DASH/CMD.EXECUTION_RESULT.UPSERT" | "GDC.DASH/CMD.FILTER_CONTEXT.CHANGE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.CHANGE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.TEXT_ATTRIBUTE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.REMOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.MOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.CHANGE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER_ITEM.REPLACE_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_PARENTS" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_DISPLAY_FORM" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_TITLE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_SELECTION_MODE" | "GDC.DASH/CMD.FILTER_CONTEXT.ATTRIBUTE_FILTER.SET_DEPENDENT_DATE_FILTERS" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.REMOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.DATE_FILTER.MOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.ADD" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.REMOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.MOVE" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.CHANGE_CONDITION" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.SET_DIMENSIONALITY" | "GDC.DASH/CMD.FILTER_CONTEXT.MEASURE_VALUE_FILTER.SET_TITLE" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_MODE" | "GDC.DASH/CMD.MEASURE_VALUE_FILTER_CONFIG.SET_MODE" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_AVAILABLE_MODE" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_LIMITING_ITEMS" | "GDC.DASH/CMD.ATTRIBUTE_FILTER_CONFIG.SET_DISPLAY_AS_LABEL" | "GDC.DASH/CMD.DATE_FILTER_CONFIG.SET_MODE" | "GDC.DASH/CMD.DATE_FILTER_WITH_DIMENSION_CONFIG.SET_MODE" | "GDC.DASH/CMD.DATE_FILTER_CONFIG.SET_TITLE" | "GDC.DASH/CMD.FLUID_LAYOUT.ADD_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.MOVE_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.MOVE_ITEM_TO_NEW_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.REMOVE_SECTION" | "GDC.DASH/CMD.FLUID_LAYOUT.CHANGE_SECTION_HEADER" | "GDC.DASH/CMD.FLUID_LAYOUT.ADD_ITEMS" | "GDC.DASH/CMD.FLUID_LAYOUT.REPLACE_ITEM" | "GDC.DASH/CMD.FLUID_LAYOUT.MOVE_ITEM" | "GDC.DASH/CMD.FLUID_LAYOUT.REMOVE_ITEM" | "GDC.DASH/CMD.FLUID_LAYOUT.REMOVE_ITEM_BY_WIDGET_REF" | "GDC.DASH/CMD.FLUID_LAYOUT.UNDO" | "GDC.DASH/CMD.FLUID_LAYOUT.RESIZE_HEIGHT" | "GDC.DASH/CMD.FLUID_LAYOUT.RESIZE_WIDTH" | "GDC.DASH/CMD.FLUID_LAYOUT.SET_SCREEN_SIZE" | "GDC.DASH/CMD.FLEXIBLE_LAYOUT.TOGGLE_LAYOUT_SECTION_HEADERS" | "GDC.DASH/CMD.FLEXIBLE_LAYOUT.TOGGLE_LAYOUT_DIRECTION" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_HEADER" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_MEASURE" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_FILTER_SETTINGS" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_COMPARISON" | "GDC.DASH/CMD.KPI_WIDGET.REFRESH" | "GDC.DASH/CMD.KPI_WIDGET.SET_DRILL" | "GDC.DASH/CMD.KPI_WIDGET.REMOVE_DRILL" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_DESCRIPTION" | "GDC.DASH/CMD.KPI_WIDGET.CHANGE_CONFIGURATION" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_HEADER" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_DESCRIPTION" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_FILTER_SETTINGS" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_PROPERTIES" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_CONFIGURATION" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_INSIGHT" | "GDC.DASH/CMD.INSIGHT_WIDGET.CHANGE_IGNORE_CROSS_FILTERING" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT" | "GDC.DASH/CMD.INSIGHT_WIDGET.MODIFY_DRILLS" | "GDC.DASH/CMD.INSIGHT_WIDGET.REMOVE_DRILLS" | "GDC.DASH/CMD.INSIGHT_WIDGET.REMOVE_DRILL_DOWN" | "GDC.DASH/CMD.INSIGHT_WIDGET.REMOVE_DRILL_TO_URL" | "GDC.DASH/CMD.INSIGHT_WIDGET.ADD_DRILL_DOWN" | "GDC.DASH/CMD.INSIGHT_WIDGET.MODIFY_DRILL_DOWN" | "GDC.DASH/CMD.INSIGHT_WIDGET.REFRESH" | "GDC.DASH/CMD.RICH_TEXT_WIDGET.CHANGE_CONTENT" | "GDC.DASH/CMD.RICH_TEXT_WIDGET.CHANGE_FILTER_SETTINGS" | "GDC.DASH/CMD.VISUALIZATION_SWITCHER_WIDGET.ADD_VISUALIZATION" | "GDC.DASH/CMD.VISUALIZATION_SWITCHER_WIDGET.UPDATE_VISUALIZATIONS" | "GDC.DASH/CMD.ALERT.CREATE" | "GDC.DASH/CMD.ALERT.SAVE" | "GDC.DASH/CMD.SCHEDULED_EMAIL.CREATE" | "GDC.DASH/CMD.SCHEDULED_EMAIL.SAVE" | "GDC.DASH/CMD.DRILL" | "GDC.DASH/CMD.DRILL.DRILL_DOWN" | "GDC.DASH/CMD.DRILL.DRILL_TO_INSIGHT" | "GDC.DASH/CMD.DRILL.DRILL_TO_DASHBOARD" | "GDC.DASH/CMD.DRILL.DRILL_TO_ATTRIBUTE_URL" | "GDC.DASH/CMD.DRILL.DRILL_TO_CUSTOM_URL" | "GDC.DASH/CMD.DRILL.DRILL_TO_LEGACY_DASHBOARD" | "GDC.DASH/CMD.DRILL.DRILLABLE_ITEMS.CHANGE" | "GDC.DASH/CMD.DRILL.CROSS_FILTERING" | "GDC.DASH/CMD.DRILL.KEY_DRIVER_ANALYSIS" | "GDC.DASH/CMD.DRILL_TARGETS.ADD" | "GDC.DASH/CMD.RENDER.ASYNC.REQUEST" | "GDC.DASH/CMD.RENDER.ASYNC.RESOLVE" | "GDC.DASH/CMD.ATTRIBUTE_HIERARCHY_MODIFIED" | "GDC.DASH/CMD.AUTOMATIONS.INITIALIZE" | "GDC.DASH/CMD.AUTOMATIONS.REFRESH" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.SAVE" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.DELETE" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.APPLY" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS" | "GDC.DASH/CMD.FILTER_CONTEXT.FILTER_VIEW.RELOAD" | "GDC.DASH/CMD.FILTER_CONTEXT.APPLY_WORKING_SELECTION" | "GDC.DASH/CMD.FILTER_CONTEXT.RESET_WORKING_SELECTION" | "GDC.DASH/CMD.CHANGE_IGNORE_EXECUTION_TIMESTAMP" | "GDC.DASH/CMD.TAB.SWITCH" | "GDC.DASH/CMD.TAB.REPOSITION" | "GDC.DASH/CMD.TAB.CREATE" | "GDC.DASH/CMD.TAB.DELETE" | "GDC.DASH/CMD.TAB.RENAME_MODE.START" | "GDC.DASH/CMD.TAB.RENAME_MODE.CANCEL" | "GDC.DASH/CMD.TAB.RENAME" | "GDC.DASH/CMD.USERS.LOAD_ALL" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT_RAW" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT_SLIDES" | "GDC.DASH/CMD.INSIGHT_WIDGET.EXPORT_IMAGE" | "GDC.DASH/CMD.SHOW_WIDGET_AS_TABLE.SET" | "GDC.DASH/CMD.CHANGE_DENSITY" | "GDC.DASH/CMD.OPEN_DENSITY_DIALOG";
13
13
  /**
14
14
  * @public
15
15
  */
@@ -14,7 +14,7 @@ import { type IChangeRenderMode } from "./renderMode.js";
14
14
  import { type IChangeRichTextWidgetContent, type IChangeRichTextWidgetFilterSettings } from "./richText.js";
15
15
  import { type ICreateScheduledEmail, type IInitializeAutomations, type IRefreshAutomations, type ISaveScheduledEmail } from "./scheduledEmail.js";
16
16
  import { type ISetShowWidgetAsTable } from "./showWidgetAsTable.js";
17
- import { type ICancelRenamingDashboardTab, type IConvertDashboardTabFromDefault, type ICreateDashboardTab, type IDeleteDashboardTab, type IRenameDashboardTab, type IRepositionDashboardTab, type IStartRenamingDashboardTab, type ISwitchDashboardTab } from "./tabs.js";
17
+ import { type ICancelRenamingDashboardTab, type ICreateDashboardTab, type IDeleteDashboardTab, type IRenameDashboardTab, type IRepositionDashboardTab, type IStartRenamingDashboardTab, type ISwitchDashboardTab } from "./tabs.js";
18
18
  import { type ILoadAllWorkspaceUsers } from "./users.js";
19
19
  import { type IAddVisualizationToVisualizationSwitcherWidgetContent, type IUpdateVisualizationsFromVisualizationSwitcherWidgetContent } from "./visualizationSwitcher.js";
20
20
  /**
@@ -27,4 +27,4 @@ import { type IAddVisualizationToVisualizationSwitcherWidgetContent, type IUpdat
27
27
  *
28
28
  * @public
29
29
  */
30
- export type DashboardCommands = InitializeDashboard | SaveDashboardAs | RequestAsyncRender | ResolveAsyncRender | ChangeFilterContextSelection | ChangeDateFilterSelection | ChangeAttributeFilterSelection | ReplaceAttributeFilterItemSelection | IChangeRenderMode | IChangeDashboardDensity | IRequestOpenDensityDialog | ISaveDashboard | IRenameDashboard | IResetDashboard | IExportDashboardToPdf | IExportDashboardToExcel | IExportDashboardToPdfPresentation | IExportDashboardToPptPresentation | IDeleteDashboard | ITriggerEvent | IUpsertExecutionResult | IAddAttributeFilter | IAddTextAttributeFilter | IRemoveAttributeFilters | IMoveAttributeFilter | ISetAttributeFilterParents | ISetAttributeFilterDependentDateFilters | IAddLayoutSection | IMoveLayoutSection | IRemoveLayoutSection | ChangeLayoutSectionHeader | IResizeHeight | IResizeWidth | IAddSectionItems | IReplaceSectionItem | IMoveSectionItem | IMoveSectionItemToNewSection | IRemoveSectionItem | IRemoveSectionItemByWidgetRef | IUndoLayoutChanges | IChangeKpiWidgetHeader | IChangeKpiWidgetDescription | IChangeKpiWidgetConfiguration | IChangeKpiWidgetMeasure | IChangeKpiWidgetFilterSettings | IChangeKpiWidgetComparison | IRefreshKpiWidget | ISetDrillForKpiWidget | IRemoveDrillForKpiWidget | IChangeInsightWidgetHeader | IChangeInsightWidgetDescription | IChangeInsightWidgetIgnoreCrossFiltering | IChangeInsightWidgetFilterSettings | IChangeInsightWidgetVisProperties | ChangeInsightWidgetVisConfiguration | IChangeInsightWidgetInsight | IModifyDrillsForInsightWidget | IRemoveDrillsForInsightWidget | IRefreshInsightWidget | IExportInsightWidget | ICreateAlert | ISaveAlert | ICreateScheduledEmail | ISaveScheduledEmail | IChangeSharing | ISetAttributeFilterDisplayForm | ISetAttributeFilterTitle | ISetMeasureValueFilterTitle | ISetMeasureValueFilterDimensionality | ISetAttributeFilterSelectionMode | IChangeRichTextWidgetContent | IChangeRichTextWidgetFilterSettings | IAddVisualizationToVisualizationSwitcherWidgetContent | IUpdateVisualizationsFromVisualizationSwitcherWidgetContent | IDrill | IDrillDown | IDrillToAttributeUrl | IDrillToCustomUrl | IDrillToDashboard | IDrillToInsight | IDrillToLegacyDashboard | IChangeDrillableItems | IAddDrillTargets | ISetDashboardDateFilterConfigMode | ISetDashboardAttributeFilterConfigMode | ISetDashboardMeasureValueFilterConfigMode | ISetDashboardAttributeFilterSelectionType | ISetDashboardAttributeFilterConfigDisplayAsLabel | IRemoveDrillDownForInsightWidget | IRemoveDrillToUrlForInsightWidget | IAddDrillDownForInsightWidget | IModifyDrillDownForInsightWidget | ICrossFiltering | IKeyDriverAnalysis | IAttributeHierarchyModified | IAddDateFilter | IAddMeasureValueFilter | IRemoveMeasureValueFilters | IRemoveDateFilters | IMoveDateFilter | IChangeMeasureValueFilterCondition | IMoveMeasureValueFilter | ISetDashboardDateFilterWithDimensionConfigMode | ISetDateFilterConfigTitle | IInitializeAutomations | IRefreshAutomations | ISetAttributeFilterLimitingItems | ISaveFilterView | IDeleteFilterView | IApplyFilterView | ISetFilterViewAsDefault | IReloadFilterViews | IToggleLayoutSectionHeaders | IToggleLayoutDirection | IApplyFilterContextWorkingSelection | IResetFilterContextWorkingSelection | IChangeIgnoreExecutionTimestamp | ISwitchDashboardTab | IConvertDashboardTabFromDefault | ICreateDashboardTab | IRepositionDashboardTab | IDeleteDashboardTab | IStartRenamingDashboardTab | ICancelRenamingDashboardTab | IRenameDashboardTab | ISetScreenSize | ILoadAllWorkspaceUsers | IExportRawInsightWidget | IExportSlidesInsightWidget | IExportImageInsightWidget | ISetShowWidgetAsTable;
30
+ export type DashboardCommands = InitializeDashboard | SaveDashboardAs | RequestAsyncRender | ResolveAsyncRender | ChangeFilterContextSelection | ChangeDateFilterSelection | ChangeAttributeFilterSelection | ReplaceAttributeFilterItemSelection | IChangeRenderMode | IChangeDashboardDensity | IRequestOpenDensityDialog | ISaveDashboard | IRenameDashboard | IResetDashboard | IExportDashboardToPdf | IExportDashboardToExcel | IExportDashboardToPdfPresentation | IExportDashboardToPptPresentation | IDeleteDashboard | ITriggerEvent | IUpsertExecutionResult | IAddAttributeFilter | IAddTextAttributeFilter | IRemoveAttributeFilters | IMoveAttributeFilter | ISetAttributeFilterParents | ISetAttributeFilterDependentDateFilters | IAddLayoutSection | IMoveLayoutSection | IRemoveLayoutSection | ChangeLayoutSectionHeader | IResizeHeight | IResizeWidth | IAddSectionItems | IReplaceSectionItem | IMoveSectionItem | IMoveSectionItemToNewSection | IRemoveSectionItem | IRemoveSectionItemByWidgetRef | IUndoLayoutChanges | IChangeKpiWidgetHeader | IChangeKpiWidgetDescription | IChangeKpiWidgetConfiguration | IChangeKpiWidgetMeasure | IChangeKpiWidgetFilterSettings | IChangeKpiWidgetComparison | IRefreshKpiWidget | ISetDrillForKpiWidget | IRemoveDrillForKpiWidget | IChangeInsightWidgetHeader | IChangeInsightWidgetDescription | IChangeInsightWidgetIgnoreCrossFiltering | IChangeInsightWidgetFilterSettings | IChangeInsightWidgetVisProperties | ChangeInsightWidgetVisConfiguration | IChangeInsightWidgetInsight | IModifyDrillsForInsightWidget | IRemoveDrillsForInsightWidget | IRefreshInsightWidget | IExportInsightWidget | ICreateAlert | ISaveAlert | ICreateScheduledEmail | ISaveScheduledEmail | IChangeSharing | ISetAttributeFilterDisplayForm | ISetAttributeFilterTitle | ISetMeasureValueFilterTitle | ISetMeasureValueFilterDimensionality | ISetAttributeFilterSelectionMode | IChangeRichTextWidgetContent | IChangeRichTextWidgetFilterSettings | IAddVisualizationToVisualizationSwitcherWidgetContent | IUpdateVisualizationsFromVisualizationSwitcherWidgetContent | IDrill | IDrillDown | IDrillToAttributeUrl | IDrillToCustomUrl | IDrillToDashboard | IDrillToInsight | IDrillToLegacyDashboard | IChangeDrillableItems | IAddDrillTargets | ISetDashboardDateFilterConfigMode | ISetDashboardAttributeFilterConfigMode | ISetDashboardMeasureValueFilterConfigMode | ISetDashboardAttributeFilterSelectionType | ISetDashboardAttributeFilterConfigDisplayAsLabel | IRemoveDrillDownForInsightWidget | IRemoveDrillToUrlForInsightWidget | IAddDrillDownForInsightWidget | IModifyDrillDownForInsightWidget | ICrossFiltering | IKeyDriverAnalysis | IAttributeHierarchyModified | IAddDateFilter | IAddMeasureValueFilter | IRemoveMeasureValueFilters | IRemoveDateFilters | IMoveDateFilter | IChangeMeasureValueFilterCondition | IMoveMeasureValueFilter | ISetDashboardDateFilterWithDimensionConfigMode | ISetDateFilterConfigTitle | IInitializeAutomations | IRefreshAutomations | ISetAttributeFilterLimitingItems | ISaveFilterView | IDeleteFilterView | IApplyFilterView | ISetFilterViewAsDefault | IReloadFilterViews | IToggleLayoutSectionHeaders | IToggleLayoutDirection | IApplyFilterContextWorkingSelection | IResetFilterContextWorkingSelection | IChangeIgnoreExecutionTimestamp | ISwitchDashboardTab | ICreateDashboardTab | IRepositionDashboardTab | IDeleteDashboardTab | IStartRenamingDashboardTab | ICancelRenamingDashboardTab | IRenameDashboardTab | ISetScreenSize | ILoadAllWorkspaceUsers | IExportRawInsightWidget | IExportSlidesInsightWidget | IExportImageInsightWidget | ISetShowWidgetAsTable;
@@ -9,41 +9,6 @@ export interface ISwitchDashboardTabPayload {
9
9
  */
10
10
  readonly tabId: string;
11
11
  }
12
- /**
13
- * Payload of the {@link IConvertDashboardTabFromDefault} command.
14
- *
15
- * @alpha
16
- */
17
- export interface IConvertDashboardTabFromDefaultPayload {
18
- /**
19
- * Optional title for the new tab.
20
- */
21
- readonly title?: string;
22
- }
23
- /**
24
- * Command to convert a default dashboard tab into a regular tab.
25
- *
26
- * @remarks
27
- * This command will:
28
- * - Duplicate the default tab and create a new regular tab with the given title
29
- * - Remove the default tab
30
- *
31
- * @alpha
32
- */
33
- export interface IConvertDashboardTabFromDefault extends IDashboardCommand {
34
- readonly type: "GDC.DASH/CMD.TAB.CONVERT_FROM_DEFAULT";
35
- readonly payload: IConvertDashboardTabFromDefaultPayload;
36
- }
37
- /**
38
- * Creates the ConvertDashboardTabFromDefault command.
39
- *
40
- * @param title - Optional title for the new tab.
41
- * @param correlationId - Specify correlation id to use for this command.
42
- * @returns Convert dashboard tab from default command.
43
- *
44
- * @alpha
45
- */
46
- export declare function convertDashboardTabFromDefault(title?: string, correlationId?: string): IConvertDashboardTabFromDefault;
47
12
  /**
48
13
  * Command to switch to a different dashboard tab.
49
14
  *
@@ -1,20 +1,4 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
- /**
3
- * Creates the ConvertDashboardTabFromDefault command.
4
- *
5
- * @param title - Optional title for the new tab.
6
- * @param correlationId - Specify correlation id to use for this command.
7
- * @returns Convert dashboard tab from default command.
8
- *
9
- * @alpha
10
- */
11
- export function convertDashboardTabFromDefault(title, correlationId) {
12
- return {
13
- type: "GDC.DASH/CMD.TAB.CONVERT_FROM_DEFAULT",
14
- correlationId,
15
- payload: { title },
16
- };
17
- }
18
2
  /**
19
3
  * Creates the SwitchDashboardTab command.
20
4
  *
@@ -19,7 +19,7 @@ import { type DashboardContext } from "../types/commonTypes.js";
19
19
  *
20
20
  * @public
21
21
  */
22
- export type DashboardEventType = "GDC.DASH/EVT.COMMAND.FAILED" | "GDC.DASH/EVT.COMMAND.REJECTED" | "GDC.DASH/EVT.COMMAND.STARTED" | "GDC.DASH/EVT.QUERY.FAILED" | "GDC.DASH/EVT.QUERY.REJECTED" | "GDC.DASH/EVT.QUERY.STARTED" | "GDC.DASH/EVT.QUERY.COMPLETED" | "GDC.DASH/EVT.USER_INTERACTION.TRIGGERED" | "GDC.DASH/EVT.INITIALIZED" | "GDC.DASH/EVT.DEINITIALIZED" | "GDC.DASH/EVT.SAVED" | "GDC.DASH/EVT.COPY_SAVED" | "GDC.DASH/EVT.RENAMED" | "GDC.DASH/EVT.RESET" | "GDC.DASH/EVT.DELETED" | "GDC.DASH/EVT.RENDER_MODE.CHANGED" | "GDC.DASH/EVT.EXPORT.PDF.REQUESTED" | "GDC.DASH/EVT.EXPORT.PDF.RESOLVED" | "GDC.DASH/EVT.EXPORT.PDF_PRESENTATION.REQUESTED" | "GDC.DASH/EVT.EXPORT.PDF_PRESENTATION.RESOLVED" | "GDC.DASH/EVT.EXPORT.PPT_PRESENTATION.REQUESTED" | "GDC.DASH/EVT.EXPORT.PPT_PRESENTATION.RESOLVED" | "GDC.DASH/EVT.EXPORT.IMAGE.REQUESTED" | "GDC.DASH/EVT.EXPORT.IMAGE.RESOLVED" | "GDC.DASH/EVT.EXPORT.EXCEL.RESOLVED" | "GDC.DASH/EVT.EXPORT.EXCEL.REQUESTED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.VALIDATION.FAILED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.SELECTION_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.ADDED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.REMOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.MOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.ADDED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.REMOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.MOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.CONDITION_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.DIMENSIONALITY_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.TITLE_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.ADDED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.REMOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.MOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.SELECTION_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER_ITEM.SELECTION_REPLACED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.PARENT_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.DISPLAY_FORM_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.SELECTION_MODE_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.TITLE_CHANGED" | "GDC.DASH/EVT.ATTRIBUTE_FILTER_CONFIG.MODE_CHANGED" | "GDC.DASH/EVT.MEASURE_VALUE_FILTER_CONFIG.MODE_CHANGED" | "GDC.DASH/EVT.ATTRIBUTE_FILTER_CONFIG.LIMITING_ITEMS_CHANGED" | "GDC.DASH/EVT.ATTRIBUTE_FILTER_CONFIG.DISPLAY_AS_LABEL_CHANGED" | "GDC.DASH/EVT.DATE_FILTER_CONFIG.TITLE_CHANGED" | "GDC.DASH/EVT.DATE_FILTER_CONFIG.MODE_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.CHANGED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_ADDED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_MOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_REMOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_HEADER_CHANGED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_ITEM_WIDTH_RESIZED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_ITEMS_HEIGHT_RESIZED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEMS_ADDED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_REPLACED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_MOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_MOVED_TO_NEW_SECTION" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_REMOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.LAYOUT_CHANGED" | "GDC.DASH/EVT.FLUID_LAYOUT.SCREEN_SIZE_CHANGED" | "GDC.DASH/EVT.FLEXIBLE_LAYOUT.LAYOUT_SECTION_HEADERS_TOGGLED" | "GDC.DASH/EVT.FLEXIBLE_LAYOUT.LAYOUT_DIRECTION_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.HEADER_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.DESCRIPTION_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.CONFIGURATION_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.MEASURE_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.FILTER_SETTINGS_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.COMPARISON_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.DRILL_REMOVED" | "GDC.DASH/EVT.KPI_WIDGET.DRILL_SET" | "GDC.DASH/EVT.KPI_WIDGET.WIDGET_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.HEADER_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DESCRIPTION_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.FILTER_SETTINGS_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.PROPERTIES_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.CONFIGURATION_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.IGNORE_CROSS_FILTERING_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.INSIGHT_SWITCHED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILLS_MODIFIED" | "GDC.DASH/EVT.SHOW_WIDGET_AS_TABLE.SET" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILLS_REMOVED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILL_DOWN_REMOVED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILL_DOWN_ADDED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILL_DOWN_MODIFIED" | "GDC.DASH/EVT.INSIGHT_WIDGET.WIDGET_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.EXPORT_REQUESTED" | "GDC.DASH/EVT.INSIGHT_WIDGET.EXPORT_RESOLVED" | "GDC.DASH/EVT.INSIGHT_WIDGET.REFRESHED" | "GDC.DASH/EVT.RICH_TEXT_WIDGET.CONTENT_CHANGED" | "GDC.DASH/EVT.RICH_TEXT_WIDGET.FILTER_SETTINGS_CHANGED" | "GDC.DASH/EVT.VISUALIZATION_SWITCHER_WIDGET.VISUALIZATION_ADDED" | "GDC.DASH/EVT.VISUALIZATION_SWITCHER_WIDGET.VISUALIZATIONS_UPDATED" | "GDC.DASH/EVT.WIDGET.EXECUTION_STARTED" | "GDC.DASH/EVT.WIDGET.EXECUTION_FAILED" | "GDC.DASH/EVT.WIDGET.EXECUTION_SUCCEEDED" | "GDC.DASH/EVT.ALERT.CREATED" | "GDC.DASH/EVT.ALERT.SAVED" | "GDC.DASH/EVT.SCHEDULED_EMAIL.CREATED" | "GDC.DASH/EVT.SCHEDULED_EMAIL.SAVED" | "GDC.DASH/EVT.DRILL.REQUESTED" | "GDC.DASH/EVT.DRILL.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_DOWN.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_DOWN.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_INSIGHT.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_INSIGHT.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_DASHBOARD.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_DASHBOARD.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_ATTRIBUTE_URL.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_ATTRIBUTE_URL.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_CUSTOM_URL.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_CUSTOM_URL.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_LEGACY_DASHBOARD.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_LEGACY_DASHBOARD.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILLABLE_ITEMS.CHANGED" | "GDC.DASH/EVT.DRILL.CROSS_FILTERING.REQUESTED" | "GDC.DASH/EVT.DRILL.CROSS_FILTERING.RESOLVED" | "GDC.DASH/EVT.DRILL.KEY_DRIVER_ANALYSIS.REQUESTED" | "GDC.DASH/EVT.DRILL.KEY_DRIVER_ANALYSIS.RESOLVED" | "GDC.DASH/EVT.DRILL_TARGETS.ADDED" | "GDC.DASH/EVT.RENDER.REQUESTED" | "GDC.DASH/EVT.RENDER.ASYNC.REQUESTED" | "GDC.DASH/EVT.RENDER.ASYNC.RESOLVED" | "GDC.DASH/EVT.RENDER.RESOLVED" | "GDC.DASH/EVT.SHARING.CHANGED" | "GDC.DASH/EVT.CREATE_INSIGHT_REQUESTED" | "GDC.DASH/EVT.CREATE_ATTRIBUTE_HIERARCHY_REQUESTED" | "GDC.DASH/EVT.DELETE_ATTRIBUTE_HIERARCHY_REQUESTED" | "GDC.DASH/EVT.ATTRIBUTE_HIERARCHY_MODIFIED" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CREATE.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CREATE.FAILURE" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.DELETE.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.DELETE.FAILURE" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.APPLY.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.APPLY.FAILURE" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS.FAILURE" | "GDC.DASH/EVT.AUTOMATIONS.REFRESHED" | "GDC.DASH/EVT.IGNORE_EXECUTION_TIMESTAMP_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.SELECTION.RESET" | "GDC.DASH/EVT.FILTER_CONTEXT.WORKING_SELECTION.APPLIED" | "GDC.DASH/EVT.TAB.SWITCHED" | "GDC.DASH/EVT.TAB.REPOSITIONED" | "GDC.DASH/EVT.TAB.CONVERTED_FROM_DEFAULT" | "GDC.DASH/EVT.TAB.CREATED" | "GDC.DASH/EVT.TAB.DELETED" | "GDC.DASH/EVT.TAB.RENAME_MODE.STARTED" | "GDC.DASH/EVT.TAB.RENAME_MODE.CANCELED" | "GDC.DASH/EVT.TAB.RENAMED" | "GDC.DASH/EVT.PARAMETERS.SELECTION.RESET";
22
+ export type DashboardEventType = "GDC.DASH/EVT.COMMAND.FAILED" | "GDC.DASH/EVT.COMMAND.REJECTED" | "GDC.DASH/EVT.COMMAND.STARTED" | "GDC.DASH/EVT.QUERY.FAILED" | "GDC.DASH/EVT.QUERY.REJECTED" | "GDC.DASH/EVT.QUERY.STARTED" | "GDC.DASH/EVT.QUERY.COMPLETED" | "GDC.DASH/EVT.USER_INTERACTION.TRIGGERED" | "GDC.DASH/EVT.INITIALIZED" | "GDC.DASH/EVT.DEINITIALIZED" | "GDC.DASH/EVT.SAVED" | "GDC.DASH/EVT.COPY_SAVED" | "GDC.DASH/EVT.RENAMED" | "GDC.DASH/EVT.RESET" | "GDC.DASH/EVT.DELETED" | "GDC.DASH/EVT.RENDER_MODE.CHANGED" | "GDC.DASH/EVT.EXPORT.PDF.REQUESTED" | "GDC.DASH/EVT.EXPORT.PDF.RESOLVED" | "GDC.DASH/EVT.EXPORT.PDF_PRESENTATION.REQUESTED" | "GDC.DASH/EVT.EXPORT.PDF_PRESENTATION.RESOLVED" | "GDC.DASH/EVT.EXPORT.PPT_PRESENTATION.REQUESTED" | "GDC.DASH/EVT.EXPORT.PPT_PRESENTATION.RESOLVED" | "GDC.DASH/EVT.EXPORT.IMAGE.REQUESTED" | "GDC.DASH/EVT.EXPORT.IMAGE.RESOLVED" | "GDC.DASH/EVT.EXPORT.EXCEL.RESOLVED" | "GDC.DASH/EVT.EXPORT.EXCEL.REQUESTED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.VALIDATION.FAILED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.SELECTION_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.ADDED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.REMOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.DATE_FILTER.MOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.ADDED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.REMOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.MOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.CONDITION_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.DIMENSIONALITY_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.MEASURE_VALUE_FILTER.TITLE_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.ADDED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.REMOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.MOVED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.SELECTION_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER_ITEM.SELECTION_REPLACED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.PARENT_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.DISPLAY_FORM_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.SELECTION_MODE_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.ATTRIBUTE_FILTER.TITLE_CHANGED" | "GDC.DASH/EVT.ATTRIBUTE_FILTER_CONFIG.MODE_CHANGED" | "GDC.DASH/EVT.MEASURE_VALUE_FILTER_CONFIG.MODE_CHANGED" | "GDC.DASH/EVT.ATTRIBUTE_FILTER_CONFIG.LIMITING_ITEMS_CHANGED" | "GDC.DASH/EVT.ATTRIBUTE_FILTER_CONFIG.DISPLAY_AS_LABEL_CHANGED" | "GDC.DASH/EVT.DATE_FILTER_CONFIG.TITLE_CHANGED" | "GDC.DASH/EVT.DATE_FILTER_CONFIG.MODE_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.CHANGED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_ADDED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_MOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_REMOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_HEADER_CHANGED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_ITEM_WIDTH_RESIZED" | "GDC.DASH/EVT.FLUID_LAYOUT.SECTION_ITEMS_HEIGHT_RESIZED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEMS_ADDED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_REPLACED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_MOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_MOVED_TO_NEW_SECTION" | "GDC.DASH/EVT.FLUID_LAYOUT.ITEM_REMOVED" | "GDC.DASH/EVT.FLUID_LAYOUT.LAYOUT_CHANGED" | "GDC.DASH/EVT.FLUID_LAYOUT.SCREEN_SIZE_CHANGED" | "GDC.DASH/EVT.FLEXIBLE_LAYOUT.LAYOUT_SECTION_HEADERS_TOGGLED" | "GDC.DASH/EVT.FLEXIBLE_LAYOUT.LAYOUT_DIRECTION_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.HEADER_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.DESCRIPTION_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.CONFIGURATION_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.MEASURE_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.FILTER_SETTINGS_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.COMPARISON_CHANGED" | "GDC.DASH/EVT.KPI_WIDGET.DRILL_REMOVED" | "GDC.DASH/EVT.KPI_WIDGET.DRILL_SET" | "GDC.DASH/EVT.KPI_WIDGET.WIDGET_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.HEADER_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DESCRIPTION_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.FILTER_SETTINGS_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.PROPERTIES_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.CONFIGURATION_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.IGNORE_CROSS_FILTERING_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.INSIGHT_SWITCHED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILLS_MODIFIED" | "GDC.DASH/EVT.SHOW_WIDGET_AS_TABLE.SET" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILLS_REMOVED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILL_DOWN_REMOVED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILL_DOWN_ADDED" | "GDC.DASH/EVT.INSIGHT_WIDGET.DRILL_DOWN_MODIFIED" | "GDC.DASH/EVT.INSIGHT_WIDGET.WIDGET_CHANGED" | "GDC.DASH/EVT.INSIGHT_WIDGET.EXPORT_REQUESTED" | "GDC.DASH/EVT.INSIGHT_WIDGET.EXPORT_RESOLVED" | "GDC.DASH/EVT.INSIGHT_WIDGET.REFRESHED" | "GDC.DASH/EVT.RICH_TEXT_WIDGET.CONTENT_CHANGED" | "GDC.DASH/EVT.RICH_TEXT_WIDGET.FILTER_SETTINGS_CHANGED" | "GDC.DASH/EVT.VISUALIZATION_SWITCHER_WIDGET.VISUALIZATION_ADDED" | "GDC.DASH/EVT.VISUALIZATION_SWITCHER_WIDGET.VISUALIZATIONS_UPDATED" | "GDC.DASH/EVT.WIDGET.EXECUTION_STARTED" | "GDC.DASH/EVT.WIDGET.EXECUTION_FAILED" | "GDC.DASH/EVT.WIDGET.EXECUTION_SUCCEEDED" | "GDC.DASH/EVT.ALERT.CREATED" | "GDC.DASH/EVT.ALERT.SAVED" | "GDC.DASH/EVT.SCHEDULED_EMAIL.CREATED" | "GDC.DASH/EVT.SCHEDULED_EMAIL.SAVED" | "GDC.DASH/EVT.DRILL.REQUESTED" | "GDC.DASH/EVT.DRILL.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_DOWN.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_DOWN.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_INSIGHT.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_INSIGHT.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_DASHBOARD.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_DASHBOARD.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_ATTRIBUTE_URL.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_ATTRIBUTE_URL.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_CUSTOM_URL.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_CUSTOM_URL.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILL_TO_LEGACY_DASHBOARD.REQUESTED" | "GDC.DASH/EVT.DRILL.DRILL_TO_LEGACY_DASHBOARD.RESOLVED" | "GDC.DASH/EVT.DRILL.DRILLABLE_ITEMS.CHANGED" | "GDC.DASH/EVT.DRILL.CROSS_FILTERING.REQUESTED" | "GDC.DASH/EVT.DRILL.CROSS_FILTERING.RESOLVED" | "GDC.DASH/EVT.DRILL.KEY_DRIVER_ANALYSIS.REQUESTED" | "GDC.DASH/EVT.DRILL.KEY_DRIVER_ANALYSIS.RESOLVED" | "GDC.DASH/EVT.DRILL_TARGETS.ADDED" | "GDC.DASH/EVT.RENDER.REQUESTED" | "GDC.DASH/EVT.RENDER.ASYNC.REQUESTED" | "GDC.DASH/EVT.RENDER.ASYNC.RESOLVED" | "GDC.DASH/EVT.RENDER.RESOLVED" | "GDC.DASH/EVT.SHARING.CHANGED" | "GDC.DASH/EVT.CREATE_INSIGHT_REQUESTED" | "GDC.DASH/EVT.CREATE_ATTRIBUTE_HIERARCHY_REQUESTED" | "GDC.DASH/EVT.DELETE_ATTRIBUTE_HIERARCHY_REQUESTED" | "GDC.DASH/EVT.ATTRIBUTE_HIERARCHY_MODIFIED" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CREATE.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CREATE.FAILURE" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.DELETE.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.DELETE.FAILURE" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.APPLY.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.APPLY.FAILURE" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS.SUCCESS" | "GDC.DASH/EVT.FILTER_CONTEXT.FILTER_VIEW.CHANGE_DEFAULT_STATUS.FAILURE" | "GDC.DASH/EVT.AUTOMATIONS.REFRESHED" | "GDC.DASH/EVT.IGNORE_EXECUTION_TIMESTAMP_CHANGED" | "GDC.DASH/EVT.FILTER_CONTEXT.SELECTION.RESET" | "GDC.DASH/EVT.FILTER_CONTEXT.WORKING_SELECTION.APPLIED" | "GDC.DASH/EVT.TAB.SWITCHED" | "GDC.DASH/EVT.TAB.REPOSITIONED" | "GDC.DASH/EVT.TAB.CREATED" | "GDC.DASH/EVT.TAB.DELETED" | "GDC.DASH/EVT.TAB.RENAME_MODE.STARTED" | "GDC.DASH/EVT.TAB.RENAME_MODE.CANCELED" | "GDC.DASH/EVT.TAB.RENAMED" | "GDC.DASH/EVT.PARAMETERS.SELECTION.RESET";
23
23
  /**
24
24
  * Base type for all dashboard events.
25
25
  *