@gooddata/sdk-ui-dashboard 11.65.0-alpha.1 → 11.65.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 (202) hide show
  1. package/NOTICE +2 -2
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/assets/type-csv-formatted.svg +1 -1
  5. package/esm/assets/type-csv-raw.svg +1 -1
  6. package/esm/index.d.ts +1 -1
  7. package/esm/index.d.ts.map +1 -1
  8. package/esm/index.js +1 -1
  9. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.d.ts.map +1 -1
  10. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.js +0 -3
  11. package/esm/model/react/useInitializeDashboardStore.d.ts.map +1 -1
  12. package/esm/model/react/useInitializeDashboardStore.js +4 -9
  13. package/esm/model/store/config/configReducers.d.ts +4 -8
  14. package/esm/model/store/config/configReducers.d.ts.map +1 -1
  15. package/esm/model/store/config/configReducers.js +6 -12
  16. package/esm/model/store/config/configSelectors.d.ts +12 -0
  17. package/esm/model/store/config/configSelectors.d.ts.map +1 -1
  18. package/esm/model/store/config/configSelectors.js +18 -4
  19. package/esm/model/store/config/index.d.ts +2 -3
  20. package/esm/model/store/config/index.d.ts.map +1 -1
  21. package/esm/model/types/commonTypes.d.ts +20 -22
  22. package/esm/model/types/commonTypes.d.ts.map +1 -1
  23. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/LiveRegionLastSelectContainer.d.ts +9 -0
  24. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/LiveRegionLastSelectContainer.d.ts.map +1 -0
  25. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/LiveRegionLastSelectContainer.js +12 -0
  26. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts.map +1 -1
  27. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +3 -3
  28. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
  29. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.js +14 -7
  30. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectionDescription.d.ts +12 -0
  31. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectionDescription.d.ts.map +1 -0
  32. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectionDescription.js +30 -0
  33. package/esm/presentation/automations/scheduledEmail/utils/users.d.ts +1 -0
  34. package/esm/presentation/automations/scheduledEmail/utils/users.d.ts.map +1 -1
  35. package/esm/presentation/automations/scheduledEmail/utils/users.js +3 -0
  36. package/esm/presentation/dashboard/DashboardHeader/DashboardHeader.d.ts.map +1 -1
  37. package/esm/presentation/dashboard/DashboardHeader/DashboardHeader.js +2 -1
  38. package/esm/presentation/dashboard/components/DashboardAiComposingOverlay.d.ts +4 -0
  39. package/esm/presentation/dashboard/components/DashboardAiComposingOverlay.d.ts.map +1 -0
  40. package/esm/presentation/dashboard/components/DashboardAiComposingOverlay.js +151 -0
  41. package/esm/presentation/dashboard/components/DashboardInner.d.ts.map +1 -1
  42. package/esm/presentation/dashboard/components/DashboardInner.js +5 -6
  43. package/esm/presentation/dashboard/components/DashboardInteractionComposing.d.ts +7 -0
  44. package/esm/presentation/dashboard/components/DashboardInteractionComposing.d.ts.map +1 -0
  45. package/esm/presentation/dashboard/components/DashboardInteractionComposing.js +18 -0
  46. package/esm/presentation/dashboard/components/DashboardInteractionLock.d.ts +8 -0
  47. package/esm/presentation/dashboard/components/DashboardInteractionLock.d.ts.map +1 -0
  48. package/esm/presentation/dashboard/components/DashboardInteractionLock.js +29 -0
  49. package/esm/presentation/dragAndDrop/draggableWidget/AddDashboardLayoutWidgetButton.d.ts.map +1 -1
  50. package/esm/presentation/dragAndDrop/draggableWidget/AddDashboardLayoutWidgetButton.js +2 -4
  51. package/esm/presentation/dragAndDrop/draggableWidget/AddRichTextWidgetButton.d.ts.map +1 -1
  52. package/esm/presentation/dragAndDrop/draggableWidget/AddRichTextWidgetButton.js +3 -3
  53. package/esm/presentation/dragAndDrop/draggableWidget/AddVisualizationSwitcherWidgetButton.d.ts.map +1 -1
  54. package/esm/presentation/dragAndDrop/draggableWidget/AddVisualizationSwitcherWidgetButton.js +2 -4
  55. package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterPlaceholder.d.ts.map +1 -1
  56. package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterPlaceholder.js +3 -2
  57. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +6 -0
  58. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  59. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +48 -42
  60. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +6 -0
  61. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  62. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +6 -0
  63. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +6 -0
  64. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  65. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +6 -0
  66. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +20 -0
  67. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  68. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +20 -0
  69. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +6 -0
  70. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  71. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +6 -0
  72. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +6 -0
  73. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  74. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +6 -0
  75. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +6 -0
  76. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  77. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +6 -0
  78. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +6 -0
  79. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  80. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +6 -0
  81. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +6 -0
  82. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  83. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +12 -6
  84. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +6 -0
  85. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  86. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +6 -0
  87. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +6 -0
  88. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  89. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +6 -0
  90. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +6 -0
  91. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  92. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +6 -0
  93. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +6 -0
  94. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  95. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +6 -0
  96. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +6 -0
  97. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  98. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +6 -0
  99. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +6 -0
  100. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  101. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +6 -0
  102. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +6 -0
  103. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  104. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +6 -0
  105. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +6 -0
  106. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  107. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +6 -0
  108. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +6 -0
  109. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  110. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +6 -0
  111. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +6 -0
  112. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  113. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +6 -0
  114. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +6 -0
  115. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  116. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +6 -0
  117. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +6 -0
  118. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  119. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +6 -0
  120. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +6 -0
  121. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  122. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +6 -0
  123. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +6 -0
  124. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  125. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +6 -0
  126. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +6 -0
  127. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  128. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +6 -0
  129. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +6 -0
  130. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  131. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +6 -0
  132. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +6 -0
  133. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  134. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +7 -1
  135. package/esm/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.d.ts.map +1 -1
  136. package/esm/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.js +3 -2
  137. package/esm/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.d.ts.map +1 -1
  138. package/esm/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.js +3 -2
  139. package/esm/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.d.ts.map +1 -1
  140. package/esm/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.js +3 -2
  141. package/esm/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.d.ts.map +1 -1
  142. package/esm/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.js +3 -2
  143. package/esm/presentation/widget/richText/EditModeDashboardRichText.js +1 -1
  144. package/esm/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.js +1 -1
  145. package/esm/presentation/widget/visualizationSwitcher/configuration/ToolbarTop.js +2 -2
  146. package/esm/sdk-ui-dashboard.d.ts +34 -22
  147. package/package.json +21 -21
  148. package/styles/css/alerting.css +1 -1
  149. package/styles/css/alerting.css.map +1 -1
  150. package/styles/css/attributeFilterConfig.css +3 -3
  151. package/styles/css/automationFilters.css +1 -1
  152. package/styles/css/configurationPanel.css +2 -2
  153. package/styles/css/configurationPanel.css.map +1 -1
  154. package/styles/css/dashboard.css +94 -87
  155. package/styles/css/dashboard.css.map +1 -1
  156. package/styles/css/dashboardNestedLayoutToolbar.css.map +1 -1
  157. package/styles/css/dashboardNestedLayoutWidget.css +1 -1
  158. package/styles/css/dashboardSettingsDialog.css +1 -1
  159. package/styles/css/dragAndDrop.css +0 -8
  160. package/styles/css/dragAndDrop.css.map +1 -1
  161. package/styles/css/drillConfigPanel.css +7 -7
  162. package/styles/css/drillConfigPanel.css.map +1 -1
  163. package/styles/css/filterBar.css +4 -4
  164. package/styles/css/filterBar.css.map +1 -1
  165. package/styles/css/grouped-navigation.css +2 -2
  166. package/styles/css/grouped-navigation.css.map +1 -1
  167. package/styles/css/icons.css.map +1 -1
  168. package/styles/css/insightConfiguration.css +1 -1
  169. package/styles/css/insightConfiguration.css.map +1 -1
  170. package/styles/css/kpi.css +2 -2
  171. package/styles/css/kpi.css.map +1 -1
  172. package/styles/css/kpi_alert_dialog.css +2 -2
  173. package/styles/css/layout.css +5 -5
  174. package/styles/css/layout.css.map +1 -1
  175. package/styles/css/main.css +243 -219
  176. package/styles/css/main.css.map +1 -1
  177. package/styles/css/notifications_channels_dialog.css +2 -2
  178. package/styles/css/notifications_channels_dialog.css.map +1 -1
  179. package/styles/css/resizing.css.map +1 -1
  180. package/styles/css/richTextWidget.css.map +1 -1
  181. package/styles/css/saveAsDialog.css.map +1 -1
  182. package/styles/css/sidebar.css +35 -10
  183. package/styles/css/sidebar.css.map +1 -1
  184. package/styles/css/topBar.css.map +1 -1
  185. package/styles/css/visualization.css.map +1 -1
  186. package/styles/css/visualizationSwitcherHeader.css.map +1 -1
  187. package/styles/css/visualizationSwitcherToolbar.css +1 -1
  188. package/styles/css/visualizationSwitcherToolbar.css.map +1 -1
  189. package/styles/css/visualizationSwitcherWidget.css +1 -1
  190. package/styles/css/visualizationSwitcherWidget.css.map +1 -1
  191. package/styles/scss/_variables.scss +3 -2
  192. package/styles/scss/_zIndexes.scss +4 -0
  193. package/styles/scss/attributeFilterConfig.scss +1 -1
  194. package/styles/scss/configurationPanel.scss +1 -1
  195. package/styles/scss/dashboard.scss +94 -96
  196. package/styles/scss/dragAndDrop.scss +2 -9
  197. package/styles/scss/drillConfigPanel.scss +3 -3
  198. package/styles/scss/layout.scss +1 -1
  199. package/styles/scss/sidebar.scss +47 -12
  200. package/esm/presentation/dashboard/components/DashboardSkeleton.d.ts +0 -5
  201. package/esm/presentation/dashboard/components/DashboardSkeleton.d.ts.map +0 -1
  202. package/esm/presentation/dashboard/components/DashboardSkeleton.js +0 -20
@@ -252,35 +252,33 @@ export type DashboardConfig = {
252
252
  */
253
253
  widgetsOverlay?: Record<string, IDashboardWidgetOverlay>;
254
254
  /**
255
- * @internal
256
- * Specifies if the dashboard is in AI mode.
255
+ * Specifies the dashboard's AI mode.
257
256
  *
258
257
  * @remarks
259
- * AI mode is active when the dashboard is being controlled or managed by AI capabilities.
260
- * When enabled, the dashboard may exhibit specialized behaviors, such as enabling new
261
- * AI-driven features or disabling certain standard functions to ensure a consistent
262
- * AI-assisted experience.
263
- */
264
- isAiMode?: boolean;
265
- /**
266
- * @internal
267
- * Specifies if ai now generates the dashboard
258
+ * Any defined, non-null mode enables the AI-assisted dashboard experience.
259
+ * `"active"` enables AI mode without loading or blocking dashboard interaction.
260
+ * `"generating"` shows loading content while AI generates the dashboard.
261
+ * `"waiting"` shows loading content while AI waits for user input.
262
+ * `"building"` keeps dashboard tabs, filters, and visualizations visible beneath an overlay
263
+ * and blocks their mouse and keyboard interaction without loading skeletons. The top bar,
264
+ * sidebar, and external assistant panels remain interactive.
265
+ * `undefined` or `null` disables AI mode.
268
266
  *
269
- * @remarks
270
- * This flag indicates that an AI process has started generating the dashboard content but
271
- * has not yet finished. It can be used to trigger loading states (like skeletons or progress
272
- * indicators) and to allow users to cancel the generation process before it completes.
267
+ * @internal
273
268
  */
274
- isAiGenerating?: boolean;
269
+ aiMode?: "active" | "generating" | "waiting" | "building" | null;
275
270
  /**
276
- * @internal
277
- * Specifies if AI is waiting for user input before it can continue.
271
+ * Current AI reasoning title shown while the dashboard is generating or building.
278
272
  *
279
273
  * @remarks
280
- * This flag can be used to replace the dashboard content with a loading state while the AI
281
- * process is blocked waiting for the user to respond.
274
+ * Provide only the title, not the reasoning body. The title is rendered as plain text,
275
+ * without interpreting HTML or Markdown. The waiting-for-input message takes precedence
276
+ * while AI is waiting. Updating this value updates the status without reinitializing the
277
+ * dashboard; setting it to `undefined` clears the title.
278
+ *
279
+ * @public
282
280
  */
283
- isAiWaiting?: boolean;
281
+ aiReasoningTitle?: string;
284
282
  /**
285
283
  * @internal
286
284
  * Identifier of the export
@@ -468,7 +466,7 @@ export interface IDashboardFocusObject {
468
466
  *
469
467
  * @public
470
468
  */
471
- export type ResolvedDashboardConfig = Omit<Required<DashboardConfig>, "mapboxToken" | "agGridToken" | "maxZoomLevel" | "exportId" | "exportType" | "exportMetadata" | "focusObject" | "slideConfig" | "references" | "entitlements" | "initialContent" | "executionTimestamp" | "user" | "overrideDefaultFilters" | "overrideDefaultParameters" | "overrideTitle" | "hideWidgetTitles" | "workspaceDescriptor" | "evaluationFrequency" | "externalRecipient" | "openAutomationOnLoad" | "hideAddTabButton"> & DashboardConfig;
469
+ export type ResolvedDashboardConfig = Omit<Required<DashboardConfig>, "mapboxToken" | "agGridToken" | "maxZoomLevel" | "exportId" | "exportType" | "exportMetadata" | "focusObject" | "slideConfig" | "references" | "entitlements" | "initialContent" | "executionTimestamp" | "user" | "overrideDefaultFilters" | "overrideDefaultParameters" | "overrideTitle" | "hideWidgetTitles" | "workspaceDescriptor" | "evaluationFrequency" | "externalRecipient" | "openAutomationOnLoad" | "hideAddTabButton" | "aiMode" | "aiReasoningTitle"> & DashboardConfig;
472
470
  /**
473
471
  *
474
472
  * @beta
@@ -1 +1 @@
1
- {"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../../src/model/types/commonTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../../src/model/types/commonTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ReactElement } from "react";
2
+ import { type ContainerProps } from "react-select";
3
+ import { type IAutomationRecipient } from "@gooddata/sdk-model";
4
+ /**
5
+ * React-select 5.x renders its hidden live region as the first child; rendering it last keeps screen readers
6
+ * from stopping on it between the field label and the recipients. Guarded by RecipientsSelect.test.tsx.
7
+ */
8
+ export declare function LiveRegionLastSelectContainer(props: ContainerProps<IAutomationRecipient, boolean>): ReactElement;
9
+ //# sourceMappingURL=LiveRegionLastSelectContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveRegionLastSelectContainer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/LiveRegionLastSelectContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,cAAc,CAAC,oBAAoB,EAAE,OAAO,CAAC,GACrD,YAAY,CASd"}
@@ -0,0 +1,12 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { Children } from "react";
4
+ import { components } from "react-select";
5
+ /**
6
+ * React-select 5.x renders its hidden live region as the first child; rendering it last keeps screen readers
7
+ * from stopping on it between the field label and the recipients. Guarded by RecipientsSelect.test.tsx.
8
+ */
9
+ export function LiveRegionLastSelectContainer(props) {
10
+ const [liveRegion, ...rest] = Children.toArray(props.children);
11
+ return (_jsxs(components.SelectContainer, { ...props, children: [rest, liveRegion] }));
12
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"RecipientsSelect.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAIpD,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAU7B,UAAU,sBAAsB;IAC5B;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAE5D;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAElC;;OAEG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,EAAE,EACF,KAAK,EACL,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,SAAgB,EAChB,eAAe,EACf,yBAAyB,GAC5B,EAAE,sBAAsB,2CAuExB"}
1
+ {"version":3,"file":"RecipientsSelect.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAIpD,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAU7B,UAAU,sBAAsB;IAC5B;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAE5D;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAElC;;OAEG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,EAAE,EACF,KAAK,EACL,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,SAAgB,EAChB,eAAe,EACf,yBAAyB,GAC5B,EAAE,sBAAsB,2CAwExB"}
@@ -5,7 +5,7 @@ import { sortBy } from "lodash-es";
5
5
  import { DETAILED_ANNOUNCEMENT_THRESHOLD, UiSearchResultsAnnouncement } from "@gooddata/sdk-ui-kit";
6
6
  import { useWorkspaceUsersSearch } from "../../../../shared/hooks/useWorkspaceUsersSearch.js";
7
7
  import { convertUserToAutomationRecipient } from "../../../../shared/utils/automationUtils.js";
8
- import { createUser, matchRecipient } from "../../../utils/users.js";
8
+ import { createUser, getRecipientLabel, matchRecipient } from "../../../utils/users.js";
9
9
  import { isEmail } from "../../../utils/validate.js";
10
10
  import { RecipientsSelectRenderer } from "./RecipientsSelectRenderer.js";
11
11
  export function RecipientsSelect({ id, value, onChange, loggedUser, allowEmptySelection, allowExternalRecipients, allowOnlyLoggedUserRecipients, maxRecipients, className, notificationChannels, notificationChannelId, showLabel = true, onKeyDownSubmit, externalRecipientOverride, }) {
@@ -37,6 +37,6 @@ export function RecipientsSelect({ id, value, onChange, loggedUser, allowEmptySe
37
37
  externalRecipientOverride,
38
38
  ]);
39
39
  const hasSettledResults = !isLoading && (isServerSearch ? users !== undefined : Boolean(search));
40
- const announcedResultValues = useMemo(() => options.slice(0, DETAILED_ANNOUNCEMENT_THRESHOLD).map((option) => option.name ?? option.id), [options]);
41
- return (_jsxs(_Fragment, { children: [_jsx(UiSearchResultsAnnouncement, { totalResults: hasSettledResults ? options.length : undefined, resultValues: announcedResultValues }), _jsx(RecipientsSelectRenderer, { id: id, canListUsersInProject: true, isMulti: true, options: options, value: value, onChange: onChange, onSearch: onSearch, onActivate: onActivate, isLoading: isLoading, loggedUser: loggedUser, allowOnlyLoggedUserRecipients: allowOnlyLoggedUserRecipients, allowEmptySelection: allowEmptySelection, allowExternalRecipients: allowExternalRecipients, maxRecipients: maxRecipients, className: className, notificationChannel: notificationChannel, usersError: usersError, showLabel: showLabel, onKeyDownSubmit: onKeyDownSubmit, externalRecipientOverride: externalRecipientOverride })] }));
40
+ const announcedResultValues = useMemo(() => options.slice(0, DETAILED_ANNOUNCEMENT_THRESHOLD).map(getRecipientLabel), [options]);
41
+ return (_jsxs(_Fragment, { children: [_jsx(RecipientsSelectRenderer, { id: id, canListUsersInProject: true, isMulti: true, options: options, value: value, onChange: onChange, onSearch: onSearch, onActivate: onActivate, isLoading: isLoading, loggedUser: loggedUser, allowOnlyLoggedUserRecipients: allowOnlyLoggedUserRecipients, allowEmptySelection: allowEmptySelection, allowExternalRecipients: allowExternalRecipients, maxRecipients: maxRecipients, className: className, notificationChannel: notificationChannel, usersError: usersError, showLabel: showLabel, onKeyDownSubmit: onKeyDownSubmit, externalRecipientOverride: externalRecipientOverride }), _jsx(UiSearchResultsAnnouncement, { totalResults: hasSettledResults ? options.length : undefined, resultValues: announcedResultValues })] }));
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RecipientsSelectRenderer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqE,MAAM,OAAO,CAAC;AAiB9G,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAE1C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,kBAAkB,CAAC;AA8F1B,MAAM,WAAW,8BAA8B;IAC3C;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAEhC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAElC;;OAEG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,8BAA8B,GAAG,kCAAkC,CAAC;IAE1F;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC;AAQD,eAAO,MAAM,wBAAwB,8CAC1B,8BAA8B,6CA8vBvC,CAAC"}
1
+ {"version":3,"file":"RecipientsSelectRenderer.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqE,MAAM,OAAO,CAAC;AAiB9G,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAE1C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,kBAAkB,CAAC;AAkG1B,MAAM,WAAW,8BAA8B;IAC3C;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAEhC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAElC;;OAEG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,8BAA8B,GAAG,kCAAkC,CAAC;IAE1F;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC;AAQD,eAAO,MAAM,wBAAwB,8CAC1B,8BAA8B,6CAmwBvC,CAAC"}
@@ -9,7 +9,10 @@ import { isAutomationUserRecipient, } from "@gooddata/sdk-model";
9
9
  import { ValidationContextStore, createInvalidDatapoint, createInvalidNode, useValidationContextValue, } from "@gooddata/sdk-ui";
10
10
  import { LoadingMask, Message, Overlay, OverlayController, OverlayControllerProvider, UiIcon, UiTooltip, isEscapeKey, makeKeyboardNavigation, } from "@gooddata/sdk-ui-kit";
11
11
  import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../../../../constants/zIndex.js";
12
+ import { getRecipientLabel } from "../../../utils/users.js";
12
13
  import { isEmail } from "../../../utils/validate.js";
14
+ import { LiveRegionLastSelectContainer } from "./LiveRegionLastSelectContainer.js";
15
+ import { RecipientsSelectionDescription } from "./RecipientsSelectionDescription.js";
13
16
  const MAXIMUM_RECIPIENTS_RECEIVE = 60;
14
17
  const PADDING = 16;
15
18
  const LOADING_MENU_HEIGHT = 50;
@@ -113,12 +116,12 @@ export const RecipientsSelectRenderer = memo(function RecipientsSelectRenderer(p
113
116
  const invalidUnknownRecipients = value.filter((v) => v.type === "unknownUser");
114
117
  const invalidUnknownError = !!invalidUnknownRecipients.length;
115
118
  const invalidRecipientsValues = [...invalidExternalRecipients, ...invalidUnknownRecipients]
116
- .map((v) => v.name || v.id)
119
+ .map(getRecipientLabel)
117
120
  .join(", ");
118
121
  const authorOnlyError = allowOnlyLoggedUserRecipients &&
119
122
  ((value.length === 1 && value[0].id !== loggedUser?.id) || value.length > 1);
120
123
  const missingEmailRecipients = value.filter((v) => !getHasEmail(v));
121
- const missingEmailRecipientsValues = missingEmailRecipients.map((v) => v.name || v.id).join(", ");
124
+ const missingEmailRecipientsValues = missingEmailRecipients.map(getRecipientLabel).join(", ");
122
125
  const missingEmailError = !!missingEmailRecipients.length;
123
126
  return {
124
127
  maxRecipientsError,
@@ -229,7 +232,7 @@ export const RecipientsSelectRenderer = memo(function RecipientsSelectRenderer(p
229
232
  const { data, children } = multiValueProps;
230
233
  // MultiValueRemove component from react-select
231
234
  const removeIcon = children[1];
232
- const name = data.name || data.id;
235
+ const name = getRecipientLabel(data);
233
236
  const hasEmail = getHasEmail(data);
234
237
  const noExternal = data.type === "externalUser" && !allowExternalRecipients;
235
238
  const invalidExternal = data.type === "unknownUser";
@@ -260,13 +263,16 @@ export const RecipientsSelectRenderer = memo(function RecipientsSelectRenderer(p
260
263
  return renderEmptyContainer();
261
264
  }, [renderEmptyContainer]);
262
265
  const renderOptionLabel = useCallback((recipient) => {
263
- const displayName = recipient.name || recipient.id;
266
+ const displayName = getRecipientLabel(recipient);
264
267
  const email = isAutomationUserRecipient(recipient) ? (recipient.email ?? "") : "";
265
268
  const renderValue = renderRecipientValue(recipient);
266
269
  return (_jsx(UiTooltip, { anchor: _jsxs("div", { className: "gd-recipient-option-item s-gd-recipient-option-item", children: [_jsx("span", { className: "gd-recipient-option-label-item s-gd-recipient-option-label-item", children: displayName }), allowExternalRecipients && recipient.type === "externalUser" ? (_jsxs("span", { className: "gd-recipient-quest", children: ["\u00A0", _jsx(FormattedMessage, { id: "dialogs.schedule.email.user.guest" })] })) : (renderValue), !externalRecipientOverride &&
267
270
  allowExternalRecipients &&
268
271
  recipient.type === "externalUser" ? (_jsx("div", { className: "gd-recipient-option-label-external-warning", children: _jsx(Message, { type: "warning", children: _jsx(FormattedMessage, { id: "dialogs.schedule.email.user.warning.external", values: { email: displayName } }) }) })) : null] }), content: isEmail(email) ? `${displayName} (${email})` : displayName, variant: "default", arrowPlacement: "right", triggerBy: ["hover", "focus"] }));
269
272
  }, [allowExternalRecipients, externalRecipientOverride, renderRecipientValue]);
273
+ const descriptionId = `${id}-description`;
274
+ const errorId = `${id}-error`;
275
+ const ariaDescribedBy = isValid ? descriptionId : `${descriptionId} ${errorId}`;
270
276
  const renderInputContainer = useCallback((inputProps) => {
271
277
  if (!isMulti) {
272
278
  return renderEmptyContainer();
@@ -287,8 +293,8 @@ export const RecipientsSelectRenderer = memo(function RecipientsSelectRenderer(p
287
293
  inputProps.innerRef(ref);
288
294
  }
289
295
  }, autoComplete: "new-password" // common hack for Safari to not autocomplete
290
- , "aria-invalid": !isValid, "aria-describedby": isValid ? undefined : "gd-recipients-field-error" }) }));
291
- }, [isMulti, id, isValid, renderEmptyContainer]);
296
+ , "aria-invalid": !isValid, "aria-describedby": ariaDescribedBy }) }));
297
+ }, [isMulti, id, isValid, ariaDescribedBy, renderEmptyContainer]);
292
298
  const handleKeyboardRecipientRemove = useCallback((index) => {
293
299
  if (index < 0 || index >= value.length) {
294
300
  return;
@@ -437,6 +443,7 @@ export const RecipientsSelectRenderer = memo(function RecipientsSelectRenderer(p
437
443
  }, [canListUsersInProject, onActivate]);
438
444
  const creatableSelectComponent = {
439
445
  ...ReactSelectComponents,
446
+ SelectContainer: LiveRegionLastSelectContainer,
440
447
  IndicatorsContainer: renderEmptyContainer,
441
448
  Input: renderInputContainer,
442
449
  MultiValueContainer: renderMultiValueContainer,
@@ -496,5 +503,5 @@ export const RecipientsSelectRenderer = memo(function RecipientsSelectRenderer(p
496
503
  // Options arrive pre-filtered (server search, or the owner's options memo).
497
504
  filterOption: null, isClearable: false, isDisabled: !isMulti, isMulti: isMulti, onChange:
498
505
  // using as any as it would be too tricky to type properly
499
- handleOnChange, onInputChange: handleSearchChange, onMenuOpen: onMenuOpen, onMenuClose: () => setState((prev) => ({ ...prev, menuOpen: false })), onKeyDown: handleKeyDown, options: options, onBlur: onBlur, value: value, getOptionValue: (o) => o.id, getOptionLabel: (o) => o.name || o.id, "aria-describedby": isValid ? undefined : "gd-recipients-field-error", "aria-invalid": !isValid }), isValid ? (renderExternalRecipientsNote ? (_jsx("div", { className: "gd-recipients-field-note", children: _jsx(FormattedMessage, { id: "dialogs.schedule.email.recipients.note" }) })) : allowOnlyLoggedUserRecipients ? (_jsx("div", { className: "gd-recipients-field-note", children: _jsx(FormattedMessage, { id: "dialogs.schedule.email.destinationWarning" }) })) : null) : (_jsx("div", { id: "gd-recipients-field-error", className: "gd-recipients-field-error", children: getInvalidDatapoints().map((invalidDatapoint) => (_jsx("div", { id: invalidDatapoint.id, className: "gd-recipients-field-error-item", children: invalidDatapoint.message }, invalidDatapoint.id))) }))] })] }) }));
506
+ handleOnChange, onInputChange: handleSearchChange, onMenuOpen: onMenuOpen, onMenuClose: () => setState((prev) => ({ ...prev, menuOpen: false })), onKeyDown: handleKeyDown, options: options, onBlur: onBlur, value: value, getOptionValue: (o) => o.id, getOptionLabel: getRecipientLabel, "aria-invalid": !isValid }), _jsx(RecipientsSelectionDescription, { id: descriptionId, recipients: value }), isValid ? (renderExternalRecipientsNote ? (_jsx("div", { className: "gd-recipients-field-note", children: _jsx(FormattedMessage, { id: "dialogs.schedule.email.recipients.note" }) })) : allowOnlyLoggedUserRecipients ? (_jsx("div", { className: "gd-recipients-field-note", children: _jsx(FormattedMessage, { id: "dialogs.schedule.email.destinationWarning" }) })) : null) : (_jsx("div", { id: errorId, className: "gd-recipients-field-error", children: getInvalidDatapoints().map((invalidDatapoint) => (_jsx("div", { id: invalidDatapoint.id, className: "gd-recipients-field-error-item", children: invalidDatapoint.message }, invalidDatapoint.id))) }))] })] }) }));
500
507
  });
@@ -0,0 +1,12 @@
1
+ import { type ReactElement } from "react";
2
+ import { type IAutomationRecipient } from "@gooddata/sdk-model";
3
+ interface IRecipientsSelectionDescriptionProps {
4
+ id: string;
5
+ recipients: readonly IAutomationRecipient[];
6
+ }
7
+ /**
8
+ * Hidden screen reader description of the selected recipients, referenced by the recipients input.
9
+ */
10
+ export declare function RecipientsSelectionDescription({ id, recipients, }: IRecipientsSelectionDescriptionProps): ReactElement;
11
+ export {};
12
+ //# sourceMappingURL=RecipientsSelectionDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecipientsSelectionDescription.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectionDescription.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AA8BhE,UAAU,oCAAoC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,EAAE,EACF,UAAU,GACb,EAAE,oCAAoC,GAAG,YAAY,CAQrD"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from "react-intl";
3
+ import { DETAILED_ANNOUNCEMENT_THRESHOLD } from "@gooddata/sdk-ui-kit";
4
+ import { getRecipientLabel } from "../../../utils/users.js";
5
+ const messages = defineMessages({
6
+ selectedNone: { id: "dialogs.schedule.email.recipients.selected.none" },
7
+ selectedFew: { id: "dialogs.schedule.email.recipients.selected.few" },
8
+ selectedMany: { id: "dialogs.schedule.email.recipients.selected.many" },
9
+ navigationHint: { id: "dialogs.schedule.email.recipients.navigationHint" },
10
+ });
11
+ function describeRecipients(intl, recipients) {
12
+ const count = recipients.length;
13
+ if (count === 0) {
14
+ return intl.formatMessage(messages.selectedNone);
15
+ }
16
+ const selection = count <= DETAILED_ANNOUNCEMENT_THRESHOLD
17
+ ? intl.formatMessage(messages.selectedFew, {
18
+ count,
19
+ names: intl.formatList(recipients.map(getRecipientLabel), { type: "unit" }),
20
+ })
21
+ : intl.formatMessage(messages.selectedMany, { count });
22
+ return `${selection} ${intl.formatMessage(messages.navigationHint)}`;
23
+ }
24
+ /**
25
+ * Hidden screen reader description of the selected recipients, referenced by the recipients input.
26
+ */
27
+ export function RecipientsSelectionDescription({ id, recipients, }) {
28
+ const intl = useIntl();
29
+ return (_jsx("span", { id: id, hidden: true, children: describeRecipients(intl, recipients) }));
30
+ }
@@ -1,4 +1,5 @@
1
1
  import { type IAutomationRecipient } from "@gooddata/sdk-model";
2
2
  export declare function matchRecipient(user: IAutomationRecipient, search: string): boolean;
3
+ export declare function getRecipientLabel(recipient: IAutomationRecipient): string;
3
4
  export declare function createUser(search: string): IAutomationRecipient;
4
5
  //# sourceMappingURL=users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/utils/users.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,qBAAqB,CAAC;AAIhG,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAexE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAQ/D"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/utils/users.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,qBAAqB,CAAC;AAIhG,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAexE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,MAAM,CAEzE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAQ/D"}
@@ -14,6 +14,9 @@ export function matchRecipient(user, search) {
14
14
  lowerCaseId?.includes(lowerCaseSearch)) ??
15
15
  false);
16
16
  }
17
+ export function getRecipientLabel(recipient) {
18
+ return recipient.name || recipient.id;
19
+ }
17
20
  export function createUser(search) {
18
21
  const hasEmail = isEmail(search);
19
22
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardHeader.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAiF1C,wBAAgB,oBAAoB,mDAOnC;AAID,wBAAgB,eAAe,IAAI,YAAY,CA2B9C"}
1
+ {"version":3,"file":"DashboardHeader.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAkF1C,wBAAgB,oBAAoB,mDAOnC;AAID,wBAAgB,eAAe,IAAI,YAAY,CA6B9C"}
@@ -21,6 +21,7 @@ import { useTopBarProps } from "../../topBar/topBar/DefaultTopBar.js";
21
21
  import { TopBar } from "../../topBar/topBar/TopBar.js";
22
22
  import { useWidgetDeleteDialogProps } from "../../widgetDeleteDialog/DefaultWidgetDeleteDialog.js";
23
23
  import { WidgetDeleteDialog } from "../../widgetDeleteDialog/WidgetDeleteDialog.js";
24
+ import { DashboardInteractionLock } from "../components/DashboardInteractionLock.js";
24
25
  import { ToastMessages } from "../components/ToastMessages.js";
25
26
  import { AlertingDialogProvider } from "./AlertingDialogProvider.js";
26
27
  import { DashboardTabs, useDashboardTabsProps } from "./DashboardTabs.js";
@@ -76,5 +77,5 @@ export function DashboardTabsWrapper() {
76
77
  // split the header parts of the dashboard so that changes to their state
77
78
  // (e.g. opening email dialog) do not re-render the dashboard body
78
79
  export function DashboardHeader() {
79
- return (_jsxs(_Fragment, { children: [_jsx(ToastMessages, {}), _jsx(ExportXlsxDialogProvider, {}), _jsx(ExportCsvDialogProvider, {}), _jsx(ExportTabularPdfDialogProvider, {}), _jsx(ExportTemplateDialogProvider, {}), _jsx(ScheduledEmailAutomationsProvider, { children: _jsx(ScheduledEmailConnector, {}) }), _jsx(AlertingDialogProvider, {}), _jsx(ShareDialogDashboardHeader, {}), _jsx(SettingsDialogProvider, {}), _jsx(DensityDialogProvider, {}), _jsx(TimezoneDialogProvider, {}), _jsx(DeleteDialogWrapper, {}), _jsx(WidgetDeleteDialogWrapper, {}), _jsx(KpiDeleteDialogWrapper, {}), _jsx(SaveAsDialogWrapper, {}), _jsx(InsightNotSavedDialogWrapper, {}), _jsx(TopBarWrapper, {}), _jsx(DashboardTabsWrapper, {}), _jsx(FilterBarWrapper, {}), _jsx(CancelEditDialogWrapper, {})] }));
80
+ return (_jsxs(_Fragment, { children: [_jsx(ToastMessages, {}), _jsx(ExportXlsxDialogProvider, {}), _jsx(ExportCsvDialogProvider, {}), _jsx(ExportTabularPdfDialogProvider, {}), _jsx(ExportTemplateDialogProvider, {}), _jsx(ScheduledEmailAutomationsProvider, { children: _jsx(ScheduledEmailConnector, {}) }), _jsx(AlertingDialogProvider, {}), _jsx(ShareDialogDashboardHeader, {}), _jsx(SettingsDialogProvider, {}), _jsx(DensityDialogProvider, {}), _jsx(TimezoneDialogProvider, {}), _jsx(DeleteDialogWrapper, {}), _jsx(WidgetDeleteDialogWrapper, {}), _jsx(KpiDeleteDialogWrapper, {}), _jsx(SaveAsDialogWrapper, {}), _jsx(InsightNotSavedDialogWrapper, {}), _jsx(TopBarWrapper, {}), _jsxs(DashboardInteractionLock, { children: [_jsx(DashboardTabsWrapper, {}), _jsx(FilterBarWrapper, {})] }), _jsx(CancelEditDialogWrapper, {})] }));
80
81
  }
@@ -0,0 +1,4 @@
1
+ export declare function DashboardAiComposingOverlay({ isWaiting }: {
2
+ isWaiting: boolean;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=DashboardAiComposingOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardAiComposingOverlay.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/components/DashboardAiComposingOverlay.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,2BAA2B,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,2CAuKhF"}
@@ -0,0 +1,151 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { useLayoutEffect, useRef } from "react";
4
+ const speed = 1 / 3.6;
5
+ const springAt = 0.05;
6
+ const stiffness = 7;
7
+ const damping = 0.55;
8
+ export function DashboardAiComposingOverlay({ isWaiting }) {
9
+ const overlayRef = useRef(null);
10
+ const stateRef = useRef(null);
11
+ useLayoutEffect(() => {
12
+ const overlay = overlayRef.current;
13
+ if (!overlay) {
14
+ return;
15
+ }
16
+ const rects = Array.from(overlay.querySelectorAll("rect"));
17
+ const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
18
+ let state = stateRef.current;
19
+ let width = 0;
20
+ let perimeter = 0;
21
+ let previousTime;
22
+ let frame;
23
+ const segment = (rect, start, length) => {
24
+ rect.style.strokeDasharray = `${length} ${Math.max(0, perimeter - length)}`;
25
+ rect.style.strokeDashoffset = String(-(((start % perimeter) + perimeter) % perimeter));
26
+ };
27
+ const animate = (time) => {
28
+ frame = undefined;
29
+ if (!state || !perimeter) {
30
+ return;
31
+ }
32
+ const dt = Math.min(0.05, (time - (previousTime ?? time)) / 1000);
33
+ previousTime = time;
34
+ const top = width / 2 / perimeter;
35
+ const runningLength = Math.min(600, perimeter * 0.25);
36
+ const waitingLength = Math.min(120, runningLength);
37
+ let settled = false;
38
+ if (isWaiting && state.mode === "run") {
39
+ state.mode = "cruise";
40
+ state.lap = Math.ceil(state.center + springAt - top);
41
+ }
42
+ else if (!isWaiting && state.mode !== "run") {
43
+ state.mode = "run";
44
+ state.speed = 0;
45
+ }
46
+ if (reducedMotion.matches) {
47
+ state.center = top;
48
+ state.length = isWaiting ? waitingLength : runningLength;
49
+ state.head = isWaiting ? 0 : 1;
50
+ state.lap = 0;
51
+ state.velocity = 0;
52
+ state.speed = 0;
53
+ state.mode = isWaiting ? "spring" : "run";
54
+ settled = true;
55
+ }
56
+ else if (state.mode === "cruise") {
57
+ state.center += speed * dt;
58
+ if (state.lap + top - state.center <= springAt) {
59
+ state.mode = "spring";
60
+ state.velocity = speed;
61
+ }
62
+ }
63
+ else if (state.mode === "spring") {
64
+ // Keep the spring target aligned with the top center while the dashboard resizes.
65
+ const target = state.lap + top;
66
+ const steps = Math.max(1, Math.ceil(dt * 240));
67
+ const step = dt / steps;
68
+ for (let i = 0; i < steps; i++) {
69
+ const acceleration = -stiffness * stiffness * (state.center - target) -
70
+ 2 * damping * stiffness * state.velocity;
71
+ state.velocity += acceleration * step;
72
+ state.center += state.velocity * step;
73
+ }
74
+ const easing = 1 - Math.exp(-dt * 3.2);
75
+ state.length += (waitingLength - state.length) * easing;
76
+ state.head += -state.head * easing;
77
+ settled =
78
+ Math.abs(state.center - target) < 0.00001 &&
79
+ Math.abs(state.velocity) < 0.00001 &&
80
+ Math.abs(state.length - waitingLength) < 0.01 &&
81
+ state.head < 0.0001;
82
+ if (settled) {
83
+ state.center = target;
84
+ state.length = waitingLength;
85
+ state.head = 0;
86
+ }
87
+ }
88
+ else {
89
+ state.speed = Math.min(1, state.speed + dt / 0.9);
90
+ state.center += speed * dt * state.speed * state.speed;
91
+ const easing = 1 - Math.exp(-dt * 2.5);
92
+ state.length += (runningLength - state.length) * easing;
93
+ state.head += (1 - state.head) * easing;
94
+ }
95
+ const start = state.center * perimeter - state.length / 2;
96
+ const coreLength = state.length * 0.55;
97
+ const coreStart = start + (state.length - coreLength) * (0.5 + 0.5 * state.head);
98
+ const [bloom, glow, tail, core] = rects;
99
+ segment(tail, start, state.length);
100
+ for (const rect of [bloom, glow, core]) {
101
+ segment(rect, coreStart, coreLength);
102
+ }
103
+ if (!settled) {
104
+ frame = requestAnimationFrame(animate);
105
+ }
106
+ };
107
+ const refresh = () => {
108
+ if (frame !== undefined) {
109
+ cancelAnimationFrame(frame);
110
+ }
111
+ previousTime = undefined;
112
+ animate(performance.now());
113
+ };
114
+ const fit = () => {
115
+ width = Math.max(0, overlay.clientWidth - 2);
116
+ const height = Math.max(0, overlay.clientHeight - 2);
117
+ perimeter = width && height ? 2 * (width + height) : 0;
118
+ for (const rect of rects) {
119
+ rect.setAttribute("width", String(width));
120
+ rect.setAttribute("height", String(height));
121
+ }
122
+ if (!state && perimeter) {
123
+ state = {
124
+ center: isWaiting ? width / 2 / perimeter : 0.62,
125
+ length: isWaiting ? Math.min(120, perimeter * 0.25) : Math.min(600, perimeter * 0.25),
126
+ head: isWaiting ? 0 : 1,
127
+ speed: 1,
128
+ mode: isWaiting ? "spring" : "run",
129
+ lap: 0,
130
+ velocity: 0,
131
+ };
132
+ stateRef.current = state;
133
+ }
134
+ refresh();
135
+ };
136
+ const observer = typeof ResizeObserver === "undefined" ? undefined : new ResizeObserver(fit);
137
+ observer?.observe(overlay);
138
+ window.addEventListener("resize", fit);
139
+ reducedMotion.addEventListener("change", refresh);
140
+ fit();
141
+ return () => {
142
+ if (frame !== undefined) {
143
+ cancelAnimationFrame(frame);
144
+ }
145
+ observer?.disconnect();
146
+ window.removeEventListener("resize", fit);
147
+ reducedMotion.removeEventListener("change", refresh);
148
+ };
149
+ }, [isWaiting]);
150
+ return (_jsx("div", { "data-testid": "gd-dashboard-ai-composing-overlay", className: "gd-dashboard-ai-composing-overlay", ref: overlayRef, "aria-hidden": "true", children: ["bloom", "glow", "tail", "core"].map((layer) => (_jsx("svg", { className: `gd-dashboard-ai-composing-overlay__${layer}`, focusable: "false", children: _jsx("rect", { x: "1", y: "1", width: "0", height: "0" }) }, layer))) }));
151
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardInner.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/components/DashboardInner.tsx"],"names":[],"mappings":"AA0CA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,2CAyHpD"}
1
+ {"version":3,"file":"DashboardInner.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/components/DashboardInner.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,2CAiHpD"}
@@ -1,4 +1,4 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // (C) 2022-2026 GoodData Corporation
3
3
  import { useEffect, useRef } from "react";
4
4
  import cx from "classnames";
@@ -7,7 +7,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide
7
7
  import { useDashboardAutomations } from "../../../model/react/useDashboardAutomations/useDashboardAutomations.js";
8
8
  import { selectAccessibleDashboardsLoaded } from "../../../model/store/accessibleDashboards/accessibleDashboardsSelectors.js";
9
9
  import { selectCatalogIsLoaded } from "../../../model/store/catalog/catalogSelectors.js";
10
- import { selectIsAiLoading, selectLocale, selectSettings, } from "../../../model/store/config/configSelectors.js";
10
+ import { selectLocale, selectSettings } from "../../../model/store/config/configSelectors.js";
11
11
  import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
12
12
  import { selectDashboardDensity } from "../../../model/store/ui/uiSelectors.js";
13
13
  import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX, DASHBOARD_TOASTS_OVERLAY_Z_INDEX, } from "../../constants/zIndex.js";
@@ -24,8 +24,9 @@ import { DashboardHeader } from "../DashboardHeader/DashboardHeader.js";
24
24
  import { DashboardSidebar } from "../DashboardSidebar/DashboardSidebar.js";
25
25
  import { RenderModeAwareDashboardSidebar } from "../DashboardSidebar/RenderModeAwareDashboardSidebar.js";
26
26
  import { useResizableSidebarState } from "../DashboardSidebar/useResizableSidebarState.js";
27
+ import { DashboardInteractionComposing } from "./DashboardInteractionComposing.js";
28
+ import { DashboardInteractionLock } from "./DashboardInteractionLock.js";
27
29
  import { DashboardScreenSizeProvider } from "./DashboardScreenSizeContext.js";
28
- import { DashboardSkeleton } from "./DashboardSkeleton.js";
29
30
  const overlayController = OverlayController.getInstance(DASHBOARD_HEADER_OVERLAYS_Z_INDEX);
30
31
  const toastsOverlayController = OverlayController.getInstance(DASHBOARD_TOASTS_OVERLAY_Z_INDEX);
31
32
  export function DashboardInner(props) {
@@ -35,7 +36,6 @@ export function DashboardInner(props) {
35
36
  const accessibleDashboardsLoaded = useDashboardSelector(selectAccessibleDashboardsLoaded);
36
37
  const density = useDashboardSelector(selectDashboardDensity);
37
38
  const settings = useDashboardSelector(selectSettings);
38
- const isAiLoading = useDashboardSelector(selectIsAiLoading);
39
39
  const enableEnhancedInsightPicker = settings?.enableEnhancedInsightPicker ?? false;
40
40
  const headerRef = useRef(null);
41
41
  const layoutRef = useRef(null);
@@ -75,6 +75,5 @@ export function DashboardInner(props) {
75
75
  "accessible-dashboards-loaded": accessibleDashboardsLoaded,
76
76
  }), children: [_jsx(DragLayerComponent, {}), _jsxs("div", { className: cx("gd-dashboards-root gd-flex-container", {
77
77
  "gd-dashboards-root--floating-toolbar": enableEnhancedInsightPicker,
78
- "sdk-dashboard-generating": isAiLoading,
79
- }), style: dashboardsRootStyle, children: [_jsx(DashboardSidebar, { DefaultSidebar: RenderModeAwareDashboardSidebar, DeleteDropZoneComponent: DeleteDropZone, WrapCreatePanelItemWithDragComponent: WrapCreatePanelItemWithDrag, WrapInsightListItemWithDragComponent: WrapInsightListItemWithDrag }), _jsxs("main", { className: dashboardContentClassNames, ...mainContentNavigationProps, children: [_jsx("div", { className: "gd-dash-header-wrapper gd-dash-header-wrapper-sdk-8-12", ref: headerRef, children: _jsx(OverlayControllerProvider, { overlayController: overlayController, children: _jsx(DashboardHeader, {}) }) }), isAiLoading ? (_jsx("div", { className: "gd-flex-item-stretch dash-section dash-section-kpis", children: _jsx(DashboardScreenSizeProvider, { children: _jsx(DashboardSkeleton, {}) }) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "gd-flex-item-stretch dash-section dash-section-kpis", ref: layoutRef, children: [_jsx(DashboardScreenSizeProvider, { children: _jsx(DashboardContent, { ...props }) }), enableEnhancedInsightPicker ? _jsx(FilterDeleteOverlay, {}) : null] }), _jsx("div", { className: "gd-dash-bottom-position-pixel", ref: bottomRef })] }))] })] }), _jsx(Toolbar, {})] }) })] }) }));
78
+ }), style: dashboardsRootStyle, children: [_jsx(DashboardSidebar, { DefaultSidebar: RenderModeAwareDashboardSidebar, DeleteDropZoneComponent: DeleteDropZone, WrapCreatePanelItemWithDragComponent: WrapCreatePanelItemWithDrag, WrapInsightListItemWithDragComponent: WrapInsightListItemWithDrag }), _jsx("main", { className: dashboardContentClassNames, ...mainContentNavigationProps, children: _jsxs(DashboardInteractionComposing, { children: [_jsx("div", { className: "gd-dash-header-wrapper gd-dash-header-wrapper-sdk-8-12", ref: headerRef, children: _jsx(OverlayControllerProvider, { overlayController: overlayController, children: _jsx(DashboardHeader, {}) }) }), _jsxs(DashboardInteractionLock, { children: [_jsxs("div", { className: "gd-flex-item-stretch dash-section dash-section-kpis", ref: layoutRef, children: [_jsx(DashboardScreenSizeProvider, { children: _jsx(DashboardContent, { ...props }) }), enableEnhancedInsightPicker ? _jsx(FilterDeleteOverlay, {}) : null] }), _jsx("div", { className: "gd-dash-bottom-position-pixel", ref: bottomRef })] })] }) })] }), _jsx(Toolbar, {})] }) })] }) }));
80
79
  }
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from "react";
2
+ interface IDashboardInteractionComposingProps {
3
+ children: ReactNode;
4
+ }
5
+ export declare function DashboardInteractionComposing({ children }: IDashboardInteractionComposingProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=DashboardInteractionComposing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardInteractionComposing.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/components/DashboardInteractionComposing.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAevC,UAAU,mCAAmC;IACzC,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,6BAA6B,CAAC,EAAE,QAAQ,EAAE,EAAE,mCAAmC,2CAiC9F"}
@@ -0,0 +1,18 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cx from "classnames";
3
+ import { FormattedMessage } from "react-intl";
4
+ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
5
+ import { selectAiReasoningTitle, selectIsAiBuilding, selectIsAiGenerating, selectIsAiWaiting, } from "../../../model/store/config/configSelectors.js";
6
+ import { DashboardAiComposingOverlay } from "./DashboardAiComposingOverlay.js";
7
+ export function DashboardInteractionComposing({ children }) {
8
+ const isAiGenerating = useDashboardSelector(selectIsAiGenerating);
9
+ const isAiBuilding = useDashboardSelector(selectIsAiBuilding);
10
+ const isAiWaiting = useDashboardSelector(selectIsAiWaiting);
11
+ const aiReasoningTitle = useDashboardSelector(selectAiReasoningTitle);
12
+ const isAiActive = isAiBuilding || isAiWaiting || isAiGenerating;
13
+ const showReasoningTitle = (isAiGenerating || isAiBuilding) && !!aiReasoningTitle;
14
+ const showStatus = isAiWaiting || showReasoningTitle;
15
+ return (_jsxs(_Fragment, { children: [children, isAiActive ? (_jsx("div", { children: _jsx(DashboardAiComposingOverlay, { isWaiting: isAiWaiting }) })) : null, _jsx("div", { className: cx("gd-dashboard-interaction-composing__status", {
16
+ hidden: !showStatus,
17
+ }), role: showStatus ? "status" : undefined, "aria-hidden": !showStatus, children: isAiWaiting || !showReasoningTitle ? (_jsx(FormattedMessage, { id: "dashboard.ai.composing.waiting" })) : (aiReasoningTitle) })] }));
18
+ }
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from "react";
2
+ interface IDashboardInteractionLockProps {
3
+ className?: string;
4
+ children: ReactNode;
5
+ }
6
+ export declare function DashboardInteractionLock({ className, children }: IDashboardInteractionLockProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=DashboardInteractionLock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardInteractionLock.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/components/DashboardInteractionLock.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA2B,MAAM,OAAO,CAAC;AAOhE,UAAU,8BAA8B;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,8BAA8B,2CAiC/F"}