@gooddata/sdk-ui-dashboard 11.52.0-alpha.5 → 11.52.0-alpha.7
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/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/index.d.ts +8 -7
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +8 -7
- package/esm/kdaDialog/composition/hooks/usePeriodChangeHandler.js +5 -0
- package/esm/model/commandHandlers/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/index.js +2 -0
- package/esm/model/commandHandlers/widgets/changeVisualizationSwitcherActiveVisualizationHandler.d.ts +6 -0
- package/esm/model/commandHandlers/widgets/changeVisualizationSwitcherActiveVisualizationHandler.d.ts.map +1 -0
- package/esm/model/commandHandlers/widgets/changeVisualizationSwitcherActiveVisualizationHandler.js +12 -0
- package/esm/model/commands/base.d.ts +1 -1
- package/esm/model/commands/base.d.ts.map +1 -1
- package/esm/model/commands/index.d.ts +2 -2
- package/esm/model/commands/index.d.ts.map +1 -1
- package/esm/model/commands/visualizationSwitcher.d.ts +33 -0
- package/esm/model/commands/visualizationSwitcher.d.ts.map +1 -1
- package/esm/model/commands/visualizationSwitcher.js +21 -0
- package/esm/model/events/base.d.ts +1 -1
- package/esm/model/events/base.d.ts.map +1 -1
- package/esm/model/events/index.d.ts +2 -2
- package/esm/model/events/index.d.ts.map +1 -1
- package/esm/model/events/visualizationSwitcher.d.ts +34 -0
- package/esm/model/events/visualizationSwitcher.d.ts.map +1 -1
- package/esm/model/events/visualizationSwitcher.js +21 -0
- package/esm/model/react/useDashboardCommand.d.ts +1 -0
- package/esm/model/react/useDashboardCommand.d.ts.map +1 -1
- package/esm/model/react/useDashboardCommandProcessing.d.ts +4 -0
- package/esm/model/react/useDashboardCommandProcessing.d.ts.map +1 -1
- package/esm/model/store/config/configSelectors.d.ts +6 -0
- package/esm/model/store/config/configSelectors.d.ts.map +1 -1
- package/esm/model/store/config/configSelectors.js +8 -0
- package/esm/model/store/keyDriverAnalysis/const.d.ts +6 -6
- package/esm/model/store/keyDriverAnalysis/const.d.ts.map +1 -1
- package/esm/model/store/keyDriverAnalysis/const.js +12 -26
- package/esm/model/store/ui/index.d.ts +4 -0
- package/esm/model/store/ui/index.d.ts.map +1 -1
- package/esm/model/store/ui/uiReducers.d.ts +7 -0
- package/esm/model/store/ui/uiReducers.d.ts.map +1 -1
- package/esm/model/store/ui/uiReducers.js +6 -0
- package/esm/model/store/ui/uiSelectors.d.ts +8 -0
- package/esm/model/store/ui/uiSelectors.d.ts.map +1 -1
- package/esm/model/store/ui/uiSelectors.js +10 -0
- package/esm/model/store/ui/uiState.d.ts +6 -0
- package/esm/model/store/ui/uiState.d.ts.map +1 -1
- package/esm/model/store/ui/uiState.js +1 -0
- package/esm/model/store/widgetDrills/widgetDrillSelectors.d.ts.map +1 -1
- package/esm/model/store/widgetDrills/widgetDrillSelectors.js +5 -5
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts +3 -0
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/AlertingDialog.js +5 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +10 -7
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +36 -16
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertThreshold.d.ts +9 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertThreshold.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertThreshold.js +9 -0
- package/esm/presentation/automations/alerting/state/AlertActionsContext.d.ts +23 -0
- package/esm/presentation/automations/alerting/state/AlertActionsContext.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/AlertActionsContext.js +19 -0
- package/esm/presentation/automations/alerting/state/AlertDataContext.d.ts +24 -0
- package/esm/presentation/automations/alerting/state/AlertDataContext.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/AlertDataContext.js +19 -0
- package/esm/presentation/automations/alerting/state/AlertDraftContext.d.ts +24 -0
- package/esm/presentation/automations/alerting/state/AlertDraftContext.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/AlertDraftContext.js +19 -0
- package/esm/presentation/automations/alerting/state/AlertFiltersContext.d.ts +26 -0
- package/esm/presentation/automations/alerting/state/AlertFiltersContext.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/AlertFiltersContext.js +19 -0
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.d.ts +25 -0
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.js +172 -0
- package/esm/presentation/automations/alerting/state/missingAlertStateProvider.d.ts +7 -0
- package/esm/presentation/automations/alerting/state/missingAlertStateProvider.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/missingAlertStateProvider.js +9 -0
- package/esm/presentation/automations/alerting/state/useAlertDialogValidity.d.ts +15 -0
- package/esm/presentation/automations/alerting/state/useAlertDialogValidity.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/useAlertDialogValidity.js +45 -0
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertFiltersModel.d.ts +2 -2
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertFiltersModel.js +3 -3
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertFormState.d.ts +4 -4
- package/esm/presentation/automations/alerting/state/useAlertFormState.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertFormState.js +8 -8
- package/esm/presentation/automations/alerting/state/useAlertFormValidation.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertFormValidation.js +3 -3
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertSelectedValues.d.ts +17 -7
- package/esm/presentation/automations/alerting/state/useAlertSelectedValues.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertSelectedValues.js +27 -4
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertSupportedMetrics.d.ts +3 -3
- package/esm/presentation/automations/alerting/state/useAlertSupportedMetrics.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertSupportedMetrics.js +5 -5
- package/esm/presentation/automations/alerting/types.d.ts +15 -1
- package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts +26 -0
- package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/AlertingDialogContext.js +26 -0
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +10 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.js +9 -0
- 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 +19 -17
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.d.ts +3 -0
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.js +5 -1
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.d.ts +22 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.js +150 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportActionsContext.d.ts +28 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportActionsContext.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportActionsContext.js +20 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportDataContext.d.ts +25 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportDataContext.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportDataContext.js +20 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportDraftContext.d.ts +25 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportDraftContext.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportDraftContext.js +20 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportFiltersContext.d.ts +26 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportFiltersContext.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/ScheduledExportFiltersContext.js +20 -0
- package/esm/presentation/automations/scheduledEmail/state/exportDefinitions.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/utils → state}/exportDefinitions.js +1 -1
- package/esm/presentation/automations/scheduledEmail/state/missingScheduledExportStateProvider.d.ts +7 -0
- package/esm/presentation/automations/scheduledEmail/state/missingScheduledExportStateProvider.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/missingScheduledExportStateProvider.js +9 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailEffectiveFilters.d.ts +2 -2
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailEffectiveFilters.js +4 -4
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailExportSettings.d.ts +12 -25
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailExportSettings.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailExportSettings.js +38 -86
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks/useScheduledEmailFilters.d.ts → state/useScheduledEmailFiltersModel.d.ts} +7 -7
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks/useScheduledEmailFilters.js → state/useScheduledEmailFiltersModel.js} +26 -9
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFormState.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailFormState.js +25 -25
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFormValidity.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailFormValidity.js +3 -3
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.d.ts +39 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.js +102 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportDialogValidity.d.ts +13 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportDialogValidity.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledExportDialogValidity.js +34 -0
- package/esm/presentation/automations/scheduledEmail/types.d.ts +15 -1
- package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForNewAutomation.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/hooks/useDefaultSelectedFiltersForNewAutomation.js +2 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.d.ts +2 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.d.ts.map +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js +6 -2
- package/esm/presentation/drill/utils/kdaUtils.d.ts +1 -1
- package/esm/presentation/drill/utils/kdaUtils.d.ts.map +1 -1
- package/esm/presentation/drill/utils/kdaUtils.js +6 -5
- package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.d.ts +1 -1
- package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.d.ts.map +1 -1
- package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js +2 -2
- package/esm/presentation/filterBar/dateFilter/types.d.ts +8 -1
- package/esm/presentation/filterBar/dateFilter/types.d.ts.map +1 -1
- package/esm/presentation/filterBar/dateFilter/types.js +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.d.ts.map +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.js +11 -2
- package/esm/sdk-ui-dashboard.d.ts +240 -28
- package/package.json +21 -21
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertFiltersModel.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertFormState.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertFormValidation.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertSelectedValues.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertSupportedMetrics.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +0 -69
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +0 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +0 -145
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +0 -89
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +0 -131
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailEffectiveFilters.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailExportSettings.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailFilters.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailFormState.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailFormValidity.d.ts.map +0 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/utils/exportDefinitions.d.ts.map +0 -1
- /package/esm/presentation/automations/alerting/{DefaultAlertingDialog/hooks → state}/useAlertFormValidation.d.ts +0 -0
- /package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/utils → state}/exportDefinitions.d.ts +0 -0
- /package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailFormState.d.ts +0 -0
- /package/esm/presentation/automations/scheduledEmail/{DefaultScheduledEmailDialog/hooks → state}/useScheduledEmailFormValidity.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missingScheduledExportStateProvider.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/missingScheduledExportStateProvider.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAI3E"}
|
package/esm/presentation/automations/scheduledEmail/state/missingScheduledExportStateProvider.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* The single error every scheduled-export dialog state accessor throws when no provider is above it.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export function missingScheduledExportStateProvider(accessor) {
|
|
8
|
+
throw new Error(`${accessor} must be used within ScheduledEmailDialogStateProvider. The provider mounts only once the dialog's data has loaded, so check useScheduledEmailDialogContext().isLoading before reading scheduled-export dialog state.`);
|
|
9
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FilterContextItem, type IAutomationVisibleFilter, type IDashboardExportParameter, type IFilter, type IInsight, type IWidget } from "@gooddata/sdk-model";
|
|
2
|
-
import type { IAutomationFiltersTab } from "
|
|
2
|
+
import type { IAutomationFiltersTab } from "../../../../model/store/filtering/types.js";
|
|
3
3
|
export interface IUseScheduledEmailEffectiveFiltersProps {
|
|
4
4
|
widget?: IWidget;
|
|
5
5
|
insight?: IInsight;
|
|
@@ -17,7 +17,7 @@ export interface IUseScheduledEmailEffectiveFiltersProps {
|
|
|
17
17
|
*
|
|
18
18
|
* This has to run before the draft exists, because `useScheduledEmailFormState` and
|
|
19
19
|
* `useScheduledEmailExportSettings` consume these values while initializing it. The handlers that
|
|
20
|
-
* *change* filters live in {@link
|
|
20
|
+
* *change* filters live in {@link useScheduledEmailFiltersModel} and necessarily run later — they write
|
|
21
21
|
* through the draft's setter. That ordering is why reading and writing filters are two hooks rather
|
|
22
22
|
* than one.
|
|
23
23
|
*
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledEmailEffectiveFilters.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailEffectiveFilters.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,OAAO,EACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAUxF,MAAM,WAAW,uCAAuC;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACnF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAAC,EAC9C,MAAM,EACN,OAAO,EACP,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,gBAAgB,EAChB,YAAY,EACf,EAAE,uCAAuC,GAAG;IACzC,sBAAsB,EAAE,OAAO,EAAE,CAAC;IAClC,iCAAiC,EAAE,OAAO,EAAE,CAAC;IAC7C,6BAA6B,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IACtE,yBAAyB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,SAAS,CAAC;IAChF,gCAAgC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IACzE,qCAAqC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,GAAG,SAAS,CAAC;IAC9F,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,GAAG,SAAS,CAAC;CAC5F,CA+GA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
import { useScheduledEmailDialogContext } from "
|
|
4
|
-
import { shouldStoreExportParameters } from "
|
|
5
|
-
import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersByFilters, getVisibleFiltersByFiltersByTab, } from "
|
|
3
|
+
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
4
|
+
import { shouldStoreExportParameters } from "../../shared/automationFilters/automationParameters.js";
|
|
5
|
+
import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersByFilters, getVisibleFiltersByFiltersByTab, } from "../../shared/filters/index.js";
|
|
6
6
|
/**
|
|
7
7
|
* Derives the filter sets a scheduled export actually runs with: the widget and dashboard filters left
|
|
8
8
|
* after hidden filters are removed, their visible-filter counterparts for display, and the per-tab
|
|
@@ -10,7 +10,7 @@ import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersB
|
|
|
10
10
|
*
|
|
11
11
|
* This has to run before the draft exists, because `useScheduledEmailFormState` and
|
|
12
12
|
* `useScheduledEmailExportSettings` consume these values while initializing it. The handlers that
|
|
13
|
-
* *change* filters live in {@link
|
|
13
|
+
* *change* filters live in {@link useScheduledEmailFiltersModel} and necessarily run later — they write
|
|
14
14
|
* through the draft's setter. That ordering is why reading and writing filters are two hooks rather
|
|
15
15
|
* than one.
|
|
16
16
|
*
|
|
@@ -12,31 +12,19 @@ export interface IUseScheduledEmailExportSettingsProps {
|
|
|
12
12
|
effectiveWidgetFiltersWithInsight: IFilter[];
|
|
13
13
|
defaultPdfPageSize?: IExportDefinitionVisualizationObjectSettings["pageSize"];
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Owns the scheduled export's attachment write path: the per-tab export-parameter wire, which is
|
|
17
|
+
* held outside the automation so it survives an export-definition rebuild, and every handler that
|
|
18
|
+
* rebuilds or patches export definitions and therefore captures that wire.
|
|
19
|
+
*
|
|
20
|
+
* The wire must exist once per dialog, so this hook is called once, by the state provider, and its
|
|
21
|
+
* handlers are published on the actions context. What the attachment section *displays* is a pure
|
|
22
|
+
* function of the draft and is derived per consumer in {@link useScheduledExportAttachments}.
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
15
26
|
export declare function useScheduledEmailExportSettings({ editedAutomation, setEditedAutomation, insight, widget, storeFilters, effectiveDashboardFilters, effectiveDashboardFiltersByTab, effectiveWidgetFilters, effectiveWidgetFiltersWithInsight, defaultPdfPageSize }: IUseScheduledEmailExportSettingsProps): {
|
|
16
|
-
|
|
17
|
-
isDashboardExportSelected: boolean;
|
|
18
|
-
isCsvExportSelected: boolean;
|
|
19
|
-
isXlsxExportSelected: boolean;
|
|
20
|
-
xlsxSettings: {
|
|
21
|
-
mergeHeaders: boolean;
|
|
22
|
-
exportInfo: boolean;
|
|
23
|
-
};
|
|
24
|
-
pdfSettings: {
|
|
25
|
-
pageSize: "A3" | "A4" | "LETTER";
|
|
26
|
-
orientation: "landscape" | "portrait";
|
|
27
|
-
exportInfo: boolean;
|
|
28
|
-
};
|
|
29
|
-
csvSettings: {
|
|
30
|
-
delimiter: string;
|
|
31
|
-
};
|
|
32
|
-
csvRawSettings: {
|
|
33
|
-
delimiter: string;
|
|
34
|
-
};
|
|
35
|
-
slidesTemplateIds: {
|
|
36
|
-
PPTX: string | undefined;
|
|
37
|
-
PDF_SLIDES: string | undefined;
|
|
38
|
-
PDF: string | undefined;
|
|
39
|
-
};
|
|
27
|
+
setParametersWire: (wire: Record<string, IDashboardExportParameter[]> | undefined) => void;
|
|
40
28
|
onDashboardAttachmentsChange: (formats: DashboardAttachmentType[]) => void;
|
|
41
29
|
onWidgetAttachmentsChange: (formats: WidgetAttachmentType[]) => void;
|
|
42
30
|
onXlsxSettingsChange: (settings: IExportDefinitionVisualizationObjectSettings) => void;
|
|
@@ -44,6 +32,5 @@ export declare function useScheduledEmailExportSettings({ editedAutomation, setE
|
|
|
44
32
|
onCsvSettingsChange: (settings: IExportDefinitionVisualizationObjectSettings) => void;
|
|
45
33
|
onCsvRawSettingsChange: (settings: IExportDefinitionVisualizationObjectSettings) => void;
|
|
46
34
|
onSlidesTemplateIdChange: (templateId: string | undefined, format: "PDF" | "PDF_SLIDES" | "PPTX") => void;
|
|
47
|
-
setParametersWire: (wire: Record<string, IDashboardExportParameter[]> | undefined) => void;
|
|
48
35
|
};
|
|
49
36
|
//# sourceMappingURL=useScheduledEmailExportSettings.d.ts.map
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailExportSettings.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledEmailExportSettings.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailExportSettings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAuB,MAAM,OAAO,CAAC;AAIhF,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,mCAAmC,EACxC,KAAK,yBAAyB,EAC9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,oBAAoB,EAG5B,MAAM,qBAAqB,CAAC;AAc7B,MAAM,WAAW,qCAAqC;IAClD,gBAAgB,EAAE,mCAAmC,CAAC;IACtD,mBAAmB,EAAE,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,SAAS,CAAC;IAChF,sBAAsB,EAAE,OAAO,EAAE,CAAC;IAClC,iCAAiC,EAAE,OAAO,EAAE,CAAC;IAC7C,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,EAC5C,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,MAAM,EACN,YAAY,EACZ,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,iCAAiC,EACjC,kBAAkB,EACrB,EAAE,qCAAqC;;;;;;;;;EAsRvC"}
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
|
-
import { useCallback,
|
|
2
|
+
import { useCallback, useRef } from "react";
|
|
3
3
|
import { invariant } from "ts-invariant";
|
|
4
|
-
import {
|
|
5
|
-
import { getAutomationExportParametersByTab, setExportParametersByTab, } from "
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
4
|
+
import { isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, } from "@gooddata/sdk-model";
|
|
5
|
+
import { getAutomationExportParametersByTab, setExportParametersByTab, } from "../../../../_staging/automation/index.js";
|
|
6
|
+
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
7
|
+
import { newDashboardExportDefinitionMetadataObjectDefinition, newWidgetExportDefinitionMetadataObjectDefinition, withRebuiltExportDefinitions, } from "./exportDefinitions.js";
|
|
8
|
+
/**
|
|
9
|
+
* Owns the scheduled export's attachment write path: the per-tab export-parameter wire, which is
|
|
10
|
+
* held outside the automation so it survives an export-definition rebuild, and every handler that
|
|
11
|
+
* rebuilds or patches export definitions and therefore captures that wire.
|
|
12
|
+
*
|
|
13
|
+
* The wire must exist once per dialog, so this hook is called once, by the state provider, and its
|
|
14
|
+
* handlers are published on the actions context. What the attachment section *displays* is a pure
|
|
15
|
+
* function of the draft and is derived per consumer in {@link useScheduledExportAttachments}.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
9
19
|
export function useScheduledEmailExportSettings({ editedAutomation, setEditedAutomation, insight, widget, storeFilters, effectiveDashboardFilters, effectiveDashboardFiltersByTab, effectiveWidgetFilters, effectiveWidgetFiltersWithInsight, defaultPdfPageSize, }) {
|
|
10
|
-
const { settings } = useAutomationsContext();
|
|
11
20
|
const { dashboardId, dashboardTitle } = useScheduledEmailDialogContext();
|
|
12
|
-
const resolvedDefaultCsvDelimiter = settings?.exportCsvCustomDelimiter ?? DEFAULT_CSV_DELIMITER;
|
|
13
21
|
// Holds the wire outside the automation so it survives a rebuild from zero export definitions —
|
|
14
22
|
// with no definitions `setExportParametersByTab` has nowhere to store it.
|
|
15
23
|
// Seeded from the stored wire.
|
|
@@ -25,12 +33,7 @@ export function useScheduledEmailExportSettings({ editedAutomation, setEditedAut
|
|
|
25
33
|
// `widget`/`insight` via TS's aliased-condition control-flow analysis — this requires the boolean
|
|
26
34
|
// to be declared from those exact variables in this same scope, same as in the parent.
|
|
27
35
|
const isWidget = !!widget && !!insight;
|
|
28
|
-
const
|
|
29
|
-
return (editedAutomation.exportDefinitions
|
|
30
|
-
?.map((exportDefinition) => exportDefinition.requestPayload.format)
|
|
31
|
-
.filter(Boolean) ?? []);
|
|
32
|
-
}, [editedAutomation.exportDefinitions]);
|
|
33
|
-
const onDashboardAttachmentsChange = (formats) => {
|
|
36
|
+
const onDashboardAttachmentsChange = useCallback((formats) => {
|
|
34
37
|
setEditedAutomation((s) => {
|
|
35
38
|
const currentExportDefinitions = s.exportDefinitions || [];
|
|
36
39
|
const currentDashboardExportDefinitions = currentExportDefinitions.filter((exportDefinition) => isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload));
|
|
@@ -48,8 +51,15 @@ export function useScheduledEmailExportSettings({ editedAutomation, setEditedAut
|
|
|
48
51
|
const updatedExportDefinitions = [...keptExportDefinitions, ...newExportDefinitions];
|
|
49
52
|
return withRebuiltExportDefinitions(s, updatedExportDefinitions, latestParametersWireRef.current);
|
|
50
53
|
});
|
|
51
|
-
}
|
|
52
|
-
|
|
54
|
+
}, [
|
|
55
|
+
setEditedAutomation,
|
|
56
|
+
dashboardId,
|
|
57
|
+
dashboardTitle,
|
|
58
|
+
storeFilters,
|
|
59
|
+
effectiveDashboardFilters,
|
|
60
|
+
effectiveDashboardFiltersByTab,
|
|
61
|
+
]);
|
|
62
|
+
const onWidgetAttachmentsChange = useCallback((formats) => {
|
|
53
63
|
invariant(isWidget, "Widget or insight is missing in scheduling dialog context.");
|
|
54
64
|
setEditedAutomation((s) => {
|
|
55
65
|
const currentExportDefinitions = s.exportDefinitions || [];
|
|
@@ -71,7 +81,17 @@ export function useScheduledEmailExportSettings({ editedAutomation, setEditedAut
|
|
|
71
81
|
const updatedExportDefinitions = [...keptExportDefinitions, ...newExportDefinitions];
|
|
72
82
|
return withRebuiltExportDefinitions(s, updatedExportDefinitions, latestParametersWireRef.current);
|
|
73
83
|
});
|
|
74
|
-
}
|
|
84
|
+
}, [
|
|
85
|
+
setEditedAutomation,
|
|
86
|
+
isWidget,
|
|
87
|
+
insight,
|
|
88
|
+
widget,
|
|
89
|
+
dashboardId,
|
|
90
|
+
effectiveWidgetFilters,
|
|
91
|
+
effectiveWidgetFiltersWithInsight,
|
|
92
|
+
effectiveDashboardFilters,
|
|
93
|
+
defaultPdfPageSize,
|
|
94
|
+
]);
|
|
75
95
|
const onXlsxSettingsChange = useCallback((settings) => {
|
|
76
96
|
setEditedAutomation((s) => ({
|
|
77
97
|
...s,
|
|
@@ -178,75 +198,8 @@ export function useScheduledEmailExportSettings({ editedAutomation, setEditedAut
|
|
|
178
198
|
}),
|
|
179
199
|
}));
|
|
180
200
|
}, [setEditedAutomation, isWidget]);
|
|
181
|
-
const isDashboardExportSelected = editedAutomation.exportDefinitions?.some((exportDefinition) => isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload)) ?? true;
|
|
182
|
-
const isCsvExportSelected = editedAutomation.exportDefinitions?.some((exportDefinition) => {
|
|
183
|
-
if (isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload)) {
|
|
184
|
-
return exportDefinition.requestPayload.format === "CSV";
|
|
185
|
-
}
|
|
186
|
-
return false;
|
|
187
|
-
}) ?? false;
|
|
188
|
-
const isXlsxExportSelected = editedAutomation.exportDefinitions?.some((exportDefinition) => {
|
|
189
|
-
if (isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload)) {
|
|
190
|
-
return exportDefinition.requestPayload.format === "XLSX";
|
|
191
|
-
}
|
|
192
|
-
return false;
|
|
193
|
-
}) ?? false;
|
|
194
|
-
const xlsxExportSettings = editedAutomation.exportDefinitions?.find((exportDefinition) => exportDefinition.requestPayload.format === "XLSX")?.requestPayload.settings;
|
|
195
|
-
const xlsxSettings = {
|
|
196
|
-
mergeHeaders: xlsxExportSettings?.mergeHeaders ?? true,
|
|
197
|
-
exportInfo: xlsxExportSettings?.exportInfo ?? true,
|
|
198
|
-
};
|
|
199
|
-
const pdfVisualizationSettings = editedAutomation.exportDefinitions?.find((exportDefinition) => isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload) &&
|
|
200
|
-
exportDefinition.requestPayload.format === "PDF_TABULAR")?.requestPayload.settings;
|
|
201
|
-
const pdfTabularSettings = pdfVisualizationSettings && "pageSize" in pdfVisualizationSettings
|
|
202
|
-
? pdfVisualizationSettings
|
|
203
|
-
: undefined;
|
|
204
|
-
const pdfSettings = {
|
|
205
|
-
pageSize: pdfTabularSettings?.pageSize ?? defaultPdfPageSize ?? "A4",
|
|
206
|
-
orientation: pdfTabularSettings?.orientation ?? "portrait",
|
|
207
|
-
exportInfo: pdfTabularSettings?.exportInfo ?? true,
|
|
208
|
-
};
|
|
209
|
-
const csvExportDefinition = editedAutomation.exportDefinitions?.find((exportDefinition) => isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload) &&
|
|
210
|
-
exportDefinition.requestPayload.format === "CSV");
|
|
211
|
-
const csvExportSettings = csvExportDefinition &&
|
|
212
|
-
isExportDefinitionVisualizationObjectRequestPayload(csvExportDefinition.requestPayload)
|
|
213
|
-
? csvExportDefinition.requestPayload.settings
|
|
214
|
-
: undefined;
|
|
215
|
-
const csvSettings = {
|
|
216
|
-
delimiter: csvExportSettings?.delimiter ?? resolvedDefaultCsvDelimiter,
|
|
217
|
-
};
|
|
218
|
-
const csvRawExportDefinition = editedAutomation.exportDefinitions?.find((exportDefinition) => isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload) &&
|
|
219
|
-
exportDefinition.requestPayload.format === "CSV_RAW");
|
|
220
|
-
const csvRawExportSettings = csvRawExportDefinition &&
|
|
221
|
-
isExportDefinitionVisualizationObjectRequestPayload(csvRawExportDefinition.requestPayload)
|
|
222
|
-
? csvRawExportDefinition.requestPayload.settings
|
|
223
|
-
: undefined;
|
|
224
|
-
const csvRawSettings = {
|
|
225
|
-
delimiter: csvRawExportSettings?.delimiter ?? resolvedDefaultCsvDelimiter,
|
|
226
|
-
};
|
|
227
|
-
// Extract templateId per slides format, scoped to the current dialog mode
|
|
228
|
-
const getTemplateIdForFormat = (format) => {
|
|
229
|
-
const def = editedAutomation.exportDefinitions?.find((ed) => ed.requestPayload.format === format &&
|
|
230
|
-
(isWidget
|
|
231
|
-
? isExportDefinitionVisualizationObjectRequestPayload(ed.requestPayload)
|
|
232
|
-
: isExportDefinitionDashboardRequestPayload(ed.requestPayload)));
|
|
233
|
-
return def?.requestPayload.templateId;
|
|
234
|
-
};
|
|
235
|
-
const slidesTemplateIds = {
|
|
236
|
-
PPTX: getTemplateIdForFormat("PPTX"),
|
|
237
|
-
PDF_SLIDES: getTemplateIdForFormat("PDF_SLIDES"),
|
|
238
|
-
PDF: getTemplateIdForFormat("PDF"),
|
|
239
|
-
};
|
|
240
201
|
return {
|
|
241
|
-
|
|
242
|
-
isDashboardExportSelected,
|
|
243
|
-
isCsvExportSelected,
|
|
244
|
-
isXlsxExportSelected,
|
|
245
|
-
xlsxSettings,
|
|
246
|
-
pdfSettings,
|
|
247
|
-
csvSettings,
|
|
248
|
-
csvRawSettings,
|
|
249
|
-
slidesTemplateIds,
|
|
202
|
+
setParametersWire,
|
|
250
203
|
onDashboardAttachmentsChange,
|
|
251
204
|
onWidgetAttachmentsChange,
|
|
252
205
|
onXlsxSettingsChange,
|
|
@@ -254,6 +207,5 @@ export function useScheduledEmailExportSettings({ editedAutomation, setEditedAut
|
|
|
254
207
|
onCsvSettingsChange,
|
|
255
208
|
onCsvRawSettingsChange,
|
|
256
209
|
onSlidesTemplateIdChange,
|
|
257
|
-
setParametersWire,
|
|
258
210
|
};
|
|
259
211
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type Dispatch, type SetStateAction } from "react";
|
|
2
2
|
import { type FilterContextItem, type IAutomationMetadataObject, type IAutomationMetadataObjectDefinition, type IAutomationVisibleFilter, type IDashboardExportParameter, type IInsight, type IWidget } from "@gooddata/sdk-model";
|
|
3
|
-
import type { IAutomationFiltersTab } from "
|
|
4
|
-
import { type IUseAutomationExportParameters } from "
|
|
5
|
-
export interface
|
|
3
|
+
import type { IAutomationFiltersTab } from "../../../../model/store/filtering/types.js";
|
|
4
|
+
import { type IUseAutomationExportParameters } from "../../shared/automationFilters/useAutomationExportParameters.js";
|
|
5
|
+
export interface IUseScheduledEmailFiltersModelProps {
|
|
6
6
|
setEditedAutomation: Dispatch<SetStateAction<IAutomationMetadataObjectDefinition>>;
|
|
7
7
|
scheduledExportToEdit?: IAutomationMetadataObject;
|
|
8
8
|
widget?: IWidget;
|
|
@@ -34,13 +34,13 @@ export interface IUseScheduledEmailFiltersProps {
|
|
|
34
34
|
*
|
|
35
35
|
* @internal
|
|
36
36
|
*/
|
|
37
|
-
export declare function
|
|
37
|
+
export declare function useScheduledEmailFiltersModel({ setEditedAutomation, scheduledExportToEdit, widget, insight, editedAutomationFilters, setEditedAutomationFilters, editedAutomationFiltersByTab, setEditedAutomationFiltersByTab, availableFilters, availableFiltersAsVisibleFilters, availableFiltersAsVisibleFiltersByTab, filtersByTab, storeFilters, setStoreFilters, filtersForNewAutomation, setParametersWire }: IUseScheduledEmailFiltersModelProps): IUseScheduledEmailFiltersModel;
|
|
38
38
|
/**
|
|
39
|
-
* Return type of {@link
|
|
39
|
+
* Return type of {@link useScheduledEmailFiltersModel}: its own filter model plus the whole absorbed
|
|
40
40
|
* {@link useAutomationExportParameters} model, spread in verbatim so its member names stay canonical.
|
|
41
41
|
* @internal
|
|
42
42
|
*/
|
|
43
|
-
export interface
|
|
43
|
+
export interface IUseScheduledEmailFiltersModel extends IUseAutomationExportParameters {
|
|
44
44
|
selectedFilters: FilterContextItem[];
|
|
45
45
|
availableFilters: FilterContextItem[] | undefined;
|
|
46
46
|
storeFilters: boolean;
|
|
@@ -53,4 +53,4 @@ export interface IUseScheduledEmailFilters extends IUseAutomationExportParameter
|
|
|
53
53
|
automationIsValid: boolean;
|
|
54
54
|
filtersAreStale: boolean;
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=
|
|
56
|
+
//# sourceMappingURL=useScheduledEmailFiltersModel.d.ts.map
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledEmailFiltersModel.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAuB,MAAM,OAAO,CAAC;AAEhF,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACb,KAAK,OAAO,EAIf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAGxF,OAAO,EACH,KAAK,8BAA8B,EAEtC,MAAM,iEAAiE,CAAC;AASzE,MAAM,WAAW,mCAAmC;IAChD,mBAAmB,EAAE,QAAQ,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACnF,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACnE,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACnF,YAAY,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;CAC9F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAAC,EAC1C,mBAAmB,EACnB,qBAAqB,EACrB,MAAM,EACN,OAAO,EACP,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,EAC/B,gBAAgB,EAChB,gCAAgC,EAChC,qCAAqC,EACrC,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACpB,EAAE,mCAAmC,GAAG,8BAA8B,CAiRtE;AAkBD;;;;GAIG;AACH,MAAM,WAAW,8BAA+B,SAAQ,8BAA8B;IAClF,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAClD,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IAClD,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,SAAS,CAAC;IACpE,eAAe,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrF,oBAAoB,EAAE,CAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EACpD,iBAAiB,CAAC,EAAE,OAAO,KAC1B,IAAI,CAAC;IACV,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,oBAAoB,EAAE,CAClB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,EAAE,EAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KACtD,IAAI,CAAC;IACV,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;CAC5B"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
|
-
import { useCallback } from "react";
|
|
2
|
+
import { useCallback, useRef } from "react";
|
|
3
3
|
import { isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isInsightWidget, } from "@gooddata/sdk-model";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
4
|
+
import { shallowEqualObjects } from "@gooddata/util";
|
|
5
|
+
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
6
|
+
import { useValidateExistingAutomationFilters } from "../../shared/automationFilters/hooks/useValidateExistingAutomationFilters.js";
|
|
7
|
+
import { useAutomationExportParameters, } from "../../shared/automationFilters/useAutomationExportParameters.js";
|
|
8
|
+
import { getDefaultSelectedFiltersFromFiltersByTab } from "../../shared/automationFilters/useAutomationFiltersSelect.js";
|
|
9
|
+
import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersByFilters, getVisibleFiltersByFiltersByTab, } from "../../shared/filters/index.js";
|
|
9
10
|
/**
|
|
10
11
|
* The scheduled-email dialog's single filter model: the current selection and available filters
|
|
11
12
|
* (flat and per-tab), the handlers that mutate them and mirror the result into the draft, the
|
|
@@ -20,7 +21,7 @@ import { getAppliedDashboardFilters, getAppliedWidgetFilters, getVisibleFiltersB
|
|
|
20
21
|
*
|
|
21
22
|
* @internal
|
|
22
23
|
*/
|
|
23
|
-
export function
|
|
24
|
+
export function useScheduledEmailFiltersModel({ setEditedAutomation, scheduledExportToEdit, widget, insight, editedAutomationFilters, setEditedAutomationFilters, editedAutomationFiltersByTab, setEditedAutomationFiltersByTab, availableFilters, availableFiltersAsVisibleFilters, availableFiltersAsVisibleFiltersByTab, filtersByTab, storeFilters, setStoreFilters, filtersForNewAutomation, setParametersWire, }) {
|
|
24
25
|
const { hiddenFilters: dashboardHiddenFilters, commonDateFilterId, exportParametersByTab, } = useScheduledEmailDialogContext();
|
|
25
26
|
// Re-derived locally (not passed as a prop) so that the `if (isWidget)` branch below narrows
|
|
26
27
|
// `widget`/`insight` via TS's aliased-condition control-flow analysis — this requires the boolean
|
|
@@ -200,7 +201,10 @@ export function useScheduledEmailFilters({ setEditedAutomation, scheduledExportT
|
|
|
200
201
|
}
|
|
201
202
|
onStoreParametersChange(value);
|
|
202
203
|
}, [onFiltersChange, onFiltersByTabChange, setStoreFilters, onStoreParametersChange]);
|
|
203
|
-
|
|
204
|
+
// Held stable member-wise, not just internally: this whole object is the filter context's value,
|
|
205
|
+
// so its identity is what every consumer re-renders on. The model never reads the draft, so a
|
|
206
|
+
// keystroke changes no member — and without this a fresh literal would re-render every consumer.
|
|
207
|
+
return useShallowStable({
|
|
204
208
|
selectedFilters: editedAutomationFilters,
|
|
205
209
|
availableFilters,
|
|
206
210
|
storeFilters,
|
|
@@ -213,5 +217,18 @@ export function useScheduledEmailFilters({ setEditedAutomation, scheduledExportT
|
|
|
213
217
|
automationIsValid,
|
|
214
218
|
filtersAreStale,
|
|
215
219
|
...parameters,
|
|
216
|
-
};
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Returns the previous object while every member keeps its identity, so a caller can hold a whole
|
|
224
|
+
* model stable without naming its members. Preferred over `useMemo` here because the roster is the
|
|
225
|
+
* hook's return shape: a dependency array would have to restate all of it, and a missed entry would
|
|
226
|
+
* serve a stale member rather than fail loudly.
|
|
227
|
+
*/
|
|
228
|
+
function useShallowStable(value) {
|
|
229
|
+
const previous = useRef(value);
|
|
230
|
+
if (!shallowEqualObjects(previous.current, value)) {
|
|
231
|
+
previous.current = value;
|
|
232
|
+
}
|
|
233
|
+
return previous.current;
|
|
217
234
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledEmailFormState.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailFormState.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACf,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,WAAW,gCAAgC;IAC7C,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,sBAAsB,EAAE,OAAO,EAAE,CAAC;IAClC,iCAAiC,EAAE,OAAO,EAAE,CAAC;IAC7C,6BAA6B,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IACtE,yBAAyB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAAG,SAAS,CAAC;IAChF,gCAAgC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IACzE,qCAAqC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,GAAG,SAAS,CAAC;IAC9F,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,GAAG,SAAS,CAAC;IACzF,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,EACvC,qBAAqB,EACrB,MAAM,EACN,OAAO,EACP,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,iCAAiC,EACjC,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,gCAAgC,EAChC,qCAAqC,EACrC,+BAA+B,EAC/B,kBAAkB,EACrB,EAAE,gCAAgC;;;;;;;;;;;;;;;;;;EAyJlC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { setExportParametersByTab } from "
|
|
4
|
-
import { useAutomationsContext } from "
|
|
5
|
-
import { useScheduledEmailDialogContext } from "
|
|
6
|
-
import { convertExternalRecipientToAutomationRecipient, convertUserToAutomationRecipient, } from "
|
|
7
|
-
import { toModifiedISOStringToTimezone, toNormalizedFirstRunAndCron, toNormalizedStartDate, } from "
|
|
8
|
-
import { getUserTimezone } from "
|
|
9
|
-
import { newDashboardExportDefinitionMetadataObjectDefinition, newWidgetExportDefinitionMetadataObjectDefinition, } from "
|
|
2
|
+
import { useCallback, useMemo, useState } from "react";
|
|
3
|
+
import { setExportParametersByTab } from "../../../../_staging/automation/index.js";
|
|
4
|
+
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
5
|
+
import { useScheduledEmailDialogContext } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
6
|
+
import { convertExternalRecipientToAutomationRecipient, convertUserToAutomationRecipient, } from "../../shared/utils/automationUtils.js";
|
|
7
|
+
import { toModifiedISOStringToTimezone, toNormalizedFirstRunAndCron, toNormalizedStartDate, } from "../utils/date.js";
|
|
8
|
+
import { getUserTimezone } from "../utils/timezone.js";
|
|
9
|
+
import { newDashboardExportDefinitionMetadataObjectDefinition, newWidgetExportDefinitionMetadataObjectDefinition, } from "./exportDefinitions.js";
|
|
10
10
|
/**
|
|
11
11
|
* Owns the scheduled-email dialog's `editedAutomation` draft (initialized either from
|
|
12
12
|
* `scheduledExportToEdit` or via `newAutomationMetadataObjectDefinition`), its `originalAutomation`
|
|
@@ -27,10 +27,10 @@ export function useScheduledEmailFormState({ scheduledExportToEdit, widget, insi
|
|
|
27
27
|
const isWidget = !!widget && !!insight;
|
|
28
28
|
// Determine target tab ID if widget is present
|
|
29
29
|
const targetTabId = widget?.localIdentifier ? widgetTabMap[widget.localIdentifier] : undefined;
|
|
30
|
-
const defaultUser = convertUserToAutomationRecipient(currentUser);
|
|
31
|
-
const defaultRecipient = externalRecipientOverride
|
|
30
|
+
const defaultUser = useMemo(() => convertUserToAutomationRecipient(currentUser), [currentUser]);
|
|
31
|
+
const defaultRecipient = useMemo(() => externalRecipientOverride
|
|
32
32
|
? convertExternalRecipientToAutomationRecipient(externalRecipientOverride)
|
|
33
|
-
: convertUserToAutomationRecipient(currentUser);
|
|
33
|
+
: convertUserToAutomationRecipient(currentUser), [externalRecipientOverride, currentUser]);
|
|
34
34
|
const firstChannel = notificationChannels[0]?.id;
|
|
35
35
|
const [editedAutomation, setEditedAutomation] = useState(() => scheduledExportToEdit ??
|
|
36
36
|
newAutomationMetadataObjectDefinition(isWidget
|
|
@@ -70,11 +70,11 @@ export function useScheduledEmailFormState({ scheduledExportToEdit, widget, insi
|
|
|
70
70
|
const [isTitleValid, setIsTitleValid] = useState(true);
|
|
71
71
|
const [isSubjectValid, setIsSubjectValid] = useState(true);
|
|
72
72
|
const [isOnMessageValid, setIsOnMessageValid] = useState(true);
|
|
73
|
-
const onTitleChange = (value, isValid) => {
|
|
73
|
+
const onTitleChange = useCallback((value, isValid) => {
|
|
74
74
|
setIsTitleValid(isValid);
|
|
75
75
|
setEditedAutomation((s) => ({ ...s, title: value }));
|
|
76
|
-
};
|
|
77
|
-
const onRecurrenceChange = (cronExpression, startDate, isValid) => {
|
|
76
|
+
}, []);
|
|
77
|
+
const onRecurrenceChange = useCallback((cronExpression, startDate, isValid) => {
|
|
78
78
|
setIsCronValid(isValid);
|
|
79
79
|
setEditedAutomation((s) => ({
|
|
80
80
|
...s,
|
|
@@ -84,26 +84,26 @@ export function useScheduledEmailFormState({ scheduledExportToEdit, widget, insi
|
|
|
84
84
|
firstRun: toModifiedISOStringToTimezone(startDate ?? new Date(), timezone).iso,
|
|
85
85
|
},
|
|
86
86
|
}));
|
|
87
|
-
};
|
|
88
|
-
const onEvaluationModeChange = (isShared) => {
|
|
87
|
+
}, [timezone]);
|
|
88
|
+
const onEvaluationModeChange = useCallback((isShared) => {
|
|
89
89
|
setEditedAutomation((s) => ({
|
|
90
90
|
...s,
|
|
91
91
|
evaluationMode: isShared ? "SHARED" : "PER_RECIPIENT",
|
|
92
92
|
}));
|
|
93
|
-
};
|
|
94
|
-
const onDestinationChange = (notificationChannelId) => {
|
|
93
|
+
}, []);
|
|
94
|
+
const onDestinationChange = useCallback((notificationChannelId) => {
|
|
95
95
|
setEditedAutomation((s) => ({
|
|
96
96
|
...s,
|
|
97
97
|
notificationChannel: notificationChannelId,
|
|
98
98
|
}));
|
|
99
|
-
};
|
|
100
|
-
const onRecipientsChange = (updatedRecipients) => {
|
|
99
|
+
}, []);
|
|
100
|
+
const onRecipientsChange = useCallback((updatedRecipients) => {
|
|
101
101
|
setEditedAutomation((s) => ({
|
|
102
102
|
...s,
|
|
103
103
|
recipients: updatedRecipients,
|
|
104
104
|
}));
|
|
105
|
-
};
|
|
106
|
-
const onSubjectChange = (value, isValid) => {
|
|
105
|
+
}, []);
|
|
106
|
+
const onSubjectChange = useCallback((value, isValid) => {
|
|
107
107
|
setIsSubjectValid(isValid);
|
|
108
108
|
setEditedAutomation((s) => ({
|
|
109
109
|
...s,
|
|
@@ -112,8 +112,8 @@ export function useScheduledEmailFormState({ scheduledExportToEdit, widget, insi
|
|
|
112
112
|
subject: value,
|
|
113
113
|
},
|
|
114
114
|
}));
|
|
115
|
-
};
|
|
116
|
-
const onMessageChange = (value, isValid) => {
|
|
115
|
+
}, []);
|
|
116
|
+
const onMessageChange = useCallback((value, isValid) => {
|
|
117
117
|
setIsOnMessageValid(isValid);
|
|
118
118
|
setEditedAutomation((s) => ({
|
|
119
119
|
...s,
|
|
@@ -122,7 +122,7 @@ export function useScheduledEmailFormState({ scheduledExportToEdit, widget, insi
|
|
|
122
122
|
message: value,
|
|
123
123
|
},
|
|
124
124
|
}));
|
|
125
|
-
};
|
|
125
|
+
}, []);
|
|
126
126
|
return {
|
|
127
127
|
editedAutomation,
|
|
128
128
|
setEditedAutomation,
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFormValidity.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledEmailFormValidity.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledEmailFormValidity.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAI1C,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,mCAAmC;IAChD,gBAAgB,EAAE,mCAAmC,CAAC;IACtD,kBAAkB,EAAE,mCAAmC,CAAC;IACxD,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,wBAAwB,EAAE,MAAM,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,mCAAmC,GAAG;IAIvF,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,aAAa,EAAE,OAAO,CAAC;IACvB,uBAAuB,EAAE,OAAO,CAAC;IACjC,6BAA6B,EAAE,OAAO,CAAC;CAC1C,CAsEA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
2
|
import { useIntl } from "react-intl";
|
|
3
3
|
import { isAutomationExternalUserRecipient, isAutomationUnknownUserRecipient, isAutomationUserRecipient, } from "@gooddata/sdk-model";
|
|
4
|
-
import { areAutomationsEqual } from "
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { areAutomationsEqual } from "../../shared/utils/automationUtils.js";
|
|
5
|
+
import { useScheduleValidation } from "../DefaultScheduledEmailDialog/hooks/useScheduleValidation.js";
|
|
6
|
+
import { isEmail } from "../utils/validate.js";
|
|
7
7
|
export function useScheduledEmailFormValidity(props) {
|
|
8
8
|
const { editedAutomation, originalAutomation, scheduledExportToEdit, notificationChannels, defaultRecipient, maxAutomationsRecipients, isCronValid, isTitleValid, isSubjectValid, isOnMessageValid, } = props;
|
|
9
9
|
const intl = useIntl();
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads what the scheduled-export dialog's attachment section displays: the selected formats, which
|
|
3
|
+
* export kinds are present, the per-format settings with their fallbacks, and the slides template
|
|
4
|
+
* chosen per format.
|
|
5
|
+
*
|
|
6
|
+
* Derived per consumer rather than published on a context: every value is a pure function of the
|
|
7
|
+
* draft and of workspace settings, and no consumer observes their identity. The handlers that
|
|
8
|
+
* *change* attachments are on {@link useScheduledExportActions}, because they capture the stored
|
|
9
|
+
* export-parameter wire, which must exist once per dialog.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function useScheduledExportAttachments(): {
|
|
14
|
+
selectedAttachments: ("CSV" | "CSV_RAW" | "HTML" | "PDF" | "PDF_SLIDES" | "PDF_TABULAR" | "PNG" | "PPTX" | "XLSX")[];
|
|
15
|
+
isDashboardExportSelected: boolean;
|
|
16
|
+
isCsvExportSelected: boolean;
|
|
17
|
+
isXlsxExportSelected: boolean;
|
|
18
|
+
xlsxSettings: {
|
|
19
|
+
mergeHeaders: boolean;
|
|
20
|
+
exportInfo: boolean;
|
|
21
|
+
};
|
|
22
|
+
pdfSettings: {
|
|
23
|
+
pageSize: import("../utils/pdfPageSize.js").PdfPageSize;
|
|
24
|
+
orientation: "landscape" | "portrait";
|
|
25
|
+
exportInfo: boolean;
|
|
26
|
+
};
|
|
27
|
+
csvSettings: {
|
|
28
|
+
delimiter: string;
|
|
29
|
+
};
|
|
30
|
+
csvRawSettings: {
|
|
31
|
+
delimiter: string;
|
|
32
|
+
};
|
|
33
|
+
slidesTemplateIds: {
|
|
34
|
+
PPTX: string | undefined;
|
|
35
|
+
PDF_SLIDES: string | undefined;
|
|
36
|
+
PDF: string | undefined;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useScheduledExportAttachments.d.ts.map
|
package/esm/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScheduledExportAttachments.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/useScheduledExportAttachments.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;EAwH5C"}
|