@gooddata/sdk-ui-dashboard 11.54.0-alpha.4 → 11.54.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +93513 -17188
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/automation/index.d.ts +6 -0
- package/esm/_staging/automation/index.d.ts.map +1 -1
- package/esm/_staging/automation/index.js +7 -0
- package/esm/index.d.ts +3 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/model/DashboardTester.d.ts +150 -0
- package/esm/model/DashboardTester.d.ts.map +1 -0
- package/esm/model/DashboardTester.js +208 -0
- package/esm/model/commandHandlers/dashboard/common/parameterHydration.d.ts +7 -0
- package/esm/model/commandHandlers/dashboard/common/parameterHydration.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/parameterHydration.js +17 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +27 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts +9 -0
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts.map +1 -0
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.js +27 -0
- package/esm/model/commandHandlers/filterContext/filterViewHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/filterViewHandler.js +7 -7
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.js +2 -11
- package/esm/model/commands/timezone.d.ts +10 -2
- package/esm/model/commands/timezone.d.ts.map +1 -1
- package/esm/model/commands/timezone.js +5 -2
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts +6 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.js +13 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts +7 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.js +12 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +61 -22
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts +8 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.js +8 -0
- package/esm/presentation/automations/alerting/types.d.ts +72 -4
- package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +60 -15
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.js +2 -3
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts +1 -5
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts +0 -4
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts +6 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.js +10 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts +6 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.js +8 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailExportSettings.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailExportSettings.js +10 -8
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.d.ts +2 -2
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.js +3 -4
- package/esm/presentation/automations/scheduledEmail/types.d.ts +86 -6
- package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
- package/esm/presentation/automations/shared/slots/AutomationDialogActionBar.d.ts +25 -0
- package/esm/presentation/automations/shared/slots/AutomationDialogActionBar.d.ts.map +1 -0
- package/esm/presentation/automations/shared/slots/AutomationDialogActionBar.js +22 -0
- package/esm/presentation/automations/shared/slots/types.d.ts +120 -27
- package/esm/presentation/automations/shared/slots/types.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/ExportCsvDialogContext.d.ts +1 -2
- package/esm/presentation/dashboardContexts/ExportCsvDialogContext.d.ts.map +1 -1
- package/esm/presentation/dialogs/ExportCsvDialog.d.ts +0 -1
- package/esm/presentation/dialogs/ExportCsvDialog.d.ts.map +1 -1
- package/esm/presentation/dialogs/ExportCsvDialog.js +2 -2
- package/esm/presentation/dialogs/ExportCsvDialogProvider.d.ts.map +1 -1
- package/esm/presentation/dialogs/ExportCsvDialogProvider.js +1 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +12 -15
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +0 -60
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +0 -60
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-419.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +10 -15
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +12 -17
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +12 -15
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +16 -19
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +16 -19
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +12 -15
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +14 -17
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +12 -15
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +14 -17
- package/esm/presentation/widget/common/useInsightExport.d.ts.map +1 -1
- package/esm/presentation/widget/common/useInsightExport.js +2 -4
- package/esm/sdk-ui-dashboard.d.ts +289 -35
- package/package.json +21 -21
- package/styles/css/main.css +369 -0
- package/styles/css/main.css.map +1 -1
- package/esm/_staging/dateFilterConfig/fixtures.d.ts +0 -10
- package/esm/_staging/dateFilterConfig/fixtures.d.ts.map +0 -1
- package/esm/_staging/dateFilterConfig/fixtures.js +0 -60
- package/esm/model/commandHandlers/filterContext/filterViewParameters.d.ts +0 -8
- package/esm/model/commandHandlers/filterContext/filterViewParameters.d.ts.map +0 -1
- package/esm/model/commandHandlers/filterContext/filterViewParameters.js +0 -9
- package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.d.ts +0 -16
- package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.d.ts.map +0 -1
- package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.js +0 -30
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/AlertDropdown.d.ts +0 -3
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/AlertDropdown.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/AlertDropdown.js +0 -46
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/PauseAlertRunner.d.ts +0 -11
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/PauseAlertRunner.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/components/PauseAlertRunner.js +0 -31
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.d.ts +0 -19
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useFiltersForDashboardScheduledExportInfo.js +0 -28
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.d.ts +0 -13
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.js +0 -56
- package/esm/presentation/dashboard/components/DashboardMainContent.d.ts +0 -3
- package/esm/presentation/dashboard/components/DashboardMainContent.d.ts.map +0 -1
- package/esm/presentation/dashboard/components/DashboardMainContent.js +0 -39
- package/esm/presentation/dragAndDrop/draggableWidget/DraggableKpiCreatePanelItem.d.ts +0 -16
- package/esm/presentation/dragAndDrop/draggableWidget/DraggableKpiCreatePanelItem.d.ts.map +0 -1
- package/esm/presentation/dragAndDrop/draggableWidget/DraggableKpiCreatePanelItem.js +0 -17
- package/esm/presentation/dragAndDrop/draggableWidget/KpiDraggingComponent.d.ts +0 -3
- package/esm/presentation/dragAndDrop/draggableWidget/KpiDraggingComponent.d.ts.map +0 -1
- package/esm/presentation/dragAndDrop/draggableWidget/KpiDraggingComponent.js +0 -9
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/DeleteButton.d.ts +0 -6
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/DeleteButton.d.ts.map +0 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/DeleteButton.js +0 -10
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/common/DropdownControls.d.ts +0 -8
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/common/DropdownControls.d.ts.map +0 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/common/DropdownControls.js +0 -14
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/ConfigurationButton.d.ts +0 -6
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/ConfigurationButton.d.ts.map +0 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/ConfigurationButton.js +0 -8
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormButton.d.ts +0 -8
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormButton.d.ts.map +0 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormButton.js +0 -10
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormDropdown.d.ts +0 -8
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormDropdown.d.ts.map +0 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormDropdown.js +0 -33
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormItem.d.ts +0 -8
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormItem.d.ts.map +0 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/displayFormDropdown/DisplayFormItem.js +0 -33
- package/esm/presentation/widget/common/configuration/AttributeFilterConfiguration.d.ts +0 -7
- package/esm/presentation/widget/common/configuration/AttributeFilterConfiguration.d.ts.map +0 -1
- package/esm/presentation/widget/common/configuration/AttributeFilterConfiguration.js +0 -39
- package/esm/presentation/widget/common/useWidgetBrokenAlertsQuery.d.ts +0 -9
- package/esm/presentation/widget/common/useWidgetBrokenAlertsQuery.d.ts.map +0 -1
- package/esm/presentation/widget/common/useWidgetBrokenAlertsQuery.js +0 -26
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelector.d.ts +0 -7
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelector.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelector.js +0 -37
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorBody.d.ts +0 -8
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorBody.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorBody.js +0 -15
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorItem.d.ts +0 -7
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorItem.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorItem.js +0 -8
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorList.d.ts +0 -7
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorList.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/DrillMeasureSelector/DrillMeasureSelectorList.js +0 -5
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.d.ts +0 -12
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/AlertTitle.js +0 -12
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts +0 -25
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.js +0 -5
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts +0 -29
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +0 -137
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlertConfiguration.d.ts +0 -11
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlertConfiguration.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlertConfiguration.js +0 -42
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts +0 -48
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.js +0 -171
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useWidgetAutomationFilters.d.ts +0 -4
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useWidgetAutomationFilters.d.ts.map +0 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useWidgetAutomationFilters.js +0 -46
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
// (C) 2021-2026 GoodData Corporation
|
|
2
|
+
import { ReferenceRecordings } from "@gooddata/reference-workspace";
|
|
3
|
+
import { defaultRecordedBackendCapabilities, objRefsToStringKey, recordedBackend, } from "@gooddata/sdk-backend-mockingbird";
|
|
4
|
+
import { idRef } from "@gooddata/sdk-model";
|
|
5
|
+
import { newRenderingWorker } from "./commandHandlers/render/renderingWorker.js";
|
|
6
|
+
import { initializeDashboard } from "./commands/dashboard.js";
|
|
7
|
+
import { isDashboardCommandStarted, isDashboardQueryCompleted, isDashboardQueryStarted, } from "./events/general.js";
|
|
8
|
+
import { HeadlessDashboard } from "./headlessDashboard/HeadlessDashboard.js";
|
|
9
|
+
export class DashboardTester extends HeadlessDashboard {
|
|
10
|
+
constructor(ctx, config) {
|
|
11
|
+
const headlessDahboardConfig = {
|
|
12
|
+
queryServices: config?.queryServices,
|
|
13
|
+
backgroundWorkers: [newRenderingWorker(config?.renderingWorkerConfig || {})],
|
|
14
|
+
customizationFns: config?.customizationFns,
|
|
15
|
+
};
|
|
16
|
+
super(ctx, headlessDahboardConfig);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of DashboardTester set up to run tests on top of a dashboard with the provided
|
|
20
|
+
* identifier. The dashboard will be loaded from recorded backend, from its reference workspace.
|
|
21
|
+
*
|
|
22
|
+
* You may additionally influence how the different query services behave (typically to stub/mock the service)
|
|
23
|
+
*/
|
|
24
|
+
static forRecording(identifier, testerConfig, backendConfig, customCapabilities) {
|
|
25
|
+
const ctx = {
|
|
26
|
+
backend: recordedBackend(ReferenceRecordings.Recordings, {
|
|
27
|
+
...backendConfig,
|
|
28
|
+
getCommonAttributesResponses: {
|
|
29
|
+
...commonAttributeResponses,
|
|
30
|
+
...(backendConfig?.getCommonAttributesResponses || {}),
|
|
31
|
+
},
|
|
32
|
+
}, {
|
|
33
|
+
...defaultRecordedBackendCapabilities,
|
|
34
|
+
...customCapabilities,
|
|
35
|
+
}),
|
|
36
|
+
workspace: "reference-workspace",
|
|
37
|
+
dashboardRef: idRef(identifier),
|
|
38
|
+
};
|
|
39
|
+
return new DashboardTester(ctx, testerConfig);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates an instance of DashboardTester set up to run tests on top of an empty, freshly initialized dashboard.
|
|
43
|
+
*
|
|
44
|
+
* You may additionally influence how the different query services behave (typically to stub/mock the service)
|
|
45
|
+
*/
|
|
46
|
+
static forNewDashboard(testerConfig, backendConfig) {
|
|
47
|
+
const ctx = {
|
|
48
|
+
backend: recordedBackend(ReferenceRecordings.Recordings, {
|
|
49
|
+
...backendConfig,
|
|
50
|
+
getCommonAttributesResponses: {
|
|
51
|
+
...commonAttributeResponses,
|
|
52
|
+
...(backendConfig?.getCommonAttributesResponses || {}),
|
|
53
|
+
},
|
|
54
|
+
}),
|
|
55
|
+
workspace: "reference-workspace",
|
|
56
|
+
};
|
|
57
|
+
return new DashboardTester(ctx, testerConfig);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Wait the specified time.
|
|
61
|
+
*
|
|
62
|
+
* @param timeout - timeout after which the wait will be resolved
|
|
63
|
+
* @returns promise
|
|
64
|
+
*/
|
|
65
|
+
wait(timeout) {
|
|
66
|
+
return new Promise((resolve) => {
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
resolve();
|
|
69
|
+
}, timeout);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns all actions that were dispatched since the tester was created or since it was last reset.
|
|
74
|
+
*/
|
|
75
|
+
dispatchedActions() {
|
|
76
|
+
return this.capturedActions.slice();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Wait for all of the listed actions to occur. The wait is bounded by a timeout that is 1s by default.
|
|
80
|
+
*
|
|
81
|
+
* This is useful when testing commands that emit multiple events and you need to verify that all of the
|
|
82
|
+
* events happened. This function does not care about the order in which the events occurred.
|
|
83
|
+
*
|
|
84
|
+
* @param actionTypes - action types to wait for
|
|
85
|
+
* @param timeout - timeout after which the wait fails
|
|
86
|
+
*/
|
|
87
|
+
waitForAll(actionTypes, timeout = 1000) {
|
|
88
|
+
return Promise.race([
|
|
89
|
+
Promise.all(actionTypes.map((actionType) => this.getOrCreateMonitoredAction(actionType).promise)),
|
|
90
|
+
new Promise((_, reject) => {
|
|
91
|
+
setTimeout(() => {
|
|
92
|
+
reject(new Error(`Wait for all actions '${actionTypes.join(", ")}' timed out after ${timeout}ms`));
|
|
93
|
+
}, timeout);
|
|
94
|
+
}),
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns all events that were emitted during execution. Events are a sub-type of actions - they are
|
|
99
|
+
* actions that are suitable for external consumption and describe what has happened in the dashboard.
|
|
100
|
+
*
|
|
101
|
+
* The events are accumulated during test run. You may reset them using `resetMonitors`
|
|
102
|
+
*/
|
|
103
|
+
emittedEvents() {
|
|
104
|
+
return this.capturedEvents.slice();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resets internal state of the tester's monitors. The captured actions will be cleared up as part
|
|
108
|
+
* of this.
|
|
109
|
+
*/
|
|
110
|
+
resetMonitors() {
|
|
111
|
+
this.capturedActions = [];
|
|
112
|
+
this.capturedEvents = [];
|
|
113
|
+
this.monitoredActions = {};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Returns dashboard state.
|
|
117
|
+
*/
|
|
118
|
+
state() {
|
|
119
|
+
return super.state();
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns digests of all events that were emitted during execution. Digest contains just the event
|
|
123
|
+
* type and the correlation id of the event. The payload is discarded.
|
|
124
|
+
*
|
|
125
|
+
* This is useful for snapshotting event sequence.
|
|
126
|
+
*/
|
|
127
|
+
emittedEventsDigest() {
|
|
128
|
+
return this.emittedEvents().map((evt) => {
|
|
129
|
+
if (isDashboardQueryStarted(evt) || isDashboardQueryCompleted(evt)) {
|
|
130
|
+
return {
|
|
131
|
+
type: evt.type,
|
|
132
|
+
correlationId: evt.correlationId,
|
|
133
|
+
queryType: evt.payload.query.type,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (isDashboardCommandStarted(evt)) {
|
|
137
|
+
return {
|
|
138
|
+
type: evt.type,
|
|
139
|
+
correlationId: evt.correlationId,
|
|
140
|
+
commandType: evt.payload.command.type,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
type: evt.type,
|
|
145
|
+
correlationId: evt.correlationId,
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* This factory will return a function that can be integrated into vitest's `beforeAll` or `beforeEach` statements. That returned
|
|
152
|
+
* function will drive initialization of the dashboard tester and will tell vitest it's `done` or it will `fail`.
|
|
153
|
+
*
|
|
154
|
+
* When successfully loaded, the returned function will call the `onLoaded` callback
|
|
155
|
+
*
|
|
156
|
+
* An example usage:
|
|
157
|
+
*
|
|
158
|
+
* ```
|
|
159
|
+
* let Tester: DashboardTester;
|
|
160
|
+
*
|
|
161
|
+
* beforeEach(async ()=> {
|
|
162
|
+
* await preloadedTesterFactory2((tester) => {
|
|
163
|
+
* Tester = tester;
|
|
164
|
+
* }, SimpleDashboardIdentifier);
|
|
165
|
+
* });
|
|
166
|
+
*
|
|
167
|
+
* it("should do xyz", () => {
|
|
168
|
+
*
|
|
169
|
+
* })
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* Obvious warning: beforeAll creates one instance for all tests and is therefore not safe when some tests do modifications of
|
|
173
|
+
* the dashboard. Use beforeEach in that case.
|
|
174
|
+
*
|
|
175
|
+
* Note: before sending the instance of dashboard tester, the function will ensure all the event monitors are reset so
|
|
176
|
+
* that the captured events related to load do not interfere with the test itself.
|
|
177
|
+
*
|
|
178
|
+
* @param onLoaded - function to call when the dashboard is successfully loaded
|
|
179
|
+
* @param identifier - identifier of the dashboard to load
|
|
180
|
+
* @param options - options influencing how the tester is created
|
|
181
|
+
*/
|
|
182
|
+
export async function preloadedTesterFactory(onLoaded, identifier, options = {}) {
|
|
183
|
+
const { initCommand = initializeDashboard(), queryServices, backendConfig, customCapabilities, customizationFns, } = options;
|
|
184
|
+
const tester = identifier
|
|
185
|
+
? DashboardTester.forRecording(identifier, { queryServices, customizationFns }, {
|
|
186
|
+
...backendConfig,
|
|
187
|
+
}, {
|
|
188
|
+
...customCapabilities,
|
|
189
|
+
})
|
|
190
|
+
: DashboardTester.forNewDashboard({ queryServices, customizationFns }, {
|
|
191
|
+
...backendConfig,
|
|
192
|
+
});
|
|
193
|
+
tester.dispatch(initCommand);
|
|
194
|
+
await tester
|
|
195
|
+
.waitFor("GDC.DASH/EVT.INITIALIZED")
|
|
196
|
+
.then(() => Promise.resolve(onLoaded(tester)).then(() => tester.resetMonitors()))
|
|
197
|
+
.catch((err) => {
|
|
198
|
+
throw `DashboardTester failed to load dashboard: ${err.message}`;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
const commonAttributeResponses = {
|
|
202
|
+
[objRefsToStringKey([idRef("obj_1054"), idRef("obj_1086")])]: [idRef("obj_1057")],
|
|
203
|
+
[objRefsToStringKey([idRef("obj_1054"), idRef("obj_1088")])]: [idRef("obj_1057")],
|
|
204
|
+
[objRefsToStringKey([idRef("obj_1054"), idRef("obj_1070")])]: [idRef("obj_1057")],
|
|
205
|
+
[objRefsToStringKey([idRef("obj_1070"), idRef("obj_1088")])]: [idRef("obj_1057")],
|
|
206
|
+
[objRefsToStringKey([idRef("obj_1086"), idRef("obj_1088")])]: [idRef("obj_1057")],
|
|
207
|
+
[objRefsToStringKey([idRef("obj_1070"), idRef("obj_1086")])]: [idRef("obj_1057")],
|
|
208
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type IDashboardParameter, type IDashboardTab, type IParameterMetadataObject } from "@gooddata/sdk-model";
|
|
2
|
+
import { type ISetParameterRuntimeValuePayload } from "../../../store/tabs/parameters/parametersReducers.js";
|
|
2
3
|
import { type IDashboardParameterEntry } from "../../../store/tabs/parameters/parametersState.js";
|
|
3
4
|
/**
|
|
4
5
|
* Builds the parameter slice entries from the dashboard's persisted parameters and the
|
|
@@ -25,4 +26,10 @@ export declare function distributeParametersToTabs(tabs: IDashboardTab[] | undef
|
|
|
25
26
|
tabId: string;
|
|
26
27
|
overrides: IDashboardParameter[];
|
|
27
28
|
}): Record<string, IDashboardParameterEntry[]>;
|
|
29
|
+
/**
|
|
30
|
+
* A filter view holds only the parameters that existed when the user saved it. A parameter that the
|
|
31
|
+
* view omits gets the same value that {@link hydrateParameterEntries} gave it at load time. No value
|
|
32
|
+
* from an earlier view stays applied.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveParameterValuesForFilterView(entries: ReadonlyArray<IDashboardParameterEntry>, filterViewParameters: ReadonlyArray<IDashboardParameter>, workspaceParameters: IParameterMetadataObject[]): ISetParameterRuntimeValuePayload[];
|
|
28
35
|
//# sourceMappingURL=parameterHydration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameterHydration.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/parameterHydration.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"parameterHydration.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/parameterHydration.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAIhC,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAC7G,OAAO,EACH,KAAK,wBAAwB,EAEhC,MAAM,mDAAmD,CAAC;AAG3D;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,SAAS,EACtD,mBAAmB,EAAE,wBAAwB,EAAE,GAChD,wBAAwB,EAAE,CAY5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,EACjC,cAAc,EAAE,mBAAmB,EAAE,GAAG,SAAS,EACjD,mBAAmB,EAAE,wBAAwB,EAAE,EAC/C,iBAAiB,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,mBAAmB,EAAE,CAAA;CAAE,GACxE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAc5C;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAC/C,OAAO,EAAE,aAAa,CAAC,wBAAwB,CAAC,EAChD,oBAAoB,EAAE,aAAa,CAAC,mBAAmB,CAAC,EACxD,mBAAmB,EAAE,wBAAwB,EAAE,GAChD,gCAAgC,EAAE,CAapC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
|
-
import { objRefToString, } from "@gooddata/sdk-model";
|
|
2
|
+
import { areObjRefsEqual, objRefToString, } from "@gooddata/sdk-model";
|
|
3
3
|
import { buildWorkspaceParametersByRef, computeHydratedRuntimeOverride, } from "../../../store/tabs/parameters/parametersHelpers.js";
|
|
4
4
|
import { pickTabParametersSource, } from "../../../store/tabs/parameters/parametersState.js";
|
|
5
5
|
import { DEFAULT_TAB_ID } from "../../../store/tabs/tabsState.js";
|
|
@@ -48,6 +48,22 @@ export function distributeParametersToTabs(tabs, rootParameters, workspaceParame
|
|
|
48
48
|
}
|
|
49
49
|
return result;
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* A filter view holds only the parameters that existed when the user saved it. A parameter that the
|
|
53
|
+
* view omits gets the same value that {@link hydrateParameterEntries} gave it at load time. No value
|
|
54
|
+
* from an earlier view stays applied.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveParameterValuesForFilterView(entries, filterViewParameters, workspaceParameters) {
|
|
57
|
+
const workspaceByRef = buildWorkspaceParametersByRef(workspaceParameters);
|
|
58
|
+
return entries.map((entry) => {
|
|
59
|
+
const { ref } = entry.parameter;
|
|
60
|
+
const fromView = filterViewParameters.find((item) => areObjRefsEqual(item.ref, ref));
|
|
61
|
+
return {
|
|
62
|
+
ref,
|
|
63
|
+
value: computeHydratedRuntimeOverride(fromView ?? entry.parameter, workspaceByRef.get(objRefToString(ref))),
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
51
67
|
function applyRuntimeOverrides(entries, overrides) {
|
|
52
68
|
const overrideByRef = new Map(overrides.map((o) => [objRefToString(o.ref), o.value]));
|
|
53
69
|
return entries.map((entry) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAiC,KAAK,iBAAiB,EAAc,MAAM,2BAA2B,CAAC;AAC9G,OAAO,EACH,KAAK,UAAU,EAIf,KAAK,sBAAsB,EAW9B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAiC,KAAK,iBAAiB,EAAc,MAAM,2BAA2B,CAAC;AAC9G,OAAO,EACH,KAAK,UAAU,EAIf,KAAK,sBAAsB,EAW9B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAsB1E,OAAO,EACH,KAAK,gBAAgB,EAGxB,MAAM,+BAA+B,CAAC;AAwcvC,wBAAiB,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,mBAAmB;;;yDAgB9E;AAkCD,wBAAiB,2BAA2B,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU;;;0EAKxF;AAED,wBAAiB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,sNAW3D;AAoCD,wBAAiB,0BAA0B,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,mBAAmB,GAAG,YAAY,CAoCzG"}
|
|
@@ -5,6 +5,7 @@ import { all, call, put, spawn } from "redux-saga/effects";
|
|
|
5
5
|
import { walkLayout } from "@gooddata/sdk-backend-spi";
|
|
6
6
|
import { areObjRefsEqual, isDrillToInsight, isInsightWidget, isVisualizationSwitcherWidget, serializeObjRef, } from "@gooddata/sdk-model";
|
|
7
7
|
import { createDisplayFormMap, createDisplayFormMapFromCatalog, } from "../../../../_staging/catalog/displayFormMap.js";
|
|
8
|
+
import { changeDashboardTimezoneOverride } from "../../../commands/timezone.js";
|
|
8
9
|
import { dashboardInitialized } from "../../../events/dashboard.js";
|
|
9
10
|
import { getPrivateContext } from "../../../store/_infra/contexts.js";
|
|
10
11
|
import { accessibleDashboardsActions } from "../../../store/accessibleDashboards/index.js";
|
|
@@ -25,8 +26,10 @@ import { tabsActions } from "../../../store/tabs/index.js";
|
|
|
25
26
|
import { DEFAULT_TAB_ID } from "../../../store/tabs/tabsState.js";
|
|
26
27
|
import { uiActions } from "../../../store/ui/index.js";
|
|
27
28
|
import { userActions } from "../../../store/user/index.js";
|
|
29
|
+
import { changeDashboardTimezoneOverrideHandler } from "../../timezone/changeDashboardTimezoneOverrideHandler.js";
|
|
28
30
|
import { applyDefaultFilterView } from "../common/filterViews.js";
|
|
29
31
|
import { actionsToInitializeExistingDashboard, actionsToInitializeNewDashboard, } from "../common/stateInitializers.js";
|
|
32
|
+
import { loadAutomationTimezone } from "./loadAutomationTimezone.js";
|
|
30
33
|
import { loadCatalog } from "./loadCatalog.js";
|
|
31
34
|
import { loadDashboardList } from "./loadDashboardList.js";
|
|
32
35
|
import { loadDashboardParameters } from "./loadDashboardParameters.js";
|
|
@@ -175,8 +178,9 @@ function* loadExistingDashboard(ctx, cmd, dashboardRef) {
|
|
|
175
178
|
call(loadDateHierarchyTemplates, ctx),
|
|
176
179
|
call(loadFilterViews, ctx),
|
|
177
180
|
call(loadExportTimezone, ctx),
|
|
181
|
+
call(loadAutomationTimezone, ctx),
|
|
178
182
|
];
|
|
179
|
-
const [dashboardWithReferences, { resolvedConfig: config, additionalData: { workspaceAutomationsCount, notificationChannelsCount }, }, permissions, entitlements, user, dashboardPermissions, dateHierarchyTemplates, filterViews, exportTimezone,] = yield all(calls);
|
|
183
|
+
const [dashboardWithReferences, { resolvedConfig: config, additionalData: { workspaceAutomationsCount, notificationChannelsCount }, }, permissions, entitlements, user, dashboardPermissions, dateHierarchyTemplates, filterViews, exportTimezone, automationTimezone,] = yield all(calls);
|
|
180
184
|
const { dashboard: loadedDashboard, references: { insights }, } = dashboardWithReferences;
|
|
181
185
|
const dashboardWithFilterView = applyDefaultFilterView(loadedDashboard, filterViews, config.exportId);
|
|
182
186
|
// Resolve active tab: URL's initialTabId takes precedence, otherwise default to first tab
|
|
@@ -221,6 +225,8 @@ function* loadExistingDashboard(ctx, cmd, dashboardRef) {
|
|
|
221
225
|
return {
|
|
222
226
|
batch,
|
|
223
227
|
event,
|
|
228
|
+
// an export render takes its timezone from the export itself
|
|
229
|
+
automationTimezone: exportTimezone ? undefined : automationTimezone,
|
|
224
230
|
};
|
|
225
231
|
}
|
|
226
232
|
function* initializeNewDashboard(ctx, cmd) {
|
|
@@ -339,6 +345,20 @@ function* advancedLoader(ctx, cmd, dashboard) {
|
|
|
339
345
|
call(requestDashboardsList, ctx),
|
|
340
346
|
]);
|
|
341
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* Applies a deep-linked automation's timezone as the dashboard's timezone override. A rejection
|
|
350
|
+
* (feature disabled, invalid stored timezone) leaves the dashboard on its own timezone rather
|
|
351
|
+
* than failing the initialization.
|
|
352
|
+
*/
|
|
353
|
+
function* restoreAutomationTimezone(ctx, timezoneId, correlationId) {
|
|
354
|
+
try {
|
|
355
|
+
const event = yield call(changeDashboardTimezoneOverrideHandler, ctx, changeDashboardTimezoneOverride(timezoneId, correlationId, true));
|
|
356
|
+
yield put(event);
|
|
357
|
+
}
|
|
358
|
+
catch (reason) {
|
|
359
|
+
console.error(`Restoring the timezone "${timezoneId}" of the deep-linked automation failed`, reason);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
342
362
|
export function* initializeDashboardHandler(ctx, cmd) {
|
|
343
363
|
const { dashboardRef } = ctx;
|
|
344
364
|
try {
|
|
@@ -351,6 +371,12 @@ export function* initializeDashboardHandler(ctx, cmd) {
|
|
|
351
371
|
result = (yield call(initializeNewDashboard, ctx, cmd));
|
|
352
372
|
}
|
|
353
373
|
yield put(result.batch);
|
|
374
|
+
// before the loading success that lets the widgets render and execute, so the notification
|
|
375
|
+
// recipient never sees the dashboard's own timezone first. The view-mode override check is
|
|
376
|
+
// bypassed: the automation was evaluated in this timezone, whatever the dashboard says now.
|
|
377
|
+
if (result.automationTimezone) {
|
|
378
|
+
yield call(restoreAutomationTimezone, ctx, result.automationTimezone, cmd.correlationId);
|
|
379
|
+
}
|
|
354
380
|
yield put(loadingActions.setLoadingSuccess());
|
|
355
381
|
yield put(result.event);
|
|
356
382
|
if (dashboardRef) {
|
package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DashboardContext } from "../../../types/commonTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Loads the timezone baked into the automation the dashboard is deep-linked to (the focus
|
|
4
|
+
* object's `automationId`, as used by the links in alert and scheduled-export notifications).
|
|
5
|
+
* Restoring it is what makes the dashboard match the numbers the recipient was mailed.
|
|
6
|
+
* Undefined means the dashboard's own (or workspace/organization) timezone applies.
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadAutomationTimezone(ctx: DashboardContext): Promise<string | undefined>;
|
|
9
|
+
//# sourceMappingURL=loadAutomationTimezone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadAutomationTimezone.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB/F"}
|
package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { getAutomationTimezone } from "../../../../_staging/automation/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Loads the timezone baked into the automation the dashboard is deep-linked to (the focus
|
|
5
|
+
* object's `automationId`, as used by the links in alert and scheduled-export notifications).
|
|
6
|
+
* Restoring it is what makes the dashboard match the numbers the recipient was mailed.
|
|
7
|
+
* Undefined means the dashboard's own (or workspace/organization) timezone applies.
|
|
8
|
+
*/
|
|
9
|
+
export async function loadAutomationTimezone(ctx) {
|
|
10
|
+
const { automationId } = ctx.config?.focusObject ?? {};
|
|
11
|
+
if (!automationId) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
// the service getter itself throws on backends without automation support
|
|
16
|
+
const automation = await ctx.backend
|
|
17
|
+
.workspace(ctx.workspace)
|
|
18
|
+
.automations()
|
|
19
|
+
.getAutomation(automationId);
|
|
20
|
+
return getAutomationTimezone(automation);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
// a missing or inaccessible automation must not fail the dashboard load
|
|
24
|
+
console.error("Loading of the automation timezone failed", error);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterViewHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/filterViewHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE/B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"filterViewHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/filterViewHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE/B,MAAM,2BAA2B,CAAC;AA2BnC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAcnE,wBAAiB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAoEtG;AAMD,wBAAiB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,CAsB1G;AAOD,wBAAiB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CA+CxG;AAMD,wBAAiB,6BAA6B,CAC1C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,uBAAuB,GAC7B,YAAY,CAAC,IAAI,CAAC,CAuBpB;AAED,wBAAiB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAcnF"}
|
|
@@ -12,11 +12,11 @@ import { filterViewsActions } from "../../store/filterViews/index.js";
|
|
|
12
12
|
import { selectAttributeFilterConfigsOverrides } from "../../store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
13
13
|
import { selectFilterContextDefinition, selectWorkingFilterContextDefinition, } from "../../store/tabs/filterContext/filterContextSelectors.js";
|
|
14
14
|
import { tabsActions } from "../../store/tabs/index.js";
|
|
15
|
-
import { selectFilterViewParameters } from "../../store/tabs/parameters/parametersSelectors.js";
|
|
15
|
+
import { selectDashboardParameterEntries, selectFilterViewParameters, } from "../../store/tabs/parameters/parametersSelectors.js";
|
|
16
16
|
import { selectActiveTabLocalIdentifier } from "../../store/tabs/tabsSelectors.js";
|
|
17
|
+
import { resolveParameterValuesForFilterView } from "../dashboard/common/parameterHydration.js";
|
|
17
18
|
import { loadFilterViews } from "../dashboard/initializeDashboardHandler/loadFilterViews.js";
|
|
18
19
|
import { resetCrossFiltering } from "./common.js";
|
|
19
|
-
import { resolveFilterViewParameterValues } from "./filterViewParameters.js";
|
|
20
20
|
function createFilterView(ctx, filterView) {
|
|
21
21
|
return ctx.backend.workspace(ctx.workspace).dashboards().createFilterView(filterView);
|
|
22
22
|
}
|
|
@@ -108,11 +108,11 @@ export function* applyFilterViewHandler(ctx, cmd) {
|
|
|
108
108
|
// a display form
|
|
109
109
|
matchByLocalIdentifier: true,
|
|
110
110
|
}));
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
111
|
+
const parameterEntries = yield select(selectDashboardParameterEntries);
|
|
112
|
+
const workspaceParameters = yield select(selectCatalogParameters);
|
|
113
|
+
yield put(tabsActions.setParameterRuntimeValues({
|
|
114
|
+
values: resolveParameterValuesForFilterView(parameterEntries, filterView.parameters ?? [], workspaceParameters),
|
|
115
|
+
}));
|
|
116
116
|
yield put(filterViewApplicationSucceeded(ctx, filterView, cmd.correlationId));
|
|
117
117
|
}
|
|
118
118
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeDashboardTimezoneOverrideHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,EACH,KAAK,iCAAiC,EAEzC,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"changeDashboardTimezoneOverrideHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,EACH,KAAK,iCAAiC,EAEzC,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,wBAAiB,sCAAsC,CACnD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,gCAAgC,GACtC,YAAY,CAAC,iCAAiC,CAAC,CAuCjD"}
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
2
|
import { put, select } from "redux-saga/effects";
|
|
3
|
-
import { resolveTimezoneId } from "@gooddata/sdk-model";
|
|
3
|
+
import { isValidIanaTimezoneId, resolveTimezoneId } from "@gooddata/sdk-model";
|
|
4
4
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
5
5
|
import { dashboardTimezoneOverrideChanged, } from "../../events/timezone.js";
|
|
6
6
|
import { selectEnableTimezoneChange } from "../../store/config/configSelectors.js";
|
|
7
7
|
import { selectDashboardTimezoneConfig, selectEffectiveDashboardTimezone, } from "../../store/meta/metaSelectors.js";
|
|
8
8
|
import { uiActions } from "../../store/ui/index.js";
|
|
9
|
-
function isValidIanaTimezoneId(timezoneId) {
|
|
10
|
-
try {
|
|
11
|
-
new Intl.DateTimeFormat(undefined, { timeZone: timezoneId });
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
catch {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
9
|
export function* changeDashboardTimezoneOverrideHandler(ctx, cmd) {
|
|
19
10
|
// the gating protects paths that arrive from outside the UI (e.g. the embedding
|
|
20
11
|
// setTimezone postMessage), which do not go through the menu-item visibility checks
|
|
@@ -23,7 +14,7 @@ export function* changeDashboardTimezoneOverrideHandler(ctx, cmd) {
|
|
|
23
14
|
throw invalidArgumentsProvided(ctx, cmd, "Cannot change the timezone override: the dashboard timezone feature is disabled.");
|
|
24
15
|
}
|
|
25
16
|
const timezoneConfig = yield select(selectDashboardTimezoneConfig);
|
|
26
|
-
if (timezoneConfig?.allowUserOverrideInViewMode !== true) {
|
|
17
|
+
if (!cmd.payload.bypassUserOverrideCheck && timezoneConfig?.allowUserOverrideInViewMode !== true) {
|
|
27
18
|
throw invalidArgumentsProvided(ctx, cmd, "Cannot change the timezone override: the dashboard's timezone configuration does not allow user overrides in view mode.");
|
|
28
19
|
}
|
|
29
20
|
// the model layer is the single resolution point of the browser-detected sentinel for the
|
|
@@ -11,6 +11,12 @@ export interface IChangeDashboardTimezoneOverridePayload {
|
|
|
11
11
|
* the dashboard/workspace configuration applies again.
|
|
12
12
|
*/
|
|
13
13
|
readonly timezoneId: string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Skips the check that the dashboard's timezone configuration allows user overrides in view
|
|
16
|
+
* mode, for restoring a timezone the platform already committed to (an export render, an
|
|
17
|
+
* automation deep link). The dashboard timezone feature flag is still honored.
|
|
18
|
+
*/
|
|
19
|
+
readonly bypassUserOverrideCheck?: boolean;
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
16
22
|
* @alpha
|
|
@@ -29,14 +35,16 @@ export interface IChangeDashboardTimezoneOverride extends IDashboardCommand {
|
|
|
29
35
|
*
|
|
30
36
|
* The command is rejected when the ad-hoc override is not allowed: the dashboard timezone
|
|
31
37
|
* feature is disabled or the dashboard's timezone configuration does not allow user overrides
|
|
32
|
-
* in view mode
|
|
38
|
+
* in view mode — the latter bypassable via `bypassUserOverrideCheck`.
|
|
33
39
|
*
|
|
34
40
|
* @param timezoneId - concrete IANA timezone id, the BROWSER_DETECTED sentinel (resolved to the
|
|
35
41
|
* viewer's browser timezone by the handler), or undefined to clear the override
|
|
36
42
|
* @param correlationId - specify correlation id to use for this command. this will be included in all
|
|
37
43
|
* events that will be emitted during the command processing
|
|
44
|
+
* @param bypassUserOverrideCheck - see
|
|
45
|
+
* {@link IChangeDashboardTimezoneOverridePayload.bypassUserOverrideCheck}
|
|
38
46
|
*
|
|
39
47
|
* @alpha
|
|
40
48
|
*/
|
|
41
|
-
export declare function changeDashboardTimezoneOverride(timezoneId: string | undefined, correlationId?: string): IChangeDashboardTimezoneOverride;
|
|
49
|
+
export declare function changeDashboardTimezoneOverride(timezoneId: string | undefined, correlationId?: string, bypassUserOverrideCheck?: boolean): IChangeDashboardTimezoneOverride;
|
|
42
50
|
//# sourceMappingURL=timezone.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../../src/model/commands/timezone.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,uCAAuC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../../src/model/commands/timezone.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,uCAAuC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,iBAAiB;IACvE,QAAQ,CAAC,IAAI,EAAE,uCAAuC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,uCAAuC,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAC3C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,CAAC,EAAE,MAAM,EACtB,uBAAuB,CAAC,EAAE,OAAO,GAClC,gCAAgC,CASlC"}
|
|
@@ -9,21 +9,24 @@
|
|
|
9
9
|
*
|
|
10
10
|
* The command is rejected when the ad-hoc override is not allowed: the dashboard timezone
|
|
11
11
|
* feature is disabled or the dashboard's timezone configuration does not allow user overrides
|
|
12
|
-
* in view mode
|
|
12
|
+
* in view mode — the latter bypassable via `bypassUserOverrideCheck`.
|
|
13
13
|
*
|
|
14
14
|
* @param timezoneId - concrete IANA timezone id, the BROWSER_DETECTED sentinel (resolved to the
|
|
15
15
|
* viewer's browser timezone by the handler), or undefined to clear the override
|
|
16
16
|
* @param correlationId - specify correlation id to use for this command. this will be included in all
|
|
17
17
|
* events that will be emitted during the command processing
|
|
18
|
+
* @param bypassUserOverrideCheck - see
|
|
19
|
+
* {@link IChangeDashboardTimezoneOverridePayload.bypassUserOverrideCheck}
|
|
18
20
|
*
|
|
19
21
|
* @alpha
|
|
20
22
|
*/
|
|
21
|
-
export function changeDashboardTimezoneOverride(timezoneId, correlationId) {
|
|
23
|
+
export function changeDashboardTimezoneOverride(timezoneId, correlationId, bypassUserOverrideCheck) {
|
|
22
24
|
return {
|
|
23
25
|
type: "GDC.DASH/CMD.CHANGE_TIMEZONE_OVERRIDE",
|
|
24
26
|
correlationId,
|
|
25
27
|
payload: {
|
|
26
28
|
timezoneId,
|
|
29
|
+
...(bypassUserOverrideCheck ? { bypassUserOverrideCheck } : {}),
|
|
27
30
|
},
|
|
28
31
|
};
|
|
29
32
|
}
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type IAutomationDialogDestinationProps } from "../../shared/slots/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the alerting dialog's destination region (the "Action" row).
|
|
4
|
+
*/
|
|
5
|
+
export declare function AlertingDialogDestination({ notificationChannels, selectedNotificationChannelId, onChange }: IAutomationDialogDestinationProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=AlertingDialogDestination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertingDialogDestination.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAQrF;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACtC,oBAAoB,EACpB,6BAA6B,EAC7B,QAAQ,EACX,EAAE,iCAAiC,2CAanC"}
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { FormattedMessage } from "react-intl";
|
|
4
|
+
import { AlertDestinationSelect } from "./components/AlertDestinationSelect.js";
|
|
5
|
+
import { FormField } from "./FormField.js";
|
|
6
|
+
const OVERLAY_POSITION_TYPE = "sameAsTarget";
|
|
7
|
+
const CLOSE_ON_PARENT_SCROLL = true;
|
|
8
|
+
/**
|
|
9
|
+
* Default implementation of the alerting dialog's destination region (the "Action" row).
|
|
10
|
+
*/
|
|
11
|
+
export function AlertingDialogDestination({ notificationChannels, selectedNotificationChannelId, onChange, }) {
|
|
12
|
+
return (_jsx(FormField, { label: _jsx(FormattedMessage, { id: "insightAlert.config.action" }), htmlFor: "alert.destination", children: _jsx(AlertDestinationSelect, { id: "alert.destination", selectedDestination: selectedNotificationChannelId, onDestinationChange: onChange, destinations: notificationChannels, overlayPositionType: OVERLAY_POSITION_TYPE, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL }) }));
|
|
13
|
+
}
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type IAutomationDialogRecipientsProps } from "../../shared/slots/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the alerting dialog's recipients region. The label comes from the
|
|
4
|
+
* form field row, so the select's own label is off.
|
|
5
|
+
*/
|
|
6
|
+
export declare function AlertingDialogRecipients(props: IAutomationDialogRecipientsProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=AlertingDialogRecipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertingDialogRecipients.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAIpF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gCAAgC,2CAU/E"}
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { FormattedMessage } from "react-intl";
|
|
4
|
+
import { RecipientsSelect } from "../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js";
|
|
5
|
+
import { FormField } from "./FormField.js";
|
|
6
|
+
/**
|
|
7
|
+
* Default implementation of the alerting dialog's recipients region. The label comes from the
|
|
8
|
+
* form field row, so the select's own label is off.
|
|
9
|
+
*/
|
|
10
|
+
export function AlertingDialogRecipients(props) {
|
|
11
|
+
return (_jsx(FormField, { label: _jsx(FormattedMessage, { id: "insightAlert.config.recipients" }), htmlFor: "alert.recipients", fullWidth: true, children: _jsx(RecipientsSelect, { id: "alert.recipients", showLabel: false, ...props }) }));
|
|
12
|
+
}
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IDefaultAlertingDialogProps } from "../types.js";
|
|
2
|
-
export declare function AlertingDialogRenderer({ onCancel, onDeleteSuccess, onDeleteError, onError, onSuccess, onSaveError, onSaveSuccess, slots }: IDefaultAlertingDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function AlertingDialogRenderer({ onCancel, onDeleteSuccess, onDeleteError, onError, onSuccess, onSaveError, onSaveSuccess, slots, topContent, bottomContent }: IDefaultAlertingDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
/**
|
|
4
4
|
* Default implementation of the alerting create/edit dialog.
|
|
5
5
|
*
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAlertingDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultAlertingDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.tsx"],"names":[],"mappings":"AAgDA,OAAO,EAGH,KAAK,2BAA2B,EACnC,MAAM,aAAa,CAAC;AA+BrB,wBAAgB,sBAAsB,CAAC,EACnC,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EACb,KAAK,EACL,UAAU,EACV,aAAa,EAChB,EAAE,2BAA2B,2CAqmB7B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,2CAcvE"}
|