@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.
Files changed (234) 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/assets/timezone.svg +1 -0
  5. package/esm/index.d.ts +11 -2
  6. package/esm/index.d.ts.map +1 -1
  7. package/esm/index.js +10 -2
  8. package/esm/model/react/useWidgetExecConfig.d.ts +9 -0
  9. package/esm/model/react/useWidgetExecConfig.d.ts.map +1 -1
  10. package/esm/model/react/useWidgetExecConfig.js +21 -3
  11. package/esm/model/store/config/configSelectors.d.ts +6 -0
  12. package/esm/model/store/config/configSelectors.d.ts.map +1 -1
  13. package/esm/model/store/config/configSelectors.js +8 -0
  14. package/esm/model/store/meta/index.d.ts +1 -0
  15. package/esm/model/store/meta/index.d.ts.map +1 -1
  16. package/esm/model/store/meta/metaReducers.d.ts +5 -1
  17. package/esm/model/store/meta/metaReducers.d.ts.map +1 -1
  18. package/esm/model/store/meta/metaReducers.js +9 -0
  19. package/esm/model/store/meta/metaSelectors.d.ts +35 -1
  20. package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
  21. package/esm/model/store/meta/metaSelectors.js +51 -2
  22. package/esm/model/store/meta/metaState.d.ts +1 -1
  23. package/esm/model/store/meta/metaState.d.ts.map +1 -1
  24. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +1 -1
  25. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  26. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +9 -9
  27. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts +7 -2
  28. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts.map +1 -1
  29. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.js +1 -1
  30. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +6 -8
  31. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
  32. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +5 -2
  33. package/esm/presentation/automations/alerting/types.d.ts +30 -5
  34. package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
  35. package/esm/presentation/automations/connectors/AlertingConnector.d.ts.map +1 -1
  36. package/esm/presentation/automations/connectors/AlertingConnector.js +22 -25
  37. package/esm/presentation/automations/connectors/AlertingConnector.test.js +71 -5
  38. package/esm/presentation/automations/connectors/ScheduledEmailConnector.d.ts.map +1 -1
  39. package/esm/presentation/automations/connectors/ScheduledEmailConnector.js +30 -32
  40. package/esm/presentation/automations/connectors/ScheduledEmailConnector.test.js +90 -9
  41. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts +7 -1
  42. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts.map +1 -1
  43. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.js +12 -2
  44. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.js +28 -2
  45. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.d.ts +8 -1
  46. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.d.ts.map +1 -1
  47. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.js +12 -3
  48. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.test.js +38 -8
  49. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.d.ts +6 -1
  50. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.d.ts.map +1 -1
  51. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.js +6 -1
  52. package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.test.js +7 -1
  53. package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts +29 -1
  54. package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts.map +1 -1
  55. package/esm/presentation/automations/contexts/AlertingDialogContext.js +12 -0
  56. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts +14 -0
  57. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts.map +1 -1
  58. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.js +12 -0
  59. package/esm/presentation/automations/contexts/AutomationsContext.d.ts +13 -0
  60. package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
  61. package/esm/presentation/automations/contexts/AutomationsContext.js +9 -0
  62. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +35 -1
  63. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
  64. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.js +14 -0
  65. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts +20 -1
  66. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts.map +1 -1
  67. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.js +12 -0
  68. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultLoadingScheduledEmailDialog.d.ts +7 -2
  69. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultLoadingScheduledEmailDialog.d.ts.map +1 -1
  70. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts +1 -1
  71. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
  72. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +17 -25
  73. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +6 -12
  74. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
  75. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +5 -1
  76. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts +12 -0
  77. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts.map +1 -0
  78. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.js +41 -0
  79. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts +1 -1
  80. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts.map +1 -1
  81. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js +2 -2
  82. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.d.ts +1 -3
  83. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.d.ts.map +1 -1
  84. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.js +2 -2
  85. package/esm/presentation/automations/scheduledEmail/types.d.ts +35 -5
  86. package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
  87. package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts +4 -1
  88. package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts.map +1 -1
  89. package/esm/presentation/automations/scheduledEmail/utils/timezone.js +14 -138
  90. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.d.ts.map +1 -1
  91. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.js +1 -0
  92. package/esm/presentation/dashboard/components/DashboardLoading.js +1 -1
  93. package/esm/presentation/dashboardContexts/useSlideData.d.ts +5 -10
  94. package/esm/presentation/dashboardContexts/useSlideData.d.ts.map +1 -1
  95. package/esm/presentation/dashboardContexts/useSlideData.js +16 -10
  96. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
  97. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +52 -14
  98. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts +11 -0
  99. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts.map +1 -0
  100. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.js +36 -0
  101. package/esm/presentation/dashboardSettingsDialog/types.d.ts +2 -1
  102. package/esm/presentation/dashboardSettingsDialog/types.d.ts.map +1 -1
  103. package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
  104. package/esm/presentation/dashboardSettingsDialog/useDialogData.js +4 -1
  105. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.d.ts.map +1 -1
  106. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js +30 -1
  107. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.d.ts.map +1 -1
  108. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.js +29 -8
  109. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderDescription.d.ts.map +1 -1
  110. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderDescription.js +3 -5
  111. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.d.ts.map +1 -1
  112. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.js +3 -5
  113. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.d.ts +1 -1
  114. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.d.ts.map +1 -1
  115. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.js +2 -5
  116. package/esm/presentation/insightList/InsightList.d.ts.map +1 -1
  117. package/esm/presentation/insightList/InsightList.js +4 -5
  118. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +11 -0
  119. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  120. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +11 -0
  121. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +11 -0
  122. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  123. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +11 -0
  124. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +11 -0
  125. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  126. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +11 -0
  127. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +48 -0
  128. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  129. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +48 -0
  130. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +11 -0
  131. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  132. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +11 -0
  133. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +11 -0
  134. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  135. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +11 -0
  136. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +11 -0
  137. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  138. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +11 -0
  139. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +11 -0
  140. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  141. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +11 -0
  142. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +11 -0
  143. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  144. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +11 -0
  145. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +11 -0
  146. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  147. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +11 -0
  148. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +11 -0
  149. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  150. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +11 -0
  151. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +11 -0
  152. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  153. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +11 -0
  154. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +11 -0
  155. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  156. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +11 -0
  157. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +11 -0
  158. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  159. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +11 -0
  160. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +11 -0
  161. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  162. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +11 -0
  163. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +11 -0
  164. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  165. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +11 -0
  166. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +11 -0
  167. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  168. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +11 -0
  169. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +11 -0
  170. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  171. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +11 -0
  172. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +11 -0
  173. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  174. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +11 -0
  175. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +11 -0
  176. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  177. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +11 -0
  178. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +11 -0
  179. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  180. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +11 -0
  181. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +11 -0
  182. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  183. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +13 -2
  184. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +11 -0
  185. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  186. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +11 -0
  187. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +11 -0
  188. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  189. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +11 -0
  190. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +11 -0
  191. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  192. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +11 -0
  193. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +11 -0
  194. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  195. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +12 -1
  196. package/esm/presentation/topBar/timezoneIndicator/DefaultTimezoneIndicator.d.ts +10 -0
  197. package/esm/presentation/topBar/timezoneIndicator/DefaultTimezoneIndicator.d.ts.map +1 -0
  198. package/esm/presentation/topBar/timezoneIndicator/DefaultTimezoneIndicator.js +19 -0
  199. package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.d.ts +13 -0
  200. package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.d.ts.map +1 -0
  201. package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.js +27 -0
  202. package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.d.ts +13 -0
  203. package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.d.ts.map +1 -0
  204. package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.js +20 -0
  205. package/esm/presentation/topBar/timezoneIndicator/types.d.ts +47 -0
  206. package/esm/presentation/topBar/timezoneIndicator/types.d.ts.map +1 -0
  207. package/esm/presentation/topBar/timezoneIndicator/types.js +2 -0
  208. package/esm/presentation/topBar/topBar/DefaultTopBar.d.ts.map +1 -1
  209. package/esm/presentation/topBar/topBar/DefaultTopBar.js +15 -4
  210. package/esm/presentation/topBar/topBar/types.d.ts +2 -0
  211. package/esm/presentation/topBar/topBar/types.d.ts.map +1 -1
  212. package/esm/presentation/widget/description/ExportModeInsightWidgetDescription.d.ts.map +1 -1
  213. package/esm/presentation/widget/description/ExportModeInsightWidgetDescription.js +3 -5
  214. package/esm/presentation/widget/description/InsightWidgetDescriptionTrigger.d.ts.map +1 -1
  215. package/esm/presentation/widget/description/InsightWidgetDescriptionTrigger.js +3 -6
  216. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.d.ts.map +1 -1
  217. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +5 -6
  218. package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescription.d.ts.map +1 -1
  219. package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescription.js +3 -6
  220. package/esm/presentation/widget/richText/EditModeDashboardRichText.d.ts.map +1 -1
  221. package/esm/presentation/widget/richText/EditModeDashboardRichText.js +3 -5
  222. package/esm/presentation/widget/richText/ViewModeDashboardRichText.d.ts.map +1 -1
  223. package/esm/presentation/widget/richText/ViewModeDashboardRichText.js +3 -5
  224. package/esm/sdk-ui-dashboard.d.ts +528 -12
  225. package/package.json +21 -21
  226. package/styles/css/main.css +28 -1
  227. package/styles/css/main.css.map +1 -1
  228. package/styles/css/timezoneIndicator.css +20 -0
  229. package/styles/css/timezoneIndicator.css.map +1 -0
  230. package/styles/css/topBar.css +9 -1
  231. package/styles/css/topBar.css.map +1 -1
  232. package/styles/scss/main.scss +1 -0
  233. package/styles/scss/timezoneIndicator.scss +23 -0
  234. package/styles/scss/topBar.scss +13 -2
@@ -1,6 +1,6 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // (C) 2019-2026 GoodData Corporation
3
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { useCallback, useMemo, useRef, useState } from "react";
4
4
  import cx from "classnames";
5
5
  import { defineMessage, useIntl } from "react-intl";
6
6
  import { ValidationContextStore, createInvalidNode, useValidationContextValue } from "@gooddata/sdk-ui";
@@ -31,6 +31,7 @@ import { SubjectForm } from "./components/SubjectForm/SubjectForm.js";
31
31
  import { SCHEDULED_EMAIL_DIALOG_ID } from "./constants.js";
32
32
  import { DefaultLoadingScheduledEmailDialog } from "./DefaultLoadingScheduledEmailDialog.js";
33
33
  import { useEditScheduledEmail } from "./hooks/useEditScheduledEmail.js";
34
+ import { useElementHeightSnapshot } from "./hooks/useElementHeightSnapshot.js";
34
35
  import { useSaveScheduledEmailToBackend } from "./hooks/useSaveScheduledEmailToBackend.js";
35
36
  const OVERLAY_POSITION_TYPE = "sameAsTarget";
36
37
  const CLOSE_ON_PARENT_SCROLL = true;
@@ -39,16 +40,19 @@ function ScheduledEmailDialogFooter({ isWhiteLabeled, helpTextId, scheduledExpor
39
40
  const intl = useIntl();
40
41
  return (_jsxs("div", { className: "gd-notifications-channels-dialog-footer-link", children: [isWhiteLabeled ? null : (_jsx(Hyperlink, { text: intl.formatMessage({ id: helpTextId }), href: "https://www.gooddata.com/docs/cloud/create-dashboards/automation/scheduled-exports/#ScheduleExportsinDashboards-ScheduleExport", iconClass: "gd-icon-circle-question" })), scheduledExportToEdit ? (_jsx(Button, { className: "gd-button-link-dimmed", value: intl.formatMessage({ id: "delete" }), onClick: onDeleteClick, disabled: isSavingScheduledEmail })) : null] }));
41
42
  }
42
- export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, usersError, notificationChannels, insight, widget, dashboardFilters, widgetFilters, onBack, onCancel, onDeleteSuccess, onDeleteError, onError, onSave, onSaveError, onSaveSuccess, onSubmit, onSuccess, }) {
43
+ export function ScheduledMailDialogRenderer({ onBack, onCancel, onDeleteSuccess, onDeleteError, onError, onSave, onSaveError, onSaveSuccess, onSubmit, onSuccess, }) {
43
44
  const intl = useIntl();
44
45
  const dialogTitleRef = useRef(null);
45
46
  const generalTabContentRef = useRef(null);
46
47
  const filtersTabContentRef = useRef(null);
47
48
  const [scheduledEmailToDelete, setScheduledEmailToDelete] = useState(null);
48
49
  const [selectedTabId, setSelectedTabId] = useState("general");
49
- const [tabContentHeight, setTabContentHeight] = useState(undefined);
50
50
  const { isWhiteLabeled, externalRecipient: externalRecipientOverride, isSecondaryTitleVisible, } = useAutomationsContext();
51
- const { exportTemplates, widgetTitle, hasMultipleTabs } = useScheduledEmailDialogContext();
51
+ // Read from context because this component calls useAutomationFiltersSelect,
52
+ // useAutomationExportParameters and useValidateExistingAutomationFilters directly, and the
53
+ // filter-select call must run before useEditScheduledEmail, which consumes its output. Removed
54
+ // with the filter read-model consolidation (EB-867), which retires these call sites.
55
+ const { exportTemplates, widgetTitle, hasMultipleTabs, scheduledExportToEdit, widget, insight, dashboardFilters, } = useScheduledEmailDialogContext();
52
56
  const handleScheduleDeleteSuccess = () => {
53
57
  onDeleteSuccess?.();
54
58
  setScheduledEmailToDelete(null);
@@ -60,16 +64,9 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
60
64
  widget,
61
65
  });
62
66
  const { locale, dashboardTitle, dateFormat, weekStart, maxAutomationsRecipients, allowHourlyRecurrence, isCrossFiltering, isExecutionTimestampMode, isSlidesExportEnabled, isAccessibilityModeEnabled, defaultPdfPageSize, } = useDefaultScheduledEmailDialogData();
63
- const { defaultUser, editedAutomation, originalAutomation, isSubmitDisabled, xlsxSettings, pdfSettings, csvSettings, csvRawSettings, startDate, allowExternalRecipients, allowOnlyLoggedUserRecipients, validationErrorMessage, selectedAttachments, isParentValid, onDashboardAttachmentsChange, onWidgetAttachmentsChange, onXlsxSettingsChange, onPdfSettingsChange, onCsvSettingsChange, onCsvRawSettingsChange, slidesTemplateIds, onSlidesTemplateIdChange, onDestinationChange, onMessageChange, onRecipientsChange, onRecurrenceChange, onEvaluationModeChange, onSubjectChange, onTitleChange, onFiltersChange, onApplyCurrentFilters, onStoreFiltersChange, onFiltersByTabChange, setParametersWire, enableAutomationEvaluationMode, } = useEditScheduledEmail({
64
- notificationChannels,
65
- insight,
66
- widget,
67
- users,
68
- scheduledExportToEdit,
67
+ const { defaultUser, editedAutomation, originalAutomation, isSubmitDisabled, xlsxSettings, pdfSettings, csvSettings, csvRawSettings, startDate, allowExternalRecipients, allowOnlyLoggedUserRecipients, validationErrorMessage, selectedAttachments, isParentValid, onDashboardAttachmentsChange, onWidgetAttachmentsChange, onXlsxSettingsChange, onPdfSettingsChange, onCsvSettingsChange, onCsvRawSettingsChange, slidesTemplateIds, onSlidesTemplateIdChange, onDestinationChange, onMessageChange, onRecipientsChange, onRecurrenceChange, onEvaluationModeChange, onSubjectChange, onTitleChange, onFiltersChange, onApplyCurrentFilters, onStoreFiltersChange, onFiltersByTabChange, setParametersWire, enableAutomationEvaluationMode, users, usersError, notificationChannels, } = useEditScheduledEmail({
69
68
  storeFilters,
70
69
  editedAutomationFilters,
71
- dashboardFilters,
72
- widgetFilters,
73
70
  maxAutomationsRecipients,
74
71
  setEditedAutomationFilters,
75
72
  setStoreFilters,
@@ -156,18 +153,12 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
156
153
  const handleTabSelect = useCallback((tab) => {
157
154
  setSelectedTabId(tab.id);
158
155
  }, []);
159
- // Measure General tab content height to maintain consistent dialog size
160
- useEffect(() => {
161
- if (generalTabContentRef.current && selectedTabId === "general") {
162
- // Use requestAnimationFrame to ensure DOM is fully rendered
163
- requestAnimationFrame(() => {
164
- if (generalTabContentRef.current) {
165
- const height = generalTabContentRef.current.scrollHeight;
166
- setTabContentHeight(height);
167
- }
168
- });
169
- }
170
- }, [selectedTabId]);
156
+ // Measure General tab content height to maintain consistent dialog size. Re-measures on
157
+ // content-size changes within the General tab itself (e.g. validation messages
158
+ // appearing/disappearing), not just on tab switch - otherwise the Filters tab could
159
+ // inherit a stale minHeight from before the change. The last measured value is kept
160
+ // internally so it survives the General tab unmounting when the user switches to Filters.
161
+ const tabContentHeight = useElementHeightSnapshot(generalTabContentRef, selectedTabId);
171
162
  if (isApplyCurrentFiltersDialogOpen) {
172
163
  return (_jsx(ApplyCurrentFiltersConfirmDialog, { automationType: "schedule", onCancel: () => onCancel?.(), onEdit: () => {
173
164
  onApplyCurrentFilters();
@@ -226,7 +217,8 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
226
217
  * @alpha
227
218
  */
228
219
  export function DefaultScheduledEmailDialog(props) {
229
- const { isLoading, onCancel, scheduledExportToEdit } = props;
220
+ const { onCancel } = props;
221
+ const { isLoading, scheduledExportToEdit } = useScheduledEmailDialogContext();
230
222
  if (isLoading) {
231
223
  return (_jsx(DefaultLoadingScheduledEmailDialog, { onCancel: onCancel, scheduledExportToEdit: scheduledExportToEdit }));
232
224
  }
@@ -1,16 +1,8 @@
1
- import { type FilterContextItem, type IAutomationMetadataObject, type IAutomationVisibleFilter, type IExportDefinitionVisualizationObjectSettings, type IFilter, type IInsight, type INotificationChannelIdentifier, type INotificationChannelMetadataObject, type IWidget, type IWorkspaceUser } from "@gooddata/sdk-model";
1
+ import { type FilterContextItem, type IAutomationVisibleFilter, type IExportDefinitionVisualizationObjectSettings } from "@gooddata/sdk-model";
2
2
  import type { IAutomationFiltersTab } from "../../../../../model/store/filtering/types.js";
3
3
  export interface IUseEditScheduledEmailProps {
4
- scheduledExportToEdit?: IAutomationMetadataObject;
5
- notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
6
4
  maxAutomationsRecipients: number;
7
- /** Workspace users, lazy-loaded in the connector and passed via dialog props. */
8
- users: IWorkspaceUser[];
9
- widget?: IWidget;
10
- insight?: IInsight;
11
- widgetFilters?: IFilter[];
12
5
  editedAutomationFilters?: FilterContextItem[];
13
- dashboardFilters?: FilterContextItem[];
14
6
  setEditedAutomationFilters: (filters: FilterContextItem[]) => void;
15
7
  /**
16
8
  * Edited filters structured by tab ID for dashboard automations with tabs enabled.
@@ -31,13 +23,15 @@ export interface IUseEditScheduledEmailProps {
31
23
  externalRecipientOverride?: string;
32
24
  defaultPdfPageSize?: IExportDefinitionVisualizationObjectSettings["pageSize"];
33
25
  }
34
- export declare function useEditScheduledEmail({ scheduledExportToEdit, notificationChannels, insight, widget, users, editedAutomationFilters, dashboardFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab }: IUseEditScheduledEmailProps): {
35
- defaultUser: IWorkspaceUser;
26
+ export declare function useEditScheduledEmail({ editedAutomationFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab }: IUseEditScheduledEmailProps): {
27
+ defaultUser: import("@gooddata/sdk-model").IWorkspaceUser;
36
28
  areDashboardFiltersChanged: boolean;
37
29
  originalAutomation: import("@gooddata/sdk-model").IAutomationMetadataObjectDefinition;
38
30
  editedAutomation: import("@gooddata/sdk-model").IAutomationMetadataObjectDefinition;
39
31
  isCronValid: boolean;
40
- notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
32
+ notificationChannels: import("@gooddata/sdk-model").INotificationChannelIdentifier[] | import("@gooddata/sdk-model").INotificationChannelMetadataObject[];
33
+ users: import("@gooddata/sdk-model").IWorkspaceUser[];
34
+ usersError: import("@gooddata/sdk-ui").GoodDataSdkError | undefined;
41
35
  isDashboardExportSelected: boolean;
42
36
  isCsvExportSelected: boolean;
43
37
  isXlsxExportSelected: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACZ,KAAK,cAAc,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAS3F,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,wBAAwB,EAAE,MAAM,CAAC;IACjC,iFAAiF;IACjF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,KAAK,EACL,uBAAuB,EACvB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4K7B"}
1
+ {"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,4CAA4C,EACpD,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAU3F,MAAM,WAAW,2BAA2B;IACxC,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwL7B"}
@@ -1,12 +1,14 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
2
  import { useAutomationsContext } from "../../../contexts/AutomationsContext.js";
3
+ import { useScheduledEmailDialogContext } from "../../../contexts/ScheduledEmailDialogContext.js";
3
4
  import { useScheduledEmailEffectiveFilters } from "./useScheduledEmailEffectiveFilters.js";
4
5
  import { useScheduledEmailExportSettings } from "./useScheduledEmailExportSettings.js";
5
6
  import { useScheduledEmailFilters } from "./useScheduledEmailFilters.js";
6
7
  import { useScheduledEmailFormState } from "./useScheduledEmailFormState.js";
7
8
  import { useScheduledEmailFormValidity } from "./useScheduledEmailFormValidity.js";
8
- export function useEditScheduledEmail({ scheduledExportToEdit, notificationChannels, insight, widget, users, editedAutomationFilters, dashboardFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab, }) {
9
+ export function useEditScheduledEmail({ editedAutomationFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab, }) {
9
10
  const { features: { enableAutomationEvaluationMode }, } = useAutomationsContext();
11
+ const { scheduledExportToEdit, widget, insight, users, usersError, notificationChannels, dashboardFilters, } = useScheduledEmailDialogContext();
10
12
  const areDashboardFiltersChanged = !!dashboardFilters;
11
13
  const { effectiveWidgetFilters, effectiveWidgetFiltersWithInsight, effectiveVisibleWidgetFilters, effectiveDashboardFilters, effectiveDashboardFiltersByTab, effectiveVisibleDashboardFilters, effectiveVisibleDashboardFiltersByTab, parametersByTabForNewAutomation, } = useScheduledEmailEffectiveFilters({
12
14
  widget,
@@ -79,6 +81,8 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
79
81
  editedAutomation,
80
82
  isCronValid,
81
83
  notificationChannels,
84
+ users,
85
+ usersError,
82
86
  isDashboardExportSelected,
83
87
  isCsvExportSelected,
84
88
  isXlsxExportSelected,
@@ -0,0 +1,12 @@
1
+ import { type RefObject } from "react";
2
+ /**
3
+ * Tracks a DOM node's scrollHeight, keeping the last measured value even after the node
4
+ * unmounts. Uses a ResizeObserver to catch content-size changes while the node stays mounted,
5
+ * not just mount/unmount transitions (e.g. a tab switch).
6
+ *
7
+ * @param ref - ref to the observed node
8
+ * @param resubscribeKey - forces a resubscribe when the ref will point to a freshly mounted node
9
+ * (e.g. a tab id gating the node's conditional rendering)
10
+ */
11
+ export declare function useElementHeightSnapshot(ref: RefObject<HTMLElement | null>, resubscribeKey: unknown): number | undefined;
12
+ //# sourceMappingURL=useElementHeightSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useElementHeightSnapshot.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA6C,MAAM,OAAO,CAAC;AAElF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACpC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,cAAc,EAAE,OAAO,GACxB,MAAM,GAAG,SAAS,CAuCpB"}
@@ -0,0 +1,41 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { useCallback, useRef, useSyncExternalStore } from "react";
3
+ /**
4
+ * Tracks a DOM node's scrollHeight, keeping the last measured value even after the node
5
+ * unmounts. Uses a ResizeObserver to catch content-size changes while the node stays mounted,
6
+ * not just mount/unmount transitions (e.g. a tab switch).
7
+ *
8
+ * @param ref - ref to the observed node
9
+ * @param resubscribeKey - forces a resubscribe when the ref will point to a freshly mounted node
10
+ * (e.g. a tab id gating the node's conditional rendering)
11
+ */
12
+ export function useElementHeightSnapshot(ref, resubscribeKey) {
13
+ const lastMeasuredHeightRef = useRef(undefined);
14
+ const subscribe = useCallback((onStoreChange) => {
15
+ const node = ref.current;
16
+ if (!node) {
17
+ return () => { };
18
+ }
19
+ const updateHeight = () => {
20
+ lastMeasuredHeightRef.current = node.scrollHeight;
21
+ onStoreChange();
22
+ };
23
+ // Measure once unconditionally - environments without ResizeObserver still need
24
+ // an initial (and only) measurement rather than never syncing at all.
25
+ updateHeight();
26
+ if (typeof ResizeObserver === "undefined") {
27
+ return () => { };
28
+ }
29
+ const observer = new ResizeObserver(updateHeight);
30
+ observer.observe(node);
31
+ return () => {
32
+ observer.disconnect();
33
+ };
34
+ },
35
+ // resubscribeKey is not read in the body, but must force a resubscribe once the ref
36
+ // points to a newly mounted node.
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ [ref, resubscribeKey]);
39
+ const getSnapshot = useCallback(() => lastMeasuredHeightRef.current, []);
40
+ return useSyncExternalStore(subscribe, getSnapshot);
41
+ }
@@ -2,5 +2,5 @@ import { type IScheduledEmailManagementDialogProps } from "../types.js";
2
2
  /**
3
3
  * @alpha
4
4
  */
5
- export declare function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose, isLoadingScheduleData, automations }: IScheduledEmailManagementDialogProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose }: IScheduledEmailManagementDialogProps): import("react/jsx-runtime").JSX.Element;
6
6
  //# sourceMappingURL=DefaultScheduledEmailManagementDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultScheduledEmailManagementDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAIxE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,KAAK,EACL,MAAM,EACN,OAAO,EACP,qBAAqB,EACrB,WAAW,EACd,EAAE,oCAAoC,2CAiBtC"}
1
+ {"version":3,"file":"DefaultScheduledEmailManagementDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAIxE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,KAAK,EACL,MAAM,EACN,OAAO,EACV,EAAE,oCAAoC,2CAetC"}
@@ -5,9 +5,9 @@ import { DefaultScheduledEmailManagementDialogContent } from "./DefaultScheduled
5
5
  /**
6
6
  * @alpha
7
7
  */
8
- export function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose, isLoadingScheduleData, automations, }) {
8
+ export function ScheduledEmailManagementDialog({ onAdd, onEdit, onClose, }) {
9
9
  const handleScheduleEdit = useCallback((scheduledEmail) => {
10
10
  onEdit?.(scheduledEmail);
11
11
  }, [onEdit]);
12
- return (_jsx(DefaultScheduledEmailManagementDialogContent, { onAdd: onAdd, onClose: onClose, onEdit: handleScheduleEdit, isLoadingScheduleData: isLoadingScheduleData, automations: automations }));
12
+ return (_jsx(DefaultScheduledEmailManagementDialogContent, { onAdd: onAdd, onClose: onClose, onEdit: handleScheduleEdit }));
13
13
  }
@@ -3,9 +3,7 @@ interface IDefaultScheduledEmailManagementDialogContentProps {
3
3
  onAdd?: () => void;
4
4
  onClose?: () => void;
5
5
  onEdit: (scheduledEmail: IAutomationMetadataObject) => void;
6
- isLoadingScheduleData: boolean;
7
- automations: IAutomationMetadataObject[];
8
6
  }
9
- export declare function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit, isLoadingScheduleData, automations }: IDefaultScheduledEmailManagementDialogContentProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit }: IDefaultScheduledEmailManagementDialogContentProps): import("react/jsx-runtime").JSX.Element;
10
8
  export {};
11
9
  //# sourceMappingURL=DefaultScheduledEmailManagementDialogContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultScheduledEmailManagementDialogContent.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AA4BrE,UAAU,kDAAkD;IACxD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,wBAAgB,4CAA4C,CAAC,EACzD,KAAK,EACL,OAAO,EACP,MAAM,EACN,qBAAqB,EACrB,WAAW,EACd,EAAE,kDAAkD,2CA4JpD"}
1
+ {"version":3,"file":"DefaultScheduledEmailManagementDialogContent.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContent.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AA4BrE,UAAU,kDAAkD;IACxD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;CAC/D;AAED,wBAAgB,4CAA4C,CAAC,EACzD,KAAK,EACL,OAAO,EACP,MAAM,EACT,EAAE,kDAAkD,2CA8JpD"}
@@ -16,13 +16,13 @@ import { SCHEDULED_EMAIL_DIALOG_ID } from "../DefaultScheduledEmailDialog/consta
16
16
  import { useScheduleEmailDialogAccessibility } from "../hooks/useScheduleEmailDialogAccessibility.js";
17
17
  import { isMobileView } from "../utils/responsive.js";
18
18
  const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX);
19
- export function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit, isLoadingScheduleData, automations, }) {
19
+ export function DefaultScheduledEmailManagementDialogContent({ onAdd, onClose, onEdit, }) {
20
20
  const intl = useIntl();
21
21
  const isMobile = isMobileView();
22
22
  const workspace = useWorkspace();
23
23
  const backend = useBackend();
24
24
  const { timezone, locale, settings, isWhiteLabeled, isExecutionTimestampMode, externalRecipient: externalRecipientOverride, features: { canCreateAutomation }, } = useAutomationsContext();
25
- const { dashboardId, dashboardTitle, enableAccessibilityMode, isScheduleEmailDialogOpen: isEditDialogOpen, automationsInvalidationId, isEmbedded, maxAutomations, unlimitedAutomations, } = useScheduledEmailManagementDialogContext();
25
+ const { dashboardId, dashboardTitle, enableAccessibilityMode, isScheduleEmailDialogOpen: isEditDialogOpen, automationsInvalidationId, isEmbedded, maxAutomations, unlimitedAutomations, automations, isLoading: isLoadingScheduleData, } = useScheduledEmailManagementDialogContext();
26
26
  const enableBulkActions = !enableAccessibilityMode;
27
27
  const useHostRoute = computeUseHostRoute(settings);
28
28
  const { returnFocusTo } = useScheduleEmailDialogAccessibility();
@@ -7,20 +7,29 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui";
7
7
  export interface IScheduledEmailDialogProps {
8
8
  /**
9
9
  * In case, we are not creating new schedule, but editing existing one, this is the active schedule to be edited.
10
+ *
11
+ * @deprecated read `scheduledExportToEdit` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
10
12
  */
11
13
  scheduledExportToEdit?: IAutomationMetadataObject;
12
14
  /**
13
15
  * Users in workspace
16
+ *
17
+ * @deprecated read `users` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
14
18
  */
15
- users: IWorkspaceUser[];
19
+ users?: IWorkspaceUser[];
16
20
  /**
17
21
  * Error occurred while loading users
22
+ *
23
+ * @deprecated read `usersError` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
18
24
  */
19
25
  usersError?: GoodDataSdkError;
20
26
  /**
21
27
  * Notification channels in organization
28
+ *
29
+ * @deprecated read `notificationChannels` from `useScheduledEmailDialogContext()` instead.
30
+ * Prop will be removed.
22
31
  */
23
- notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
32
+ notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
24
33
  /**
25
34
  * Widget to be used for scheduled email.
26
35
  *
@@ -28,12 +37,16 @@ export interface IScheduledEmailDialogProps {
28
37
  * Typed as IWidget (not ExtendedDashboardWidget) because the dialog only
29
38
  * supports insight widgets; custom widgets and nested layouts are not valid
30
39
  * export targets and were silently discarded at the connector boundary anyway.
40
+ *
41
+ * @deprecated read `widget` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
31
42
  */
32
43
  widget?: IWidget;
33
44
  /**
34
45
  * Insight to be used for scheduled email.
35
46
  *
36
47
  * Note: this is available only when scheduling export for widget, not dashboard.
48
+ *
49
+ * @deprecated read `insight` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
37
50
  */
38
51
  insight?: IInsight;
39
52
  /**
@@ -47,6 +60,8 @@ export interface IScheduledEmailDialogProps {
47
60
  * the export reflects the latest intended filter configuration and we don't want to save them.
48
61
  *
49
62
  * - If we are editing an existing scheduled export, this will contain its filters, as changing saved filters is currently not allowed.
63
+ *
64
+ * @deprecated read `dashboardFilters` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
50
65
  */
51
66
  dashboardFilters?: FilterContextItem[];
52
67
  /**
@@ -59,10 +74,15 @@ export interface IScheduledEmailDialogProps {
59
74
  * - If the resulting filters include all-time date filter, it is excluded as it has no effect on the scheduled export execution.
60
75
  *
61
76
  * - If we are editing an existing scheduled export, this will contain its filters, as changing saved filters is currently not allowed.
77
+ *
78
+ * @deprecated not read by the default dialog; the effective widget filters are derived from the
79
+ * edited filters. Prop will be removed.
62
80
  */
63
81
  widgetFilters?: IFilter[];
64
82
  /**
65
83
  * Is scheduled email dialog loading initial data, before it can be rendered?
84
+ *
85
+ * @deprecated read `isLoading` from `useScheduledEmailDialogContext()` instead. Prop will be removed.
66
86
  */
67
87
  isLoading?: boolean;
68
88
  /**
@@ -113,20 +133,30 @@ export interface IScheduledEmailDialogProps {
113
133
  export interface IScheduledEmailManagementDialogProps {
114
134
  /**
115
135
  * Is loading schedule data?
136
+ *
137
+ * @deprecated read `isLoading` from `useScheduledEmailManagementDialogContext()` instead. Prop will
138
+ * be removed.
116
139
  */
117
- isLoadingScheduleData: boolean;
140
+ isLoadingScheduleData?: boolean;
118
141
  /**
119
142
  * Error occurred while loading schedule data?
143
+ *
144
+ * @deprecated not read by the default dialog. Prop will be removed.
120
145
  */
121
146
  scheduleDataError?: GoodDataSdkError;
122
147
  /**
123
148
  * Notification channels in organization
149
+ *
150
+ * @deprecated not read by the default dialog. Prop will be removed.
124
151
  */
125
- notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
152
+ notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
126
153
  /**
127
154
  * Automations in workspace
155
+ *
156
+ * @deprecated read `automations` from `useScheduledEmailManagementDialogContext()` instead. Prop
157
+ * will be removed.
128
158
  */
129
- automations: IAutomationMetadataObject[];
159
+ automations?: IAutomationMetadataObject[];
130
160
  /**
131
161
  * Callback to be called, when user adds new scheduled email item.
132
162
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/scheduledEmail/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACZ,KAAK,cAAc,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMzD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;OAEG;IACH,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAElD;;OAEG;IACH,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE9F;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAEvC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,CACP,wBAAwB,EAAE,yBAAyB,GAAG,mCAAmC,KACxF,IAAI,CAAC;IAEV;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAEvE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAE1E;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEhD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAED;;;GAGG;AACH,MAAM,WAAW,oCAAoC;IACjD;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAErC;;OAEG;IACH,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE9F;;OAEG;IACH,WAAW,EAAE,yBAAyB,EAAE,CAAC;IAEzC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAE5D;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAE7B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACrD;AAMD;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,aAAa,CAAC,0BAA0B,CAAC,CAAC;AAE5F;;GAEG;AACH,MAAM,MAAM,6CAA6C,GACrD,aAAa,CAAC,oCAAoC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/scheduledEmail/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Scheduled-email flavor of a timezone entry, adapting the shared curated list from sdk-ui-kit.
3
+ */
1
4
  export interface ITimezone {
2
5
  identifier: string;
3
6
  januaryOffset: number;
@@ -6,5 +9,5 @@ export interface ITimezone {
6
9
  }
7
10
  export declare const TIMEZONE_DEFAULT: ITimezone;
8
11
  export declare function getUserTimezone(): ITimezone;
9
- export declare function getTimezoneByIdentifier(title: string | undefined): ITimezone | undefined;
12
+ export declare function getTimezoneByIdentifier(identifier: string | undefined): ITimezone | undefined;
10
13
  //# sourceMappingURL=timezone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/utils/timezone.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAgJD,eAAO,MAAM,gBAAgB,WAAsC,CAAC;AAEpE,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,yBAEhE"}
1
+ {"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/utils/timezone.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAWD,eAAO,MAAM,gBAAgB,WAA0C,CAAC;AAExE,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAG7F"}
@@ -1,142 +1,18 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
- const JANUARY_OFFSET = -new Date(2011, 0, 1, 0, 0, 0, 0).getTimezoneOffset();
3
- const JUNE_OFFSET = -new Date(2011, 5, 1, 0, 0, 0, 0).getTimezoneOffset();
4
- const timezonesRaw = [
5
- ["Pacific/Midway", "GMT-11:00 International Date Line West", -660, -660],
6
- ["Pacific/Pago_Pago", "GMT-11:00 Samoa", -660, -660],
7
- ["Pacific/Honolulu", "GMT-10:00 Hawaii", -600, -600],
8
- ["America/Juneau", "GMT-09:00 Alaska", -540, -480],
9
- ["America/Los_Angeles", "GMT-08:00 Pacific Time (US & Canada)", -480, -420],
10
- ["America/Tijuana", "GMT-08:00 Tijuana", -480, -420],
11
- ["America/Phoenix", "GMT-07:00 Arizona", -420, -420],
12
- ["America/Chihuahua", "GMT-07:00 Chihuahua", -420, -360],
13
- ["America/Mazatlan", "GMT-07:00 Mazatlan", -420, -360],
14
- ["America/Denver", "GMT-07:00 Mountain Time (US & Canada)", -420, -360],
15
- ["America/Guatemala", "GMT-06:00 Central America", -360, -360],
16
- ["America/Chicago", "GMT-06:00 Central Time (US & Canada)", -360, -300],
17
- ["America/Mexico_City", "GMT-06:00 Mexico City", -360, -300],
18
- ["America/Monterrey", "GMT-06:00 Monterrey", -360, -300],
19
- ["America/Regina", "GMT-06:00 Saskatchewan", -360, -360],
20
- ["America/Bogota", "GMT-05:00 Bogota", -300, -300],
21
- ["America/New_York", "GMT-05:00 Eastern Time (US & Canada)", -300, -240],
22
- ["America/Indiana/Indianapolis", "GMT-05:00 Indiana (East)", -300, -240],
23
- ["America/Lima", "GMT-05:00 Lima", -300, -300],
24
- ["America/Caracas", "GMT-04:30 Caracas", -270, -270],
25
- ["America/Halifax", "GMT-04:00 Atlantic Time (Canada)", -240, -180],
26
- ["America/Guyana", "GMT-04:00 Georgetown", -240, -240],
27
- ["America/La_Paz", "GMT-04:00 La Paz", -240, -240],
28
- ["America/Santiago", "GMT-04:00 Santiago", -180, -240],
29
- ["America/St_Johns", "GMT-03:30 Newfoundland", -210, -150],
30
- ["America/Sao_Paulo", "GMT-03:00 Brasilia", -120, -180],
31
- ["America/Argentina/Buenos_Aires", "GMT-03:00 Buenos Aires", -180, -180],
32
- ["America/Godthab", "GMT-03:00 Greenland", -180, -120],
33
- ["Atlantic/South_Georgia", "GMT-02:00 Mid-Atlantic", -120, -120],
34
- ["Atlantic/Azores", "GMT-01:00 Azores", -60, 0],
35
- ["Atlantic/Cape_Verde", "GMT-01:00 Cape Verde Is.", -60, -60],
36
- ["Africa/Casablanca", "GMT+00:00 Casablanca", 0, 0],
37
- ["Europe/Dublin", "GMT+00:00 Dublin", 0, 60],
38
- ["Europe/Lisbon", "GMT+00:00 Lisbon", 0, 60],
39
- ["Europe/London", "GMT+00:00 London", 0, 60],
40
- ["Africa/Monrovia", "GMT+00:00 Monrovia", 0, 0],
41
- ["Etc/UTC", "GMT+00:00 UTC", 0, 0],
42
- ["Europe/Amsterdam", "GMT+01:00 Amsterdam", 60, 120],
43
- ["Europe/Belgrade", "GMT+01:00 Belgrade", 60, 120],
44
- ["Europe/Berlin", "GMT+01:00 Berlin", 60, 120],
45
- ["Europe/Bratislava", "GMT+01:00 Bratislava", 60, 120],
46
- ["Europe/Brussels", "GMT+01:00 Brussels", 60, 120],
47
- ["Europe/Budapest", "GMT+01:00 Budapest", 60, 120],
48
- ["Europe/Copenhagen", "GMT+01:00 Copenhagen", 60, 120],
49
- ["Europe/Ljubljana", "GMT+01:00 Ljubljana", 60, 120],
50
- ["Europe/Madrid", "GMT+01:00 Madrid", 60, 120],
51
- ["Europe/Paris", "GMT+01:00 Paris", 60, 120],
52
- ["Europe/Prague", "GMT+01:00 Prague", 60, 120],
53
- ["Europe/Rome", "GMT+01:00 Rome", 60, 120],
54
- ["Europe/Sarajevo", "GMT+01:00 Sarajevo", 60, 120],
55
- ["Europe/Skopje", "GMT+01:00 Skopje", 60, 120],
56
- ["Europe/Stockholm", "GMT+01:00 Stockholm", 60, 120],
57
- ["Europe/Vienna", "GMT+01:00 Vienna", 60, 120],
58
- ["Europe/Warsaw", "GMT+01:00 Warsaw", 60, 120],
59
- ["Africa/Algiers", "GMT+01:00 West Central Africa", 60, 60],
60
- ["Europe/Zagreb", "GMT+01:00 Zagreb", 60, 120],
61
- ["Europe/Athens", "GMT+02:00 Athens", 120, 180],
62
- ["Europe/Bucharest", "GMT+02:00 Bucharest", 120, 180],
63
- ["Africa/Cairo", "GMT+02:00 Cairo", 120, 180],
64
- ["Africa/Harare", "GMT+02:00 Harare", 120, 120],
65
- ["Europe/Helsinki", "GMT+02:00 Helsinki", 120, 180],
66
- ["Europe/Istanbul", "GMT+02:00 Istanbul", 120, 180],
67
- ["Asia/Jerusalem", "GMT+02:00 Jerusalem", 120, 180],
68
- ["Europe/Kiev", "GMT+02:00 Kyiv", 120, 180],
69
- ["Europe/Minsk", "GMT+02:00 Minsk", 120, 180],
70
- ["Africa/Johannesburg", "GMT+02:00 Pretoria", 120, 120],
71
- ["Europe/Riga", "GMT+02:00 Riga", 120, 180],
72
- ["Europe/Sofia", "GMT+02:00 Sofia", 120, 180],
73
- ["Europe/Tallinn", "GMT+02:00 Tallinn", 120, 180],
74
- ["Europe/Vilnius", "GMT+02:00 Vilnius", 120, 180],
75
- ["Asia/Baghdad", "GMT+03:00 Baghdad", 180, 180],
76
- ["Asia/Kuwait", "GMT+03:00 Kuwait", 180, 180],
77
- ["Europe/Moscow", "GMT+03:00 Moscow", 180, 240],
78
- ["Africa/Nairobi", "GMT+03:00 Nairobi", 180, 180],
79
- ["Asia/Riyadh", "GMT+03:00 Riyadh", 180, 180],
80
- ["Asia/Tehran", "GMT+03:30 Tehran", 210, 270],
81
- ["Asia/Baku", "GMT+04:00 Baku", 240, 300],
82
- ["Asia/Muscat", "GMT+04:00 Muscat", 240, 240],
83
- ["Asia/Tbilisi", "GMT+04:00 Tbilisi", 240, 240],
84
- ["Asia/Yerevan", "GMT+04:00 Yerevan", 240, 300],
85
- ["Asia/Kabul", "GMT+04:30 Kabul", 270, 270],
86
- ["Asia/Yekaterinburg", "GMT+05:00 Ekaterinburg", 300, 360],
87
- ["Asia/Karachi", "GMT+05:00 Karachi", 300, 300],
88
- ["Asia/Tashkent", "GMT+05:00 Tashkent", 300, 300],
89
- ["Asia/Kolkata", "GMT+05:30 Kolkata", 330, 330],
90
- ["Asia/Colombo", "GMT+05:30 Sri Jayawardenepura", 330, 330],
91
- ["Asia/Kathmandu", "GMT+05:45 Kathmandu", 345, 345],
92
- ["Asia/Almaty", "GMT+06:00 Almaty", 360, 360],
93
- ["Asia/Dhaka", "GMT+06:00 Dhaka", 360, 360],
94
- ["Asia/Novosibirsk", "GMT+06:00 Novosibirsk", 360, 420],
95
- ["Asia/Rangoon", "GMT+06:30 Rangoon", 390, 390],
96
- ["Asia/Bangkok", "GMT+07:00 Bangkok", 420, 420],
97
- ["Asia/Jakarta", "GMT+07:00 Jakarta", 420, 420],
98
- ["Asia/Krasnoyarsk", "GMT+07:00 Krasnoyarsk", 420, 480],
99
- ["Asia/Shanghai", "GMT+08:00 Beijing", 480, 480],
100
- ["Asia/Chongqing", "GMT+08:00 Chongqing", 480, 480],
101
- ["Asia/Hong_Kong", "GMT+08:00 Hong Kong", 480, 480],
102
- ["Asia/Irkutsk", "GMT+08:00 Irkutsk", 480, 540],
103
- ["Asia/Kuala_Lumpur", "GMT+08:00 Kuala Lumpur", 480, 480],
104
- ["Australia/Perth", "GMT+08:00 Perth", 480, 480],
105
- ["Asia/Singapore", "GMT+08:00 Singapore", 480, 480],
106
- ["Asia/Taipei", "GMT+08:00 Taipei", 480, 480],
107
- ["Asia/Ulaanbaatar", "GMT+08:00 Ulaan Bataar", 480, 480],
108
- ["Asia/Urumqi", "GMT+08:00 Urumqi", 480, 480],
109
- ["Asia/Seoul", "GMT+09:00 Seoul", 540, 540],
110
- ["Asia/Tokyo", "GMT+09:00 Tokyo", 540, 540],
111
- ["Asia/Yakutsk", "GMT+09:00 Yakutsk", 540, 600],
112
- ["Australia/Adelaide", "GMT+09:30 Adelaide", 630, 570],
113
- ["Australia/Darwin", "GMT+09:30 Darwin", 570, 570],
114
- ["Australia/Brisbane", "GMT+10:00 Brisbane", 600, 600],
115
- ["Pacific/Guam", "GMT+10:00 Guam", 600, 600],
116
- ["Australia/Hobart", "GMT+10:00 Hobart", 660, 600],
117
- ["Australia/Melbourne", "GMT+10:00 Melbourne", 660, 600],
118
- ["Pacific/Port_Moresby", "GMT+10:00 Port Moresby", 600, 600],
119
- ["Australia/Sydney", "GMT+10:00 Sydney", 660, 600],
120
- ["Asia/Vladivostok", "GMT+10:00 Vladivostok", 600, 660],
121
- ["Asia/Kamchatka", "GMT+11:00 Kamchatka", 660, 720],
122
- ["Asia/Magadan", "GMT+11:00 Magadan", 660, 720],
123
- ["Pacific/Noumea", "GMT+11:00 New Caledonia", 660, 660],
124
- ["Pacific/Auckland", "GMT+12:00 Auckland", 780, 720],
125
- ["Pacific/Fiji", "GMT+12:00 Fiji", 780, 720],
126
- ["Pacific/Majuro", "GMT+12:00 Marshall Is.", 720, 720],
127
- ["Pacific/Tongatapu", "GMT+13:00 Nuku'alofa", 780, 780],
128
- ];
129
- const timezones = timezonesRaw.map((t) => ({
130
- identifier: t[0],
131
- title: t[1],
132
- januaryOffset: t[2],
133
- juneOffset: t[3],
134
- }));
135
- const TIMEZONE_BY_OFFSETS = timezones.find((tz) => tz.januaryOffset === JANUARY_OFFSET && tz.juneOffset === JUNE_OFFSET);
136
- export const TIMEZONE_DEFAULT = getTimezoneByIdentifier("Etc/UTC");
2
+ import { getTimezoneById, getTimezoneTitle, getUserTimezone as getUserTimezoneItem, } from "@gooddata/sdk-ui-kit";
3
+ function toTimezone(item) {
4
+ return {
5
+ identifier: item.id,
6
+ title: getTimezoneTitle(item),
7
+ januaryOffset: item.januaryOffset,
8
+ juneOffset: item.juneOffset,
9
+ };
10
+ }
11
+ export const TIMEZONE_DEFAULT = toTimezone(getTimezoneById("Etc/UTC"));
137
12
  export function getUserTimezone() {
138
- return TIMEZONE_BY_OFFSETS || TIMEZONE_DEFAULT;
13
+ return toTimezone(getUserTimezoneItem());
139
14
  }
140
- export function getTimezoneByIdentifier(title) {
141
- return timezones.find((tz) => tz.identifier === title);
15
+ export function getTimezoneByIdentifier(identifier) {
16
+ const item = identifier ? getTimezoneById(identifier) : undefined;
17
+ return item ? toTimezone(item) : undefined;
142
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/SettingsDialogProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,OAAO,CAAC;AA0DvD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,GAAG,IAAI,CAwB5D"}
1
+ {"version":3,"file":"SettingsDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/SettingsDialogProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,OAAO,CAAC;AA2DvD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,GAAG,IAAI,CAwB5D"}
@@ -28,6 +28,7 @@ const useShareDialogDashboardHeader = () => {
28
28
  dispatch(metaActions.setDisablePersistentFiltersAcrossTabs(payload.disablePersistentFiltersAcrossTabs));
29
29
  dispatch(metaActions.setEvaluationFrequency(payload.evaluationFrequency));
30
30
  dispatch(metaActions.setSectionHeadersDateDataSet(payload.sectionHeadersDateDataSet));
31
+ dispatch(metaActions.setDashboardTimezoneConfig(payload.timezoneConfig));
31
32
  }, [closeSettingsDialog, dispatch]);
32
33
  const onErrorSettingsDialog = useCallback(() => {
33
34
  dispatch(uiActions.closeSettingsDialog());
@@ -20,7 +20,7 @@ export function DashboardLoading(props) {
20
20
  // can tell the rendering has started even before any dashboard data is loaded.
21
21
  // The element is a hidden sibling (same as the gd-dashboard-meta export data),
22
22
  // so it cannot affect the layout of the loading indicator.
23
- return (_jsxs(_Fragment, { children: [exportData ? _jsx("div", { style: { display: "none" }, ...exportData }) : null, _jsx(LoadingComponent, {})
23
+ return (_jsxs(_Fragment, { children: [exportData ? _jsx("div", { style: { display: "none" }, ...exportData }) : null, _jsx(LoadingComponent, { className: "sdk-dashboard-loading s-loading" })
24
24
  ] }));
25
25
  }
26
26
  return _jsx(DashboardInner, { ...props });