@gooddata/sdk-ui-dashboard 11.51.0-alpha.0 → 11.51.0-alpha.2

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.
Files changed (90) hide show
  1. package/NOTICE +4 -4
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/index.d.ts +6 -1
  5. package/esm/index.d.ts.map +1 -1
  6. package/esm/index.js +6 -1
  7. package/esm/model/store/meta/index.d.ts +1 -0
  8. package/esm/model/store/meta/index.d.ts.map +1 -1
  9. package/esm/model/store/meta/metaReducers.d.ts +5 -1
  10. package/esm/model/store/meta/metaReducers.d.ts.map +1 -1
  11. package/esm/model/store/meta/metaReducers.js +9 -0
  12. package/esm/model/store/meta/metaSelectors.d.ts +23 -1
  13. package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
  14. package/esm/model/store/meta/metaSelectors.js +33 -2
  15. package/esm/model/store/meta/metaState.d.ts +1 -1
  16. package/esm/model/store/meta/metaState.d.ts.map +1 -1
  17. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +1 -1
  18. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  19. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +9 -9
  20. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts +7 -2
  21. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts.map +1 -1
  22. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.js +1 -1
  23. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +6 -8
  24. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
  25. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +5 -2
  26. package/esm/presentation/automations/alerting/types.d.ts +30 -5
  27. package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
  28. package/esm/presentation/automations/connectors/AlertingConnector.d.ts.map +1 -1
  29. package/esm/presentation/automations/connectors/AlertingConnector.js +22 -25
  30. package/esm/presentation/automations/connectors/AlertingConnector.test.js +71 -5
  31. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts +7 -1
  32. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts.map +1 -1
  33. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.js +12 -2
  34. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.js +28 -2
  35. package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts +29 -1
  36. package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts.map +1 -1
  37. package/esm/presentation/automations/contexts/AlertingDialogContext.js +12 -0
  38. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts +14 -0
  39. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts.map +1 -1
  40. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.js +12 -0
  41. package/esm/presentation/automations/contexts/AutomationsContext.d.ts +13 -0
  42. package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
  43. package/esm/presentation/automations/contexts/AutomationsContext.js +9 -0
  44. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +15 -0
  45. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
  46. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.js +13 -0
  47. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts +13 -1
  48. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts.map +1 -1
  49. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.js +12 -0
  50. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
  51. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +11 -16
  52. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.d.ts.map +1 -1
  53. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.js +7 -3
  54. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts +2 -1
  55. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts.map +1 -1
  56. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.js +12 -4
  57. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/attachmentFormats.d.ts +17 -7
  58. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/attachmentFormats.d.ts.map +1 -1
  59. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/attachmentFormats.js +18 -8
  60. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts +12 -0
  61. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts.map +1 -0
  62. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.js +41 -0
  63. package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts +4 -1
  64. package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts.map +1 -1
  65. package/esm/presentation/automations/scheduledEmail/utils/timezone.js +14 -138
  66. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.d.ts.map +1 -1
  67. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.js +1 -0
  68. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
  69. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +52 -14
  70. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts +11 -0
  71. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts.map +1 -0
  72. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.js +36 -0
  73. package/esm/presentation/dashboardSettingsDialog/types.d.ts +2 -1
  74. package/esm/presentation/dashboardSettingsDialog/types.d.ts.map +1 -1
  75. package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
  76. package/esm/presentation/dashboardSettingsDialog/useDialogData.js +4 -1
  77. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.d.ts.map +1 -1
  78. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js +30 -1
  79. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +44 -0
  80. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  81. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +44 -0
  82. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.d.ts.map +1 -1
  83. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +2 -1
  84. package/esm/sdk-ui-dashboard.d.ts +370 -6
  85. package/package.json +21 -21
  86. package/styles/css/dashboard.css +7 -0
  87. package/styles/css/dashboard.css.map +1 -1
  88. package/styles/css/main.css +7 -0
  89. package/styles/css/main.css.map +1 -1
  90. package/styles/scss/dashboard.scss +12 -0
@@ -4,7 +4,7 @@ import { useCallback, useState } from "react";
4
4
  import cx from "classnames";
5
5
  import { useIntl } from "react-intl";
6
6
  import { insightTitle, insightVisualizationType, isInsight, } from "@gooddata/sdk-model";
7
- import { Button, FullScreenOverlay, Overlay, OverlayController, OverlayControllerProvider, RichText, UiIcon, UiTooltip, isNotDocumentFocused, useIdPrefixed, useMediaQuery, } from "@gooddata/sdk-ui-kit";
7
+ import { Button, FLOATING_ELEMENT_DATA_ATTR, FullScreenOverlay, Overlay, OverlayController, OverlayControllerProvider, RichText, UiIcon, UiTooltip, isNotDocumentFocused, useIdPrefixed, useMediaQuery, } from "@gooddata/sdk-ui-kit";
8
8
  import { DOWNLOADER_ID } from "../../../../../_staging/fileUtils/downloadFile.js";
9
9
  import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
10
10
  import { useWidgetExecutionsHandler } from "../../../../../model/react/useWidgetExecutionsHandler.js";
@@ -32,6 +32,7 @@ const overlayIgnoredClasses = [
32
32
  ".options-menu-export-xlsx",
33
33
  ".options-menu-export-csv",
34
34
  `#${DOWNLOADER_ID}`,
35
+ `[${FLOATING_ELEMENT_DATA_ATTR}]`,
35
36
  ];
36
37
  const defaultDescriptionConfig = {
37
38
  source: "insight",
@@ -102,6 +102,7 @@ import { IDashboardObjectIdentity } from '@gooddata/sdk-model';
102
102
  import { IDashboardParameter } from '@gooddata/sdk-model';
103
103
  import { IDashboardPermissions } from '@gooddata/sdk-model';
104
104
  import { IDashboardReferences } from '@gooddata/sdk-backend-spi';
105
+ import { IDashboardTimezoneConfig } from '@gooddata/sdk-model';
105
106
  import { IDashboardWidget } from '@gooddata/sdk-model';
106
107
  import { IDataView } from '@gooddata/sdk-backend-spi';
107
108
  import { IDateFilter } from '@gooddata/sdk-model';
@@ -129,6 +130,7 @@ import { IExecutionDefinition } from '@gooddata/sdk-model';
129
130
  import { IExecutionResult } from '@gooddata/sdk-backend-spi';
130
131
  import { IExecutionResultLimitBreak } from '@gooddata/sdk-model';
131
132
  import { IExportResult } from '@gooddata/sdk-backend-spi';
133
+ import type { IExportTemplate } from '@gooddata/sdk-model';
132
134
  import { IFilter } from '@gooddata/sdk-model';
133
135
  import { IFilterableWidget } from '@gooddata/sdk-model';
134
136
  import { IFilterContext } from '@gooddata/sdk-model';
@@ -2667,7 +2669,7 @@ export declare type DashboardDensity = "comfortable" | "compact";
2667
2669
  /**
2668
2670
  * @public
2669
2671
  */
2670
- export declare type DashboardDescriptor = Pick<IDashboard, "title" | "description" | "tags" | "disableCrossFiltering" | "disableUserFilterReset" | "disableUserFilterSave" | "disableFilterViews" | "disablePersistentFiltersAcrossTabs" | "evaluationFrequency" | "sectionHeadersDateDataSet"> & IAccessControlAware;
2672
+ export declare type DashboardDescriptor = Pick<IDashboard, "title" | "description" | "tags" | "disableCrossFiltering" | "disableUserFilterReset" | "disableUserFilterSave" | "disableFilterViews" | "disablePersistentFiltersAcrossTabs" | "evaluationFrequency" | "sectionHeadersDateDataSet" | "timezoneConfig"> & IAccessControlAware;
2671
2673
 
2672
2674
  /**
2673
2675
  * @public
@@ -5590,26 +5592,78 @@ export declare interface IAlertDialogContext {
5590
5592
  alert?: IAutomationMetadataObject;
5591
5593
  }
5592
5594
 
5595
+ /**
5596
+ * Sub-context for the alerting create/edit dialog.
5597
+ *
5598
+ * The connector hydrates this from dashboard state and provides the CRUD callbacks; the dialog and its
5599
+ * hooks read it instead of reaching into the dashboard store. That direction is enforced by the
5600
+ * `no-model-imports-in-clean-alerting` rule in `.dependency-cruiser.js`.
5601
+ *
5602
+ * @alpha
5603
+ */
5604
+ export declare interface IAlertingDialogContextValue {
5605
+ mode: "create" | "edit";
5606
+ widget?: IWidget;
5607
+ insight?: IInsight;
5608
+ widgetTitle?: string;
5609
+ dashboardId?: string;
5610
+ dashboardFilters: FilterContextItem[];
5611
+ hiddenFilters: FilterContextItem[];
5612
+ widgetLocalIdToTabIdMap: Record<string, string>;
5613
+ executionResultByRef: (ref: ObjRef | undefined) => {
5614
+ executionResult?: IExecutionResult;
5615
+ } | undefined;
5616
+ /** Effective widget parameter values for the dialog's widget (replaces direct selectEffectiveParameterValuesForWidget read) */
5617
+ parameterValues: IInsightParameterValue[];
5618
+ commonDateFilterId?: string;
5619
+ dashboardEvaluationFrequency?: string;
5620
+ createAlert(alert: IAutomationMetadataObjectDefinition): Promise<IAutomationMetadataObject>;
5621
+ saveAlert(alert: IAutomationMetadataObject): Promise<IAutomationMetadataObject>;
5622
+ deleteAlert(alert: IAutomationMetadataObject): Promise<void>;
5623
+ /** The alert being edited; undefined when creating a new one. */
5624
+ alertToEdit?: IAutomationMetadataObject;
5625
+ /**
5626
+ * Workspace users available as alert recipients. Loaded only while the create/edit dialog is
5627
+ * mounted, so opening the management dialog alone does not trigger the load.
5628
+ */
5629
+ users: IWorkspaceUser[];
5630
+ /** Error from loading workspace users, if any. */
5631
+ usersError?: GoodDataSdkError;
5632
+ /** Notification channels available as alert destinations. */
5633
+ notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
5634
+ /** True while the dialog's initial data (automations, workspace users) is still loading. */
5635
+ isLoading: boolean;
5636
+ }
5637
+
5593
5638
  /**
5594
5639
  * @alpha
5595
5640
  */
5596
5641
  export declare interface IAlertingDialogProps {
5597
5642
  /**
5598
5643
  * In case, we are not creating new alert, but editing existing one, this is the active alert to be edited.
5644
+ *
5645
+ * @deprecated read `alertToEdit` from `useAlertingDialogContext()` instead. Prop will be removed.
5599
5646
  */
5600
5647
  alertToEdit?: IAutomationMetadataObject;
5601
5648
  /**
5602
5649
  * Users in workspace
5650
+ *
5651
+ * @deprecated read `users` from `useAlertingDialogContext()` instead. Prop will be removed.
5603
5652
  */
5604
- users: IWorkspaceUser[];
5653
+ users?: IWorkspaceUser[];
5605
5654
  /**
5606
5655
  * Error occurred while loading users
5656
+ *
5657
+ * @deprecated read `usersError` from `useAlertingDialogContext()` instead. Prop will be removed.
5607
5658
  */
5608
5659
  usersError?: GoodDataSdkError;
5609
5660
  /**
5610
5661
  * Notification channels in organization
5662
+ *
5663
+ * @deprecated read `notificationChannels` from `useAlertingDialogContext()` instead.
5664
+ * Prop will be removed.
5611
5665
  */
5612
- notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
5666
+ notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
5613
5667
  /**
5614
5668
  * Widget to be used for alert.
5615
5669
  *
@@ -5617,16 +5671,22 @@ export declare interface IAlertingDialogProps {
5617
5671
  * Typed as IWidget (not ExtendedDashboardWidget) because the dialog only
5618
5672
  * supports insight widgets; custom widgets and nested layouts are not valid
5619
5673
  * alert targets and were silently discarded at the connector boundary anyway.
5674
+ *
5675
+ * @deprecated read `widget` from `useAlertingDialogContext()` instead. Prop will be removed.
5620
5676
  */
5621
5677
  widget?: IWidget;
5622
5678
  /**
5623
5679
  * Insight to be used for alert.
5624
5680
  *
5625
5681
  * Note: this is available only when alerting for widget, not dashboard.
5682
+ *
5683
+ * @deprecated read `insight` from `useAlertingDialogContext()` instead. Prop will be removed.
5626
5684
  */
5627
5685
  insight?: IInsight;
5628
5686
  /**
5629
5687
  * Is alert dialog loading initial data, before it can be rendered?
5688
+ *
5689
+ * @deprecated read `isLoading` from `useAlertingDialogContext()` instead. Prop will be removed.
5630
5690
  */
5631
5691
  isLoading?: boolean;
5632
5692
  /**
@@ -5659,26 +5719,62 @@ export declare interface IAlertingDialogProps {
5659
5719
  onDeleteError?: (error: GoodDataSdkError) => void;
5660
5720
  }
5661
5721
 
5722
+ /**
5723
+ * Sub-context for the alerting management dialog.
5724
+ * The connector hydrates this from dashboard state.
5725
+ * The management dialog tree reads from this context instead of calling useDashboardSelector directly.
5726
+ *
5727
+ * @alpha
5728
+ */
5729
+ export declare interface IAlertingManagementDialogContextValue {
5730
+ currentUser?: IUser;
5731
+ dashboardId?: string;
5732
+ dashboardTitle?: string;
5733
+ canManageWorkspace: boolean;
5734
+ isAlertDialogOpen: boolean;
5735
+ alertingDialogReturnFocusTo?: string;
5736
+ managementDialogContext: {
5737
+ widgetRef?: ObjRef;
5738
+ };
5739
+ automationsInvalidationId?: number;
5740
+ isEmbedded: boolean;
5741
+ enableAccessibilityMode: boolean;
5742
+ getWidgetByRef: (ref: ObjRef | undefined) => IWidget | undefined;
5743
+ getInsightByWidgetRef: (ref: ObjRef | undefined) => IInsight | undefined;
5744
+ pauseAlert(alert: IAutomationMetadataObject): Promise<IAutomationMetadataObject>;
5745
+ resumeAlert(alert: IAutomationMetadataObject): Promise<IAutomationMetadataObject>;
5746
+ }
5747
+
5662
5748
  /**
5663
5749
  * @alpha
5664
5750
  */
5665
5751
  export declare interface IAlertingManagementDialogProps {
5666
5752
  /**
5667
5753
  * Is loading alert data?
5754
+ *
5755
+ * @deprecated not read by the default dialog. Prop will be removed.
5668
5756
  */
5669
- isLoadingAlertingData: boolean;
5757
+ isLoadingAlertingData?: boolean;
5670
5758
  /**
5671
5759
  * Error occurred while loading alert data?
5760
+ *
5761
+ * @deprecated not read by the default dialog. Prop will be removed.
5672
5762
  */
5673
5763
  alertDataError?: GoodDataSdkError;
5674
5764
  /**
5675
5765
  * Notification channels in organization
5766
+ *
5767
+ * @deprecated not read by the default dialog. A replacement can read the dashboard's
5768
+ * notification channels directly. Prop will be removed.
5676
5769
  */
5677
- notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
5770
+ notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
5678
5771
  /**
5679
5772
  * Automations in workspace
5773
+ *
5774
+ * @deprecated not read by the default dialog. A replacement can read the dashboard's
5775
+ * automations directly. Prop will be removed.
5680
5776
  */
5681
- automations: IAutomationMetadataObject[];
5777
+ automations?: IAutomationMetadataObject[];
5682
5778
  /**
5683
5779
  * Callback to be called, when user adds new alert item.
5684
5780
  */
@@ -5893,6 +5989,84 @@ export declare interface IAutomationFiltersTab {
5893
5989
  hiddenFilters: FilterContextItem[];
5894
5990
  }
5895
5991
 
5992
+ /**
5993
+ * Main context shared across all automation dialogs.
5994
+ * Only fields actively consumed by migrated leaves are listed here — add fields as each leaf migrates.
5995
+ *
5996
+ * @alpha
5997
+ */
5998
+ export declare interface IAutomationsContextValue {
5999
+ locale: ILocale;
6000
+ separators: ISeparators;
6001
+ settings?: ISettings;
6002
+ catalogAttributes: ICatalogAttribute[];
6003
+ catalogDateDatasets: ICatalogDateDataset[];
6004
+ catalogMeasures: ICatalogMeasure[];
6005
+ dateFilterConfig: IAutomationsDateFilterConfig;
6006
+ dateFilterContextConfig: IDashboardDateFilterConfig_2 | undefined;
6007
+ attributeFilterConfigs: IDashboardAttributeFilterConfig[];
6008
+ attributeFilterConfigsByTab: Record<string, IDashboardAttributeFilterConfig[]>;
6009
+ attributeFilterSelectionTypeMap: Map<string, DashboardAttributeFilterSelectionType | undefined>;
6010
+ attributeFilterSelectionTypeMapByTab: Record<string, Map<string, DashboardAttributeFilterSelectionType | undefined>>;
6011
+ dateFilterConfigs: IDashboardDateFilterConfigItem[];
6012
+ dateFilterConfigsByTab: Record<string, IDashboardDateFilterConfigItem[]>;
6013
+ dateFilterConfigOverridesByTab: Record<string, IDashboardDateFilterConfig_2 | undefined>;
6014
+ measureValueFilterConfigs: IDashboardMeasureValueFilterConfig[];
6015
+ measureValueFilterConfigsByTab: Record<string, IDashboardMeasureValueFilterConfig[]>;
6016
+ commonDateFilterId: string | undefined;
6017
+ lockedFilters: FilterContextItem[];
6018
+ hiddenFilters: FilterContextItem[];
6019
+ availableFilters: FilterContextItem[];
6020
+ automationFiltersByTab: IAutomationFiltersTab[];
6021
+ defaultSelectedFilters: FilterContextItem[];
6022
+ automationAvailableFilters: FilterContextItem[];
6023
+ maxAutomationsRecipients: number;
6024
+ isExecutionTimestampMode: boolean;
6025
+ allowHourlyRecurrence: boolean;
6026
+ currentUser: IUser;
6027
+ weekStart: WeekStart;
6028
+ timezone: string | undefined;
6029
+ isWhiteLabeled: boolean;
6030
+ isSecondaryTitleVisible: boolean;
6031
+ externalRecipient: string | undefined;
6032
+ features: {
6033
+ canCreateAutomation: boolean;
6034
+ enableAlertOncePerInterval: boolean;
6035
+ enableAnomalyDetectionAlert: boolean;
6036
+ canUseAiAssistant: boolean;
6037
+ canManageWorkspace: boolean;
6038
+ enableSlideshowExports: boolean;
6039
+ enableAutomationEvaluationMode: boolean;
6040
+ };
6041
+ getCatalogAttributeByRef: (ref: ObjRef) => ICatalogAttribute | ICatalogDateAttribute | undefined;
6042
+ getAttributeFilterDisplayForm: (displayForm: ObjRef) => IAttributeDisplayFormMetadataObject | undefined;
6043
+ /**
6044
+ * Element ID to return focus to when the scheduled-email dialog closes.
6045
+ * Shared by both the create/edit dialog and the management dialog tree via
6046
+ * useScheduleEmailDialogAccessibility.
6047
+ */
6048
+ scheduleEmailDialogReturnFocusTo?: string;
6049
+ /**
6050
+ * Returns true when a widget with the given ref still exists on the dashboard layout.
6051
+ * Bridges identifier↔URI mismatches the same way as selectWidgetByRef.
6052
+ * NOTE: do NOT narrow to isWidget() here — this is a pure existence check on the ObjRefMap.
6053
+ */
6054
+ widgetExistsByRef: (ref: ObjRef | undefined) => boolean;
6055
+ }
6056
+
6057
+ /**
6058
+ * Date filter configuration provided by the dashboard connector so that AutomationDateFilter
6059
+ * does not need to read dashboard selectors directly.
6060
+ *
6061
+ * @alpha
6062
+ */
6063
+ export declare interface IAutomationsDateFilterConfig {
6064
+ availableGranularities: DateFilterGranularity[];
6065
+ dateFilterOptions: IDateFilterOptionsByType;
6066
+ getGranularitiesForTab: (tabId: string) => DateFilterGranularity[];
6067
+ getOptionsForTab: (tabId: string) => IDateFilterOptionsByType | undefined;
6068
+ }
6069
+
5896
6070
  /**
5897
6071
  * @alpha
5898
6072
  */
@@ -11618,6 +11792,7 @@ export declare interface IDashboardSettingsApplyPayload {
11618
11792
  evaluationFrequency: string | undefined;
11619
11793
  sectionHeadersDateDataSet: ObjRef | undefined;
11620
11794
  disablePersistentFiltersAcrossTabs: boolean;
11795
+ timezoneConfig?: IDashboardTimezoneConfig;
11621
11796
  }
11622
11797
 
11623
11798
  /**
@@ -16612,6 +16787,56 @@ export declare function isBrokenAlertAttributeFilterInfo(item: IBrokenAlertFilte
16612
16787
  */
16613
16788
  export declare function isBrokenAlertDateFilterInfo(item: IBrokenAlertFilterBasicInfo): item is BrokenAlertDateFilterInfo;
16614
16789
 
16790
+ /**
16791
+ * Sub-context for the scheduled-email create/edit dialog.
16792
+ *
16793
+ * The connector hydrates this from dashboard state and provides the CRUD callbacks; the dialog and its
16794
+ * hooks read it instead of reaching into the dashboard store. That direction is enforced by the
16795
+ * `no-model-imports-in-clean-scheduled-email` rule in `.dependency-cruiser.js`.
16796
+ *
16797
+ * @alpha
16798
+ */
16799
+ export declare interface IScheduledEmailDialogContextValue {
16800
+ widget?: IWidget;
16801
+ insight?: IInsight;
16802
+ widgetTitle?: string;
16803
+ dashboardId?: string;
16804
+ dashboardTitle: string;
16805
+ dashboardFilters?: FilterContextItem[];
16806
+ /**
16807
+ * Raw dashboard hidden filters (selectDashboardHiddenFilters). Combined with edited filters via
16808
+ * getAppliedDashboardFilters/getAppliedWidgetFilters inside the dialog, mirroring the alerting context.
16809
+ */
16810
+ hiddenFilters: FilterContextItem[];
16811
+ widgetLocalIdToTabIdMap: Record<string, string>;
16812
+ commonDateFilterId?: string;
16813
+ /**
16814
+ * Effective export parameter overrides keyed by tab, scoped to the dialog's widget when present.
16815
+ * Replaces the direct selectExportEffectiveParameters read in useEditScheduledEmail.
16816
+ */
16817
+ exportParametersByTab: Record<string, IDashboardExportParameter[]>;
16818
+ /**
16819
+ * Organization-level export templates fetched in the connector (replaces the useExportTemplates
16820
+ * react hook read in the dialog).
16821
+ */
16822
+ exportTemplates: IExportTemplate[];
16823
+ /** Workspace date format (e.g. "MM/dd/yyyy"); from selectDateFormat. */
16824
+ dateFormat: string | undefined;
16825
+ /** Whether cross-filtering is active on the dashboard; from selectIsCrossFiltering. */
16826
+ isCrossFiltering: boolean;
16827
+ /** Whether the dashboard has more than one tab; derived from selectTabs. */
16828
+ hasMultipleTabs: boolean;
16829
+ /** Effective mode for the common (dashboard-level) date filter. */
16830
+ commonDateFilterMode: DashboardDateFilterConfigMode;
16831
+ /** Effective mode map for per-dataset date filters (localIdentifier → mode). */
16832
+ dateFiltersModeMap: Map<string, DashboardDateFilterConfigMode>;
16833
+ /** Effective mode map for attribute filters (localIdentifier → mode). */
16834
+ attributeFiltersModeMap: Map<string, DashboardAttributeFilterConfigMode>;
16835
+ createScheduledEmail(se: IAutomationMetadataObjectDefinition): Promise<IAutomationMetadataObject>;
16836
+ saveScheduledEmail(se: IAutomationMetadataObject): Promise<IAutomationMetadataObject>;
16837
+ deleteScheduledEmail(se: IAutomationMetadataObject): Promise<void>;
16838
+ }
16839
+
16615
16840
  /**
16616
16841
  * @alpha
16617
16842
  */
@@ -16718,6 +16943,58 @@ export declare interface IScheduledEmailDialogProps {
16718
16943
  onDeleteError?: (error: GoodDataSdkError) => void;
16719
16944
  }
16720
16945
 
16946
+ /**
16947
+ * Sub-context for the scheduled-email management dialog.
16948
+ * The connector hydrates this from dashboard state.
16949
+ *
16950
+ * Values already available on AutomationsContext (locale, currentUser, timezone,
16951
+ * isWhiteLabeled, isExecutionTimestampMode, externalRecipient, features.*) are NOT
16952
+ * duplicated here — consumers read those from useAutomationsContext().
16953
+ *
16954
+ * @alpha
16955
+ */
16956
+ export declare interface IScheduledEmailManagementDialogContextValue {
16957
+ /**
16958
+ * Whether the scheduled-email create/edit dialog is currently open (from store UI slice).
16959
+ * Used by the management dialog tree's focus-return logic (refocus when the edit dialog closes).
16960
+ */
16961
+ isScheduleEmailDialogOpen: boolean;
16962
+ /**
16963
+ * Monotonic counter that increments whenever the automation list is invalidated.
16964
+ * Consumers can use this as a cache-bust key for re-fetching.
16965
+ */
16966
+ automationsInvalidationId?: number;
16967
+ /**
16968
+ * Whether accessibility mode is active (for aria/keyboard focus management).
16969
+ */
16970
+ enableAccessibilityMode: boolean;
16971
+ /**
16972
+ * Whether the dashboard is rendered in an embedded (iframe) context.
16973
+ */
16974
+ isEmbedded: boolean;
16975
+ /**
16976
+ * Id of the dashboard the management dialog is rendered on (mirrors alerting management ctx).
16977
+ * Used to preselect the dashboard filter in the enhanced automations list.
16978
+ */
16979
+ dashboardId?: string;
16980
+ /**
16981
+ * Title of the dashboard the management dialog is rendered on (mirrors alerting management ctx).
16982
+ * Used as the label of the preselected dashboard filter in the enhanced automations list.
16983
+ */
16984
+ dashboardTitle?: string;
16985
+ /**
16986
+ * Maximum number of automations allowed (derived connector-side from the
16987
+ * max-automations entitlement, falling back to DEFAULT_MAX_AUTOMATIONS).
16988
+ * Combined with the dialog's automations count to gate the create button.
16989
+ */
16990
+ maxAutomations: number;
16991
+ /**
16992
+ * Whether the unlimited-automations entitlement is present. When true the
16993
+ * max-automations limit is not enforced.
16994
+ */
16995
+ unlimitedAutomations: boolean;
16996
+ }
16997
+
16721
16998
  /**
16722
16999
  *
16723
17000
  * @alpha
@@ -20211,6 +20488,7 @@ export declare const metaActions: {
20211
20488
  initialContent?: boolean | undefined;
20212
20489
  }, "meta/setMeta">;
20213
20490
  setDashboardTitle: ActionCreatorWithPayload<string, "meta/setDashboardTitle">;
20491
+ setDashboardTimezoneConfig: ActionCreatorWithOptionalPayload<IDashboardTimezoneConfig | undefined, "meta/setDashboardTimezoneConfig">;
20214
20492
  setDisableCrossFiltering: ActionCreatorWithPayload<boolean, "meta/setDisableCrossFiltering">;
20215
20493
  setDisablePersistentFiltersAcrossTabs: ActionCreatorWithPayload<boolean, "meta/setDisablePersistentFiltersAcrossTabs">;
20216
20494
  setDisableUserFilterReset: ActionCreatorWithPayload<boolean, "meta/setDisableUserFilterReset">;
@@ -23355,6 +23633,13 @@ export declare const selectDashboardShareStatus: DashboardSelector<ShareStatus>;
23355
23633
  */
23356
23634
  export declare const selectDashboardTags: DashboardSelector<string[]>;
23357
23635
 
23636
+ /**
23637
+ * Selects dashboard timezone configuration.
23638
+ *
23639
+ * @alpha
23640
+ */
23641
+ export declare const selectDashboardTimezoneConfig: DashboardSelector<IDashboardTimezoneConfig | undefined>;
23642
+
23358
23643
  /**
23359
23644
  * Selects current dashboard title.
23360
23645
  *
@@ -25506,6 +25791,17 @@ export declare const selectPersistedDashboard: DashboardSelector<IDashboard | un
25506
25791
  */
25507
25792
  export declare const selectPersistedDashboardFilterContextDateFilterConfig: DashboardSelector<IDashboardDateFilterConfig_2 | undefined>;
25508
25793
 
25794
+ /**
25795
+ * Selects persisted "timezoneConfig", the value that was used to initialize the rest
25796
+ * of the dashboard state of the dashboard component during the initial load of the dashboard.
25797
+ *
25798
+ * Note that this may be undefined when the dashboard component works with a dashboard that has not yet
25799
+ * been persisted (typically newly created dashboard being edited).
25800
+ *
25801
+ * @alpha
25802
+ */
25803
+ export declare const selectPersistedDashboardTimezoneConfig: DashboardSelector<IDashboardTimezoneConfig | undefined>;
25804
+
25509
25805
  /**
25510
25806
  * Returns current platform edition.
25511
25807
  *
@@ -27399,6 +27695,45 @@ export declare function unignoreFilterOnRichTextWidget(ref: ObjRef, oneOrMoreDis
27399
27695
  */
27400
27696
  export declare function updateVisualizationsFromSwitcherWidgetContent(ref: ObjRef, visualizations: IInsightWidget[], correlationId?: string): IUpdateVisualizationsFromVisualizationSwitcherWidgetContent;
27401
27697
 
27698
+ /**
27699
+ * Reads the alerting create/edit dialog context.
27700
+ *
27701
+ * A replacement for `AlertingDialogComponent` renders inside this context and reads the dialog's widget
27702
+ * and insight, the dashboard filter context it should apply, the alert being edited, the available
27703
+ * workspace users and notification channels, and the create/save/delete callbacks from here.
27704
+ *
27705
+ * Some members exist to wire internal machinery (`executionResultByRef`, `widgetLocalIdToTabIdMap`,
27706
+ * `parameterValues`) and are not intended as a customization surface.
27707
+ *
27708
+ * @alpha
27709
+ */
27710
+ export declare function useAlertingDialogContext(): IAlertingDialogContextValue;
27711
+
27712
+ /**
27713
+ * Reads the alerting management dialog context.
27714
+ *
27715
+ * A replacement for the alerting management dialog renders inside this context and reads the current
27716
+ * user, the dashboard it's rendered on, the widget/insight lookups (`getWidgetByRef`,
27717
+ * `getInsightByWidgetRef`), and the pause/resume callbacks from here.
27718
+ *
27719
+ * Some members exist to wire internal machinery (`automationsInvalidationId`, `managementDialogContext`)
27720
+ * and are not intended as a customization surface.
27721
+ *
27722
+ * @alpha
27723
+ */
27724
+ export declare function useAlertingManagementDialogContext(): IAlertingManagementDialogContextValue;
27725
+
27726
+ /**
27727
+ * Reads the automation dialogs' shared context.
27728
+ *
27729
+ * The alerting and scheduled-email dialogs (create/edit and management) render inside this context and
27730
+ * read the workspace catalog, filter configuration, locale, formatting, and other cross-dialog data from
27731
+ * here.
27732
+ *
27733
+ * @alpha
27734
+ */
27735
+ export declare function useAutomationsContext(): IAutomationsContextValue;
27736
+
27402
27737
  /**
27403
27738
  * @internal
27404
27739
  */
@@ -28362,6 +28697,35 @@ export declare function useSaveAsNewButtonProps(): ISaveAsNewButtonProps;
28362
28697
  */
28363
28698
  export declare function useSaveButtonProps(): ISaveButtonProps;
28364
28699
 
28700
+ /**
28701
+ * Reads the scheduled-email create/edit dialog context.
28702
+ *
28703
+ * A replacement for the scheduled-email dialog renders inside this context and reads the dialog's widget
28704
+ * and insight, the dashboard filter context and export templates it should apply, and the
28705
+ * create/save/delete callbacks from here.
28706
+ *
28707
+ * Some members exist to wire internal machinery (`exportParametersByTab`, `widgetLocalIdToTabIdMap`,
28708
+ * `commonDateFilterMode`, `dateFiltersModeMap`, `attributeFiltersModeMap`) and are not intended as a
28709
+ * customization surface.
28710
+ *
28711
+ * @alpha
28712
+ */
28713
+ export declare function useScheduledEmailDialogContext(): IScheduledEmailDialogContextValue;
28714
+
28715
+ /**
28716
+ * Reads the scheduled-email management dialog context.
28717
+ *
28718
+ * A replacement for the scheduled-email management dialog renders inside this context and reads the
28719
+ * dashboard it's rendered on and the automations limit (`maxAutomations`, `unlimitedAutomations`) from
28720
+ * here.
28721
+ *
28722
+ * Some members exist to wire internal machinery (`automationsInvalidationId`) and are not intended as a
28723
+ * customization surface.
28724
+ *
28725
+ * @alpha
28726
+ */
28727
+ export declare function useScheduledEmailManagementDialogContext(): IScheduledEmailManagementDialogContextValue;
28728
+
28365
28729
  /**
28366
28730
  * @alpha
28367
28731
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.51.0-alpha.0",
3
+ "version": "11.51.0-alpha.2",
4
4
  "description": "GoodData SDK - Dashboard Component",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -60,20 +60,20 @@
60
60
  "ts-invariant": "0.10.3",
61
61
  "tslib": "2.8.1",
62
62
  "uuid": "11.1.1",
63
- "@gooddata/sdk-backend-spi": "11.51.0-alpha.0",
64
- "@gooddata/sdk-model": "11.51.0-alpha.0",
65
- "@gooddata/sdk-ui": "11.51.0-alpha.0",
66
- "@gooddata/sdk-backend-base": "11.51.0-alpha.0",
67
- "@gooddata/sdk-ui-charts": "11.51.0-alpha.0",
68
- "@gooddata/sdk-ui-ext": "11.51.0-alpha.0",
69
- "@gooddata/sdk-ui-geo": "11.51.0-alpha.0",
70
- "@gooddata/sdk-ui-filters": "11.51.0-alpha.0",
71
- "@gooddata/sdk-ui-kit": "11.51.0-alpha.0",
72
- "@gooddata/sdk-ui-pivot": "11.51.0-alpha.0",
73
- "@gooddata/sdk-ui-semantic-search": "11.51.0-alpha.0",
74
- "@gooddata/sdk-ui-theme-provider": "11.51.0-alpha.0",
75
- "@gooddata/sdk-ui-vis-commons": "11.51.0-alpha.0",
76
- "@gooddata/util": "11.51.0-alpha.0"
63
+ "@gooddata/sdk-backend-spi": "11.51.0-alpha.2",
64
+ "@gooddata/sdk-backend-base": "11.51.0-alpha.2",
65
+ "@gooddata/sdk-model": "11.51.0-alpha.2",
66
+ "@gooddata/sdk-ui": "11.51.0-alpha.2",
67
+ "@gooddata/sdk-ui-charts": "11.51.0-alpha.2",
68
+ "@gooddata/sdk-ui-ext": "11.51.0-alpha.2",
69
+ "@gooddata/sdk-ui-filters": "11.51.0-alpha.2",
70
+ "@gooddata/sdk-ui-pivot": "11.51.0-alpha.2",
71
+ "@gooddata/sdk-ui-geo": "11.51.0-alpha.2",
72
+ "@gooddata/sdk-ui-kit": "11.51.0-alpha.2",
73
+ "@gooddata/sdk-ui-semantic-search": "11.51.0-alpha.2",
74
+ "@gooddata/sdk-ui-theme-provider": "11.51.0-alpha.2",
75
+ "@gooddata/sdk-ui-vis-commons": "11.51.0-alpha.2",
76
+ "@gooddata/util": "11.51.0-alpha.2"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@microsoft/api-documenter": "^7.17.0",
@@ -119,12 +119,12 @@
119
119
  "typescript": "5.9.3",
120
120
  "vitest": "4.1.8",
121
121
  "vitest-dom": "0.1.1",
122
- "@gooddata/eslint-config": "11.51.0-alpha.0",
123
- "@gooddata/i18n-toolkit": "11.51.0-alpha.0",
124
- "@gooddata/oxlint-config": "11.51.0-alpha.0",
125
- "@gooddata/sdk-backend-mockingbird": "11.51.0-alpha.0",
126
- "@gooddata/stylelint-config": "11.51.0-alpha.0",
127
- "@gooddata/reference-workspace": "11.51.0-alpha.0"
122
+ "@gooddata/eslint-config": "11.51.0-alpha.2",
123
+ "@gooddata/i18n-toolkit": "11.51.0-alpha.2",
124
+ "@gooddata/oxlint-config": "11.51.0-alpha.2",
125
+ "@gooddata/reference-workspace": "11.51.0-alpha.2",
126
+ "@gooddata/stylelint-config": "11.51.0-alpha.2",
127
+ "@gooddata/sdk-backend-mockingbird": "11.51.0-alpha.2"
128
128
  },
129
129
  "peerDependencies": {
130
130
  "react": "^18.0.0 || ^19.0.0",
@@ -2884,6 +2884,10 @@
2884
2884
  text-align: var(--gd-dashboards-content-kpiWidget-title-textAlign, var(--gd-dashboards-content-widget-title-textAlign, center));
2885
2885
  color: var(--gd-dashboards-content-kpiWidget-title-color, var(--gd-dashboards-content-widget-title-color, var(--gd-palette-complementary-8, #464e56)));
2886
2886
  }
2887
+ .type-kpi .item-headline .item-headline-inner,
2888
+ .viz-type-headline .item-headline .item-headline-inner {
2889
+ color: inherit;
2890
+ }
2887
2891
 
2888
2892
  .item-headline-outer {
2889
2893
  position: relative;
@@ -2919,6 +2923,9 @@
2919
2923
  text-align: var(--gd-dashboards-content-widget-title-textAlign, center);
2920
2924
  color: var(--gd-dashboards-content-widget-title-color, var(--gd-palette-complementary-8, #464e56));
2921
2925
  }
2926
+ .item-headline .item-headline-inner {
2927
+ color: inherit;
2928
+ }
2922
2929
 
2923
2930
  .item-headline-inner {
2924
2931
  overflow: hidden;