@gooddata/sdk-ui-dashboard 11.54.0-alpha.4 → 11.54.0-alpha.5
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 +92923 -17333
- 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/_staging/layout/coordinates.mock.d.ts +17 -0
- package/esm/_staging/layout/coordinates.mock.d.ts.map +1 -0
- package/esm/_staging/layout/coordinates.mock.js +103 -0
- package/esm/index.d.ts +2 -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/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/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/model/fixtures/CatalogAvailability.fixtures.d.ts +14 -0
- package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/CatalogAvailability.fixtures.js +57 -0
- package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts +56 -0
- package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/ComplexDashboard.fixtures.js +71 -0
- package/esm/model/fixtures/Dashboard.fixtures.d.ts +10 -0
- package/esm/model/fixtures/Dashboard.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/Dashboard.fixtures.js +13 -0
- package/esm/model/fixtures/Insights.fixtures.d.ts +6 -0
- package/esm/model/fixtures/Insights.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/Insights.fixtures.js +11 -0
- package/esm/model/fixtures/Layout.fixtures.d.ts +14 -0
- package/esm/model/fixtures/Layout.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/Layout.fixtures.js +115 -0
- package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts +46 -0
- package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/SimpleDashboard.fixtures.js +315 -0
- package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts +28 -0
- package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.js +40 -0
- 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.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +25 -13
- 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/state/fixtures.d.ts +13 -0
- package/esm/presentation/automations/alerting/state/fixtures.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/fixtures.js +37 -0
- package/esm/presentation/automations/alerting/types.d.ts +42 -2
- package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +24 -5
- 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/fixtures.d.ts +18 -0
- package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/fixtures.js +105 -0
- package/esm/presentation/automations/scheduledEmail/types.d.ts +52 -3
- package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts +5 -0
- package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts.map +1 -0
- package/esm/presentation/automations/shared/automationFilters/parameterFixtures.js +22 -0
- package/esm/presentation/automations/shared/slots/types.d.ts +67 -1
- package/esm/presentation/automations/shared/slots/types.d.ts.map +1 -1
- package/esm/presentation/automations/shared/test/fixtures.d.ts +9 -0
- package/esm/presentation/automations/shared/test/fixtures.d.ts.map +1 -0
- package/esm/presentation/automations/shared/test/fixtures.js +101 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts +17 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.js +18 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts +12 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.js +26 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts +20 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.js +95 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts +14 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.js +9 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts +9 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.js +17 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts +6 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.js +10 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts +9 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.js +14 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts +8 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.js +49 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts +7 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.js +33 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts +62 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.js +2 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts +11 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.js +4 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts +8 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.js +28 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts +26 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.js +21 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +1 -1
- package/esm/sdk-ui-dashboard.d.ts +172 -5
- package/package.json +21 -21
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.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,EACR,EAAE,2BAA2B,2CA2jB7B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,2BAA2B,2CAcvE"}
|
package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js
CHANGED
|
@@ -8,7 +8,6 @@ import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../../constants/zIndex.js";
|
|
|
8
8
|
import { IntlWrapper } from "../../../localization/IntlWrapper.js";
|
|
9
9
|
import { useAlertingDialogContext } from "../../contexts/AlertingDialogContext.js";
|
|
10
10
|
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
11
|
-
import { RecipientsSelect } from "../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js";
|
|
12
11
|
import { ApplyCurrentFiltersConfirmDialog } from "../../shared/automationFilters/components/ApplyLatestFiltersConfirmDialog.js";
|
|
13
12
|
import { DeleteAlertConfirmDialog } from "../DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.js";
|
|
14
13
|
import { useAlertActions } from "../state/AlertActionsContext.js";
|
|
@@ -17,14 +16,15 @@ import { useAlertDraft } from "../state/AlertDraftContext.js";
|
|
|
17
16
|
import { useAlertFilters } from "../state/AlertFiltersContext.js";
|
|
18
17
|
import { useAlertDialogValidity } from "../state/useAlertDialogValidity.js";
|
|
19
18
|
import { useAlertSelectedValues } from "../state/useAlertSelectedValues.js";
|
|
19
|
+
import { AlertingDialogDestination } from "./AlertingDialogDestination.js";
|
|
20
20
|
import { AlertingDialogFilters } from "./AlertingDialogFilters.js";
|
|
21
21
|
import { AlertingDialogHeader } from "./AlertingDialogHeader.js";
|
|
22
|
+
import { AlertingDialogRecipients } from "./AlertingDialogRecipients.js";
|
|
22
23
|
import { AlertAttributeSelect } from "./components/AlertAttributeSelect.js";
|
|
23
24
|
import { AlertComparisonOperatorSelect } from "./components/AlertComparisonOperatorSelect.js";
|
|
24
25
|
//
|
|
25
26
|
//
|
|
26
27
|
import { AlertComparisonPeriodSelect } from "./components/AlertComparisonPeriodSelect.js";
|
|
27
|
-
import { AlertDestinationSelect } from "./components/AlertDestinationSelect.js";
|
|
28
28
|
import { AlertGranularitySelect } from "./components/AlertGranularitySelect.js";
|
|
29
29
|
import { AlertMeasureSelect } from "./components/AlertMeasureSelect.js";
|
|
30
30
|
import { AlertSensitivitySelect } from "./components/AlertSensitivitySelect.js";
|
|
@@ -33,6 +33,7 @@ import { AlertTriggerIntervalSelect } from "./components/AlertTriggerIntervalSel
|
|
|
33
33
|
import { AlertTriggerModeSelect } from "./components/AlertTriggerModeSelect.js";
|
|
34
34
|
import { ALERTING_DIALOG_ID } from "./constants.js";
|
|
35
35
|
import { DefaultLoadingAlertingDialog } from "./DefaultLoadingAlertingDialog.js";
|
|
36
|
+
import { FormField } from "./FormField.js";
|
|
36
37
|
import { useAlertSubmit } from "./hooks/useAlertSubmit.js";
|
|
37
38
|
import { useAlertThreshold } from "./hooks/useAlertThreshold.js";
|
|
38
39
|
import { getValueSuffix } from "./utils/getters.js";
|
|
@@ -44,6 +45,8 @@ const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z
|
|
|
44
45
|
export function AlertingDialogRenderer({ onCancel, onDeleteSuccess, onDeleteError, onError, onSuccess, onSaveError, onSaveSuccess, slots, }) {
|
|
45
46
|
const HeaderSlot = slots?.Header;
|
|
46
47
|
const FiltersSlot = slots?.Filters;
|
|
48
|
+
const DestinationSlot = slots?.Destination;
|
|
49
|
+
const RecipientsSlot = slots?.Recipients;
|
|
47
50
|
const intl = useIntl();
|
|
48
51
|
const dialogTitleRef = useRef(null);
|
|
49
52
|
const { isWhiteLabeled, isSecondaryTitleVisible, externalRecipient: externalRecipientOverride, maxAutomationsRecipients, isExecutionTimestampMode, features: { enableAlertOncePerInterval, enableAnomalyDetectionAlert, canUseAiAssistant: enableAiAssistant, }, catalogAttributes, catalogDateDatasets, separators, allowHourlyRecurrence, } = useAutomationsContext();
|
|
@@ -53,7 +56,7 @@ export function AlertingDialogRenderer({ onCancel, onDeleteSuccess, onDeleteErro
|
|
|
53
56
|
onDeleteSuccess?.(alert);
|
|
54
57
|
setAlertToDelete(null);
|
|
55
58
|
};
|
|
56
|
-
const { editedAutomation,
|
|
59
|
+
const { editedAutomation, warningMessage } = useAlertDraft();
|
|
57
60
|
const { onTitleChange, onRecipientsChange, onMeasureChange, onAttributeChange, onComparisonOperatorChange, onRelativeOperatorChange, onAnomalyDetectionChange, onComparisonTypeChange, onDestinationChange, onTriggerModeChange, onTriggerIntervalChange, onSensitivityChange, onGranularityChange, setEditedAutomation, } = useAlertActions();
|
|
58
61
|
const { supportedMeasures, supportedAttributes, isResultLoading, getAttributeValues, defaultUser, getMetricValue, } = useAlertData();
|
|
59
62
|
const { selectedFilters, availableFilters, onFiltersChange, onApplyCurrentFilters, automationIsValid, filtersAreStale, automationParameters, availableParameters, onParameterChange, onParameterDelete, onParameterAdd, dropStaleParameters, } = useAlertFilters();
|
|
@@ -128,6 +131,23 @@ export function AlertingDialogRenderer({ onCancel, onDeleteSuccess, onDeleteErro
|
|
|
128
131
|
onParameterChange,
|
|
129
132
|
onParameterDelete,
|
|
130
133
|
};
|
|
134
|
+
const destinationDefaultProps = {
|
|
135
|
+
notificationChannels,
|
|
136
|
+
selectedNotificationChannelId: editedAutomation?.notificationChannel,
|
|
137
|
+
onChange: onDestinationChange,
|
|
138
|
+
};
|
|
139
|
+
const recipientsDefaultProps = {
|
|
140
|
+
loggedUser: defaultUser,
|
|
141
|
+
value: editedAutomation?.recipients ?? [],
|
|
142
|
+
onChange: onRecipientsChange,
|
|
143
|
+
allowEmptySelection: true,
|
|
144
|
+
allowOnlyLoggedUserRecipients,
|
|
145
|
+
allowExternalRecipients,
|
|
146
|
+
maxRecipients: maxAutomationsRecipients,
|
|
147
|
+
notificationChannels,
|
|
148
|
+
notificationChannelId: editedAutomation?.notificationChannel,
|
|
149
|
+
externalRecipientOverride,
|
|
150
|
+
};
|
|
131
151
|
return (_jsxs(_Fragment, { children: [
|
|
132
152
|
_jsx(Overlay, { className: "gd-notifications-channels-dialog-overlay", isModal: true, positionType: "fixed", ensureVisibility: true, children: _jsx(OverlayControllerProvider, { overlayController: overlayController, children: _jsx(ValidationContextStore, { value: validationContextValue, children: _jsxs(ConfirmDialogBase, { className: "gd-notifications-channels-dialog s-gd-notifications-channels-dialog gd-dialog--wide gd-notifications-channels-dialog--wide", isPositive: true, cancelButtonText: intl.formatMessage({ id: "cancel" }), submitButtonText: alertToEdit
|
|
133
153
|
? intl.formatMessage({ id: `save` })
|
|
@@ -173,14 +193,13 @@ export function AlertingDialogRenderer({ onCancel, onDeleteSuccess, onDeleteErro
|
|
|
173
193
|
] }), htmlFor: "alert.granularity", children: _jsx(AlertGranularitySelect, { id: "alert.granularity", allowHourlyRecurrence: allowHourlyRecurrence, selectedGranularity: selectedGranularity, onGranularityChange: (granularity) => {
|
|
174
194
|
onGranularityChange(selectedMeasure, granularity);
|
|
175
195
|
}, overlayPositionType: OVERLAY_POSITION_TYPE, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL }) })
|
|
176
|
-
] }))] }), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), _jsxs(FormFieldGroup, { label: _jsx(FormattedMessage, { id: "insightAlert.config.do" }), children: [notificationChannels.length > 1
|
|
196
|
+
] }))] }), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), _jsxs(FormFieldGroup, { label: _jsx(FormattedMessage, { id: "insightAlert.config.do" }), children: [notificationChannels.length > 1 ? (DestinationSlot ? (_jsx(DestinationSlot, { Default: AlertingDialogDestination, defaultProps: destinationDefaultProps })) : (_jsx(AlertingDialogDestination, { ...destinationDefaultProps }))) : null, _jsx(FormField, { label: _jsx(FormattedMessage, { id: "insightAlert.config.trigger" }), htmlFor: "alert.trigger", children: _jsx(AlertTriggerModeSelect, { id: "alert.trigger", selectedTriggerMode: editedAutomation?.alert?.trigger.mode ?? "ALWAYS", onTriggerModeChange: onTriggerModeChange, overlayPositionType: OVERLAY_POSITION_TYPE, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL, enableAlertOncePerInterval: enableAlertOncePerInterval }) }), editedAutomation?.alert?.trigger.mode === "ONCE_PER_INTERVAL" ? (_jsx(FormField, { label: _jsxs("div", { className: "gd-dashboard-alerting-dialog-form-field__content-container-tooltip", children: [
|
|
177
197
|
_jsx(FormattedMessage, { id: "insightAlert.config.interval" }), _jsx(UiTooltip, { anchor: _jsx(UiIconButton, { icon: "question", variant: "tertiary", size: "xsmall", accessibilityConfig: {
|
|
178
198
|
ariaLabel: intl.formatMessage({
|
|
179
199
|
id: "insightAlert.config.interval",
|
|
180
200
|
}),
|
|
181
201
|
} }), content: _jsx(FormattedMessage, { id: "insightAlert.config.interval.tooltip" }), arrowPlacement: "left", optimalPlacement: true, offset: 10, width: 280, triggerBy: ["hover", "click"] })
|
|
182
|
-
] }), htmlFor: "alert.interval", children: _jsx(AlertTriggerIntervalSelect, { id: "alert.interval", selectedTriggerInterval: editedAutomation?.alert?.trigger.interval ?? "DAY", onTriggerIntervalChange: onTriggerIntervalChange, overlayPositionType: OVERLAY_POSITION_TYPE, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL }) })) : null, _jsx(
|
|
183
|
-
] }), warningMessage ? (_jsx(Message, { type: "warning", className: "gd-notifications-channels-dialog-error", children: warningMessage })) : null, invalidDatapoints.map((datapoint) => (_jsx(Message, { id: datapoint.id, type: datapoint.severity === "info" ? "progress" : datapoint.severity, className: "gd-notifications-channels-dialog-error gd-notifications-channels-dialog-error-scrollable", children: datapoint.message }, datapoint.id)))] })
|
|
202
|
+
] }), htmlFor: "alert.interval", children: _jsx(AlertTriggerIntervalSelect, { id: "alert.interval", selectedTriggerInterval: editedAutomation?.alert?.trigger.interval ?? "DAY", onTriggerIntervalChange: onTriggerIntervalChange, overlayPositionType: OVERLAY_POSITION_TYPE, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL }) })) : null, RecipientsSlot ? (_jsx(RecipientsSlot, { Default: AlertingDialogRecipients, defaultProps: recipientsDefaultProps })) : (_jsx(AlertingDialogRecipients, { ...recipientsDefaultProps }))] }), warningMessage ? (_jsx(Message, { type: "warning", className: "gd-notifications-channels-dialog-error", children: warningMessage })) : null, invalidDatapoints.map((datapoint) => (_jsx(Message, { id: datapoint.id, type: datapoint.severity === "info" ? "progress" : datapoint.severity, className: "gd-notifications-channels-dialog-error gd-notifications-channels-dialog-error-scrollable", children: datapoint.message }, datapoint.id)))] })
|
|
184
203
|
] }) }) }) }), alertToDelete ? (_jsx(DeleteAlertConfirmDialog, { alert: alertToDelete, onCancel: () => setAlertToDelete(null), onSuccess: handleAlertDeleteSuccess, onError: onDeleteError })) : null] }));
|
|
185
204
|
}
|
|
186
205
|
/**
|
|
@@ -218,13 +237,6 @@ function AlertingDialogFooter({ isWhiteLabeled, helpTextId, alertToEdit, isSavin
|
|
|
218
237
|
const intl = useIntl();
|
|
219
238
|
return (_jsxs("div", { className: "gd-notifications-channels-dialog-footer-link", children: [isWhiteLabeled ? null : (_jsx(Hyperlink, { text: intl.formatMessage({ id: helpTextId }), href: "https://www.gooddata.com/docs/cloud/create-dashboards/automation/alerts/", iconClass: "gd-icon-circle-question" })), alertToEdit ? (_jsx(Button, { className: "gd-button-link-dimmed", value: intl.formatMessage({ id: "delete" }), onClick: onDeleteClick, disabled: isSavingAlert })) : null] }));
|
|
220
239
|
}
|
|
221
|
-
function FormField({ label, children, htmlFor, fullWidth = false, }) {
|
|
222
|
-
return (_jsxs("div", { className: "gd-input-component gd-input-component--no-last-child-margin gd-dashboard-alerting-dialog-form-field", children: [
|
|
223
|
-
_jsx("div", { className: "gd-dashboard-alerting-dialog-form-field__label-container", children: _jsx("label", { className: "gd-label gd-dashboard-alerting-dialog-form-field__label", htmlFor: htmlFor, children: label }) }), _jsx("div", { className: fullWidth
|
|
224
|
-
? "gd-dashboard-alerting-dialog-form-field__content-container-full-width"
|
|
225
|
-
: "gd-dashboard-alerting-dialog-form-field__content-container", children: children })
|
|
226
|
-
] }));
|
|
227
|
-
}
|
|
228
240
|
function FormFieldGroup({ label, children }) {
|
|
229
241
|
return (_jsxs("div", { className: "gd-input-component gd-input-component--no-last-child-margin gd-dashboard-alerting-dialog-form-field-group", children: [
|
|
230
242
|
_jsx("div", { className: "gd-dashboard-alerting-dialog-form-field-group__label-container", children: _jsx("label", { className: "gd-label gd-dashboard-alerting-dialog-form-field-group__label", children: label }) }), _jsx("div", { className: "gd-dashboard-alerting-dialog-form-field-group__content-container", children: children })
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export declare function FormField({ label, children, htmlFor, fullWidth }: {
|
|
3
|
+
label: ReactNode;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
htmlFor?: string;
|
|
6
|
+
fullWidth?: boolean;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=FormField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/alerting/DefaultAlertingDialog/FormField.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAiB,EACpB,EAAE;IACC,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,2CAmBA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function FormField({ label, children, htmlFor, fullWidth = false, }) {
|
|
3
|
+
return (_jsxs("div", { className: "gd-input-component gd-input-component--no-last-child-margin gd-dashboard-alerting-dialog-form-field", children: [
|
|
4
|
+
_jsx("div", { className: "gd-dashboard-alerting-dialog-form-field__label-container", children: _jsx("label", { className: "gd-label gd-dashboard-alerting-dialog-form-field__label", htmlFor: htmlFor, children: label }) }), _jsx("div", { className: fullWidth
|
|
5
|
+
? "gd-dashboard-alerting-dialog-form-field__content-container-full-width"
|
|
6
|
+
: "gd-dashboard-alerting-dialog-form-field__content-container", children: children })
|
|
7
|
+
] }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type IdentifierRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type IAlertingDialogContextValue } from "../../contexts/AlertingDialogContext.js";
|
|
3
|
+
import { type AlertMetric } from "../types.js";
|
|
4
|
+
export declare const AUTOMATIONS_CONTEXT: import("../../contexts/AutomationsContext.js").IAutomationsContextValue;
|
|
5
|
+
export declare const CURRENT_USER: import("@gooddata/sdk-model").IUser;
|
|
6
|
+
export declare const NEXT_FILTER: import("@gooddata/sdk-model").FilterContextItem;
|
|
7
|
+
export declare const SENTINEL_CHANNEL: import("@gooddata/sdk-model").INotificationChannelIdentifier;
|
|
8
|
+
export declare const SENTINEL_WIDGET: import("@gooddata/sdk-model").IInsightWidget;
|
|
9
|
+
export declare const WORKSPACE_PARAMETER: import("@gooddata/sdk-model").IParameterMetadataObject;
|
|
10
|
+
export declare const SENTINEL_MEASURE: AlertMetric;
|
|
11
|
+
export declare const PARAMETER_REF: IdentifierRef;
|
|
12
|
+
export declare const ALERTING_DIALOG_CONTEXT: IAlertingDialogContextValue;
|
|
13
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/alerting/state/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAS3F,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,mBAAmB,yEAA6B,CAAC;AAC9D,eAAO,MAAM,YAAY,qCAAsB,CAAC;AAChD,eAAO,MAAM,WAAW,iDAAqB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,8DAA0B,CAAC;AACxD,eAAO,MAAM,eAAe,8CAAyB,CAAC;AACtD,eAAO,MAAM,mBAAmB,wDAA6B,CAAC;AAE9D,eAAO,MAAM,gBAAgB,EAAE,WAI9B,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,aAA6C,CAAC;AAE1E,eAAO,MAAM,uBAAuB,EAAE,2BAmBrC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { idRef, newMeasure } from "@gooddata/sdk-model";
|
|
3
|
+
import { AUTOMATIONS_CONTEXT as SHARED_AUTOMATIONS_CONTEXT, CURRENT_USER as SHARED_CURRENT_USER, NEXT_FILTER as SHARED_NEXT_FILTER, SENTINEL_CHANNEL as SHARED_SENTINEL_CHANNEL, SENTINEL_WIDGET as SHARED_SENTINEL_WIDGET, WORKSPACE_PARAMETER as SHARED_WORKSPACE_PARAMETER, } from "../../shared/test/fixtures.js";
|
|
4
|
+
export const AUTOMATIONS_CONTEXT = SHARED_AUTOMATIONS_CONTEXT;
|
|
5
|
+
export const CURRENT_USER = SHARED_CURRENT_USER;
|
|
6
|
+
export const NEXT_FILTER = SHARED_NEXT_FILTER;
|
|
7
|
+
export const SENTINEL_CHANNEL = SHARED_SENTINEL_CHANNEL;
|
|
8
|
+
export const SENTINEL_WIDGET = SHARED_SENTINEL_WIDGET;
|
|
9
|
+
export const WORKSPACE_PARAMETER = SHARED_WORKSPACE_PARAMETER;
|
|
10
|
+
export const SENTINEL_MEASURE = {
|
|
11
|
+
measure: newMeasure("m1", (m) => m.localId("m1")),
|
|
12
|
+
isPrimary: true,
|
|
13
|
+
comparators: [],
|
|
14
|
+
};
|
|
15
|
+
// A catalog parameter with a matching workspace definition, so a stored `{ref, value}` override
|
|
16
|
+
// survives `reconstructAutomationParametersFromValues` instead of being dropped as unresolvable.
|
|
17
|
+
export const PARAMETER_REF = idRef("param-1", "parameter");
|
|
18
|
+
export const ALERTING_DIALOG_CONTEXT = {
|
|
19
|
+
mode: "create",
|
|
20
|
+
widget: SENTINEL_WIDGET,
|
|
21
|
+
insight: undefined,
|
|
22
|
+
widgetTitle: undefined,
|
|
23
|
+
dashboardId: undefined,
|
|
24
|
+
dashboardFilters: [],
|
|
25
|
+
hiddenFilters: [],
|
|
26
|
+
executionResultByRef: () => undefined,
|
|
27
|
+
parameterValues: [],
|
|
28
|
+
dashboardParameters: [],
|
|
29
|
+
commonDateFilterId: undefined,
|
|
30
|
+
dashboardEvaluationFrequency: undefined,
|
|
31
|
+
createAlert: () => Promise.reject(new Error("not wired in tests")),
|
|
32
|
+
saveAlert: () => Promise.reject(new Error("not wired in tests")),
|
|
33
|
+
deleteAlert: () => Promise.resolve(),
|
|
34
|
+
alertToEdit: undefined,
|
|
35
|
+
notificationChannels: [SENTINEL_CHANNEL],
|
|
36
|
+
isLoading: false,
|
|
37
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ComponentType, type ReactNode, type Ref } from "react";
|
|
2
2
|
import { type DateAttributeGranularity, type IAttribute, type IAutomationMetadataObject, type IDataSetMetadataObject, type IInsight, type IMeasure, type INotificationChannelIdentifier, type INotificationChannelMetadataObject, type IWidget } from "@gooddata/sdk-model";
|
|
3
3
|
import { type GoodDataSdkError } from "@gooddata/sdk-ui";
|
|
4
|
-
import { type IAutomationDialogFiltersProps, type IAutomationDialogHeaderProps, type ISlotProps } from "../shared/slots/types.js";
|
|
4
|
+
import { type IAutomationDialogDestinationProps, type IAutomationDialogFiltersProps, type IAutomationDialogHeaderProps, type IAutomationDialogRecipientsProps, type ISlotProps } from "../shared/slots/types.js";
|
|
5
5
|
/**
|
|
6
6
|
* @alpha
|
|
7
7
|
*/
|
|
@@ -138,6 +138,24 @@ export interface IAlertingDialogSlots {
|
|
|
138
138
|
* updated array, not a delta.
|
|
139
139
|
*/
|
|
140
140
|
Filters?: ComponentType<ISlotProps<IAlertingDialogFiltersProps>>;
|
|
141
|
+
/**
|
|
142
|
+
* Wraps or replaces the dialog's destination region (the "Action" row selecting the
|
|
143
|
+
* notification channel). Must have a stable reference identity — see {@link ISlotProps}.
|
|
144
|
+
*
|
|
145
|
+
* Renders only in the fully rendered dialog — not while the dialog context reports loading,
|
|
146
|
+
* not while the stale-filters confirmation step is shown — **and only when more than one
|
|
147
|
+
* notification channel exists**: with a single channel the default dialog hides the whole
|
|
148
|
+
* row, and the slot with it.
|
|
149
|
+
*/
|
|
150
|
+
Destination?: ComponentType<ISlotProps<IAutomationDialogDestinationProps>>;
|
|
151
|
+
/**
|
|
152
|
+
* Wraps or replaces the dialog's recipients region. Must have a stable reference identity —
|
|
153
|
+
* see {@link ISlotProps}.
|
|
154
|
+
*
|
|
155
|
+
* Renders only in the fully rendered dialog: not while the dialog context reports loading,
|
|
156
|
+
* and not while the stale-filters confirmation step is shown.
|
|
157
|
+
*/
|
|
158
|
+
Recipients?: ComponentType<ISlotProps<IAutomationDialogRecipientsProps>>;
|
|
141
159
|
}
|
|
142
160
|
/**
|
|
143
161
|
* Props of {@link DefaultAlertingDialog}.
|
|
@@ -145,7 +163,9 @@ export interface IAlertingDialogSlots {
|
|
|
145
163
|
* @remarks
|
|
146
164
|
* Extends the shared {@link IAlertingDialogProps} with customization only the default implementation
|
|
147
165
|
* supports. Slots render only in the fully rendered dialog: not while the dialog context reports
|
|
148
|
-
* loading, and not while the stale-filters confirmation step is shown.
|
|
166
|
+
* loading, and not while the stale-filters confirmation step is shown. The Destination slot
|
|
167
|
+
* additionally renders only when more than one notification channel exists — see
|
|
168
|
+
* {@link IAlertingDialogSlots.Destination}.
|
|
149
169
|
*
|
|
150
170
|
* @alpha
|
|
151
171
|
*/
|
|
@@ -153,6 +173,26 @@ export interface IDefaultAlertingDialogProps extends IAlertingDialogProps {
|
|
|
153
173
|
/**
|
|
154
174
|
* Section-level overrides. Each slot receives `{ Default, defaultProps }` and may render its own
|
|
155
175
|
* content (replace) or `<Default {...defaultProps} />` inside its own markup (wrap).
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* The dialog is reached through the `Dashboard` component override; define slot components at
|
|
179
|
+
* module scope (see {@link ISlotProps}):
|
|
180
|
+
* ```tsx
|
|
181
|
+
* function HeaderWithBanner({ Default, defaultProps }: ISlotProps<AlertingDialogHeaderDefaultProps>) {
|
|
182
|
+
* return (
|
|
183
|
+
* <>
|
|
184
|
+
* <WarningBanner>Alerts may take up to 5 minutes.</WarningBanner>
|
|
185
|
+
* <Default {...defaultProps} />
|
|
186
|
+
* </>
|
|
187
|
+
* );
|
|
188
|
+
* }
|
|
189
|
+
*
|
|
190
|
+
* <Dashboard
|
|
191
|
+
* AlertingDialogComponent={(props) => (
|
|
192
|
+
* <DefaultAlertingDialog {...props} slots={{ Header: HeaderWithBanner }} />
|
|
193
|
+
* )}
|
|
194
|
+
* />;
|
|
195
|
+
* ```
|
|
156
196
|
*/
|
|
157
197
|
slots?: IAlertingDialogSlots;
|
|
158
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/alerting/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACH,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,UAAU,EAClB,MAAM,0BAA0B,CAAC;AAMlC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,yBAAyB,CAAC;IAExC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,eAAe,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAE7D;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC5E;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,GAAG;IACxE,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,2BAA4B,SAAQ,6BAA6B;IAC9E;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAErE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/alerting/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx"],"names":[],"mappings":"AA+CA,OAAO,EACH,KAAK,iCAAiC,EAKzC,MAAM,aAAa,CAAC;AA8DrB,wBAAgB,2BAA2B,CAAC,EACxC,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,MAAM,EACN,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,KAAK,EACR,EAAE,iCAAiC,2CAglBnC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iCAAiC,2CAYnF"}
|
|
@@ -23,19 +23,18 @@ import { isMobileView } from "../utils/responsive.js";
|
|
|
23
23
|
import { TIMEZONE_DEFAULT } from "../utils/timezone.js";
|
|
24
24
|
import { DashboardAttachments } from "./components/Attachments/DashboardAttachments.js";
|
|
25
25
|
import { WidgetAttachments } from "./components/Attachments/WidgetAttachments.js";
|
|
26
|
-
import { DestinationSelect } from "./components/DestinationSelect/DestinationSelect.js";
|
|
27
26
|
import { EvaluationModeCheckbox } from "./components/EvaluationModeCheckbox/EvaluationModeCheckbox.js";
|
|
28
27
|
import { ScheduledEmailDialogHeader } from "./components/Header/ScheduleEmailDialogHeader.js";
|
|
29
28
|
import { MessageForm } from "./components/MessageForm/MessageForm.js";
|
|
30
|
-
import {
|
|
29
|
+
import { ScheduledEmailDialogDestination } from "./components/ScheduledEmailDialogDestination.js";
|
|
31
30
|
import { ScheduledEmailDialogFilters } from "./components/ScheduledEmailDialogFilters.js";
|
|
31
|
+
import { ScheduledEmailDialogRecipients } from "./components/ScheduledEmailDialogRecipients.js";
|
|
32
32
|
import { ScheduleTimezoneSelect } from "./components/ScheduleTimezoneSelect/ScheduleTimezoneSelect.js";
|
|
33
33
|
import { SubjectForm } from "./components/SubjectForm/SubjectForm.js";
|
|
34
34
|
import { SCHEDULED_EMAIL_DIALOG_ID } from "./constants.js";
|
|
35
35
|
import { DefaultLoadingScheduledEmailDialog } from "./DefaultLoadingScheduledEmailDialog.js";
|
|
36
36
|
import { useElementHeightSnapshot } from "./hooks/useElementHeightSnapshot.js";
|
|
37
37
|
import { useSaveScheduledEmailToBackend } from "./hooks/useSaveScheduledEmailToBackend.js";
|
|
38
|
-
const OVERLAY_POSITION_TYPE = "sameAsTarget";
|
|
39
38
|
const CLOSE_ON_PARENT_SCROLL = true;
|
|
40
39
|
const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX);
|
|
41
40
|
function ScheduledEmailDialogFooter({ isWhiteLabeled, helpTextId, scheduledExportToEdit, isSavingScheduledEmail, onDeleteClick, }) {
|
|
@@ -46,6 +45,8 @@ export function ScheduledMailDialogRenderer({ onBack, onCancel, onDeleteSuccess,
|
|
|
46
45
|
const HeaderSlot = slots?.Header;
|
|
47
46
|
const FiltersSlot = slots?.Filters;
|
|
48
47
|
const TimezoneSlot = slots?.Timezone;
|
|
48
|
+
const DestinationSlot = slots?.Destination;
|
|
49
|
+
const RecipientsSlot = slots?.Recipients;
|
|
49
50
|
const intl = useIntl();
|
|
50
51
|
const dialogTitleRef = useRef(null);
|
|
51
52
|
const generalTabContentRef = useRef(null);
|
|
@@ -59,7 +60,7 @@ export function ScheduledMailDialogRenderer({ onBack, onCancel, onDeleteSuccess,
|
|
|
59
60
|
setScheduledEmailToDelete(null);
|
|
60
61
|
};
|
|
61
62
|
const { locale, dashboardTitle, dateFormat, weekStart, maxAutomationsRecipients, allowHourlyRecurrence, isCrossFiltering, isExecutionTimestampMode, isSlidesExportEnabled, isAccessibilityModeEnabled, enableAutomationEvaluationMode, } = useDefaultScheduledEmailDialogData();
|
|
62
|
-
const { editedAutomation,
|
|
63
|
+
const { editedAutomation, startDate, isTimezoneFeatureEnabled, canSelectScheduleTimezone, scheduleTimezoneSelection, defaultResolvedTimezone, scheduleTimezoneIsStale, } = useScheduledExportDraft();
|
|
63
64
|
const { onTitleChange, onRecurrenceChange, onEvaluationModeChange, onDestinationChange, onRecipientsChange, onSubjectChange, onMessageChange, onDashboardAttachmentsChange, onWidgetAttachmentsChange, onXlsxSettingsChange, onPdfSettingsChange, onCsvSettingsChange, onCsvRawSettingsChange, onSlidesTemplateIdChange, onScheduleTimezoneChange, applyCurrentScheduleTimezone, } = useScheduledExportActions();
|
|
64
65
|
const { defaultUser } = useScheduledExportData();
|
|
65
66
|
const { selectedFilters, availableFilters, storeFilters, filtersByTab, editedFiltersByTab, onFiltersChange, onFiltersByTabChange, onApplyCurrentFilters, onStoreFiltersChange, automationIsValid, parametersEnabled, visibleParametersByTab, availableParametersByTab, flatTabId, onParameterAdd, onParameterChange, onParameterDelete, onParameterAddByTab, onParameterChangeByTab, onParameterDeleteByTab, applyLatest: applyLatestParameters, } = useScheduledExportFilters();
|
|
@@ -174,6 +175,24 @@ export function ScheduledMailDialogRenderer({ onBack, onCancel, onDeleteSuccess,
|
|
|
174
175
|
onParameterDeleteByTab,
|
|
175
176
|
parametersEnabled,
|
|
176
177
|
};
|
|
178
|
+
const destinationDefaultProps = {
|
|
179
|
+
notificationChannels,
|
|
180
|
+
selectedNotificationChannelId: editedAutomation.notificationChannel,
|
|
181
|
+
onChange: onDestinationChange,
|
|
182
|
+
};
|
|
183
|
+
const recipientsDefaultProps = {
|
|
184
|
+
loggedUser: defaultUser,
|
|
185
|
+
value: editedAutomation.recipients ?? [],
|
|
186
|
+
onChange: onRecipientsChange,
|
|
187
|
+
allowEmptySelection: true,
|
|
188
|
+
allowOnlyLoggedUserRecipients,
|
|
189
|
+
allowExternalRecipients,
|
|
190
|
+
maxRecipients: maxAutomationsRecipients,
|
|
191
|
+
notificationChannels,
|
|
192
|
+
notificationChannelId: editedAutomation.notificationChannel,
|
|
193
|
+
onKeyDownSubmit: handleSubmitForm,
|
|
194
|
+
externalRecipientOverride,
|
|
195
|
+
};
|
|
177
196
|
return (_jsxs(_Fragment, { children: [
|
|
178
197
|
_jsx(Overlay, { className: "gd-notifications-channels-dialog-overlay", isModal: true, positionType: "fixed", ensureVisibility: true, children: _jsx(OverlayControllerProvider, { overlayController: overlayController, children: _jsx(ValidationContextStore, { value: validationContextValue, children: _jsxs(ConfirmDialogBase, { className: "gd-notifications-channels-dialog s-gd-notifications-channels-dialog gd-dialog--wide gd-notifications-channels-dialog--wide", isPositive: true, cancelButtonText: intl.formatMessage({ id: "cancel" }), submitButtonText: scheduledExportToEdit
|
|
179
198
|
? intl.formatMessage({ id: `dialogs.schedule.email.save` })
|
|
@@ -230,7 +249,7 @@ export function ScheduledMailDialogRenderer({ onBack, onCancel, onDeleteSuccess,
|
|
|
230
249
|
? getTimezoneDisplayLabel(editedAutomation.schedule?.timezone ??
|
|
231
250
|
TIMEZONE_DEFAULT.identifier)
|
|
232
251
|
: (editedAutomation.schedule?.timezone ??
|
|
233
|
-
TIMEZONE_DEFAULT.identifier), dateFormat: dateFormat ?? "MM/dd/yyyy", locale: locale, weekStart: weekStart, onChange: onRecurrenceChange, allowHourlyRecurrence: allowHourlyRecurrence, isWhiteLabeled: isWhiteLabeled, closeDropdownsOnParentScroll: CLOSE_ON_PARENT_SCROLL, onKeyDownSubmit: handleSubmitForm }), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), _jsx(
|
|
252
|
+
TIMEZONE_DEFAULT.identifier), dateFormat: dateFormat ?? "MM/dd/yyyy", locale: locale, weekStart: weekStart, onChange: onRecurrenceChange, allowHourlyRecurrence: allowHourlyRecurrence, isWhiteLabeled: isWhiteLabeled, closeDropdownsOnParentScroll: CLOSE_ON_PARENT_SCROLL, onKeyDownSubmit: handleSubmitForm }), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), DestinationSlot ? (_jsx(DestinationSlot, { Default: ScheduledEmailDialogDestination, defaultProps: destinationDefaultProps })) : (_jsx(ScheduledEmailDialogDestination, { ...destinationDefaultProps })), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), RecipientsSlot ? (_jsx(RecipientsSlot, { Default: ScheduledEmailDialogRecipients, defaultProps: recipientsDefaultProps })) : (_jsx(ScheduledEmailDialogRecipients, { ...recipientsDefaultProps })), isInPlatformChannel ? null : (_jsxs(_Fragment, { children: [
|
|
234
253
|
_jsx(SubjectForm, { dashboardTitle: dashboardTitle, editedAutomation: editedAutomation, onChange: onSubjectChange, onKeyDownSubmit: handleSaveScheduledEmail, isSubmitDisabled: isSubmitDisabled }), _jsx(MessageForm, { onChange: onMessageChange, value: editedAutomation.details?.message ?? "" })
|
|
235
254
|
] })), widget ? (_jsx(WidgetAttachments, { selectedAttachments: selectedAttachments, onWidgetAttachmentsChange: onWidgetAttachmentsChange, xlsxSettings: xlsxSettings, pdfSettings: pdfSettings, onXlsxSettingsChange: onXlsxSettingsChange, onPdfSettingsChange: onPdfSettingsChange, csvSettings: csvSettings, onCsvSettingsChange: onCsvSettingsChange, csvRawSettings: csvRawSettings, onCsvRawSettingsChange: onCsvRawSettingsChange, isSlidesExportEnabled: isSlidesExportEnabled, isAccessibilityModeEnabled: isAccessibilityModeEnabled, exportTemplates: exportTemplates, slidesTemplateIds: slidesTemplateIds, onSlidesTemplateIdChange: onSlidesTemplateIdChange })) : (_jsx(DashboardAttachments, { selectedAttachments: selectedAttachments, dashboardFilters: dashboardFilters, isCrossFiltering: isCrossFiltering, onDashboardAttachmentsChange: onDashboardAttachmentsChange, xlsxSettings: xlsxSettings, onXlsxSettingsChange: onXlsxSettingsChange, isSlidesExportEnabled: isSlidesExportEnabled, exportTemplates: exportTemplates, slidesTemplateIds: slidesTemplateIds, onSlidesTemplateIdChange: onSlidesTemplateIdChange })), canSelectScheduleTimezone ? (TimezoneSlot ? (_jsx(TimezoneSlot, { Default: ScheduleTimezoneSelect, defaultProps: timezoneDefaultProps })) : (_jsx(ScheduleTimezoneSelect, { ...timezoneDefaultProps }))) : null, enableAutomationEvaluationMode ? (_jsx(EvaluationModeCheckbox, { isShared: editedAutomation.evaluationMode === "SHARED", onChange: onEvaluationModeChange })) : null, errorMessage ? (_jsx(Message, { type: "error", className: cx("gd-notifications-channels-dialog-error", {
|
|
236
255
|
"gd-notifications-channels-dialog-error-scrollable": true,
|
|
@@ -5,10 +5,6 @@ interface IRecipientsSelectProps {
|
|
|
5
5
|
* Currently selected recipients.
|
|
6
6
|
*/
|
|
7
7
|
value: IAutomationRecipient[];
|
|
8
|
-
/**
|
|
9
|
-
* Originally selected recipients of a edited schedule
|
|
10
|
-
*/
|
|
11
|
-
originalValue: IAutomationRecipient[];
|
|
12
8
|
/**
|
|
13
9
|
* Callback to be called, when recipients are changed.
|
|
14
10
|
*/
|
|
@@ -62,6 +58,6 @@ interface IRecipientsSelectProps {
|
|
|
62
58
|
*/
|
|
63
59
|
externalRecipientOverride?: string;
|
|
64
60
|
}
|
|
65
|
-
export declare function RecipientsSelect({ id, value,
|
|
61
|
+
export declare function RecipientsSelect({ id, value, onChange, loggedUser, allowEmptySelection, allowExternalRecipients, allowOnlyLoggedUserRecipients, maxRecipients, className, notificationChannels, notificationChannelId, showLabel, onKeyDownSubmit, externalRecipientOverride }: IRecipientsSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
66
62
|
export {};
|
|
67
63
|
//# sourceMappingURL=RecipientsSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecipientsSelect.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAIpD,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAU7B,UAAU,sBAAsB;IAC5B;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,
|
|
1
|
+
{"version":3,"file":"RecipientsSelect.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAIpD,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAU7B,UAAU,sBAAsB;IAC5B;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAE5D;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAElC;;OAEG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,EAAE,EACF,KAAK,EACL,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,SAAgB,EAChB,eAAe,EACf,yBAAyB,EAC5B,EAAE,sBAAsB,2CAuExB"}
|
|
@@ -8,7 +8,7 @@ import { createUser, matchRecipient } from "../../../utils/users.js";
|
|
|
8
8
|
import { isEmail } from "../../../utils/validate.js";
|
|
9
9
|
import { RecipientsSelectRenderer } from "./RecipientsSelectRenderer.js";
|
|
10
10
|
import { useWorkspaceUsersSearch } from "./useWorkspaceUsersSearch.js";
|
|
11
|
-
export function RecipientsSelect({ id, value,
|
|
11
|
+
export function RecipientsSelect({ id, value, onChange, loggedUser, allowEmptySelection, allowExternalRecipients, allowOnlyLoggedUserRecipients, maxRecipients, className, notificationChannels, notificationChannelId, showLabel = true, onKeyDownSubmit, externalRecipientOverride, }) {
|
|
12
12
|
const isServerSearch = !externalRecipientOverride && !allowOnlyLoggedUserRecipients;
|
|
13
13
|
const { search, users, usersError, isLoading, onSearch, onActivate } = useWorkspaceUsersSearch({
|
|
14
14
|
enabled: isServerSearch,
|
|
@@ -39,6 +39,6 @@ export function RecipientsSelect({ id, value, originalValue, onChange, loggedUse
|
|
|
39
39
|
const hasSettledResults = !isLoading && (isServerSearch ? users !== undefined : Boolean(search));
|
|
40
40
|
const announcedResultValues = useMemo(() => options.slice(0, DETAILED_ANNOUNCEMENT_THRESHOLD).map((option) => option.name ?? option.id), [options]);
|
|
41
41
|
return (_jsxs(_Fragment, { children: [
|
|
42
|
-
_jsx(UiSearchResultsAnnouncement, { totalResults: hasSettledResults ? options.length : undefined, resultValues: announcedResultValues }), _jsx(RecipientsSelectRenderer, { id: id, canListUsersInProject: true, isMulti: true, options: options, value: value,
|
|
42
|
+
_jsx(UiSearchResultsAnnouncement, { totalResults: hasSettledResults ? options.length : undefined, resultValues: announcedResultValues }), _jsx(RecipientsSelectRenderer, { id: id, canListUsersInProject: true, isMulti: true, options: options, value: value, onChange: onChange, onSearch: onSearch, onActivate: onActivate, isLoading: isLoading, loggedUser: loggedUser, allowOnlyLoggedUserRecipients: allowOnlyLoggedUserRecipients, allowEmptySelection: allowEmptySelection, allowExternalRecipients: allowExternalRecipients, maxRecipients: maxRecipients, className: className, notificationChannel: notificationChannel, usersError: usersError, showLabel: showLabel, onKeyDownSubmit: onKeyDownSubmit, externalRecipientOverride: externalRecipientOverride })
|
|
43
43
|
] }));
|
|
44
44
|
}
|
|
@@ -6,10 +6,6 @@ export interface IRecipientsSelectRendererProps {
|
|
|
6
6
|
* Currently selected recipients.
|
|
7
7
|
*/
|
|
8
8
|
value: IAutomationRecipient[];
|
|
9
|
-
/**
|
|
10
|
-
* Originally selected recipients of a edited schedule
|
|
11
|
-
*/
|
|
12
|
-
originalValue: IAutomationRecipient[];
|
|
13
9
|
/**
|
|
14
10
|
* Recipients to display in the autocomplete.
|
|
15
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecipientsSelectRenderer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqE,MAAM,OAAO,CAAC;AAiB9G,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAE1C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,kBAAkB,CAAC;AA8F1B,MAAM,WAAW,8BAA8B;IAC3C;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,
|
|
1
|
+
{"version":3,"file":"RecipientsSelectRenderer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqE,MAAM,OAAO,CAAC;AAiB9G,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAE1C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,kBAAkB,CAAC;AA8F1B,MAAM,WAAW,8BAA8B;IAC3C;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAEhC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAElC;;OAEG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,8BAA8B,GAAG,kCAAkC,CAAC;IAE1F;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC;AAQD,eAAO,MAAM,wBAAwB,sEA+vBnC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type IAutomationDialogDestinationProps } from "../../../shared/slots/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the scheduled email dialog's destination region.
|
|
4
|
+
*/
|
|
5
|
+
export declare function ScheduledEmailDialogDestination({ notificationChannels, selectedNotificationChannelId, onChange }: IAutomationDialogDestinationProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=ScheduledEmailDialogDestination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduledEmailDialogDestination.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,gCAAgC,CAAC;AAOxF;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAC5C,oBAAoB,EACpB,6BAA6B,EAC7B,QAAQ,EACX,EAAE,iCAAiC,2CAUnC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DestinationSelect } from "./DestinationSelect/DestinationSelect.js";
|
|
3
|
+
const OVERLAY_POSITION_TYPE = "sameAsTarget";
|
|
4
|
+
const CLOSE_ON_PARENT_SCROLL = true;
|
|
5
|
+
/**
|
|
6
|
+
* Default implementation of the scheduled email dialog's destination region.
|
|
7
|
+
*/
|
|
8
|
+
export function ScheduledEmailDialogDestination({ notificationChannels, selectedNotificationChannelId, onChange, }) {
|
|
9
|
+
return (_jsx(DestinationSelect, { notificationChannels: notificationChannels, selectedItemId: selectedNotificationChannelId, onChange: onChange, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL, overlayPositionType: OVERLAY_POSITION_TYPE }));
|
|
10
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type IScheduledEmailDialogRecipientsProps } from "../../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of the scheduled email dialog's recipients region.
|
|
4
|
+
*/
|
|
5
|
+
export declare function ScheduledEmailDialogRecipients(props: IScheduledEmailDialogRecipientsProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=ScheduledEmailDialogRecipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduledEmailDialogRecipients.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AAI3E;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oCAAoC,2CAEzF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { RecipientsSelect } from "./RecipientsSelect/RecipientsSelect.js";
|
|
3
|
+
/**
|
|
4
|
+
* Default implementation of the scheduled email dialog's recipients region.
|
|
5
|
+
*/
|
|
6
|
+
export function ScheduledEmailDialogRecipients(props) {
|
|
7
|
+
return _jsx(RecipientsSelect, { id: "schedule.email.recipients", ...props });
|
|
8
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type DashboardAttachmentType, type IAutomationMetadataObjectDefinition, type IExportDefinitionDashboardRequestPayload, type IExportDefinitionVisualizationObjectRequestPayload, type IInsight, type IWidget, type WidgetAttachmentType } from "@gooddata/sdk-model";
|
|
2
|
+
import { type IScheduledEmailDialogContextValue } from "../../contexts/ScheduledEmailDialogContext.js";
|
|
3
|
+
import { type IScheduledExportDataContextValue } from "./ScheduledExportDataContext.js";
|
|
4
|
+
import { type IScheduledExportDraftContextValue } from "./ScheduledExportDraftContext.js";
|
|
5
|
+
export declare const AUTOMATIONS_CONTEXT: import("../../contexts/AutomationsContext.js").IAutomationsContextValue;
|
|
6
|
+
export declare const CURRENT_USER: import("@gooddata/sdk-model").IUser;
|
|
7
|
+
export declare const NEXT_FILTER: import("@gooddata/sdk-model").FilterContextItem;
|
|
8
|
+
export declare const SENTINEL_CHANNEL: import("@gooddata/sdk-model").INotificationChannelIdentifier;
|
|
9
|
+
export declare const WORKSPACE_PARAMETER: import("@gooddata/sdk-model").IParameterMetadataObject;
|
|
10
|
+
export declare const SENTINEL_WIDGET: IWidget;
|
|
11
|
+
export declare const SENTINEL_INSIGHT: IInsight;
|
|
12
|
+
export declare const SCHEDULED_EMAIL_DIALOG_CONTEXT: IScheduledEmailDialogContextValue;
|
|
13
|
+
export declare const DRAFT_FIXTURE: IScheduledExportDraftContextValue;
|
|
14
|
+
export declare const DATA_FIXTURE: IScheduledExportDataContextValue;
|
|
15
|
+
export declare const makeDashboardExportDefinition: (format: DashboardAttachmentType, requestPayloadOverrides?: Partial<IExportDefinitionDashboardRequestPayload>) => import("@gooddata/sdk-model").IExportDefinitionMetadataObject | import("@gooddata/sdk-model").IExportDefinitionMetadataObjectDefinition;
|
|
16
|
+
export declare const makeWidgetExportDefinition: (format: WidgetAttachmentType, requestPayloadOverrides?: Partial<IExportDefinitionVisualizationObjectRequestPayload>) => import("@gooddata/sdk-model").IExportDefinitionMetadataObject | import("@gooddata/sdk-model").IExportDefinitionMetadataObjectDefinition;
|
|
17
|
+
export declare const makeAutomation: (overrides?: Partial<IAutomationMetadataObjectDefinition>) => IAutomationMetadataObjectDefinition;
|
|
18
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/state/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,mCAAmC,EACxC,KAAK,wCAAwC,EAC7C,KAAK,kDAAkD,EACvD,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,oBAAoB,EAE5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAUvG,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,eAAO,MAAM,mBAAmB,yEAA6B,CAAC;AAC9D,eAAO,MAAM,YAAY,qCAAsB,CAAC;AAChD,eAAO,MAAM,WAAW,iDAAqB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,8DAA0B,CAAC;AACxD,eAAO,MAAM,mBAAmB,wDAA6B,CAAC;AAE9D,eAAO,MAAM,eAAe,EAAE,OAG7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAY9B,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,iCAsB5C,CAAC;AAYF,eAAO,MAAM,aAAa,EAAE,iCAa3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,gCAG1B,CAAC;AAIF,eAAO,MAAM,6BAA6B,2PAaxC,CAAC;AAEH,eAAO,MAAM,0BAA0B,kQAarC,CAAC;AAEH,eAAO,MAAM,cAAc,mGASzB,CAAC"}
|