@gooddata/sdk-ui-dashboard 11.51.0-alpha.1 → 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/NOTICE +4 -4
- 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 +11 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +10 -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/index.d.ts +1 -0
- package/esm/model/store/meta/index.d.ts.map +1 -1
- package/esm/model/store/meta/metaReducers.d.ts +5 -1
- package/esm/model/store/meta/metaReducers.d.ts.map +1 -1
- package/esm/model/store/meta/metaReducers.js +9 -0
- package/esm/model/store/meta/metaSelectors.d.ts +35 -1
- package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
- package/esm/model/store/meta/metaSelectors.js +51 -2
- package/esm/model/store/meta/metaState.d.ts +1 -1
- package/esm/model/store/meta/metaState.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +9 -9
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts +7 -2
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.js +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +6 -8
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +5 -2
- package/esm/presentation/automations/alerting/types.d.ts +30 -5
- package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/AlertingConnector.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/AlertingConnector.js +22 -25
- package/esm/presentation/automations/connectors/AlertingConnector.test.js +71 -5
- 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/useBuildAlertingDialogContext.d.ts +7 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.js +12 -2
- package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.js +28 -2
- 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/AlertingDialogContext.d.ts +29 -1
- package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/AlertingDialogContext.js +12 -0
- package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts +14 -0
- package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/AlertingManagementDialogContext.js +12 -0
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts +13 -0
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/AutomationsContext.js +9 -0
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +35 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.js +14 -0
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts +20 -1
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.js +12 -0
- 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 +17 -25
- 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/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts +12 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.js +41 -0
- 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/automations/scheduledEmail/utils/timezone.d.ts +4 -1
- package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/utils/timezone.js +14 -138
- package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.js +1 -0
- 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/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +52 -14
- package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts +11 -0
- package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts.map +1 -0
- package/esm/presentation/dashboardSettingsDialog/TimezoneOption.js +36 -0
- package/esm/presentation/dashboardSettingsDialog/types.d.ts +2 -1
- package/esm/presentation/dashboardSettingsDialog/types.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/useDialogData.js +4 -1
- package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.d.ts.map +1 -1
- package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js +30 -1
- 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 +48 -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 +48 -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.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +5 -6
- 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 +528 -12
- 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
|
@@ -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":"DefaultDashboardSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultDashboardSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoD,MAAM,OAAO,CAAC;AA2C5F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAGhE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,SAAS,EACT,OAAO,EACP,QAAQ,EACX,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CA+QrD"}
|
|
@@ -2,13 +2,14 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
// (C) 2020-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useEffect, useState } from "react";
|
|
4
4
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
5
|
-
import { objRefToString } from "@gooddata/sdk-model";
|
|
5
|
+
import { normalizeDashboardTimezoneConfig, objRefToString, } from "@gooddata/sdk-model";
|
|
6
6
|
import { Bubble, BubbleHoverTrigger, ConfirmDialog, DialogListHeader, Dropdown, RecurrenceForm, SingleSelectListItem, UiButton, UiListbox, simpleRecurrenceTypeMappingFn, } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { queryDateDatasetsForInsight, } from "../../model/queries/insights.js";
|
|
8
8
|
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
9
9
|
import { useDashboardQueryProcessing } from "../../model/react/useDashboardQueryProcessing.js";
|
|
10
10
|
import { selectDateFormat, selectEnableDashboardPersistentFiltersAcrossTabs, selectEnableDashboardSectionHeadersDateDataSet, selectIsWhiteLabeled, selectLocale, selectSettings, selectWeekStart, } from "../../model/store/config/configSelectors.js";
|
|
11
11
|
import { selectCrossFilteringEnabledAndSupported } from "../../model/store/topBar/topBarSelectors.js";
|
|
12
|
+
import { TimezoneOption } from "./TimezoneOption.js";
|
|
12
13
|
import { useDialogData } from "./useDialogData.js";
|
|
13
14
|
/**
|
|
14
15
|
* @alpha
|
|
@@ -46,45 +47,45 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
|
|
|
46
47
|
id: "filters.configurationPanel.crossFiltering.toggle",
|
|
47
48
|
}), tooltip: intl.formatMessage({
|
|
48
49
|
id: "filters.configurationPanel.crossFiltering.toggle.tooltip",
|
|
49
|
-
}), isChecked: !currentData.disableCrossFiltering, onChange: (
|
|
50
|
+
}), isChecked: !currentData.disableCrossFiltering, onChange: (isChecked) => {
|
|
50
51
|
setCurrentData({
|
|
51
52
|
...currentData,
|
|
52
|
-
disableCrossFiltering:
|
|
53
|
+
disableCrossFiltering: !isChecked,
|
|
53
54
|
});
|
|
54
55
|
} }), _jsx(ConfigurationOption, { label: intl.formatMessage({
|
|
55
56
|
id: "filters.configurationPanel.userFilterReset.toggle",
|
|
56
57
|
}), tooltip: intl.formatMessage({
|
|
57
58
|
id: "filters.configurationPanel.userFilterReset.toggle.tooltip",
|
|
58
|
-
}), isChecked: !currentData.disableUserFilterReset, onChange: (
|
|
59
|
+
}), isChecked: !currentData.disableUserFilterReset, onChange: (isChecked) => {
|
|
59
60
|
setCurrentData({
|
|
60
61
|
...currentData,
|
|
61
|
-
disableUserFilterReset:
|
|
62
|
+
disableUserFilterReset: !isChecked,
|
|
62
63
|
});
|
|
63
64
|
} })
|
|
64
65
|
] })) : null, _jsx(ConfigurationOption, { label: intl.formatMessage({
|
|
65
66
|
id: "filters.configurationPanel.filterViews.toggle",
|
|
66
67
|
}), tooltip: intl.formatMessage({ id: "filters.configurationPanel.filterViews.toggle.tooltip" }, {
|
|
67
68
|
p: (chunks) => _jsx("p", { children: chunks }),
|
|
68
|
-
}), isChecked: !currentData.disableFilterViews, onChange: (
|
|
69
|
+
}), isChecked: !currentData.disableFilterViews, onChange: (isChecked) => {
|
|
69
70
|
setCurrentData({
|
|
70
71
|
...currentData,
|
|
71
|
-
disableFilterViews:
|
|
72
|
+
disableFilterViews: !isChecked,
|
|
72
73
|
});
|
|
73
74
|
} }), _jsx(ConfigurationOption, { label: intl.formatMessage({ id: "filters.configurationPanel.userFilterSave.toggle" }), tooltip: intl.formatMessage({
|
|
74
75
|
id: "filters.configurationPanel.userFilterSave.toggle.tooltip",
|
|
75
|
-
}), isChecked: !currentData.disableUserFilterSave, onChange: (
|
|
76
|
+
}), isChecked: !currentData.disableUserFilterSave, onChange: (isChecked) => {
|
|
76
77
|
setCurrentData({
|
|
77
78
|
...currentData,
|
|
78
|
-
disableUserFilterSave:
|
|
79
|
+
disableUserFilterSave: !isChecked,
|
|
79
80
|
});
|
|
80
81
|
} }), enableDashboardPersistentFiltersAcrossTabs ? (_jsx(ConfigurationOption, { label: intl.formatMessage({
|
|
81
82
|
id: "filters.configurationPanel.persistentFiltersAcrossTabs.toggle",
|
|
82
83
|
}), tooltip: intl.formatMessage({
|
|
83
84
|
id: "filters.configurationPanel.persistentFiltersAcrossTabs.toggle.tooltip",
|
|
84
|
-
}), isChecked: !currentData.disablePersistentFiltersAcrossTabs, onChange: (
|
|
85
|
+
}), isChecked: !currentData.disablePersistentFiltersAcrossTabs, onChange: (isChecked) => {
|
|
85
86
|
setCurrentData({
|
|
86
87
|
...currentData,
|
|
87
|
-
disablePersistentFiltersAcrossTabs:
|
|
88
|
+
disablePersistentFiltersAcrossTabs: !isChecked,
|
|
88
89
|
});
|
|
89
90
|
} })) : null, enableDashboardSectionHeadersDateDataSet ? (_jsx(DateDatasetDropdown, { label: intl.formatMessage({
|
|
90
91
|
id: "settingsDashboardDialog.sectionHeaders.dateDataset",
|
|
@@ -107,14 +108,51 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
|
|
|
107
108
|
}), showRepeatTypeDescription: true, showTimezoneInOccurrence: true, dateFormat: dateFormat, weekStart: weekStart, locale: locale, showInheritValue: true, isWhiteLabeled: isWhiteLabeled, customRecurrenceTypeMappingFn: simpleRecurrenceTypeMappingFn }), _jsx("div", { className: "gd-dashboard-settings-evaluation-note", children: currentData.evaluationFrequency === undefined ? (_jsx(FormattedMessage, { id: "settingsDashboardDialog.section.alert.inherit" })) : (_jsx(FormattedMessage, { id: "settingsDashboardDialog.section.alert.note", values: {
|
|
108
109
|
strong: (chunks) => _jsx("strong", { children: chunks }),
|
|
109
110
|
} })) })
|
|
110
|
-
] })
|
|
111
|
-
|
|
111
|
+
] }), settings.enableDashboardTimezone ? (_jsxs("div", { className: "gd-dashboard-settings-dialog-section s-dashboard-settings-timezone", children: [
|
|
112
|
+
_jsx(DialogListHeader, { title: intl.formatMessage({ id: "settingsDashboardDialog.section.timezone" }), className: "gd-dashboard-settings-filters" }), _jsx(TimezoneOption, { label: intl.formatMessage({
|
|
113
|
+
id: "settingsDashboardDialog.section.timezone.defaultTimezone",
|
|
114
|
+
}), tooltip: intl.formatMessage({
|
|
115
|
+
id: "settingsDashboardDialog.section.timezone.defaultTimezone.tooltip",
|
|
116
|
+
}), timezoneConfig: currentData.timezoneConfig, onChange: (timezoneId) => {
|
|
117
|
+
setCurrentData({
|
|
118
|
+
...currentData,
|
|
119
|
+
timezoneConfig: normalizeDashboardTimezoneConfig({
|
|
120
|
+
...currentData.timezoneConfig,
|
|
121
|
+
timezoneId,
|
|
122
|
+
}),
|
|
123
|
+
});
|
|
124
|
+
} }), _jsx(ConfigurationOption, { label: intl.formatMessage({
|
|
125
|
+
id: "settingsDashboardDialog.section.timezone.allowUserOverride.toggle",
|
|
126
|
+
}), tooltip: intl.formatMessage({
|
|
127
|
+
id: "settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip",
|
|
128
|
+
}), isChecked: currentData.timezoneConfig?.allowUserOverrideInViewMode ?? false, onChange: (isChecked) => {
|
|
129
|
+
setCurrentData({
|
|
130
|
+
...currentData,
|
|
131
|
+
timezoneConfig: normalizeDashboardTimezoneConfig({
|
|
132
|
+
...currentData.timezoneConfig,
|
|
133
|
+
allowUserOverrideInViewMode: isChecked,
|
|
134
|
+
}),
|
|
135
|
+
});
|
|
136
|
+
} }), _jsx(ConfigurationOption, { label: intl.formatMessage({
|
|
137
|
+
id: "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle",
|
|
138
|
+
}), tooltip: intl.formatMessage({
|
|
139
|
+
id: "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip",
|
|
140
|
+
}), isChecked: currentData.timezoneConfig?.showTimezoneInfo ?? false, onChange: (isChecked) => {
|
|
141
|
+
setCurrentData({
|
|
142
|
+
...currentData,
|
|
143
|
+
timezoneConfig: normalizeDashboardTimezoneConfig({
|
|
144
|
+
...currentData.timezoneConfig,
|
|
145
|
+
showTimezoneInfo: isChecked,
|
|
146
|
+
}),
|
|
147
|
+
});
|
|
148
|
+
} })
|
|
149
|
+
] })) : null] }) }));
|
|
112
150
|
}
|
|
113
151
|
const BUBBLE_ALIGN_POINTS = [{ align: "bc tl" }];
|
|
114
152
|
function ConfigurationOption({ label, tooltip, isChecked, onChange }) {
|
|
115
153
|
return (_jsx("div", { className: "configuration-category-item", children: _jsxs("label", { className: "input-checkbox-toggle", children: [
|
|
116
154
|
_jsx("input", { type: "checkbox", checked: isChecked, onChange: (e) => {
|
|
117
|
-
onChange(
|
|
155
|
+
onChange(e.currentTarget.checked);
|
|
118
156
|
} }), _jsxs("span", { className: "input-label-text", children: [label, _jsxs(BubbleHoverTrigger, { showDelay: 0, hideDelay: 0, eventsOnBubble: true, className: "configuration-category-item-tooltip-icon", children: [
|
|
119
157
|
_jsx("span", { className: "gd-icon-circle-question gd-filter-configuration__help-icon" }), _jsx(Bubble, { alignPoints: BUBBLE_ALIGN_POINTS, children: _jsx("div", { className: "gd-filter-configuration__help-tooltip", children: tooltip }) })
|
|
120
158
|
] })
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type IDashboardTimezoneConfig } from "@gooddata/sdk-model";
|
|
3
|
+
interface ITimezoneOptionProps {
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
tooltip: ReactNode;
|
|
6
|
+
timezoneConfig: IDashboardTimezoneConfig | undefined;
|
|
7
|
+
onChange: (timezoneId: string | undefined) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function TimezoneOption({ label, tooltip, timezoneConfig, onChange }: ITimezoneOptionProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=TimezoneOption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimezoneOption.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/TimezoneOption.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAIhD,OAAO,EAAoB,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAWtF,UAAU,oBAAoB;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,cAAc,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACrD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAsDhG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import { useIntl } from "react-intl";
|
|
5
|
+
import { BROWSER_DETECTED } from "@gooddata/sdk-model";
|
|
6
|
+
import { Bubble, BubbleHoverTrigger, TimezoneSelect, } from "@gooddata/sdk-ui-kit";
|
|
7
|
+
const BUBBLE_ALIGN_POINTS = [{ align: "bc tl" }];
|
|
8
|
+
export function TimezoneOption({ label, tooltip, timezoneConfig, onChange }) {
|
|
9
|
+
const intl = useIntl();
|
|
10
|
+
const specialItems = useMemo(() => {
|
|
11
|
+
// TODO INE (CQ-2726): resolve the effective workspace timezone and include it in the item label
|
|
12
|
+
const workspaceItemLabel = intl.formatMessage({
|
|
13
|
+
id: "settingsDashboardDialog.section.timezone.defaultTimezone.workspace",
|
|
14
|
+
});
|
|
15
|
+
// plain ID here — the label template already brackets the value, so the "id (offset)"
|
|
16
|
+
// display label would produce nested brackets
|
|
17
|
+
const browserTimezoneId = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
18
|
+
const browserItemLabel = intl.formatMessage({ id: "settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser" }, { timezone: browserTimezoneId });
|
|
19
|
+
return [
|
|
20
|
+
{ id: undefined, label: workspaceItemLabel },
|
|
21
|
+
{ id: BROWSER_DETECTED, label: browserItemLabel },
|
|
22
|
+
];
|
|
23
|
+
}, [intl]);
|
|
24
|
+
return (_jsxs("div", { className: "configuration-category-item", children: [
|
|
25
|
+
_jsxs("span", { className: "input-label-text", children: [label, _jsxs(BubbleHoverTrigger, { showDelay: 0, hideDelay: 0, eventsOnBubble: true, className: "configuration-category-item-tooltip-icon", children: [
|
|
26
|
+
_jsx("span", { className: "gd-icon-circle-question gd-filter-configuration__help-icon" }), _jsx(Bubble, { alignPoints: BUBBLE_ALIGN_POINTS, children: _jsx("div", { className: "gd-filter-configuration__help-tooltip", children: tooltip }) })
|
|
27
|
+
] })
|
|
28
|
+
] }), _jsx(TimezoneSelect, { value: timezoneConfig?.timezoneId, onChange: onChange, specialItems: specialItems, searchPlaceholder: intl.formatMessage({
|
|
29
|
+
id: "settingsDashboardDialog.section.timezone.select.searchPlaceholder",
|
|
30
|
+
}), ariaLabel: intl.formatMessage({
|
|
31
|
+
id: "settingsDashboardDialog.section.timezone.defaultTimezone",
|
|
32
|
+
}), noMatchLabel: intl.formatMessage({
|
|
33
|
+
id: "settingsDashboardDialog.section.timezone.select.noMatch",
|
|
34
|
+
}) })
|
|
35
|
+
] }));
|
|
36
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ComponentType } from "react";
|
|
2
2
|
import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
|
|
3
|
-
import { type ObjRef } from "@gooddata/sdk-model";
|
|
3
|
+
import { type IDashboardTimezoneConfig, type ObjRef } from "@gooddata/sdk-model";
|
|
4
4
|
import { type GoodDataSdkError } from "@gooddata/sdk-ui";
|
|
5
5
|
/**
|
|
6
6
|
* @alpha
|
|
@@ -13,6 +13,7 @@ export interface IDashboardSettingsApplyPayload {
|
|
|
13
13
|
evaluationFrequency: string | undefined;
|
|
14
14
|
sectionHeadersDateDataSet: ObjRef | undefined;
|
|
15
15
|
disablePersistentFiltersAcrossTabs: boolean;
|
|
16
|
+
timezoneConfig?: IDashboardTimezoneConfig;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* @alpha
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC3C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,kCAAkC,EAAE,OAAO,CAAC;IAC5C,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;OAEG;IACH,OAAO,EAAE,kBAAkB,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDialogData.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/useDialogData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDialogData.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/useDialogData.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,wBAAgB,aAAa;;;;;EAgC5B"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { isEqual } from "lodash-es";
|
|
4
|
+
import { normalizeDashboardTimezoneConfig } from "@gooddata/sdk-model";
|
|
4
5
|
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
5
|
-
import { selectDisableDashboardCrossFiltering, selectDisableDashboardPersistentFiltersAcrossTabs, selectDisableDashboardUserFilterReset, selectDisableDashboardUserFilterSave, selectDisableFilterViews, selectEvaluationFrequency, selectSectionHeadersDateDataSet, } from "../../model/store/meta/metaSelectors.js";
|
|
6
|
+
import { selectDashboardTimezoneConfig, selectDisableDashboardCrossFiltering, selectDisableDashboardPersistentFiltersAcrossTabs, selectDisableDashboardUserFilterReset, selectDisableDashboardUserFilterSave, selectDisableFilterViews, selectEvaluationFrequency, selectSectionHeadersDateDataSet, } from "../../model/store/meta/metaSelectors.js";
|
|
6
7
|
export function useDialogData() {
|
|
7
8
|
const disableCrossFiltering = useDashboardSelector(selectDisableDashboardCrossFiltering) ?? false;
|
|
8
9
|
const disableUserFilterReset = useDashboardSelector(selectDisableDashboardUserFilterReset) ?? false;
|
|
@@ -11,6 +12,7 @@ export function useDialogData() {
|
|
|
11
12
|
const disablePersistentFiltersAcrossTabs = useDashboardSelector(selectDisableDashboardPersistentFiltersAcrossTabs) ?? false;
|
|
12
13
|
const evaluationFrequency = useDashboardSelector(selectEvaluationFrequency) ?? undefined;
|
|
13
14
|
const sectionHeadersDateDataSet = useDashboardSelector(selectSectionHeadersDateDataSet) ?? undefined;
|
|
15
|
+
const timezoneConfig = normalizeDashboardTimezoneConfig(useDashboardSelector(selectDashboardTimezoneConfig));
|
|
14
16
|
const [currentData, setCurrentData] = useState({
|
|
15
17
|
disableCrossFiltering,
|
|
16
18
|
disableUserFilterSave,
|
|
@@ -19,6 +21,7 @@ export function useDialogData() {
|
|
|
19
21
|
disablePersistentFiltersAcrossTabs,
|
|
20
22
|
evaluationFrequency,
|
|
21
23
|
sectionHeadersDateDataSet,
|
|
24
|
+
timezoneConfig,
|
|
22
25
|
});
|
|
23
26
|
const [originalData] = useState(currentData);
|
|
24
27
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultDashboardDateFilter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultDashboardDateFilter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,OAAO,CAAC;AAmC1E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAmB5D;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACvC,MAAM,EACN,aAAa,EACb,eAAe,EACf,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,KAAK,EACR,EAAE,yBAAyB,GAAG,YAAY,CA0L1C"}
|
|
@@ -14,6 +14,17 @@ import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSe
|
|
|
14
14
|
import { useCurrentDateFilterConfig } from "../../dragAndDrop/useCurrentDateFilterConfig.js";
|
|
15
15
|
import { getVisibilityIcon } from "../utils.js";
|
|
16
16
|
import { DateFilterConfigurationBody } from "./configuration/DateFilterConfigurationBody.js";
|
|
17
|
+
/**
|
|
18
|
+
* Whether the date dimension relevant to the filter exposes the second-level attribute (`GDC.time.second`):
|
|
19
|
+
* a dimension-scoped filter checks its own dataset, a common (dataset-less) filter checks whether any date
|
|
20
|
+
* dimension has seconds enabled.
|
|
21
|
+
*/
|
|
22
|
+
function relevantDateDimensionHasSeconds(dateDatasets, dataSetRef) {
|
|
23
|
+
const datasetHasSeconds = (dateDataset) => dateDataset.dateAttributes.some((attribute) => attribute.granularity === "GDC.time.second");
|
|
24
|
+
return dataSetRef
|
|
25
|
+
? dateDatasets.some((ds) => areObjRefsEqual(ds.dataSet.ref, dataSetRef) && datasetHasSeconds(ds))
|
|
26
|
+
: dateDatasets.some(datasetHasSeconds);
|
|
27
|
+
}
|
|
17
28
|
/**
|
|
18
29
|
* Default implementation of the date filter to use on the dashboard's filter bar.
|
|
19
30
|
*
|
|
@@ -70,6 +81,24 @@ export function DefaultDashboardDateFilter({ filter, workingFilter, onFilterChan
|
|
|
70
81
|
const hoursMinutesGranularities = ["GDC.time.minute", "GDC.time.hour"];
|
|
71
82
|
const hasHoursMinutesGranularities = hoursMinutesGranularities.every((granularity) => config.availableGranularities.includes(granularity));
|
|
72
83
|
const isTimeForAbsoluteRangeEnabled = !!capabilities.supportsTimeGranularities && hasHoursMinutesGranularities;
|
|
84
|
+
// Second-level relative granularities ship in the default config but are surfaced only when the
|
|
85
|
+
// enableSecondGranularities feature flag is on AND the backend supports time granularities; otherwise
|
|
86
|
+
// strip them from the tabs the relative form shows.
|
|
87
|
+
const availableGranularities = useMemo(() => settings.enableSecondGranularities && capabilities.supportsTimeGranularities
|
|
88
|
+
? config.availableGranularities
|
|
89
|
+
: config.availableGranularities.filter((granularity) => granularity !== "GDC.time.second"), [
|
|
90
|
+
config.availableGranularities,
|
|
91
|
+
settings.enableSecondGranularities,
|
|
92
|
+
capabilities.supportsTimeGranularities,
|
|
93
|
+
]);
|
|
94
|
+
// Seconds precision in the absolute date filter time field is offered only when the backend supports time
|
|
95
|
+
// granularities, the enableSecondGranularities feature flag is on, and the relevant date dimension exposes
|
|
96
|
+
// the GDC.time.second attribute. This is a stricter, dimension-aware gate than the relative form's seconds
|
|
97
|
+
// tab (which follows availableGranularities); the absolute time field must not appear for a dimension that
|
|
98
|
+
// has no second attribute.
|
|
99
|
+
const isSecondsForAbsoluteRangeEnabled = isTimeForAbsoluteRangeEnabled &&
|
|
100
|
+
!!settings.enableSecondGranularities &&
|
|
101
|
+
relevantDateDimensionHasSeconds(allDateDatasets, filter?.dateFilter.dataSet);
|
|
73
102
|
const isConfigurationEnabled = isInEditMode &&
|
|
74
103
|
(!!capabilities.supportsHiddenAndLockedFiltersOnUI || !!capabilities.supportsMultipleDateFilters);
|
|
75
104
|
const FilterConfigurationComponent = useMemo(() => {
|
|
@@ -80,5 +109,5 @@ export function DefaultDashboardDateFilter({ filter, workingFilter, onFilterChan
|
|
|
80
109
|
}, [intl, filter?.dateFilter.dataSet, defaultDateFilterName]);
|
|
81
110
|
return (_jsx(DateFilter, { excludeCurrentPeriod: excludeCurrentPeriod, selectedFilterOption: dateFilterOption, workingExcludeCurrentPeriod: isApplyAllAtOnceEnabledAndSet ? workingExcludeCurrentPeriod : undefined, workingSelectedFilterOption: isApplyAllAtOnceEnabledAndSet ? workingFilterOption : undefined, dateFilterMode: readonly
|
|
82
111
|
? DashboardDateFilterConfigModeValues.READONLY
|
|
83
|
-
: DashboardDateFilterConfigModeValues.ACTIVE, filterOptions: dateFilterOptions, availableGranularities:
|
|
112
|
+
: DashboardDateFilterConfigModeValues.ACTIVE, filterOptions: dateFilterOptions, availableGranularities: availableGranularities, customFilterName: title, onApply: onApply, onSelect: isApplyAllAtOnceEnabledAndSet ? onSelect : undefined, dateFormat: dateFormat, locale: locale, isTimeForAbsoluteRangeEnabled: isTimeForAbsoluteRangeEnabled, isSecondsForAbsoluteRangeEnabled: isSecondsForAbsoluteRangeEnabled, isEditMode: isInEditMode, openOnInit: autoOpen, weekStart: weekStart, customIcon: visibilityIcon, showDropDownHeaderMessage: !filter?.dateFilter.dataSet, FilterConfigurationComponent: isConfigurationEnabled ? FilterConfigurationComponent : undefined, withoutApply: isApplyAllAtOnceEnabledAndSet, ButtonComponent: ButtonComponent, overlayPositionType: overlayPositionType, activeCalendars: activeCalendars, enableEmptyDateValues: enableEmptyDateValues, hideDisabledExclude: true }));
|
|
84
113
|
}
|
|
@@ -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"}
|
|
@@ -11,10 +11,11 @@ import { messages } from "../../locales.js";
|
|
|
11
11
|
import { createInsightRequested } from "../../model/events/lab.js";
|
|
12
12
|
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
13
13
|
import { useDashboardEventDispatch } from "../../model/react/useDashboardEventDispatch.js";
|
|
14
|
+
import { useDashboardExecConfig } from "../../model/react/useWidgetExecConfig.js";
|
|
14
15
|
import { selectBackendCapabilities } from "../../model/store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
15
16
|
import { selectAllowCreateInsightRequest, selectEnableCatalogSmartSearchResults, selectEnableVisualizationFilteringByTags, selectObjectAvailabilityConfig, selectSettings, } from "../../model/store/config/configSelectors.js";
|
|
16
17
|
import { selectCanCreateVisualization } from "../../model/store/permissions/permissionsSelectors.js";
|
|
17
|
-
import {
|
|
18
|
+
import { selectInsightListLastUpdateRequested } from "../../model/store/ui/uiSelectors.js";
|
|
18
19
|
import { selectCurrentUser } from "../../model/store/user/userSelectors.js";
|
|
19
20
|
import { getAuthor } from "../../model/utils/author.js";
|
|
20
21
|
import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js";
|
|
@@ -65,7 +66,7 @@ export function InsightList({ height, width = LIST_WIDTH, searchAutofocus, rende
|
|
|
65
66
|
const canCreateVisualization = useDashboardSelector(selectCanCreateVisualization);
|
|
66
67
|
const allowCreateInsightRequest = useDashboardSelector(selectAllowCreateInsightRequest);
|
|
67
68
|
const settings = useDashboardSelector(selectSettings);
|
|
68
|
-
const
|
|
69
|
+
const execConfig = useDashboardExecConfig();
|
|
69
70
|
const objectAvailability = useDashboardSelector(selectObjectAvailabilityConfig);
|
|
70
71
|
const isFilteringByTagsEnabled = useDashboardSelector(selectEnableVisualizationFilteringByTags);
|
|
71
72
|
const enableCatalogSmartSearchResults = useDashboardSelector(selectEnableCatalogSmartSearchResults);
|
|
@@ -159,8 +160,6 @@ export function InsightList({ height, width = LIST_WIDTH, searchAutofocus, rende
|
|
|
159
160
|
const insightListSourceItem = getInsightListSourceItem(insight);
|
|
160
161
|
const isSelected = areObjRefsEqual(insight.insight.ref, selectedRef);
|
|
161
162
|
return (_jsx(InsightListItem, { title: title, description: description, showDescriptionPanel: true, type: insightListSourceItem.insightType, width: width, isSelected: isSelected, updated: insightUpdated(insightListSourceItem.insight) ??
|
|
162
|
-
insightCreated(insightListSourceItem.insight), isLocked: insightIsLocked(insightListSourceItem.insight), onClick: () => onSelect?.(insight), metadataTimeZone: settings?.metadataTimeZone, useReferences: true, richTextExecConfig:
|
|
163
|
-
timestamp: executionTimestamp,
|
|
164
|
-
}, LoadingComponent: LoadingComponent }));
|
|
163
|
+
insightCreated(insightListSourceItem.insight), isLocked: insightIsLocked(insightListSourceItem.insight), onClick: () => onSelect?.(insight), metadataTimeZone: settings?.metadataTimeZone, useReferences: true, richTextExecConfig: execConfig, LoadingComponent: LoadingComponent }));
|
|
165
164
|
}), renderNoData: ({ hasNoMatchingData }) => (_jsx(InsightListNoData, { isUserInsights: selectedTabId === messages.tabsMy.id, hasNoMatchingData: hasNoMatchingData, showNoDataCreateButton: showNoDataCreateButton, onCreateButtonClick: createInsightRequestedEvent })), loadNextPage: loadNextPage, hasNextPage: hasNextPage || isRelatedLoading, skeletonItemsCount: loadingItemsCount, shouldLoadNextPage: shouldLoadNextPage, isNextPageLoading: isNextPageLoading, SkeletonItem: () => (_jsx(UiSkeleton, { itemWidth: ["100%"], direction: "row", itemPadding: 15, itemHeight: 30, itemsCount: 1, itemsGap: 0 })) }));
|
|
166
165
|
}
|