@gooddata/sdk-ui-dashboard 11.54.0-alpha.4 → 11.54.0-alpha.5

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 (130) hide show
  1. package/NOTICE +92923 -17333
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/_staging/automation/index.d.ts +6 -0
  5. package/esm/_staging/automation/index.d.ts.map +1 -1
  6. package/esm/_staging/automation/index.js +7 -0
  7. package/esm/_staging/layout/coordinates.mock.d.ts +17 -0
  8. package/esm/_staging/layout/coordinates.mock.d.ts.map +1 -0
  9. package/esm/_staging/layout/coordinates.mock.js +103 -0
  10. package/esm/index.d.ts +2 -2
  11. package/esm/index.d.ts.map +1 -1
  12. package/esm/model/DashboardTester.d.ts +150 -0
  13. package/esm/model/DashboardTester.d.ts.map +1 -0
  14. package/esm/model/DashboardTester.js +208 -0
  15. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts.map +1 -1
  16. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +27 -1
  17. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts +9 -0
  18. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts.map +1 -0
  19. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.js +27 -0
  20. package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.d.ts.map +1 -1
  21. package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.js +2 -11
  22. package/esm/model/commands/timezone.d.ts +10 -2
  23. package/esm/model/commands/timezone.d.ts.map +1 -1
  24. package/esm/model/commands/timezone.js +5 -2
  25. package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts +14 -0
  26. package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts.map +1 -0
  27. package/esm/model/fixtures/CatalogAvailability.fixtures.js +57 -0
  28. package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts +56 -0
  29. package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts.map +1 -0
  30. package/esm/model/fixtures/ComplexDashboard.fixtures.js +71 -0
  31. package/esm/model/fixtures/Dashboard.fixtures.d.ts +10 -0
  32. package/esm/model/fixtures/Dashboard.fixtures.d.ts.map +1 -0
  33. package/esm/model/fixtures/Dashboard.fixtures.js +13 -0
  34. package/esm/model/fixtures/Insights.fixtures.d.ts +6 -0
  35. package/esm/model/fixtures/Insights.fixtures.d.ts.map +1 -0
  36. package/esm/model/fixtures/Insights.fixtures.js +11 -0
  37. package/esm/model/fixtures/Layout.fixtures.d.ts +14 -0
  38. package/esm/model/fixtures/Layout.fixtures.d.ts.map +1 -0
  39. package/esm/model/fixtures/Layout.fixtures.js +115 -0
  40. package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts +46 -0
  41. package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts.map +1 -0
  42. package/esm/model/fixtures/SimpleDashboard.fixtures.js +315 -0
  43. package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts +28 -0
  44. package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts.map +1 -0
  45. package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.js +40 -0
  46. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts +6 -0
  47. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts.map +1 -0
  48. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.js +13 -0
  49. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts +7 -0
  50. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts.map +1 -0
  51. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.js +12 -0
  52. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  53. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +25 -13
  54. package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts +8 -0
  55. package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts.map +1 -0
  56. package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.js +8 -0
  57. package/esm/presentation/automations/alerting/state/fixtures.d.ts +13 -0
  58. package/esm/presentation/automations/alerting/state/fixtures.d.ts.map +1 -0
  59. package/esm/presentation/automations/alerting/state/fixtures.js +37 -0
  60. package/esm/presentation/automations/alerting/types.d.ts +42 -2
  61. package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
  62. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
  63. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +24 -5
  64. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts +1 -5
  65. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts.map +1 -1
  66. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +2 -2
  67. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts +0 -4
  68. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
  69. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts +6 -0
  70. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts.map +1 -0
  71. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.js +10 -0
  72. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts +6 -0
  73. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts.map +1 -0
  74. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.js +8 -0
  75. package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts +18 -0
  76. package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts.map +1 -0
  77. package/esm/presentation/automations/scheduledEmail/state/fixtures.js +105 -0
  78. package/esm/presentation/automations/scheduledEmail/types.d.ts +52 -3
  79. package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
  80. package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts +5 -0
  81. package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts.map +1 -0
  82. package/esm/presentation/automations/shared/automationFilters/parameterFixtures.js +22 -0
  83. package/esm/presentation/automations/shared/slots/types.d.ts +67 -1
  84. package/esm/presentation/automations/shared/slots/types.d.ts.map +1 -1
  85. package/esm/presentation/automations/shared/test/fixtures.d.ts +9 -0
  86. package/esm/presentation/automations/shared/test/fixtures.d.ts.map +1 -0
  87. package/esm/presentation/automations/shared/test/fixtures.js +101 -0
  88. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts +17 -0
  89. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts.map +1 -0
  90. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.js +18 -0
  91. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts +12 -0
  92. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts.map +1 -0
  93. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.js +26 -0
  94. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts +20 -0
  95. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts.map +1 -0
  96. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.js +95 -0
  97. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts +14 -0
  98. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts.map +1 -0
  99. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.js +9 -0
  100. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts +9 -0
  101. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts.map +1 -0
  102. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.js +17 -0
  103. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts +6 -0
  104. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts.map +1 -0
  105. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.js +10 -0
  106. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts +9 -0
  107. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts.map +1 -0
  108. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.js +14 -0
  109. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts +8 -0
  110. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts.map +1 -0
  111. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.js +49 -0
  112. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts +7 -0
  113. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts.map +1 -0
  114. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.js +33 -0
  115. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts +62 -0
  116. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts.map +1 -0
  117. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.js +2 -0
  118. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts +11 -0
  119. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts.map +1 -0
  120. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.js +4 -0
  121. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts +8 -0
  122. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts.map +1 -0
  123. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.js +28 -0
  124. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts +26 -0
  125. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts.map +1 -0
  126. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.js +21 -0
  127. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +1 -1
  128. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +1 -1
  129. package/esm/sdk-ui-dashboard.d.ts +172 -5
  130. package/package.json +21 -21
@@ -0,0 +1,105 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { idRef, } from "@gooddata/sdk-model";
3
+ import { AUTOMATIONS_CONTEXT as SHARED_AUTOMATIONS_CONTEXT, CURRENT_USER as SHARED_CURRENT_USER, NEXT_FILTER as SHARED_NEXT_FILTER, SENTINEL_CHANNEL as SHARED_SENTINEL_CHANNEL, SENTINEL_WIDGET as SHARED_SENTINEL_WIDGET, WORKSPACE_PARAMETER as SHARED_WORKSPACE_PARAMETER, } from "../../shared/test/fixtures.js";
4
+ export const AUTOMATIONS_CONTEXT = SHARED_AUTOMATIONS_CONTEXT;
5
+ export const CURRENT_USER = SHARED_CURRENT_USER;
6
+ export const NEXT_FILTER = SHARED_NEXT_FILTER;
7
+ export const SENTINEL_CHANNEL = SHARED_SENTINEL_CHANNEL;
8
+ export const WORKSPACE_PARAMETER = SHARED_WORKSPACE_PARAMETER;
9
+ export const SENTINEL_WIDGET = {
10
+ ...SHARED_SENTINEL_WIDGET,
11
+ insight: idRef("insight-1", "insight"),
12
+ };
13
+ export const SENTINEL_INSIGHT = {
14
+ insight: {
15
+ identifier: "insight-1",
16
+ uri: "/insight-1",
17
+ ref: idRef("insight-1", "insight"),
18
+ title: "Insight",
19
+ visualizationUrl: "local:table",
20
+ buckets: [],
21
+ filters: [],
22
+ sorts: [],
23
+ properties: {},
24
+ },
25
+ };
26
+ export const SCHEDULED_EMAIL_DIALOG_CONTEXT = {
27
+ widget: undefined,
28
+ insight: undefined,
29
+ widgetTitle: undefined,
30
+ dashboardId: "dashboard-1",
31
+ dashboardTitle: "Dashboard",
32
+ dashboardFilters: undefined,
33
+ hiddenFilters: [],
34
+ commonDateFilterId: undefined,
35
+ exportParametersByTab: {},
36
+ exportTemplates: [],
37
+ dateFormat: "MM/dd/yyyy",
38
+ isCrossFiltering: false,
39
+ commonDateFilterMode: "active",
40
+ dateFiltersModeMap: new Map(),
41
+ attributeFiltersModeMap: new Map(),
42
+ createScheduledEmail: () => Promise.reject(new Error("not wired in tests")),
43
+ saveScheduledEmail: () => Promise.reject(new Error("not wired in tests")),
44
+ deleteScheduledEmail: () => Promise.resolve(),
45
+ scheduledExportToEdit: undefined,
46
+ notificationChannels: [SENTINEL_CHANNEL],
47
+ isLoading: false,
48
+ };
49
+ const EDITED_AUTOMATION = {
50
+ type: "automation",
51
+ title: "Draft",
52
+ notificationChannel: SENTINEL_CHANNEL.id,
53
+ recipients: [],
54
+ exportDefinitions: [],
55
+ schedule: { cron: "0 0 * * *", firstRun: "2026-01-01T00:00:00.000Z", timezone: "Europe/Prague" },
56
+ details: { subject: "", message: "" },
57
+ };
58
+ export const DRAFT_FIXTURE = {
59
+ editedAutomation: EDITED_AUTOMATION,
60
+ originalAutomation: EDITED_AUTOMATION,
61
+ startDate: new Date("2026-01-01T00:00:00.000Z"),
62
+ isCronValid: true,
63
+ isTitleValid: true,
64
+ isSubjectValid: false,
65
+ isOnMessageValid: true,
66
+ isTimezoneFeatureEnabled: false,
67
+ canSelectScheduleTimezone: false,
68
+ scheduleTimezoneSelection: { id: undefined, shouldSave: false },
69
+ defaultResolvedTimezone: undefined,
70
+ scheduleTimezoneIsStale: false,
71
+ };
72
+ export const DATA_FIXTURE = {
73
+ defaultUser: { type: "user", id: "user-1", email: "user1@example.com" },
74
+ defaultRecipient: { type: "user", id: "recipient-1", email: "recipient1@example.com" },
75
+ };
76
+ export const makeDashboardExportDefinition = (format, requestPayloadOverrides = {}) => ({
77
+ type: "exportDefinition",
78
+ title: "Dashboard export",
79
+ requestPayload: {
80
+ type: "dashboard",
81
+ fileName: "Dashboard",
82
+ format,
83
+ content: { dashboard: "dashboard-1" },
84
+ ...requestPayloadOverrides,
85
+ },
86
+ });
87
+ export const makeWidgetExportDefinition = (format, requestPayloadOverrides = {}) => ({
88
+ type: "exportDefinition",
89
+ title: "Widget export",
90
+ requestPayload: {
91
+ type: "visualizationObject",
92
+ fileName: "Widget",
93
+ format,
94
+ content: { visualizationObject: "insight-1", widget: "w1", dashboard: "dashboard-1" },
95
+ ...requestPayloadOverrides,
96
+ },
97
+ });
98
+ export const makeAutomation = (overrides = {}) => ({
99
+ type: "automation",
100
+ title: "Test Scheduled Email",
101
+ notificationChannel: "channel-1",
102
+ recipients: [],
103
+ exportDefinitions: [],
104
+ ...overrides,
105
+ });
@@ -3,7 +3,7 @@ import { type FilterContextItem, type IAutomationMetadataObject, type IAutomatio
3
3
  import { type GoodDataSdkError } from "@gooddata/sdk-ui";
4
4
  import { type IAutomationFiltersTab } from "../../../model/store/filtering/types.js";
5
5
  import { type IAutomationParameter } from "../shared/automationFilters/automationParameters.js";
6
- import { type IAutomationDialogFiltersProps, type IAutomationDialogHeaderProps, type ISlotProps } from "../shared/slots/types.js";
6
+ import { type IAutomationDialogDestinationProps, type IAutomationDialogFiltersProps, type IAutomationDialogHeaderProps, type IAutomationDialogRecipientsProps, type ISlotProps } from "../shared/slots/types.js";
7
7
  /**
8
8
  * @alpha
9
9
  */
@@ -273,6 +273,17 @@ export interface IScheduledEmailDialogTimezoneProps {
273
273
  * @alpha
274
274
  */
275
275
  export type ScheduledEmailDialogTimezoneDefaultProps = IScheduledEmailDialogTimezoneProps;
276
+ /**
277
+ * Props of the default scheduled email dialog's recipients region.
278
+ *
279
+ * @alpha
280
+ */
281
+ export interface IScheduledEmailDialogRecipientsProps extends IAutomationDialogRecipientsProps {
282
+ /**
283
+ * Submits the dialog from the recipients input. The default dialog always supplies it.
284
+ */
285
+ onKeyDownSubmit: (e: KeyboardEvent) => void;
286
+ }
276
287
  /**
277
288
  * Section-level overrides of the default scheduled email dialog.
278
289
  *
@@ -308,6 +319,24 @@ export interface IScheduledEmailDialogSlots {
308
319
  * hidden, the slot is not rendered either.
309
320
  */
310
321
  Timezone?: ComponentType<ISlotProps<ScheduledEmailDialogTimezoneDefaultProps>>;
322
+ /**
323
+ * Wraps or replaces the dialog's destination region (the notification-channel select on the
324
+ * General tab). Must have a stable reference identity — see {@link ISlotProps}.
325
+ *
326
+ * Renders only in the fully rendered dialog **and only while the General tab is selected**:
327
+ * not while the dialog context reports loading, and not while the stale-filters confirmation
328
+ * step is shown. It unmounts — losing any local state — on every switch to the Filters tab.
329
+ */
330
+ Destination?: ComponentType<ISlotProps<IAutomationDialogDestinationProps>>;
331
+ /**
332
+ * Wraps or replaces the dialog's recipients region on the General tab. Must have a stable
333
+ * reference identity — see {@link ISlotProps}.
334
+ *
335
+ * Renders only in the fully rendered dialog **and only while the General tab is selected**:
336
+ * not while the dialog context reports loading, and not while the stale-filters confirmation
337
+ * step is shown. It unmounts — losing any local state — on every switch to the Filters tab.
338
+ */
339
+ Recipients?: ComponentType<ISlotProps<IScheduledEmailDialogRecipientsProps>>;
311
340
  }
312
341
  /**
313
342
  * Props of {@link DefaultScheduledEmailDialog}.
@@ -316,8 +345,8 @@ export interface IScheduledEmailDialogSlots {
316
345
  * Extends the shared {@link IScheduledEmailDialogProps} with customization only the default implementation
317
346
  * supports. Slots render only in the fully rendered dialog: not while the dialog context reports
318
347
  * loading, and not while the stale-filters confirmation step is shown. The Filters slot
319
- * additionally renders only while the Filters tab is selected — see
320
- * {@link IScheduledEmailDialogSlots.Filters}.
348
+ * additionally renders only while the Filters tab is selected; the Destination and Recipients
349
+ * slots only while the General tab is — see {@link IScheduledEmailDialogSlots}.
321
350
  *
322
351
  * @alpha
323
352
  */
@@ -325,6 +354,26 @@ export interface IDefaultScheduledEmailDialogProps extends IScheduledEmailDialog
325
354
  /**
326
355
  * Section-level overrides. Each slot receives `{ Default, defaultProps }` and may render its own
327
356
  * content (replace) or `<Default {...defaultProps} />` inside its own markup (wrap).
357
+ *
358
+ * @example
359
+ * The dialog is reached through the `Dashboard` component override; define slot components at
360
+ * module scope (see {@link ISlotProps}):
361
+ * ```tsx
362
+ * function RecipientsWithNote({ Default, defaultProps }: ISlotProps<IScheduledEmailDialogRecipientsProps>) {
363
+ * return (
364
+ * <>
365
+ * <Default {...defaultProps} />
366
+ * <Note>External recipients receive a public link.</Note>
367
+ * </>
368
+ * );
369
+ * }
370
+ *
371
+ * <Dashboard
372
+ * ScheduledEmailDialogComponent={(props) => (
373
+ * <DefaultScheduledEmailDialog {...props} slots={{ Recipients: RecipientsWithNote }} />
374
+ * )}
375
+ * />;
376
+ * ```
328
377
  */
329
378
  slots?: IScheduledEmailDialogSlots;
330
379
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/scheduledEmail/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/scheduledEmail/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type IDashboardParameter, type INumberParameterConstraints, type IParameterMetadataObject, type IStringParameterConstraints } from "@gooddata/sdk-model";
2
+ export declare const workspaceNumberParameter: (id: string, title: string, defaultValue: number, constraints?: INumberParameterConstraints | undefined) => IParameterMetadataObject;
3
+ export declare const workspaceStringParameter: (id: string, title: string, defaultValue: string, constraints?: IStringParameterConstraints | undefined) => IParameterMetadataObject;
4
+ export declare const dashboardParameter: (id: string, overrides?: Partial<IDashboardParameter>) => IDashboardParameter;
5
+ //# sourceMappingURL=parameterFixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameterFixtures.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/automationFilters/parameterFixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEhC,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAEnC,MAAM,qBAAqB,CAAC;AAmB7B,eAAO,MAAM,wBAAwB,sIAMyD,CAAC;AAE/F,eAAO,MAAM,wBAAwB,sIAMyD,CAAC;AAE/F,eAAO,MAAM,kBAAkB,+EAQ7B,CAAC"}
@@ -0,0 +1,22 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { idRef, } from "@gooddata/sdk-model";
3
+ const workspaceParameterWithDefinition = (id, title, definition) => ({
4
+ type: "parameter",
5
+ id,
6
+ title,
7
+ ref: idRef(id, "parameter"),
8
+ uri: id,
9
+ production: true,
10
+ deprecated: false,
11
+ unlisted: false,
12
+ description: "",
13
+ definition,
14
+ });
15
+ export const workspaceNumberParameter = (id, title, defaultValue, constraints) => workspaceParameterWithDefinition(id, title, { type: "NUMBER", defaultValue, constraints });
16
+ export const workspaceStringParameter = (id, title, defaultValue, constraints) => workspaceParameterWithDefinition(id, title, { type: "STRING", defaultValue, constraints });
17
+ export const dashboardParameter = (id, overrides = {}) => ({
18
+ ref: idRef(id, "parameter"),
19
+ mode: "active",
20
+ parameterType: "NUMBER",
21
+ ...overrides,
22
+ });
@@ -1,5 +1,5 @@
1
1
  import { type ComponentType, type ReactNode } from "react";
2
- import { type FilterContextItem, type IdentifierRef, type ParameterValue } from "@gooddata/sdk-model";
2
+ import { type FilterContextItem, type IAutomationRecipient, type INotificationChannelIdentifier, type INotificationChannelMetadataObject, type IdentifierRef, type ParameterValue } from "@gooddata/sdk-model";
3
3
  import { type IAutomationParameter } from "../automationFilters/automationParameters.js";
4
4
  /**
5
5
  * Contract of a section-level slot: the default implementation and the exact props the default
@@ -97,4 +97,70 @@ export interface IAutomationDialogFiltersProps {
97
97
  */
98
98
  onParameterDelete: (ref: IdentifierRef) => void;
99
99
  }
100
+ /**
101
+ * Members shared by both automation dialogs' destination regions.
102
+ *
103
+ * @alpha
104
+ */
105
+ export interface IAutomationDialogDestinationProps {
106
+ /**
107
+ * Notification channels the automation can target.
108
+ */
109
+ notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
110
+ /**
111
+ * Id of the automation's currently selected notification channel.
112
+ */
113
+ selectedNotificationChannelId: string | undefined;
114
+ /**
115
+ * Called with the id of the newly selected notification channel.
116
+ */
117
+ onChange: (notificationChannelId: string) => void;
118
+ }
119
+ /**
120
+ * Members shared by both automation dialogs' recipients regions.
121
+ *
122
+ * @alpha
123
+ */
124
+ export interface IAutomationDialogRecipientsProps {
125
+ /**
126
+ * Currently selected recipients.
127
+ */
128
+ value: IAutomationRecipient[];
129
+ /**
130
+ * Replaces the selection with the complete updated array.
131
+ */
132
+ onChange: (recipients: IAutomationRecipient[]) => void;
133
+ /**
134
+ * The logged-in user as a recipient candidate.
135
+ */
136
+ loggedUser?: IAutomationRecipient;
137
+ /**
138
+ * Restricts the selection to the logged-in user.
139
+ */
140
+ allowOnlyLoggedUserRecipients?: boolean;
141
+ /**
142
+ * Allows removing the last recipient.
143
+ */
144
+ allowEmptySelection?: boolean;
145
+ /**
146
+ * Allows recipients that are not workspace users.
147
+ */
148
+ allowExternalRecipients?: boolean;
149
+ /**
150
+ * Maximum number of recipients.
151
+ */
152
+ maxRecipients?: number;
153
+ /**
154
+ * Notification channels, used to derive channel-specific recipient constraints.
155
+ */
156
+ notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
157
+ /**
158
+ * Id of the automation's currently selected notification channel.
159
+ */
160
+ notificationChannelId?: string;
161
+ /**
162
+ * When set, the only addable recipient is this external address.
163
+ */
164
+ externalRecipientOverride?: string;
165
+ }
100
166
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/slots/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtG,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEzF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM;IAC9B;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,kBAAkB,EAAE,SAAS,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAElD;;OAEG;IACH,eAAe,EAAE,iBAAiB,EAAE,CAAC;IAErC;;;OAGG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAExD;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEpC;;OAEG;IACH,mBAAmB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAE7C;;OAEG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAEvE;;OAEG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/slots/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,aAAa,EAClB,KAAK,cAAc,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEzF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM;IAC9B;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,kBAAkB,EAAE,SAAS,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;OAEG;IACH,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAElD;;OAEG;IACH,eAAe,EAAE,iBAAiB,EAAE,CAAC;IAErC;;;OAGG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAExD;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEpC;;OAEG;IACH,mBAAmB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAE7C;;OAEG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAEvE;;OAEG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD;AAED;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAC9C;;OAEG;IACH,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE9F;;OAEG;IACH,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAElD;;OAEG;IACH,QAAQ,EAAE,CAAC,qBAAqB,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC7C;;OAEG;IACH,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE9B;;OAEG;IACH,QAAQ,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IAEvD;;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,oBAAoB,CAAC,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAE/F;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACtC"}
@@ -0,0 +1,9 @@
1
+ import { type FilterContextItem, type IInsightWidget, type INotificationChannelIdentifier, type IUser } from "@gooddata/sdk-model";
2
+ import { type IAutomationsContextValue } from "../../contexts/AutomationsContext.js";
3
+ export declare const CURRENT_USER: IUser;
4
+ export declare const SENTINEL_CHANNEL: INotificationChannelIdentifier;
5
+ export declare const SENTINEL_WIDGET: IInsightWidget;
6
+ export declare const WORKSPACE_PARAMETER: import("@gooddata/sdk-model").IParameterMetadataObject;
7
+ export declare const NEXT_FILTER: FilterContextItem;
8
+ export declare const AUTOMATIONS_CONTEXT: IAutomationsContextValue;
9
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/test/fixtures.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,8BAA8B,EACnC,KAAK,KAAK,EAEb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAGrF,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,8BAK9B,CAAC;AAKF,eAAO,MAAM,eAAe,EAAE,cAW7B,CAAC;AAIF,eAAO,MAAM,mBAAmB,wDAA4D,CAAC;AAE7F,eAAO,MAAM,WAAW,EAAE,iBAOzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,wBA4DjC,CAAC"}
@@ -0,0 +1,101 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { idRef, } from "@gooddata/sdk-model";
3
+ import { workspaceStringParameter } from "../automationFilters/parameterFixtures.js";
4
+ export const CURRENT_USER = {
5
+ ref: idRef("user-1"),
6
+ login: "user1@example.com",
7
+ email: "user1@example.com",
8
+ };
9
+ export const SENTINEL_CHANNEL = {
10
+ type: "notificationChannel",
11
+ destinationType: "webhook",
12
+ id: "channel-1",
13
+ allowedRecipients: "internal",
14
+ };
15
+ // Only `ref`/`localIdentifier`/`type`/`ignoreDashboardFilters` are read by the code exercised here
16
+ // (widget identity, the insight-widget type guard, and the ignored-filters check); the remaining
17
+ // required IWidget fields are filler values.
18
+ export const SENTINEL_WIDGET = {
19
+ ref: { identifier: "widget-1" },
20
+ uri: "/widget-1",
21
+ identifier: "widget-1",
22
+ localIdentifier: "widget-1",
23
+ type: "insight",
24
+ title: "Widget",
25
+ description: "",
26
+ insight: { identifier: "insight-1" },
27
+ drills: [],
28
+ ignoreDashboardFilters: [],
29
+ };
30
+ // A catalog parameter with a matching workspace definition, so a stored `{ref, value}` override
31
+ // survives reconstruction instead of being dropped as unresolvable.
32
+ export const WORKSPACE_PARAMETER = workspaceStringParameter("param-1", "Param 1", "default");
33
+ export const NEXT_FILTER = {
34
+ attributeFilter: {
35
+ localIdentifier: "f1",
36
+ displayForm: idRef("df1"),
37
+ negativeSelection: false,
38
+ attributeElements: { uris: ["/e1"] },
39
+ },
40
+ };
41
+ export const AUTOMATIONS_CONTEXT = {
42
+ locale: "en-US",
43
+ separators: { decimal: ".", thousand: "," },
44
+ settings: undefined,
45
+ catalogAttributes: [],
46
+ catalogDateDatasets: [],
47
+ catalogMeasures: [],
48
+ dateFilterConfig: {
49
+ availableGranularities: [],
50
+ dateFilterOptions: {},
51
+ getGranularitiesForTab: () => [],
52
+ getOptionsForTab: () => undefined,
53
+ },
54
+ dateFilterContextConfig: undefined,
55
+ attributeFilterConfigs: [],
56
+ attributeFilterConfigsByTab: {},
57
+ attributeFilterSelectionTypeMap: new Map(),
58
+ attributeFilterSelectionTypeMapByTab: {},
59
+ dateFilterConfigs: [],
60
+ dateFilterConfigsByTab: {},
61
+ dateFilterConfigOverridesByTab: {},
62
+ measureValueFilterConfigs: [],
63
+ measureValueFilterConfigsByTab: {},
64
+ commonDateFilterId: undefined,
65
+ lockedFilters: [],
66
+ hiddenFilters: [],
67
+ availableFilters: [],
68
+ automationFiltersByTab: [],
69
+ defaultSelectedFilters: [],
70
+ automationAvailableFilters: [],
71
+ maxAutomationsRecipients: 5,
72
+ isExecutionTimestampMode: false,
73
+ allowHourlyRecurrence: false,
74
+ currentUser: CURRENT_USER,
75
+ weekStart: "Monday",
76
+ timezone: "Europe/Prague",
77
+ isWhiteLabeled: false,
78
+ isSecondaryTitleVisible: false,
79
+ externalRecipient: undefined,
80
+ features: {
81
+ canCreateAutomation: true,
82
+ enableAlertOncePerInterval: false,
83
+ enableAnomalyDetectionAlert: false,
84
+ canUseAiAssistant: false,
85
+ canManageWorkspace: false,
86
+ enableSlideshowExports: false,
87
+ enableAutomationEvaluationMode: false,
88
+ },
89
+ parameters: {
90
+ enabled: true,
91
+ stringParametersEnabled: true,
92
+ catalog: [WORKSPACE_PARAMETER],
93
+ catalogIsLoaded: true,
94
+ dashboardParametersByTab: {},
95
+ },
96
+ tabIds: [],
97
+ widgetLocalIdToTabIdMap: {},
98
+ getCatalogAttributeByRef: () => undefined,
99
+ getAttributeFilterDisplayForm: () => undefined,
100
+ widgetExistsByRef: () => false,
101
+ };
@@ -0,0 +1,17 @@
1
+ import { type IDashboardEditLayout } from "./DashboardEditLayoutTypes.js";
2
+ export interface IDashboardEditLayoutStateProps {
3
+ isDragging?: boolean;
4
+ isResizingColumn?: boolean;
5
+ isResizingRow?: boolean;
6
+ shouldRenderSectionHotspots?: boolean;
7
+ layout: IDashboardEditLayout;
8
+ rowIdsByRowOrder?: any;
9
+ shouldUseRowRenderer?: boolean;
10
+ isEditMode?: boolean;
11
+ }
12
+ export interface IDashboardEditLayoutDispatchProps {
13
+ removeDropZones?: () => void;
14
+ }
15
+ export type IDashboardEditLayoutProps = IDashboardEditLayoutStateProps & IDashboardEditLayoutDispatchProps;
16
+ export declare function RenderDashboardEditLayout({ layout, rowIdsByRowOrder, shouldUseRowRenderer }: IDashboardEditLayoutProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=DashboardEditLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayout.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAG1E,MAAM,WAAW,8BAA8B;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAC9C,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,yBAAyB,GAAG,8BAA8B,GAAG,iCAAiC,CAAC;AAI3G,wBAAgB,yBAAyB,CAAC,EACtC,MAAM,EACN,gBAAgB,EAChB,oBAAoB,EACvB,EAAE,yBAAyB,2CAmC3B"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2007-2026 GoodData Corporation
3
+ import { Fragment } from "react";
4
+ import { objRefToString } from "@gooddata/sdk-model";
5
+ import { DashboardLayout } from "../../DefaultDashboardLayoutRenderer/DashboardLayout.js";
6
+ import { DashboardEditLayoutItemRenderer } from "./DashboardEditLayoutItemRenderer.js";
7
+ import { DashboardEditLayoutRowRenderer } from "./DashboardEditLayoutRowRenderer.js";
8
+ import { DashboardEditLayoutSectionHeaderRenderer } from "./DashboardEditLayoutSectionHeaderRenderer.js";
9
+ import { DashboardEditLayoutSectionRenderer } from "./DashboardEditLayoutSectionRenderer.js";
10
+ import { DashboardEditLayoutWidgetRenderer } from "./DashboardEditLayoutWidgetRenderer.js";
11
+ const screen = "xl"; // Todo: figure out what this was supposed to be?
12
+ export function RenderDashboardEditLayout({ layout, rowIdsByRowOrder, shouldUseRowRenderer, }) {
13
+ return (layout && (
14
+ // @ts-expect-error Unknown
15
+ _jsx(DashboardLayout, { layout: layout, sectionKeyGetter: (p) => rowIdsByRowOrder?.[p.section.index()] ?? p.section.index().toString(), sectionRenderer: (renderProps) => _jsx(DashboardEditLayoutSectionRenderer, { ...renderProps }), sectionHeaderRenderer: (renderProps) => (_jsx(DashboardEditLayoutSectionHeaderRenderer, { ...renderProps })), itemKeyGetter: (p) =>
16
+ // We want to rerender kpi/insight, when we resize the widget (to recalculate rendered visualization size).
17
+ objRefToString(p.item.widget().ref) + p.item.sizeForScreen(p.screen).gridWidth, itemRenderer: (renderProps) => _jsx(DashboardEditLayoutItemRenderer, { ...renderProps }), widgetRenderer: (renderProps) => _jsx(DashboardEditLayoutWidgetRenderer, { ...renderProps }), gridRowRenderer: (renderProps) => shouldUseRowRenderer ? (_jsx(DashboardEditLayoutRowRenderer, { layoutItems: renderProps.items, screen: screen, section: renderProps.section, children: renderProps.children })) : (_jsx(Fragment, { children: renderProps.children })) })));
18
+ }
@@ -0,0 +1,12 @@
1
+ import { type ObjRef } from "@gooddata/sdk-model";
2
+ import { type IDashboardLayoutItemRenderProps } from "../../DefaultDashboardLayoutRenderer/interfaces.js";
3
+ import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js";
4
+ export interface IDashboardEditLayoutItemRendererStateProps {
5
+ hiddenWidgetRef?: ObjRef;
6
+ }
7
+ export type IDashboardEditLayoutItemRendererOwnProps = IDashboardLayoutItemRenderProps<IDashboardEditLayoutContent>;
8
+ export type IDashboardEditLayoutItemRendererProps = IDashboardEditLayoutItemRendererOwnProps & IDashboardEditLayoutItemRendererStateProps;
9
+ export declare function RenderDashboardEditLayoutItemRenderer(props: IDashboardEditLayoutItemRendererProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare const DashboardEditLayoutItemRenderer: typeof RenderDashboardEditLayoutItemRenderer;
11
+ export declare const isHiddenContent: (content: IDashboardEditLayoutContent, hiddenWidgetRef: ObjRef) => boolean;
12
+ //# sourceMappingURL=DashboardEditLayoutItemRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutItemRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAA0B,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAE1G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,MAAM,WAAW,0CAA0C;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,wCAAwC,GAChD,+BAA+B,CAAC,2BAA2B,CAAC,CAAC;AAEjE,MAAM,MAAM,qCAAqC,GAAG,wCAAwC,GACxF,0CAA0C,CAAC;AAE/C,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,qCAAqC,2CAqBjG;AAED,eAAO,MAAM,+BAA+B,8CAAwC,CAAC;AAErF,eAAO,MAAM,eAAe,4EAM3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2007-2026 GoodData Corporation
3
+ import cx from "classnames";
4
+ import { areObjRefsEqual, idRef } from "@gooddata/sdk-model";
5
+ import { DashboardLayoutItemViewRenderer } from "../../DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.js";
6
+ export function RenderDashboardEditLayoutItemRenderer(props) {
7
+ const { children, item, hiddenWidgetRef = idRef("hiddenWidget") } = props;
8
+ const content = item.widget();
9
+ const isLastInSection = item.isLastInSection();
10
+ const isLastSection = item.section().isLast();
11
+ const isLast = isLastSection && isLastInSection;
12
+ const className = cx({
13
+ last: content?.type === "widget" ? isLast : false,
14
+ });
15
+ const isHidden = content && isHiddenContent(content, hiddenWidgetRef);
16
+ return (
17
+ // @ts-expect-error Unknown
18
+ _jsx(DashboardLayoutItemViewRenderer, { isHidden: isHidden, ...props, className: className, children: children }));
19
+ }
20
+ export const DashboardEditLayoutItemRenderer = RenderDashboardEditLayoutItemRenderer;
21
+ export const isHiddenContent = (content, hiddenWidgetRef) => {
22
+ if (content.type === "widgetDropzoneHotspot") {
23
+ return areObjRefsEqual(content.widgetRef, hiddenWidgetRef);
24
+ }
25
+ return areObjRefsEqual(content.ref, hiddenWidgetRef);
26
+ };
@@ -0,0 +1,20 @@
1
+ import { type ObjRef } from "@gooddata/sdk-model";
2
+ import { type VisType } from "@gooddata/sdk-ui";
3
+ import { type IDashboardEditLayout, type IDashboardEditLayoutContent, type IDashboardEditLayoutContentWidget, type IDashboardEditLayoutContentWidgetDropzone, type IDashboardEditLayoutContentWidgetDropzoneHotspot, type IDashboardEditLayoutContentWidgetKpiPlaceholder, type IDashboardEditLayoutContentWidgetNewInsightPlaceholder } from "./DashboardEditLayoutTypes.js";
4
+ import { DropZoneType, WidgetPosition } from "./LayoutTypes.js";
5
+ export type DashboardEditLayoutContentGenerator = (ref: ObjRef, rowId?: string) => IDashboardEditLayoutContent;
6
+ export type DashboardEditLayoutRowMock = {
7
+ title?: string;
8
+ description?: string;
9
+ isDropzone?: boolean;
10
+ contentGeneratorColumnWidthAndHeightAsRatioTuples: ([DashboardEditLayoutContentGenerator, number, number | undefined] | [DashboardEditLayoutContentGenerator, number] | [DashboardEditLayoutContentGenerator])[];
11
+ };
12
+ export declare const widgetMock: () => (ref: ObjRef) => IDashboardEditLayoutContentWidget;
13
+ export declare const widgetDropzoneMock: (visType?: VisType, isInitialDropzone?: boolean, position?: WidgetPosition) => (ref: ObjRef) => IDashboardEditLayoutContentWidgetDropzone;
14
+ export declare const widgetDropzoneHotspotMock: (widgetRef: ObjRef, dropZoneType?: DropZoneType) => (ref: ObjRef) => IDashboardEditLayoutContentWidgetDropzoneHotspot;
15
+ export declare const widgetKpiPlaceholderMock: () => (ref: ObjRef) => IDashboardEditLayoutContentWidgetKpiPlaceholder;
16
+ export declare const widgetNewInsightPlaceholderMock: () => (ref: ObjRef) => IDashboardEditLayoutContentWidgetNewInsightPlaceholder;
17
+ export declare const rowMock: (contentGeneratorColumnWidthAndHeightAsRatioTuples: ([DashboardEditLayoutContentGenerator] | [DashboardEditLayoutContentGenerator, number] | [DashboardEditLayoutContentGenerator, number, number | undefined])[], title?: string | undefined, description?: string | undefined, isDropzone?: boolean | undefined) => DashboardEditLayoutRowMock;
18
+ export declare const getWidgetMockRef: (itemIndex: number, sectionIndex: number) => import("@gooddata/sdk-model").IdentifierRef;
19
+ export declare const layoutMock: (rowMocks: DashboardEditLayoutRowMock[]) => IDashboardEditLayout;
20
+ //# sourceMappingURL=DashboardEditLayoutMocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutMocks.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAS,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,yCAAyC,EAC9C,KAAK,gDAAgD,EACrD,KAAK,+CAA+C,EACpD,KAAK,sDAAsD,EAE9D,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,mCAAmC,GAAG,CAC9C,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,KACb,2BAA2B,CAAC;AACjC,MAAM,MAAM,0BAA0B,GAAG;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD,EAAE,CAC7C,CAAC,mCAAmC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACjE,CAAC,mCAAmC,EAAE,MAAM,CAAC,GAC7C,CAAC,mCAAmC,CAAC,CAC1C,EAAE,CAAC;CACP,CAAC;AAEF,eAAO,MAAM,UAAU,0DAOlB,CAAC;AAEN,eAAO,MAAM,kBAAkB,2IAgB1B,CAAC;AAEN,eAAO,MAAM,yBAAyB,uHASjC,CAAC;AAEN,eAAO,MAAM,wBAAwB,wEAOhC,CAAC;AAEN,eAAO,MAAM,+BAA+B,+EAOvC,CAAC;AAEN,eAAO,MAAM,OAAO,kVAgBnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,0FACuB,CAAC;AAErD,eAAO,MAAM,UAAU,kEAkDtB,CAAC"}