@gooddata/sdk-ui-dashboard 11.51.0-alpha.2 → 11.51.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/assets/timezone.svg +1 -0
- package/esm/index.d.ts +6 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +5 -2
- package/esm/model/react/useWidgetExecConfig.d.ts +9 -0
- package/esm/model/react/useWidgetExecConfig.d.ts.map +1 -1
- package/esm/model/react/useWidgetExecConfig.js +21 -3
- 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/meta/metaSelectors.d.ts +12 -0
- package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
- package/esm/model/store/meta/metaSelectors.js +19 -1
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.js +30 -32
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.test.js +90 -9
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.d.ts +8 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.js +12 -3
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.test.js +38 -8
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.d.ts +6 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.js +6 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.test.js +7 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +22 -3
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.js +3 -2
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts +9 -2
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultLoadingScheduledEmailDialog.d.ts +7 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultLoadingScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +9 -11
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +6 -12
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +5 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.d.ts +1 -3
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.js +2 -2
- package/esm/presentation/automations/scheduledEmail/types.d.ts +35 -5
- package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
- package/esm/presentation/dashboard/components/DashboardLoading.js +1 -1
- package/esm/presentation/dashboardContexts/useSlideData.d.ts +5 -10
- package/esm/presentation/dashboardContexts/useSlideData.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/useSlideData.js +16 -10
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.js +29 -8
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderDescription.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderDescription.js +3 -5
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.js +3 -5
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.d.ts +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.js +2 -5
- package/esm/presentation/insightList/InsightList.d.ts.map +1 -1
- package/esm/presentation/insightList/InsightList.js +4 -5
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +4 -0
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +4 -0
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-419.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +11 -0
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +12 -1
- package/esm/presentation/topBar/timezoneIndicator/DefaultTimezoneIndicator.d.ts +10 -0
- package/esm/presentation/topBar/timezoneIndicator/DefaultTimezoneIndicator.d.ts.map +1 -0
- package/esm/presentation/topBar/timezoneIndicator/DefaultTimezoneIndicator.js +19 -0
- package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.d.ts +13 -0
- package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.d.ts.map +1 -0
- package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.js +27 -0
- package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.d.ts +13 -0
- package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.d.ts.map +1 -0
- package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.js +20 -0
- package/esm/presentation/topBar/timezoneIndicator/types.d.ts +47 -0
- package/esm/presentation/topBar/timezoneIndicator/types.d.ts.map +1 -0
- package/esm/presentation/topBar/timezoneIndicator/types.js +2 -0
- package/esm/presentation/topBar/topBar/DefaultTopBar.d.ts.map +1 -1
- package/esm/presentation/topBar/topBar/DefaultTopBar.js +15 -4
- package/esm/presentation/topBar/topBar/types.d.ts +2 -0
- package/esm/presentation/topBar/topBar/types.d.ts.map +1 -1
- package/esm/presentation/widget/description/ExportModeInsightWidgetDescription.d.ts.map +1 -1
- package/esm/presentation/widget/description/ExportModeInsightWidgetDescription.js +3 -5
- package/esm/presentation/widget/description/InsightWidgetDescriptionTrigger.d.ts.map +1 -1
- package/esm/presentation/widget/description/InsightWidgetDescriptionTrigger.js +3 -6
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +3 -5
- package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescription.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescription.js +3 -6
- package/esm/presentation/widget/richText/EditModeDashboardRichText.d.ts.map +1 -1
- package/esm/presentation/widget/richText/EditModeDashboardRichText.js +3 -5
- package/esm/presentation/widget/richText/ViewModeDashboardRichText.d.ts.map +1 -1
- package/esm/presentation/widget/richText/ViewModeDashboardRichText.js +3 -5
- package/esm/sdk-ui-dashboard.d.ts +162 -10
- package/package.json +21 -21
- package/styles/css/main.css +28 -1
- package/styles/css/main.css.map +1 -1
- package/styles/css/timezoneIndicator.css +20 -0
- package/styles/css/timezoneIndicator.css.map +1 -0
- package/styles/css/topBar.css +9 -1
- package/styles/css/topBar.css.map +1 -1
- package/styles/scss/main.scss +1 -0
- package/styles/scss/timezoneIndicator.scss +23 -0
- package/styles/scss/topBar.scss +13 -2
|
@@ -40,7 +40,7 @@ function ScheduledEmailDialogFooter({ isWhiteLabeled, helpTextId, scheduledExpor
|
|
|
40
40
|
const intl = useIntl();
|
|
41
41
|
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/scheduled-exports/#ScheduleExportsinDashboards-ScheduleExport", iconClass: "gd-icon-circle-question" })), scheduledExportToEdit ? (_jsx(Button, { className: "gd-button-link-dimmed", value: intl.formatMessage({ id: "delete" }), onClick: onDeleteClick, disabled: isSavingScheduledEmail })) : null] }));
|
|
42
42
|
}
|
|
43
|
-
export function ScheduledMailDialogRenderer({
|
|
43
|
+
export function ScheduledMailDialogRenderer({ onBack, onCancel, onDeleteSuccess, onDeleteError, onError, onSave, onSaveError, onSaveSuccess, onSubmit, onSuccess, }) {
|
|
44
44
|
const intl = useIntl();
|
|
45
45
|
const dialogTitleRef = useRef(null);
|
|
46
46
|
const generalTabContentRef = useRef(null);
|
|
@@ -48,7 +48,11 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
|
|
|
48
48
|
const [scheduledEmailToDelete, setScheduledEmailToDelete] = useState(null);
|
|
49
49
|
const [selectedTabId, setSelectedTabId] = useState("general");
|
|
50
50
|
const { isWhiteLabeled, externalRecipient: externalRecipientOverride, isSecondaryTitleVisible, } = useAutomationsContext();
|
|
51
|
-
|
|
51
|
+
// Read from context because this component calls useAutomationFiltersSelect,
|
|
52
|
+
// useAutomationExportParameters and useValidateExistingAutomationFilters directly, and the
|
|
53
|
+
// filter-select call must run before useEditScheduledEmail, which consumes its output. Removed
|
|
54
|
+
// with the filter read-model consolidation (EB-867), which retires these call sites.
|
|
55
|
+
const { exportTemplates, widgetTitle, hasMultipleTabs, scheduledExportToEdit, widget, insight, dashboardFilters, } = useScheduledEmailDialogContext();
|
|
52
56
|
const handleScheduleDeleteSuccess = () => {
|
|
53
57
|
onDeleteSuccess?.();
|
|
54
58
|
setScheduledEmailToDelete(null);
|
|
@@ -60,16 +64,9 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
|
|
|
60
64
|
widget,
|
|
61
65
|
});
|
|
62
66
|
const { locale, dashboardTitle, dateFormat, weekStart, maxAutomationsRecipients, allowHourlyRecurrence, isCrossFiltering, isExecutionTimestampMode, isSlidesExportEnabled, isAccessibilityModeEnabled, defaultPdfPageSize, } = useDefaultScheduledEmailDialogData();
|
|
63
|
-
const { defaultUser, editedAutomation, originalAutomation, isSubmitDisabled, xlsxSettings, pdfSettings, csvSettings, csvRawSettings, startDate, allowExternalRecipients, allowOnlyLoggedUserRecipients, validationErrorMessage, selectedAttachments, isParentValid, onDashboardAttachmentsChange, onWidgetAttachmentsChange, onXlsxSettingsChange, onPdfSettingsChange, onCsvSettingsChange, onCsvRawSettingsChange, slidesTemplateIds, onSlidesTemplateIdChange, onDestinationChange, onMessageChange, onRecipientsChange, onRecurrenceChange, onEvaluationModeChange, onSubjectChange, onTitleChange, onFiltersChange, onApplyCurrentFilters, onStoreFiltersChange, onFiltersByTabChange, setParametersWire, enableAutomationEvaluationMode, } = useEditScheduledEmail({
|
|
64
|
-
notificationChannels,
|
|
65
|
-
insight,
|
|
66
|
-
widget,
|
|
67
|
-
users,
|
|
68
|
-
scheduledExportToEdit,
|
|
67
|
+
const { defaultUser, editedAutomation, originalAutomation, isSubmitDisabled, xlsxSettings, pdfSettings, csvSettings, csvRawSettings, startDate, allowExternalRecipients, allowOnlyLoggedUserRecipients, validationErrorMessage, selectedAttachments, isParentValid, onDashboardAttachmentsChange, onWidgetAttachmentsChange, onXlsxSettingsChange, onPdfSettingsChange, onCsvSettingsChange, onCsvRawSettingsChange, slidesTemplateIds, onSlidesTemplateIdChange, onDestinationChange, onMessageChange, onRecipientsChange, onRecurrenceChange, onEvaluationModeChange, onSubjectChange, onTitleChange, onFiltersChange, onApplyCurrentFilters, onStoreFiltersChange, onFiltersByTabChange, setParametersWire, enableAutomationEvaluationMode, users, usersError, notificationChannels, } = useEditScheduledEmail({
|
|
69
68
|
storeFilters,
|
|
70
69
|
editedAutomationFilters,
|
|
71
|
-
dashboardFilters,
|
|
72
|
-
widgetFilters,
|
|
73
70
|
maxAutomationsRecipients,
|
|
74
71
|
setEditedAutomationFilters,
|
|
75
72
|
setStoreFilters,
|
|
@@ -220,7 +217,8 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
|
|
|
220
217
|
* @alpha
|
|
221
218
|
*/
|
|
222
219
|
export function DefaultScheduledEmailDialog(props) {
|
|
223
|
-
const {
|
|
220
|
+
const { onCancel } = props;
|
|
221
|
+
const { isLoading, scheduledExportToEdit } = useScheduledEmailDialogContext();
|
|
224
222
|
if (isLoading) {
|
|
225
223
|
return (_jsx(DefaultLoadingScheduledEmailDialog, { onCancel: onCancel, scheduledExportToEdit: scheduledExportToEdit }));
|
|
226
224
|
}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
import { type FilterContextItem, type
|
|
1
|
+
import { type FilterContextItem, type IAutomationVisibleFilter, type IExportDefinitionVisualizationObjectSettings } from "@gooddata/sdk-model";
|
|
2
2
|
import type { IAutomationFiltersTab } from "../../../../../model/store/filtering/types.js";
|
|
3
3
|
export interface IUseEditScheduledEmailProps {
|
|
4
|
-
scheduledExportToEdit?: IAutomationMetadataObject;
|
|
5
|
-
notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
|
|
6
4
|
maxAutomationsRecipients: number;
|
|
7
|
-
/** Workspace users, lazy-loaded in the connector and passed via dialog props. */
|
|
8
|
-
users: IWorkspaceUser[];
|
|
9
|
-
widget?: IWidget;
|
|
10
|
-
insight?: IInsight;
|
|
11
|
-
widgetFilters?: IFilter[];
|
|
12
5
|
editedAutomationFilters?: FilterContextItem[];
|
|
13
|
-
dashboardFilters?: FilterContextItem[];
|
|
14
6
|
setEditedAutomationFilters: (filters: FilterContextItem[]) => void;
|
|
15
7
|
/**
|
|
16
8
|
* Edited filters structured by tab ID for dashboard automations with tabs enabled.
|
|
@@ -31,13 +23,15 @@ export interface IUseEditScheduledEmailProps {
|
|
|
31
23
|
externalRecipientOverride?: string;
|
|
32
24
|
defaultPdfPageSize?: IExportDefinitionVisualizationObjectSettings["pageSize"];
|
|
33
25
|
}
|
|
34
|
-
export declare function useEditScheduledEmail({
|
|
35
|
-
defaultUser: IWorkspaceUser;
|
|
26
|
+
export declare function useEditScheduledEmail({ editedAutomationFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab }: IUseEditScheduledEmailProps): {
|
|
27
|
+
defaultUser: import("@gooddata/sdk-model").IWorkspaceUser;
|
|
36
28
|
areDashboardFiltersChanged: boolean;
|
|
37
29
|
originalAutomation: import("@gooddata/sdk-model").IAutomationMetadataObjectDefinition;
|
|
38
30
|
editedAutomation: import("@gooddata/sdk-model").IAutomationMetadataObjectDefinition;
|
|
39
31
|
isCronValid: boolean;
|
|
40
|
-
notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
|
|
32
|
+
notificationChannels: import("@gooddata/sdk-model").INotificationChannelIdentifier[] | import("@gooddata/sdk-model").INotificationChannelMetadataObject[];
|
|
33
|
+
users: import("@gooddata/sdk-model").IWorkspaceUser[];
|
|
34
|
+
usersError: import("@gooddata/sdk-ui").GoodDataSdkError | undefined;
|
|
41
35
|
isDashboardExportSelected: boolean;
|
|
42
36
|
isCsvExportSelected: boolean;
|
|
43
37
|
isXlsxExportSelected: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,
|
|
1
|
+
{"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,4CAA4C,EACpD,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAU3F,MAAM,WAAW,2BAA2B;IACxC,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwL7B"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
2
|
import { useAutomationsContext } from "../../../contexts/AutomationsContext.js";
|
|
3
|
+
import { useScheduledEmailDialogContext } from "../../../contexts/ScheduledEmailDialogContext.js";
|
|
3
4
|
import { useScheduledEmailEffectiveFilters } from "./useScheduledEmailEffectiveFilters.js";
|
|
4
5
|
import { useScheduledEmailExportSettings } from "./useScheduledEmailExportSettings.js";
|
|
5
6
|
import { useScheduledEmailFilters } from "./useScheduledEmailFilters.js";
|
|
6
7
|
import { useScheduledEmailFormState } from "./useScheduledEmailFormState.js";
|
|
7
8
|
import { useScheduledEmailFormValidity } from "./useScheduledEmailFormValidity.js";
|
|
8
|
-
export function useEditScheduledEmail({
|
|
9
|
+
export function useEditScheduledEmail({ editedAutomationFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab, }) {
|
|
9
10
|
const { features: { enableAutomationEvaluationMode }, } = useAutomationsContext();
|
|
11
|
+
const { scheduledExportToEdit, widget, insight, users, usersError, notificationChannels, dashboardFilters, } = useScheduledEmailDialogContext();
|
|
10
12
|
const areDashboardFiltersChanged = !!dashboardFilters;
|
|
11
13
|
const { effectiveWidgetFilters, effectiveWidgetFiltersWithInsight, effectiveVisibleWidgetFilters, effectiveDashboardFilters, effectiveDashboardFiltersByTab, effectiveVisibleDashboardFilters, effectiveVisibleDashboardFiltersByTab, parametersByTabForNewAutomation, } = useScheduledEmailEffectiveFilters({
|
|
12
14
|
widget,
|
|
@@ -79,6 +81,8 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
|
|
|
79
81
|
editedAutomation,
|
|
80
82
|
isCronValid,
|
|
81
83
|
notificationChannels,
|
|
84
|
+
users,
|
|
85
|
+
usersError,
|
|
82
86
|
isDashboardExportSelected,
|
|
83
87
|
isCsvExportSelected,
|
|
84
88
|
isXlsxExportSelected,
|
|
@@ -2,5 +2,5 @@ import { type IScheduledEmailManagementDialogProps } from "../types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* @alpha
|
|
4
4
|
*/
|
|
5
|
-
export declare function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose
|
|
5
|
+
export declare function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose }: IScheduledEmailManagementDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=DefaultScheduledEmailManagementDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailManagementDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAIxE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,KAAK,EACL,MAAM,EACN,OAAO,
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailManagementDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAIxE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,KAAK,EACL,MAAM,EACN,OAAO,EACV,EAAE,oCAAoC,2CAetC"}
|
|
@@ -5,9 +5,9 @@ import { DefaultScheduledEmailManagementDialogContent } from "./DefaultScheduled
|
|
|
5
5
|
/**
|
|
6
6
|
* @alpha
|
|
7
7
|
*/
|
|
8
|
-
export function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose,
|
|
8
|
+
export function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose, }) {
|
|
9
9
|
const handleScheduleEdit = useCallback((scheduledEmail) => {
|
|
10
10
|
onEdit?.(scheduledEmail);
|
|
11
11
|
}, [onEdit]);
|
|
12
|
-
return (_jsx(DefaultScheduledEmailManagementDialogContent, { onAdd: onAdd, onClose: onClose, onEdit: handleScheduleEdit
|
|
12
|
+
return (_jsx(DefaultScheduledEmailManagementDialogContent, { onAdd: onAdd, onClose: onClose, onEdit: handleScheduleEdit }));
|
|
13
13
|
}
|
|
@@ -3,9 +3,7 @@ interface IDefaultScheduledEmailManagementDialogContentProps {
|
|
|
3
3
|
onAdd?: () => void;
|
|
4
4
|
onClose?: () => void;
|
|
5
5
|
onEdit: (scheduledEmail: IAutomationMetadataObject) => void;
|
|
6
|
-
isLoadingScheduleData: boolean;
|
|
7
|
-
automations: IAutomationMetadataObject[];
|
|
8
6
|
}
|
|
9
|
-
export declare function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit
|
|
7
|
+
export declare function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit }: IDefaultScheduledEmailManagementDialogContentProps): import("react/jsx-runtime").JSX.Element;
|
|
10
8
|
export {};
|
|
11
9
|
//# sourceMappingURL=DefaultScheduledEmailManagementDialogContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailManagementDialogContent.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AA4BrE,UAAU,kDAAkD;IACxD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailManagementDialogContent.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AA4BrE,UAAU,kDAAkD;IACxD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC/D;AAED,wBAAgB,4CAA4C,CAAC,EACzD,KAAK,EACL,OAAO,EACP,MAAM,EACT,EAAE,kDAAkD,2CA8JpD"}
|
|
@@ -16,13 +16,13 @@ import { SCHEDULED_EMAIL_DIALOG_ID } from "../DefaultScheduledEmailDialog/consta
|
|
|
16
16
|
import { useScheduleEmailDialogAccessibility } from "../hooks/useScheduleEmailDialogAccessibility.js";
|
|
17
17
|
import { isMobileView } from "../utils/responsive.js";
|
|
18
18
|
const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX);
|
|
19
|
-
export function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit,
|
|
19
|
+
export function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit, }) {
|
|
20
20
|
const intl = useIntl();
|
|
21
21
|
const isMobile = isMobileView();
|
|
22
22
|
const workspace = useWorkspace();
|
|
23
23
|
const backend = useBackend();
|
|
24
24
|
const { timezone, locale, settings, isWhiteLabeled, isExecutionTimestampMode, externalRecipient: externalRecipientOverride, features: { canCreateAutomation }, } = useAutomationsContext();
|
|
25
|
-
const { dashboardId, dashboardTitle, enableAccessibilityMode, isScheduleEmailDialogOpen: isEditDialogOpen, automationsInvalidationId, isEmbedded, maxAutomations, unlimitedAutomations, } = useScheduledEmailManagementDialogContext();
|
|
25
|
+
const { dashboardId, dashboardTitle, enableAccessibilityMode, isScheduleEmailDialogOpen: isEditDialogOpen, automationsInvalidationId, isEmbedded, maxAutomations, unlimitedAutomations, automations, isLoading: isLoadingScheduleData, } = useScheduledEmailManagementDialogContext();
|
|
26
26
|
const enableBulkActions = !enableAccessibilityMode;
|
|
27
27
|
const useHostRoute = computeUseHostRoute(settings);
|
|
28
28
|
const { returnFocusTo } = useScheduleEmailDialogAccessibility();
|
|
@@ -7,20 +7,29 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui";
|
|
|
7
7
|
export interface IScheduledEmailDialogProps {
|
|
8
8
|
/**
|
|
9
9
|
* In case, we are not creating new schedule, but editing existing one, this is the active schedule to be edited.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated read `scheduledExportToEdit` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
10
12
|
*/
|
|
11
13
|
scheduledExportToEdit?: IAutomationMetadataObject;
|
|
12
14
|
/**
|
|
13
15
|
* Users in workspace
|
|
16
|
+
*
|
|
17
|
+
* @deprecated read `users` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
14
18
|
*/
|
|
15
|
-
users
|
|
19
|
+
users?: IWorkspaceUser[];
|
|
16
20
|
/**
|
|
17
21
|
* Error occurred while loading users
|
|
22
|
+
*
|
|
23
|
+
* @deprecated read `usersError` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
18
24
|
*/
|
|
19
25
|
usersError?: GoodDataSdkError;
|
|
20
26
|
/**
|
|
21
27
|
* Notification channels in organization
|
|
28
|
+
*
|
|
29
|
+
* @deprecated read `notificationChannels` from `useScheduledEmailDialogContext()` instead.
|
|
30
|
+
* Prop will be removed.
|
|
22
31
|
*/
|
|
23
|
-
notificationChannels
|
|
32
|
+
notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
|
|
24
33
|
/**
|
|
25
34
|
* Widget to be used for scheduled email.
|
|
26
35
|
*
|
|
@@ -28,12 +37,16 @@ export interface IScheduledEmailDialogProps {
|
|
|
28
37
|
* Typed as IWidget (not ExtendedDashboardWidget) because the dialog only
|
|
29
38
|
* supports insight widgets; custom widgets and nested layouts are not valid
|
|
30
39
|
* export targets and were silently discarded at the connector boundary anyway.
|
|
40
|
+
*
|
|
41
|
+
* @deprecated read `widget` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
31
42
|
*/
|
|
32
43
|
widget?: IWidget;
|
|
33
44
|
/**
|
|
34
45
|
* Insight to be used for scheduled email.
|
|
35
46
|
*
|
|
36
47
|
* Note: this is available only when scheduling export for widget, not dashboard.
|
|
48
|
+
*
|
|
49
|
+
* @deprecated read `insight` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
37
50
|
*/
|
|
38
51
|
insight?: IInsight;
|
|
39
52
|
/**
|
|
@@ -47,6 +60,8 @@ export interface IScheduledEmailDialogProps {
|
|
|
47
60
|
* the export reflects the latest intended filter configuration and we don't want to save them.
|
|
48
61
|
*
|
|
49
62
|
* - If we are editing an existing scheduled export, this will contain its filters, as changing saved filters is currently not allowed.
|
|
63
|
+
*
|
|
64
|
+
* @deprecated read `dashboardFilters` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
50
65
|
*/
|
|
51
66
|
dashboardFilters?: FilterContextItem[];
|
|
52
67
|
/**
|
|
@@ -59,10 +74,15 @@ export interface IScheduledEmailDialogProps {
|
|
|
59
74
|
* - If the resulting filters include all-time date filter, it is excluded as it has no effect on the scheduled export execution.
|
|
60
75
|
*
|
|
61
76
|
* - If we are editing an existing scheduled export, this will contain its filters, as changing saved filters is currently not allowed.
|
|
77
|
+
*
|
|
78
|
+
* @deprecated not read by the default dialog; the effective widget filters are derived from the
|
|
79
|
+
* edited filters. Prop will be removed.
|
|
62
80
|
*/
|
|
63
81
|
widgetFilters?: IFilter[];
|
|
64
82
|
/**
|
|
65
83
|
* Is scheduled email dialog loading initial data, before it can be rendered?
|
|
84
|
+
*
|
|
85
|
+
* @deprecated read `isLoading` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
|
|
66
86
|
*/
|
|
67
87
|
isLoading?: boolean;
|
|
68
88
|
/**
|
|
@@ -113,20 +133,30 @@ export interface IScheduledEmailDialogProps {
|
|
|
113
133
|
export interface IScheduledEmailManagementDialogProps {
|
|
114
134
|
/**
|
|
115
135
|
* Is loading schedule data?
|
|
136
|
+
*
|
|
137
|
+
* @deprecated read `isLoading` from `useScheduledEmailManagementDialogContext()` instead. Prop will
|
|
138
|
+
* be removed.
|
|
116
139
|
*/
|
|
117
|
-
isLoadingScheduleData
|
|
140
|
+
isLoadingScheduleData?: boolean;
|
|
118
141
|
/**
|
|
119
142
|
* Error occurred while loading schedule data?
|
|
143
|
+
*
|
|
144
|
+
* @deprecated not read by the default dialog. Prop will be removed.
|
|
120
145
|
*/
|
|
121
146
|
scheduleDataError?: GoodDataSdkError;
|
|
122
147
|
/**
|
|
123
148
|
* Notification channels in organization
|
|
149
|
+
*
|
|
150
|
+
* @deprecated not read by the default dialog. Prop will be removed.
|
|
124
151
|
*/
|
|
125
|
-
notificationChannels
|
|
152
|
+
notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
|
|
126
153
|
/**
|
|
127
154
|
* Automations in workspace
|
|
155
|
+
*
|
|
156
|
+
* @deprecated read `automations` from `useScheduledEmailManagementDialogContext()` instead. Prop
|
|
157
|
+
* will be removed.
|
|
128
158
|
*/
|
|
129
|
-
automations
|
|
159
|
+
automations?: IAutomationMetadataObject[];
|
|
130
160
|
/**
|
|
131
161
|
* Callback to be called, when user adds new scheduled email item.
|
|
132
162
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/scheduledEmail/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACZ,KAAK,cAAc,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/scheduledEmail/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACZ,KAAK,cAAc,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAElD;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAEzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEvC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAE1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,CACP,wBAAwB,EAAE,yBAAyB,GAAG,mCAAmC,KACxF,IAAI,CAAC;IAEV;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAEvE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAE1E;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAED;;;GAGG;AACH,MAAM,WAAW,oCAAoC;IACjD;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAErC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;;;;OAKG;IACH,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAE5D;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAMD;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,aAAa,CAAC,0BAA0B,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,MAAM,6CAA6C,GACrD,aAAa,CAAC,oCAAoC,CAAC,CAAC"}
|
|
@@ -20,7 +20,7 @@ export function DashboardLoading(props) {
|
|
|
20
20
|
// can tell the rendering has started even before any dashboard data is loaded.
|
|
21
21
|
// The element is a hidden sibling (same as the gd-dashboard-meta export data),
|
|
22
22
|
// so it cannot affect the layout of the loading indicator.
|
|
23
|
-
return (_jsxs(_Fragment, { children: [exportData ? _jsx("div", { style: { display: "none" }, ...exportData }) : null, _jsx(LoadingComponent, {})
|
|
23
|
+
return (_jsxs(_Fragment, { children: [exportData ? _jsx("div", { style: { display: "none" }, ...exportData }) : null, _jsx(LoadingComponent, { className: "sdk-dashboard-loading s-loading" })
|
|
24
24
|
] }));
|
|
25
25
|
}
|
|
26
26
|
return _jsx(DashboardInner, { ...props });
|
|
@@ -6,30 +6,25 @@ export declare function useSlideData(renderMode: RenderMode | undefined): {
|
|
|
6
6
|
slideWidth: number;
|
|
7
7
|
slideHeight: number;
|
|
8
8
|
} | undefined;
|
|
9
|
-
export declare function useSlideSizeStyle(renderMode: RenderMode | undefined, type: LayoutElementType, parentLayoutPath?: ILayoutItemPath): {
|
|
9
|
+
export declare function useSlideSizeStyle(renderMode: RenderMode | undefined, type: LayoutElementType, parentLayoutPath?: ILayoutItemPath, hasHeaderRow?: boolean): {
|
|
10
10
|
width?: undefined;
|
|
11
|
-
gridTemplateRows?: undefined;
|
|
12
|
-
overflow?: undefined;
|
|
13
11
|
height?: undefined;
|
|
14
12
|
} | {
|
|
15
13
|
width: string;
|
|
16
|
-
gridTemplateRows?: undefined;
|
|
17
|
-
overflow?: undefined;
|
|
18
14
|
height?: undefined;
|
|
19
15
|
} | {
|
|
20
16
|
width?: undefined;
|
|
21
|
-
gridTemplateRows
|
|
17
|
+
gridTemplateRows?: string | undefined;
|
|
18
|
+
gridAutoRows: string;
|
|
22
19
|
height: string;
|
|
23
|
-
overflow?: undefined;
|
|
24
20
|
} | {
|
|
25
21
|
width?: undefined;
|
|
26
|
-
gridTemplateRows?: undefined;
|
|
22
|
+
gridTemplateRows?: string | undefined;
|
|
23
|
+
gridAutoRows: string;
|
|
27
24
|
height: string;
|
|
28
25
|
overflow: string;
|
|
29
26
|
} | {
|
|
30
27
|
width?: undefined;
|
|
31
|
-
gridTemplateRows?: undefined;
|
|
32
|
-
overflow?: undefined;
|
|
33
28
|
height: string;
|
|
34
29
|
};
|
|
35
30
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlideData.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardContexts/useSlideData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIvE,KAAK,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9E,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS;;;cAW9D;AAED,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,IAAI,EAAE,iBAAiB,EACvB,gBAAgB,CAAC,EAAE,eAAe
|
|
1
|
+
{"version":3,"file":"useSlideData.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardContexts/useSlideData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIvE,KAAK,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9E,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS;;;cAW9D;AAED,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,IAAI,EAAE,iBAAiB,EACvB,gBAAgB,CAAC,EAAE,eAAe,EAClC,YAAY,UAAQ;;;;;;;;;;;;;;;;;;;;EAmCvB"}
|
|
@@ -12,7 +12,7 @@ export function useSlideData(renderMode) {
|
|
|
12
12
|
slideHeight: slideConfig?.height ?? DEFAULT_SLIDE_HEIGHT,
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
export function useSlideSizeStyle(renderMode, type, parentLayoutPath) {
|
|
15
|
+
export function useSlideSizeStyle(renderMode, type, parentLayoutPath, hasHeaderRow = false) {
|
|
16
16
|
const data = useSlideData(renderMode);
|
|
17
17
|
if (!data) {
|
|
18
18
|
return {};
|
|
@@ -23,15 +23,21 @@ export function useSlideSizeStyle(renderMode, type, parentLayoutPath) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
if (type === "section") {
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
return {
|
|
27
|
+
// Widgets in export mode have no min-height, their height comes solely from the
|
|
28
|
+
// `height: 100%` chain below the grid item, so the row tracks must have a definite size.
|
|
29
|
+
// Tracks sized from content (`auto`, `max-content`) collapse to the widget title only,
|
|
30
|
+
// because visualizations are absolutely positioned and contribute no intrinsic height.
|
|
31
|
+
//
|
|
32
|
+
// The section header, when rendered, is the first grid item and must take just the space
|
|
33
|
+
// it needs; the remaining rows split what is left. `minmax(0, 1fr)` (rather than plain
|
|
34
|
+
// `1fr`) keeps tall content from pushing the rows over the slide height.
|
|
35
|
+
...(hasHeaderRow ? { gridTemplateRows: "max-content" } : {}),
|
|
36
|
+
gridAutoRows: "minmax(0, 1fr)",
|
|
37
|
+
...(parentLayoutPath && parentLayoutPath.length > 0
|
|
38
|
+
? { height: "100%" }
|
|
39
|
+
: { height: `${data.slideHeight}px`, overflow: "hidden" }),
|
|
40
|
+
};
|
|
35
41
|
}
|
|
36
42
|
return {
|
|
37
43
|
height: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayoutSection.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardLayoutSection.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;AAInD,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAEH,KAAK,6BAA6B,EACrC,MAAM,iEAAiE,CAAC;AAGzE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS1E,OAAO,EACH,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAC1C,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACtC,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,4BAA4B,CAAC,OAAO;IACjD,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC7D,eAAe,CAAC,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC3D,qBAAqB,CAAC,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACvE,aAAa,CAAC,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACrD,cAAc,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxD,eAAe,CAAC,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC3D,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,gCAAgC,CAAC;IACxD,gBAAgB,EAAE,eAAe,GAAG,SAAS,CAAC;CACjD;AA2BD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,EAC5C,OAAO,EACP,eAAwC,EACxC,qBAA6C,EAC7C,aAAoC,EACpC,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EACnB,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAAG,YAAY,CAwGtD"}
|
package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2007-2026 GoodData Corporation
|
|
3
3
|
import { useMemo } from "react";
|
|
4
|
+
import { isEmpty } from "lodash-es";
|
|
5
|
+
import { getLayoutConfiguration } from "../../../_staging/dashboard/flexibleLayout/layoutConfiguration.js";
|
|
4
6
|
import { getItemIndex, serializeLayoutItemPath } from "../../../_staging/layout/coordinates.js";
|
|
5
7
|
import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js";
|
|
6
8
|
import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js";
|
|
@@ -12,10 +14,35 @@ import { DashboardLayoutSectionRenderer } from "./DashboardLayoutSectionRenderer
|
|
|
12
14
|
const defaultSectionRenderer = (props) => (_jsx(DashboardLayoutSectionRenderer, { ...props }));
|
|
13
15
|
const defaultHeaderRenderer = (props) => (_jsx(DashboardLayoutSectionHeaderRenderer, { ...props }));
|
|
14
16
|
const defaultItemKeyGetter = ({ item }) => serializeLayoutItemPath(item.index());
|
|
17
|
+
/**
|
|
18
|
+
* Whether the section header has anything to render, i.e. whether it occupies a grid row of the
|
|
19
|
+
* section. Mirrors the conditions of {@link DashboardLayoutViewSectionHeader} and of the section
|
|
20
|
+
* header renderers, which for an empty header emit a grid item that `.gd-grid-layout__item:empty`
|
|
21
|
+
* takes out of the flow.
|
|
22
|
+
*
|
|
23
|
+
* The export slide sizing needs this to know which grid row is the header one. Only ever consulted
|
|
24
|
+
* together with the node the header renderer actually returned - see `hasHeaderRow` below.
|
|
25
|
+
*/
|
|
26
|
+
function hasVisibleSectionHeader(section) {
|
|
27
|
+
const { sections } = getLayoutConfiguration(section.layout().raw());
|
|
28
|
+
return sections.areHeadersEnabled && (!isEmpty(section.title()) || !isEmpty(section.description()));
|
|
29
|
+
}
|
|
15
30
|
export function DashboardLayoutSection({ section, sectionRenderer = defaultSectionRenderer, sectionHeaderRenderer = defaultHeaderRenderer, itemKeyGetter = defaultItemKeyGetter, gridRowRenderer, itemRenderer, widgetRenderer, getLayoutDimensions, renderMode, parentLayoutItemSize, parentLayoutPath, }) {
|
|
16
31
|
const showBorders = parentLayoutPath === undefined || parentLayoutPath.length === 0;
|
|
17
32
|
const exportData = useSectionExportData(parentLayoutPath?.length ?? 0);
|
|
18
|
-
const
|
|
33
|
+
const header = sectionHeaderRenderer({
|
|
34
|
+
section,
|
|
35
|
+
DefaultSectionHeaderRenderer: DashboardLayoutSectionHeaderRenderer,
|
|
36
|
+
parentLayoutItemSize,
|
|
37
|
+
parentLayoutPath,
|
|
38
|
+
exportData,
|
|
39
|
+
});
|
|
40
|
+
// sectionHeaderRenderer is a swappable callback, so the section metadata alone does not decide
|
|
41
|
+
// whether a header row exists - a custom renderer may return null for a section that has a title.
|
|
42
|
+
// Require both, so we never reserve a content-sized row that then gets filled by the first
|
|
43
|
+
// widget (which would collapse it, the very thing the export row sizing is fixing).
|
|
44
|
+
const hasHeaderRow = header !== null && header !== undefined && hasVisibleSectionHeader(section);
|
|
45
|
+
const exportStyles = useSlideSizeStyle(renderMode, "section", parentLayoutPath, hasHeaderRow);
|
|
19
46
|
const renderProps = {
|
|
20
47
|
section,
|
|
21
48
|
renderMode,
|
|
@@ -57,12 +84,6 @@ export function DashboardLayoutSection({ section, sectionRenderer = defaultSecti
|
|
|
57
84
|
...renderProps,
|
|
58
85
|
exportStyles,
|
|
59
86
|
DefaultSectionRenderer: DashboardLayoutSectionRenderer,
|
|
60
|
-
children: (_jsxs(_Fragment, { children: [
|
|
61
|
-
section,
|
|
62
|
-
DefaultSectionHeaderRenderer: DashboardLayoutSectionHeaderRenderer,
|
|
63
|
-
parentLayoutItemSize,
|
|
64
|
-
parentLayoutPath,
|
|
65
|
-
exportData,
|
|
66
|
-
}), items] })),
|
|
87
|
+
children: (_jsxs(_Fragment, { children: [header, items] })),
|
|
67
88
|
});
|
|
68
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayoutSectionHeaderDescription.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderDescription.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOvE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,6CAA6C;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,uCAAuC,CAAC,EACpD,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACV,EAAE,6CAA6C,
|
|
1
|
+
{"version":3,"file":"DashboardLayoutSectionHeaderDescription.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderDescription.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOvE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,6CAA6C;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,uCAAuC,CAAC,EACpD,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACV,EAAE,6CAA6C,2CA2B/C"}
|
|
@@ -3,17 +3,15 @@ import cx from "classnames";
|
|
|
3
3
|
import { RichText } from "@gooddata/sdk-ui-kit";
|
|
4
4
|
import { useSectionDescriptionFilters } from "../../../_staging/sharedHooks/useRichTextFilters.js";
|
|
5
5
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
6
|
+
import { useDashboardExecConfig } from "../../../model/react/useWidgetExecConfig.js";
|
|
6
7
|
import { selectSeparators } from "../../../model/store/config/configSelectors.js";
|
|
7
|
-
import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js";
|
|
8
8
|
export function DashboardLayoutSectionHeaderDescription({ description, exportData, LoadingComponent, onLoadingChanged, onError, }) {
|
|
9
9
|
const { loading, filters } = useSectionDescriptionFilters();
|
|
10
10
|
const separators = useDashboardSelector(selectSeparators);
|
|
11
|
-
const
|
|
11
|
+
const execConfig = useDashboardExecConfig();
|
|
12
12
|
const className = cx("gd-paragraph", "description", "s-fluid-layout-row-description");
|
|
13
13
|
return (_jsx("div", { className: className, ...exportData?.description, children: _jsx(RichText, { className: "gd-layout-row-description-richtext", value: description, renderMode: "view", rawContent: {
|
|
14
14
|
show: !!exportData?.richText,
|
|
15
15
|
dataAttributes: exportData?.richText?.markdown,
|
|
16
|
-
}, execConfig:
|
|
17
|
-
timestamp: executionTimestamp,
|
|
18
|
-
}, referencesEnabled: true, filters: filters, isFiltersLoading: loading, separators: separators, LoadingComponent: LoadingComponent, onLoadingChanged: onLoadingChanged, onError: onError }) }));
|
|
16
|
+
}, execConfig: execConfig, referencesEnabled: true, filters: filters, isFiltersLoading: loading, separators: separators, LoadingComponent: LoadingComponent, onLoadingChanged: onLoadingChanged, onError: onError }) }));
|
|
19
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SectionHeaderEditable.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoC,MAAM,OAAO,CAAC;AAO5E,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,oEAAoE,CAAC;AAkBxH,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,wBAAgB,qBAAqB,CAAC,EAClC,KAAK,EAAE,QAAa,EACpB,WAAW,EAAE,cAAmB,EAChC,OAAO,EACV,EAAE,2BAA2B,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"SectionHeaderEditable.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoC,MAAM,OAAO,CAAC;AAO5E,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,oEAAoE,CAAC;AAkBxH,MAAM,WAAW,2BAA2B;IACxC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,wBAAgB,qBAAqB,CAAC,EAClC,KAAK,EAAE,QAAa,EACpB,WAAW,EAAE,cAAmB,EAChC,OAAO,EACV,EAAE,2BAA2B,GAAG,YAAY,CAwH5C"}
|
|
@@ -8,9 +8,9 @@ import { serializeLayoutSectionPath } from "../../../../_staging/layout/coordina
|
|
|
8
8
|
import { useSectionDescriptionFilters } from "../../../../_staging/sharedHooks/useRichTextFilters.js";
|
|
9
9
|
import { changeNestedLayoutSectionHeader } from "../../../../model/commands/layout.js";
|
|
10
10
|
import { useDashboardDispatch, useDashboardSelector, } from "../../../../model/react/DashboardStoreProvider.js";
|
|
11
|
+
import { useDashboardExecConfig } from "../../../../model/react/useWidgetExecConfig.js";
|
|
11
12
|
import { selectSeparators } from "../../../../model/store/config/configSelectors.js";
|
|
12
13
|
import { uiActions } from "../../../../model/store/ui/index.js";
|
|
13
|
-
import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors.js";
|
|
14
14
|
import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js";
|
|
15
15
|
import { EditableLabelWithBubble } from "./EditableLabelWithBubble.js";
|
|
16
16
|
import { MAX_TITLE_LENGTH, TITLE_LENGTH_WARNING_LIMIT, getTitle } from "./sectionHeaderHelper.js";
|
|
@@ -58,15 +58,13 @@ export function SectionHeaderEditable({ title: rawTitle = "", description: rawDe
|
|
|
58
58
|
}, [rawDescription]);
|
|
59
59
|
const serializedSectionIndex = serializeLayoutSectionPath(section.index());
|
|
60
60
|
const isNestedLayout = section.layout().path() !== undefined;
|
|
61
|
-
const
|
|
61
|
+
const execConfig = useDashboardExecConfig();
|
|
62
62
|
return (_jsxs("div", { className: cx("gd-row-header-edit", { "gd-row-header-edit--nested": isNestedLayout }), children: [
|
|
63
63
|
_jsx("div", { className: "gd-editable-label-container gd-row-header-title-wrapper", children: _jsx(EditableLabelWithBubble, { className: cx(`gd-title-for-${serializedSectionIndex}`, "s-fluid-layout-row-title-input", "title", {
|
|
64
64
|
"gd-heading-2": !isNestedLayout,
|
|
65
65
|
"gd-heading-3": isNestedLayout,
|
|
66
66
|
}), maxRows: 10, value: title || "", maxLength: MAX_TITLE_LENGTH, warningLimit: TITLE_LENGTH_WARNING_LIMIT, placeholderMessage: intl.formatMessage({ id: "layout.header.add.title.placeholder" }), alignTo: `.gd-title-for-${serializedSectionIndex}`, onSubmit: onTitleSubmit, onEditingStart: onEditingStart, onCancel: onEditingEnd }) }), _jsx("div", { className: "gd-editable-label-container gd-row-header-description-wrapper", children: _jsx("div", { className: cx("gd-editable-label-richtext s-fluid-layout-row-description-input", {
|
|
67
67
|
"is-editing": isRichTextEditing,
|
|
68
|
-
}), onClick: onDescriptionClick, onBlur: onDescriptionBlur, children: _jsx(RichTextWithTooltip, { value: richTextValue, renderMode: isRichTextEditing ? "edit" : "view", onChange: onRichTextChange, editRows: 10, editPlaceholder: placeholder, emptyElement: _jsx("div", { className: "gd-editable-label-richtext-empty", children: placeholder }), showTooltip: isRichTextEditing, tooltipAlignPoints: richTextTooltipAlignPoints, autoResize: true, referencesEnabled: true, filters: filters, isFiltersLoading: loading, separators: separators, LoadingComponent: LoadingComponent, execConfig:
|
|
69
|
-
timestamp: executionTimestamp,
|
|
70
|
-
} }) }) })
|
|
68
|
+
}), onClick: onDescriptionClick, onBlur: onDescriptionBlur, children: _jsx(RichTextWithTooltip, { value: richTextValue, renderMode: isRichTextEditing ? "edit" : "view", onChange: onRichTextChange, editRows: 10, editPlaceholder: placeholder, emptyElement: _jsx("div", { className: "gd-editable-label-richtext-empty", children: placeholder }), showTooltip: isRichTextEditing, tooltipAlignPoints: richTextTooltipAlignPoints, autoResize: true, referencesEnabled: true, filters: filters, isFiltersLoading: loading, separators: separators, LoadingComponent: LoadingComponent, execConfig: execConfig }) }) })
|
|
71
69
|
] }));
|
|
72
70
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type IDashboardLayoutSectionRenderProps } from "./interfaces.js";
|
|
2
|
-
export declare function ExportableDashboardLayoutSectionRenderer({ children, parentLayoutItemSize,
|
|
2
|
+
export declare function ExportableDashboardLayoutSectionRenderer({ children, parentLayoutItemSize, className, isHidden, exportData, exportStyles }: IDashboardLayoutSectionRenderProps<unknown> & object): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=ExportableDashboardLayoutSectionRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportableDashboardLayoutSectionRenderer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExportableDashboardLayoutSectionRenderer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAK1E,wBAAgB,wCAAwC,CAAC,EACrD,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACf,EAAE,kCAAkC,CAAC,OAAO,CAAC,GAAG,MAAM,2CAetD"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2007-2026 GoodData Corporation
|
|
3
|
-
import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js";
|
|
4
3
|
import { GridLayoutElement } from "./GridLayoutElement.js";
|
|
5
4
|
const isHiddenStyle = { height: 0, width: 0, overflow: "hidden", flex: 0 };
|
|
6
5
|
const defaultStyle = {};
|
|
7
|
-
export function ExportableDashboardLayoutSectionRenderer({ children, parentLayoutItemSize,
|
|
6
|
+
export function ExportableDashboardLayoutSectionRenderer({ children, parentLayoutItemSize, className, isHidden, exportData, exportStyles, }) {
|
|
8
7
|
const style = isHidden ? isHiddenStyle : defaultStyle;
|
|
9
|
-
|
|
10
|
-
const exportStyles = useSlideSizeStyle("export", type, parentLayoutPath);
|
|
11
|
-
return (_jsx(GridLayoutElement, { type: type, layoutItemSize: parentLayoutItemSize, className: className, style: style, exportData: exportData, exportStyles: exportStyles, children: children }));
|
|
8
|
+
return (_jsx(GridLayoutElement, { type: "section", layoutItemSize: parentLayoutItemSize, className: className, style: style, exportData: exportData, exportStyles: exportStyles, children: children }));
|
|
12
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsightList.d.ts","sourceRoot":"","sources":["../../../src/presentation/insightList/InsightList.tsx"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,QAAQ,EAShB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"InsightList.d.ts","sourceRoot":"","sources":["../../../src/presentation/insightList/InsightList.tsx"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,QAAQ,EAShB,MAAM,qBAAqB,CAAC;AAgC7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKpD,UAAU,gBAAgB;IACtB,OAAO,EAAE,QAAQ,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,GAAG,gBAAgB,CAO5E;AAsCD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EACxB,MAAM,EACN,KAAkB,EAClB,eAAe,EACf,UAAU,EACV,WAAW,EACX,QAAQ,EACX,EAAE,iBAAiB,2CAwOnB"}
|