@gooddata/sdk-ui-dashboard 11.54.0-alpha.3 → 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 (142) 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/dashboard/flexibleLayout/builder/utils.d.ts +45 -0
  8. package/esm/_staging/dashboard/flexibleLayout/builder/utils.d.ts.map +1 -0
  9. package/esm/_staging/dashboard/flexibleLayout/builder/utils.js +54 -0
  10. package/esm/_staging/dateFilterConfig/fixtures.d.ts +10 -0
  11. package/esm/_staging/dateFilterConfig/fixtures.d.ts.map +1 -0
  12. package/esm/_staging/dateFilterConfig/fixtures.js +60 -0
  13. package/esm/_staging/layout/coordinates.mock.d.ts +17 -0
  14. package/esm/_staging/layout/coordinates.mock.d.ts.map +1 -0
  15. package/esm/_staging/layout/coordinates.mock.js +103 -0
  16. package/esm/index.d.ts +2 -2
  17. package/esm/index.d.ts.map +1 -1
  18. package/esm/model/DashboardTester.d.ts +150 -0
  19. package/esm/model/DashboardTester.d.ts.map +1 -0
  20. package/esm/model/DashboardTester.js +208 -0
  21. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts.map +1 -1
  22. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +27 -1
  23. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts +9 -0
  24. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts.map +1 -0
  25. package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.js +27 -0
  26. package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.d.ts.map +1 -1
  27. package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.js +2 -11
  28. package/esm/model/commands/timezone.d.ts +10 -2
  29. package/esm/model/commands/timezone.d.ts.map +1 -1
  30. package/esm/model/commands/timezone.js +5 -2
  31. package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts +14 -0
  32. package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts.map +1 -0
  33. package/esm/model/fixtures/CatalogAvailability.fixtures.js +57 -0
  34. package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts +56 -0
  35. package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts.map +1 -0
  36. package/esm/model/fixtures/ComplexDashboard.fixtures.js +71 -0
  37. package/esm/model/fixtures/Dashboard.fixtures.d.ts +10 -0
  38. package/esm/model/fixtures/Dashboard.fixtures.d.ts.map +1 -0
  39. package/esm/model/fixtures/Dashboard.fixtures.js +13 -0
  40. package/esm/model/fixtures/Insights.fixtures.d.ts +6 -0
  41. package/esm/model/fixtures/Insights.fixtures.d.ts.map +1 -0
  42. package/esm/model/fixtures/Insights.fixtures.js +11 -0
  43. package/esm/model/fixtures/Layout.fixtures.d.ts +14 -0
  44. package/esm/model/fixtures/Layout.fixtures.d.ts.map +1 -0
  45. package/esm/model/fixtures/Layout.fixtures.js +115 -0
  46. package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts +46 -0
  47. package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts.map +1 -0
  48. package/esm/model/fixtures/SimpleDashboard.fixtures.js +315 -0
  49. package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts +28 -0
  50. package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts.map +1 -0
  51. package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.js +40 -0
  52. package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.d.ts +16 -0
  53. package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.d.ts.map +1 -0
  54. package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.js +30 -0
  55. package/esm/plugins/customizationApis/utils.d.ts +3 -0
  56. package/esm/plugins/customizationApis/utils.d.ts.map +1 -0
  57. package/esm/plugins/customizationApis/utils.js +17 -0
  58. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts +6 -0
  59. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts.map +1 -0
  60. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.js +13 -0
  61. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts +7 -0
  62. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts.map +1 -0
  63. package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.js +12 -0
  64. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  65. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +25 -13
  66. package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts +8 -0
  67. package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts.map +1 -0
  68. package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.js +8 -0
  69. package/esm/presentation/automations/alerting/state/fixtures.d.ts +13 -0
  70. package/esm/presentation/automations/alerting/state/fixtures.d.ts.map +1 -0
  71. package/esm/presentation/automations/alerting/state/fixtures.js +37 -0
  72. package/esm/presentation/automations/alerting/types.d.ts +42 -2
  73. package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
  74. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
  75. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +24 -5
  76. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts +1 -5
  77. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts.map +1 -1
  78. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +2 -2
  79. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts +0 -4
  80. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
  81. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts +6 -0
  82. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts.map +1 -0
  83. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.js +10 -0
  84. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts +6 -0
  85. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts.map +1 -0
  86. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.js +8 -0
  87. package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts +18 -0
  88. package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts.map +1 -0
  89. package/esm/presentation/automations/scheduledEmail/state/fixtures.js +105 -0
  90. package/esm/presentation/automations/scheduledEmail/types.d.ts +52 -3
  91. package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
  92. package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts +5 -0
  93. package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts.map +1 -0
  94. package/esm/presentation/automations/shared/automationFilters/parameterFixtures.js +22 -0
  95. package/esm/presentation/automations/shared/slots/types.d.ts +67 -1
  96. package/esm/presentation/automations/shared/slots/types.d.ts.map +1 -1
  97. package/esm/presentation/automations/shared/test/fixtures.d.ts +9 -0
  98. package/esm/presentation/automations/shared/test/fixtures.d.ts.map +1 -0
  99. package/esm/presentation/automations/shared/test/fixtures.js +101 -0
  100. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts +17 -0
  101. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts.map +1 -0
  102. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.js +18 -0
  103. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts +12 -0
  104. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts.map +1 -0
  105. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.js +26 -0
  106. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts +20 -0
  107. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts.map +1 -0
  108. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.js +95 -0
  109. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts +14 -0
  110. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts.map +1 -0
  111. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.js +9 -0
  112. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts +9 -0
  113. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts.map +1 -0
  114. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.js +17 -0
  115. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts +6 -0
  116. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts.map +1 -0
  117. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.js +10 -0
  118. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts +9 -0
  119. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts.map +1 -0
  120. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.js +14 -0
  121. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts +8 -0
  122. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts.map +1 -0
  123. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.js +49 -0
  124. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts +7 -0
  125. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts.map +1 -0
  126. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.js +33 -0
  127. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts +62 -0
  128. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts.map +1 -0
  129. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.js +2 -0
  130. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts +11 -0
  131. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts.map +1 -0
  132. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.js +4 -0
  133. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts +8 -0
  134. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts.map +1 -0
  135. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.js +28 -0
  136. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts +26 -0
  137. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts.map +1 -0
  138. package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.js +21 -0
  139. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +1 -1
  140. package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +1 -1
  141. package/esm/sdk-ui-dashboard.d.ts +172 -5
  142. package/package.json +21 -21
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { DashboardLayoutItemViewRenderer } from "../../DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.js";
3
+ import { DashboardEditLayoutSectionHeader } from "./DashboardEditLayoutSectionHeader.js";
4
+ const emptyItemFacadeWithFullSize = {
5
+ ref: () => undefined,
6
+ index: () => [{ sectionIndex: 0, itemIndex: 0 }],
7
+ raw: () => null,
8
+ widget: () => null,
9
+ section: () => undefined,
10
+ size: () => ({ xl: { gridWidth: 12 } }),
11
+ sizeForScreen: () => ({ gridWidth: 12 }),
12
+ isLastInSection: () => true,
13
+ isLastInRow: (_screen) => true,
14
+ widgetEquals: () => false,
15
+ widgetIs: () => false,
16
+ isEmpty: () => false,
17
+ hasSizeForScreen: () => false,
18
+ indexIs: () => false,
19
+ isFirstInSection: () => true,
20
+ test: () => false,
21
+ testRaw: () => false,
22
+ isCustomItem: () => false,
23
+ isInsightWidgetDefinitionItem: () => false,
24
+ isInsightWidgetItem: () => false,
25
+ isKpiWidgetDefinitionItem: () => false,
26
+ isKpiWidgetItem: () => false,
27
+ isLayoutItem: () => false,
28
+ isWidgetDefinitionItem: () => false,
29
+ isWidgetItem: () => false,
30
+ isWidgetItemWithInsightRef: () => false,
31
+ isWidgetItemWithKpiRef: () => false,
32
+ isWidgetItemWithRef: () => false,
33
+ sizeForScreenWithFallback: (_screen) => undefined,
34
+ };
35
+ export function RenderDashboardEditLayoutSectionHeaderRenderer(props) {
36
+ const { section, DefaultSectionHeaderRenderer } = props;
37
+ const rowId = "rowId";
38
+ const hasJustOneDropZone = false;
39
+ const isDashboardEditing = true; // TODO state?
40
+ const header = section.header();
41
+ if (hasJustOneDropZone) {
42
+ return null;
43
+ }
44
+ if (isDashboardEditing) {
45
+ return (_jsx(DashboardLayoutItemViewRenderer, { DefaultItemRenderer: DashboardLayoutItemViewRenderer, item: emptyItemFacadeWithFullSize, rowIndex: 0, children: _jsx(DashboardEditLayoutSectionHeader, { title: header?.title || "", description: header?.description || "", rowId: rowId }) }));
46
+ }
47
+ return _jsx(DefaultSectionHeaderRenderer, { ...props });
48
+ }
49
+ export const DashboardEditLayoutSectionHeaderRenderer = RenderDashboardEditLayoutSectionHeaderRenderer;
@@ -0,0 +1,7 @@
1
+ import { type IDashboardLayoutSectionRenderProps } from "../../DefaultDashboardLayoutRenderer/interfaces.js";
2
+ import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js";
3
+ export type IDashboardEditLayoutSectionRendererOwnProps = IDashboardLayoutSectionRenderProps<IDashboardEditLayoutContent>;
4
+ export type IDashboardEditLayoutSectionRendererProps = IDashboardEditLayoutSectionRendererOwnProps;
5
+ export declare function RenderDashboardEditLayoutSectionRenderer(props: IDashboardEditLayoutSectionRendererProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare const DashboardEditLayoutSectionRenderer: typeof RenderDashboardEditLayoutSectionRenderer;
7
+ //# sourceMappingURL=DashboardEditLayoutSectionRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutSectionRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kCAAkC,EAAE,MAAM,oDAAoD,CAAC;AAG7G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,MAAM,MAAM,2CAA2C,GACnD,kCAAkC,CAAC,2BAA2B,CAAC,CAAC;AAEpE,MAAM,MAAM,wCAAwC,GAAG,2CAA2C,CAAC;AACnG,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,wCAAwC,2CA6CvG;AAED,eAAO,MAAM,kCAAkC,iDAA2C,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2007-2026 GoodData Corporation
3
+ import { useCallback, useState } from "react";
4
+ import cx from "classnames";
5
+ import { DashboardEditLayoutSectionBorder } from "./DashboardEditLayoutSectionBorder.js";
6
+ export function RenderDashboardEditLayoutSectionRenderer(props) {
7
+ const { DefaultSectionRenderer, section, children } = props;
8
+ const { isDragging, isRowDropzoneVisible, activeHeaderRowId, rowId } = {
9
+ isDragging: false,
10
+ activeHeaderRowId: "active row id",
11
+ isRowDropzoneVisible: false,
12
+ rowId: "row id",
13
+ };
14
+ const [isActive, setIsActive] = useState(false);
15
+ const markRowAsActive = useCallback(() => setIsActive(true), [setIsActive]);
16
+ const markRowAsInactive = useCallback(() => setIsActive(false), [setIsActive]);
17
+ const isActivatedByHeader = rowId === activeHeaderRowId;
18
+ const isRowActive = (isActive || isActivatedByHeader) && isRowDropzoneVisible;
19
+ const className = cx({
20
+ active: isRowActive,
21
+ });
22
+ let rowBorderStatus = isRowActive ? "active" : "muted";
23
+ if (!isDragging && !isActivatedByHeader) {
24
+ rowBorderStatus = "invisible";
25
+ }
26
+ const isHiddenSection = section.items().all().length === 0; //hide empty sections
27
+ return (_jsx(DefaultSectionRenderer, { ...props, isHidden: isHiddenSection, className: className, ...(isDragging && {
28
+ onMouseEnter: markRowAsActive,
29
+ onMouseLeave: markRowAsInactive,
30
+ onMouseOver: markRowAsActive,
31
+ }), children: _jsx(DashboardEditLayoutSectionBorder, { status: rowBorderStatus, children: children }) }));
32
+ }
33
+ export const DashboardEditLayoutSectionRenderer = RenderDashboardEditLayoutSectionRenderer;
@@ -0,0 +1,62 @@
1
+ import { type IDashboardLayout, type IDashboardLayoutItem, type IDashboardLayoutSection, type ObjRef } from "@gooddata/sdk-model";
2
+ import { type DropZoneType, type IDragZoneWidget } from "./LayoutTypes.js";
3
+ export type DashboardEditLayoutContentType = "widget" | "widgetDropzone" | "widgetDropzoneHotspot" | "widgetKpiPlaceholder" | "widgetNewInsightPlaceholder";
4
+ export interface IDashboardEditLayoutContentBase {
5
+ /**
6
+ * Dashboard edit layout content type - widget or drag and drop widget.
7
+ */
8
+ type: DashboardEditLayoutContentType;
9
+ /**
10
+ * Persisted widget identifier/uri, or widget temporary identifier
11
+ * for widgets added in edit mode (or custom drag and drop widgets).
12
+ */
13
+ ref: ObjRef;
14
+ }
15
+ export interface IDashboardEditLayoutContentWidget extends IDashboardEditLayoutContentBase {
16
+ /**
17
+ * Type
18
+ */
19
+ type: "widget";
20
+ }
21
+ export interface IDashboardEditLayoutContentWidgetDropzone extends IDashboardEditLayoutContentBase {
22
+ /**
23
+ * Type
24
+ */
25
+ type: "widgetDropzone";
26
+ /**
27
+ * Drag and drop widget details
28
+ */
29
+ dragZoneWidget: IDragZoneWidget;
30
+ }
31
+ export interface IDashboardEditLayoutContentWidgetDropzoneHotspot extends IDashboardEditLayoutContentBase {
32
+ /**
33
+ * Type
34
+ */
35
+ type: "widgetDropzoneHotspot";
36
+ /**
37
+ * Persisted widget identifier/uri, or widget temporary identifier
38
+ * for widgets added in edit mode.
39
+ */
40
+ widgetRef: ObjRef;
41
+ /**
42
+ * Drop zone position (prev / next)
43
+ */
44
+ dropZoneType: DropZoneType;
45
+ }
46
+ export interface IDashboardEditLayoutContentWidgetKpiPlaceholder extends IDashboardEditLayoutContentBase {
47
+ /**
48
+ * Type
49
+ */
50
+ type: "widgetKpiPlaceholder";
51
+ }
52
+ export interface IDashboardEditLayoutContentWidgetNewInsightPlaceholder extends IDashboardEditLayoutContentBase {
53
+ /**
54
+ * Type
55
+ */
56
+ type: "widgetNewInsightPlaceholder";
57
+ }
58
+ export type IDashboardEditLayoutContent = IDashboardEditLayoutContentWidget | IDashboardEditLayoutContentWidgetDropzone | IDashboardEditLayoutContentWidgetDropzoneHotspot | IDashboardEditLayoutContentWidgetKpiPlaceholder | IDashboardEditLayoutContentWidgetNewInsightPlaceholder;
59
+ export type IDashboardEditLayoutItem = IDashboardLayoutItem<IDashboardEditLayoutContent>;
60
+ export type IDashboardEditLayoutSection = IDashboardLayoutSection<IDashboardEditLayoutContent>;
61
+ export type IDashboardEditLayout = IDashboardLayout<IDashboardEditLayoutContent>;
62
+ //# sourceMappingURL=DashboardEditLayoutTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutTypes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,MAAM,8BAA8B,GACpC,QAAQ,GACR,gBAAgB,GAChB,uBAAuB,GACvB,sBAAsB,GACtB,6BAA6B,CAAC;AAEpC,MAAM,WAAW,+BAA+B;IAC5C;;OAEG;IACH,IAAI,EAAE,8BAA8B,CAAC;IAErC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iCAAkC,SAAQ,+BAA+B;IACtF;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,yCAA0C,SAAQ,+BAA+B;IAC9F;;OAEG;IACH,IAAI,EAAE,gBAAgB,CAAC;IAEvB;;OAEG;IACH,cAAc,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,gDAAiD,SAAQ,+BAA+B;IACrG;;OAEG;IACH,IAAI,EAAE,uBAAuB,CAAC;IAE9B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,+CAAgD,SAAQ,+BAA+B;IACpG;;OAEG;IACH,IAAI,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,sDAAuD,SAAQ,+BAA+B;IAC3G;;OAEG;IACH,IAAI,EAAE,6BAA6B,CAAC;CACvC;AAED,MAAM,MAAM,2BAA2B,GACjC,iCAAiC,GACjC,yCAAyC,GACzC,gDAAgD,GAChD,+CAA+C,GAC/C,sDAAsD,CAAC;AAE7D,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;AAEzF,MAAM,MAAM,2BAA2B,GAAG,uBAAuB,CAAC,2BAA2B,CAAC,CAAC;AAE/F,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ // (C) 2019-2026 GoodData Corporation
2
+ export {};
@@ -0,0 +1,11 @@
1
+ import { type RefObject } from "react";
2
+ import { type ScreenSize } from "@gooddata/sdk-model";
3
+ import { type IDashboardLayoutItemFacade } from "../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js";
4
+ import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js";
5
+ export interface IDashboardEditLayoutWidgetProps {
6
+ item: IDashboardLayoutItemFacade<IDashboardEditLayoutContent>;
7
+ screen: ScreenSize;
8
+ contentRef?: RefObject<HTMLDivElement | null>;
9
+ }
10
+ export declare function DashboardEditLayoutWidget(_props: IDashboardEditLayoutWidgetProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=DashboardEditLayoutWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutWidget.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAErH,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,MAAM,WAAW,+BAA+B;IAC5C,IAAI,EAAE,0BAA0B,CAAC,2BAA2B,CAAC,CAAC;IAC9D,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,+BAA+B,2CAEhF"}
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function DashboardEditLayoutWidget(_props) {
3
+ return _jsx("div", { children: "Widget content MOCK" });
4
+ }
@@ -0,0 +1,8 @@
1
+ import { type IDashboardLayoutWidgetRenderProps } from "../../DefaultDashboardLayoutRenderer/interfaces.js";
2
+ import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js";
3
+ type IDashboardEditLayoutWidgetRendererOwnProps = IDashboardLayoutWidgetRenderProps<IDashboardEditLayoutContent>;
4
+ export type IDashboardEditLayoutWidgetRendererProps = IDashboardEditLayoutWidgetRendererOwnProps;
5
+ export declare function RenderDashboardEditLayoutWidgetRenderer(props: IDashboardEditLayoutWidgetRendererProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare const DashboardEditLayoutWidgetRenderer: typeof RenderDashboardEditLayoutWidgetRenderer;
7
+ export {};
8
+ //# sourceMappingURL=DashboardEditLayoutWidgetRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,oDAAoD,CAAC;AAG5G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAGjF,KAAK,0CAA0C,GAC3C,iCAAiC,CAAC,2BAA2B,CAAC,CAAC;AAEnE,MAAM,MAAM,uCAAuC,GAAG,0CAA0C,CAAC;AAIjG,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,uCAAuC,2CAmCrG;AAED,eAAO,MAAM,iCAAiC,gDAA0C,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2007-2026 GoodData Corporation
3
+ import { useRef } from "react";
4
+ import cx from "classnames";
5
+ import { getDashboardLayoutItemHeightForRatioAndScreen } from "../../DefaultDashboardLayoutRenderer/utils/sizing.js";
6
+ import { DashboardEditLayoutWidget } from "./DashboardEditLayoutWidget.js";
7
+ const screen = "xl"; // Todo: figure out what this was supposed to be?
8
+ export function RenderDashboardEditLayoutWidgetRenderer(props) {
9
+ const contentRef = useRef(null);
10
+ const { item, DefaultWidgetRenderer } = props;
11
+ const widget = item.widget();
12
+ const currentSize = item.sizeForScreen(screen);
13
+ const { heightAsRatio = 100, gridHeight = 12 } = currentSize;
14
+ const isLastSection = item.section().isLast();
15
+ const isLast = isLastSection && item.isLastInSection();
16
+ const classNames = cx({
17
+ last: widget?.type === "widget" ? isLast : false,
18
+ });
19
+ let height;
20
+ if (heightAsRatio) {
21
+ height = getDashboardLayoutItemHeightForRatioAndScreen(currentSize, screen);
22
+ }
23
+ else if (gridHeight) {
24
+ height = undefined;
25
+ }
26
+ return (_jsx(DefaultWidgetRenderer, { ...props, height: height, minHeight: 20, allowOverflow: !!heightAsRatio, className: classNames, contentRef: contentRef, children: _jsx(DashboardEditLayoutWidget, { contentRef: contentRef, item: item, screen: screen }) }));
27
+ }
28
+ export const DashboardEditLayoutWidgetRenderer = RenderDashboardEditLayoutWidgetRenderer;
@@ -0,0 +1,26 @@
1
+ import { type AnalyticalWidgetType, type IInsight, type IKpi, type ObjRef } from "@gooddata/sdk-model";
2
+ export type SdkCompliantWidgetContent = IKpi | IInsight;
3
+ export declare enum WidgetCategory {
4
+ kpi = "kpi",
5
+ insight = "insight",
6
+ visualization = "visualization",
7
+ widget = "widget"
8
+ }
9
+ export declare enum DropZoneType {
10
+ prev = "prev",
11
+ next = "next"
12
+ }
13
+ export declare enum WidgetPosition {
14
+ prev = "prev",
15
+ next = "next"
16
+ }
17
+ export interface IDragZoneWidget {
18
+ dropzone: {
19
+ widgetType: AnalyticalWidgetType;
20
+ content?: SdkCompliantWidgetContent;
21
+ ref?: ObjRef;
22
+ position?: WidgetPosition;
23
+ isInitialDropzone?: boolean;
24
+ };
25
+ }
26
+ //# sourceMappingURL=LayoutTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayoutTypes.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEvG,MAAM,MAAM,yBAAyB,GAAG,IAAI,GAAG,QAAQ,CAAC;AAExD,oBAAY,cAAc;IACtB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,MAAM,WAAW;CACpB;AAED,oBAAY,YAAY;IACpB,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED,oBAAY,cAAc;IACtB,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE;QACN,UAAU,EAAE,oBAAoB,CAAC;QACjC,OAAO,CAAC,EAAE,yBAAyB,CAAC;QACpC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;CACL"}
@@ -0,0 +1,21 @@
1
+ // (C) 2007-2026 GoodData Corporation
2
+ export { WidgetCategory };
3
+ var WidgetCategory;
4
+ (function (WidgetCategory) {
5
+ WidgetCategory["kpi"] = "kpi";
6
+ WidgetCategory["insight"] = "insight";
7
+ WidgetCategory["visualization"] = "visualization";
8
+ WidgetCategory["widget"] = "widget";
9
+ })(WidgetCategory || (WidgetCategory = {}));
10
+ export { DropZoneType };
11
+ var DropZoneType;
12
+ (function (DropZoneType) {
13
+ DropZoneType["prev"] = "prev";
14
+ DropZoneType["next"] = "next";
15
+ })(DropZoneType || (DropZoneType = {}));
16
+ export { WidgetPosition };
17
+ var WidgetPosition;
18
+ (function (WidgetPosition) {
19
+ WidgetPosition["prev"] = "prev";
20
+ WidgetPosition["next"] = "next";
21
+ })(WidgetPosition || (WidgetPosition = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"EditAlert.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,WAAW,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAMH,KAAK,mBAAmB,EAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAgBrG,OAAO,EACH,KAAK,iBAAiB,EAWzB,MAAM,yEAAyE,CAAC;AAMjF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAwBlG,UAAU,eAAe;IACrB,UAAU,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,yBAAyB,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IACtF,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,qBAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,wBAAwB,EAC3B,EAAE,eAAe,2CAuXjB"}
1
+ {"version":3,"file":"EditAlert.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACxC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,WAAW,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAMH,KAAK,mBAAmB,EAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAgBrG,OAAO,EACH,KAAK,iBAAiB,EAWzB,MAAM,yEAAyE,CAAC;AAMjF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAwBlG,UAAU,eAAe;IACrB,UAAU,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,yBAAyB,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IACtF,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,qBAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,wBAAwB,EAC3B,EAAE,eAAe,2CAsXjB"}
@@ -120,7 +120,7 @@ export function EditAlert({ alert, execResult, isNewAlert, hasAlerts, destinatio
120
120
  ] })
121
121
  ] })), destinations.length > 1 && (_jsxs("div", { style: { marginTop: "1rem" }, children: [
122
122
  _jsx("label", { htmlFor: "alert.destination", className: "gd-edit-alert__destination-label", children: _jsx(FormattedMessage, { id: "insightAlert.config.action" }) }), _jsx(AlertDestinationSelect, { id: "alert.destination", selectedDestination: updatedAlert.notificationChannel, onDestinationChange: changeDestination, destinations: destinations, overlayPositionType: overlayPositionType })
123
- ] })), _jsx(RecipientsSelect, { id: "alert.recipients", loggedUser: defaultUser, value: updatedAlert.recipients ?? [], originalValue: alert.recipients || [], onChange: changeRecipients, allowEmptySelection: true, allowOnlyLoggedUserRecipients: allowOnlyLoggedUserRecipients, allowExternalRecipients: allowExternalRecipients, maxRecipients: maxAutomationsRecipients, className: "gd-edit-alert__recipients", notificationChannels: destinations, notificationChannelId: updatedAlert.notificationChannel }), _jsx("label", { htmlFor: "alert.title", className: "gd-edit-alert__title-label", children: _jsx(FormattedMessage, { id: "insightAlert.config.name" }) }), _jsx(AlertTitle, { id: "alert.title", measures: measures, alert: updatedAlert, separators: separators, onChange: (e) => {
123
+ ] })), _jsx(RecipientsSelect, { id: "alert.recipients", loggedUser: defaultUser, value: updatedAlert.recipients ?? [], onChange: changeRecipients, allowEmptySelection: true, allowOnlyLoggedUserRecipients: allowOnlyLoggedUserRecipients, allowExternalRecipients: allowExternalRecipients, maxRecipients: maxAutomationsRecipients, className: "gd-edit-alert__recipients", notificationChannels: destinations, notificationChannelId: updatedAlert.notificationChannel }), _jsx("label", { htmlFor: "alert.title", className: "gd-edit-alert__title-label", children: _jsx(FormattedMessage, { id: "insightAlert.config.name" }) }), _jsx(AlertTitle, { id: "alert.title", measures: measures, alert: updatedAlert, separators: separators, onChange: (e) => {
124
124
  changeTitle(e === "" ? undefined : String(e));
125
125
  } })
126
126
  ] }), warningMessage ? _jsx(Message, { type: "warning", children: warningMessage }) : null, isValid ? null : (_jsx(Message, { type: "error", children: _jsx(FormattedMessage, { id: invalidMessagesObj[invalidityReason].id }) }))] }), _jsxs("div", { className: "gd-edit-alert__buttons", children: [
@@ -63,6 +63,7 @@ import { IAttributeOrMeasure } from '@gooddata/sdk-model';
63
63
  import { IAttributeWithReferences } from '@gooddata/sdk-backend-spi';
64
64
  import { IAutomationMetadataObject } from '@gooddata/sdk-model';
65
65
  import { IAutomationMetadataObjectDefinition } from '@gooddata/sdk-model';
66
+ import { IAutomationRecipient } from '@gooddata/sdk-model';
66
67
  import { IAvailableDrillTargets } from '@gooddata/sdk-ui';
67
68
  import { IBackendCapabilities } from '@gooddata/sdk-backend-spi';
68
69
  import { IBaseWidget } from '@gooddata/sdk-model';
@@ -1000,16 +1001,18 @@ export declare function changeDashboardDensity(density: DashboardDensity, correl
1000
1001
  *
1001
1002
  * The command is rejected when the ad-hoc override is not allowed: the dashboard timezone
1002
1003
  * feature is disabled or the dashboard's timezone configuration does not allow user overrides
1003
- * in view mode.
1004
+ * in view mode — the latter bypassable via `bypassUserOverrideCheck`.
1004
1005
  *
1005
1006
  * @param timezoneId - concrete IANA timezone id, the BROWSER_DETECTED sentinel (resolved to the
1006
1007
  * viewer's browser timezone by the handler), or undefined to clear the override
1007
1008
  * @param correlationId - specify correlation id to use for this command. this will be included in all
1008
1009
  * events that will be emitted during the command processing
1010
+ * @param bypassUserOverrideCheck - see
1011
+ * {@link IChangeDashboardTimezoneOverridePayload.bypassUserOverrideCheck}
1009
1012
  *
1010
1013
  * @alpha
1011
1014
  */
1012
- export declare function changeDashboardTimezoneOverride(timezoneId: string | undefined, correlationId?: string): IChangeDashboardTimezoneOverride;
1015
+ export declare function changeDashboardTimezoneOverride(timezoneId: string | undefined, correlationId?: string, bypassUserOverrideCheck?: boolean): IChangeDashboardTimezoneOverride;
1013
1016
 
1014
1017
  /**
1015
1018
  * Command for date filter selection change.
@@ -5993,6 +5996,24 @@ export declare interface IAlertingDialogSlots {
5993
5996
  * updated array, not a delta.
5994
5997
  */
5995
5998
  Filters?: ComponentType<ISlotProps<IAlertingDialogFiltersProps>>;
5999
+ /**
6000
+ * Wraps or replaces the dialog's destination region (the "Action" row selecting the
6001
+ * notification channel). Must have a stable reference identity — see {@link ISlotProps}.
6002
+ *
6003
+ * Renders only in the fully rendered dialog — not while the dialog context reports loading,
6004
+ * not while the stale-filters confirmation step is shown — **and only when more than one
6005
+ * notification channel exists**: with a single channel the default dialog hides the whole
6006
+ * row, and the slot with it.
6007
+ */
6008
+ Destination?: ComponentType<ISlotProps<IAutomationDialogDestinationProps>>;
6009
+ /**
6010
+ * Wraps or replaces the dialog's recipients region. Must have a stable reference identity —
6011
+ * see {@link ISlotProps}.
6012
+ *
6013
+ * Renders only in the fully rendered dialog: not while the dialog context reports loading,
6014
+ * and not while the stale-filters confirmation step is shown.
6015
+ */
6016
+ Recipients?: ComponentType<ISlotProps<IAutomationDialogRecipientsProps>>;
5996
6017
  }
5997
6018
 
5998
6019
  /**
@@ -6233,6 +6254,26 @@ export declare interface IAttributesDropdownProps extends IDashboardAttributeFil
6233
6254
  onParameterSelect?: (ref: IdentifierRef) => void;
6234
6255
  }
6235
6256
 
6257
+ /**
6258
+ * Members shared by both automation dialogs' destination regions.
6259
+ *
6260
+ * @alpha
6261
+ */
6262
+ export declare interface IAutomationDialogDestinationProps {
6263
+ /**
6264
+ * Notification channels the automation can target.
6265
+ */
6266
+ notificationChannels: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
6267
+ /**
6268
+ * Id of the automation's currently selected notification channel.
6269
+ */
6270
+ selectedNotificationChannelId: string | undefined;
6271
+ /**
6272
+ * Called with the id of the newly selected notification channel.
6273
+ */
6274
+ onChange: (notificationChannelId: string) => void;
6275
+ }
6276
+
6236
6277
  /**
6237
6278
  * Members shared by both automation dialogs' filters regions.
6238
6279
  *
@@ -6306,6 +6347,54 @@ export declare interface IAutomationDialogHeaderProps {
6306
6347
  onChange: (value: string) => void;
6307
6348
  }
6308
6349
 
6350
+ /**
6351
+ * Members shared by both automation dialogs' recipients regions.
6352
+ *
6353
+ * @alpha
6354
+ */
6355
+ export declare interface IAutomationDialogRecipientsProps {
6356
+ /**
6357
+ * Currently selected recipients.
6358
+ */
6359
+ value: IAutomationRecipient[];
6360
+ /**
6361
+ * Replaces the selection with the complete updated array.
6362
+ */
6363
+ onChange: (recipients: IAutomationRecipient[]) => void;
6364
+ /**
6365
+ * The logged-in user as a recipient candidate.
6366
+ */
6367
+ loggedUser?: IAutomationRecipient;
6368
+ /**
6369
+ * Restricts the selection to the logged-in user.
6370
+ */
6371
+ allowOnlyLoggedUserRecipients?: boolean;
6372
+ /**
6373
+ * Allows removing the last recipient.
6374
+ */
6375
+ allowEmptySelection?: boolean;
6376
+ /**
6377
+ * Allows recipients that are not workspace users.
6378
+ */
6379
+ allowExternalRecipients?: boolean;
6380
+ /**
6381
+ * Maximum number of recipients.
6382
+ */
6383
+ maxRecipients?: number;
6384
+ /**
6385
+ * Notification channels, used to derive channel-specific recipient constraints.
6386
+ */
6387
+ notificationChannels?: INotificationChannelIdentifier[] | INotificationChannelMetadataObject[];
6388
+ /**
6389
+ * Id of the automation's currently selected notification channel.
6390
+ */
6391
+ notificationChannelId?: string;
6392
+ /**
6393
+ * When set, the only addable recipient is this external address.
6394
+ */
6395
+ externalRecipientOverride?: string;
6396
+ }
6397
+
6309
6398
  /**
6310
6399
  * Automation filters grouped by tab, returned by {@link selectAutomationFiltersByTab}.
6311
6400
  * @alpha
@@ -6701,6 +6790,12 @@ export declare interface IChangeDashboardTimezoneOverridePayload {
6701
6790
  * the dashboard/workspace configuration applies again.
6702
6791
  */
6703
6792
  readonly timezoneId: string | undefined;
6793
+ /**
6794
+ * Skips the check that the dashboard's timezone configuration allows user overrides in view
6795
+ * mode, for restoring a timezone the platform already committed to (an export render, an
6796
+ * automation deep link). The dashboard timezone feature flag is still honored.
6797
+ */
6798
+ readonly bypassUserOverrideCheck?: boolean;
6704
6799
  }
6705
6800
 
6706
6801
  /**
@@ -13134,7 +13229,9 @@ export declare interface IDateFiltersCustomizer {
13134
13229
  * @remarks
13135
13230
  * Extends the shared {@link IAlertingDialogProps} with customization only the default implementation
13136
13231
  * supports. Slots render only in the fully rendered dialog: not while the dialog context reports
13137
- * loading, and not while the stale-filters confirmation step is shown.
13232
+ * loading, and not while the stale-filters confirmation step is shown. The Destination slot
13233
+ * additionally renders only when more than one notification channel exists — see
13234
+ * {@link IAlertingDialogSlots.Destination}.
13138
13235
  *
13139
13236
  * @alpha
13140
13237
  */
@@ -13142,6 +13239,26 @@ export declare interface IDefaultAlertingDialogProps extends IAlertingDialogProp
13142
13239
  /**
13143
13240
  * Section-level overrides. Each slot receives `{ Default, defaultProps }` and may render its own
13144
13241
  * content (replace) or `<Default {...defaultProps} />` inside its own markup (wrap).
13242
+ *
13243
+ * @example
13244
+ * The dialog is reached through the `Dashboard` component override; define slot components at
13245
+ * module scope (see {@link ISlotProps}):
13246
+ * ```tsx
13247
+ * function HeaderWithBanner({ Default, defaultProps }: ISlotProps<AlertingDialogHeaderDefaultProps>) {
13248
+ * return (
13249
+ * <>
13250
+ * <WarningBanner>Alerts may take up to 5 minutes.</WarningBanner>
13251
+ * <Default {...defaultProps} />
13252
+ * </>
13253
+ * );
13254
+ * }
13255
+ *
13256
+ * <Dashboard
13257
+ * AlertingDialogComponent={(props) => (
13258
+ * <DefaultAlertingDialog {...props} slots={{ Header: HeaderWithBanner }} />
13259
+ * )}
13260
+ * />;
13261
+ * ```
13145
13262
  */
13146
13263
  slots?: IAlertingDialogSlots;
13147
13264
  }
@@ -13179,8 +13296,8 @@ export declare interface IDefaultDashboardToolbarGroupProps {
13179
13296
  * Extends the shared {@link IScheduledEmailDialogProps} with customization only the default implementation
13180
13297
  * supports. Slots render only in the fully rendered dialog: not while the dialog context reports
13181
13298
  * loading, and not while the stale-filters confirmation step is shown. The Filters slot
13182
- * additionally renders only while the Filters tab is selected — see
13183
- * {@link IScheduledEmailDialogSlots.Filters}.
13299
+ * additionally renders only while the Filters tab is selected; the Destination and Recipients
13300
+ * slots only while the General tab is — see {@link IScheduledEmailDialogSlots}.
13184
13301
  *
13185
13302
  * @alpha
13186
13303
  */
@@ -13188,6 +13305,26 @@ export declare interface IDefaultScheduledEmailDialogProps extends IScheduledEma
13188
13305
  /**
13189
13306
  * Section-level overrides. Each slot receives `{ Default, defaultProps }` and may render its own
13190
13307
  * content (replace) or `<Default {...defaultProps} />` inside its own markup (wrap).
13308
+ *
13309
+ * @example
13310
+ * The dialog is reached through the `Dashboard` component override; define slot components at
13311
+ * module scope (see {@link ISlotProps}):
13312
+ * ```tsx
13313
+ * function RecipientsWithNote({ Default, defaultProps }: ISlotProps<IScheduledEmailDialogRecipientsProps>) {
13314
+ * return (
13315
+ * <>
13316
+ * <Default {...defaultProps} />
13317
+ * <Note>External recipients receive a public link.</Note>
13318
+ * </>
13319
+ * );
13320
+ * }
13321
+ *
13322
+ * <Dashboard
13323
+ * ScheduledEmailDialogComponent={(props) => (
13324
+ * <DefaultScheduledEmailDialog {...props} slots={{ Recipients: RecipientsWithNote }} />
13325
+ * )}
13326
+ * />;
13327
+ * ```
13191
13328
  */
13192
13329
  slots?: IScheduledEmailDialogSlots;
13193
13330
  }
@@ -17687,6 +17824,18 @@ export declare interface IScheduledEmailDialogProps {
17687
17824
  onDeleteError?: (error: GoodDataSdkError) => void;
17688
17825
  }
17689
17826
 
17827
+ /**
17828
+ * Props of the default scheduled email dialog's recipients region.
17829
+ *
17830
+ * @alpha
17831
+ */
17832
+ export declare interface IScheduledEmailDialogRecipientsProps extends IAutomationDialogRecipientsProps {
17833
+ /**
17834
+ * Submits the dialog from the recipients input. The default dialog always supplies it.
17835
+ */
17836
+ onKeyDownSubmit: (e: KeyboardEvent_2) => void;
17837
+ }
17838
+
17690
17839
  /**
17691
17840
  * Section-level overrides of the default scheduled email dialog.
17692
17841
  *
@@ -17722,6 +17871,24 @@ export declare interface IScheduledEmailDialogSlots {
17722
17871
  * hidden, the slot is not rendered either.
17723
17872
  */
17724
17873
  Timezone?: ComponentType<ISlotProps<ScheduledEmailDialogTimezoneDefaultProps>>;
17874
+ /**
17875
+ * Wraps or replaces the dialog's destination region (the notification-channel select on the
17876
+ * General tab). Must have a stable reference identity — see {@link ISlotProps}.
17877
+ *
17878
+ * Renders only in the fully rendered dialog **and only while the General tab is selected**:
17879
+ * not while the dialog context reports loading, and not while the stale-filters confirmation
17880
+ * step is shown. It unmounts — losing any local state — on every switch to the Filters tab.
17881
+ */
17882
+ Destination?: ComponentType<ISlotProps<IAutomationDialogDestinationProps>>;
17883
+ /**
17884
+ * Wraps or replaces the dialog's recipients region on the General tab. Must have a stable
17885
+ * reference identity — see {@link ISlotProps}.
17886
+ *
17887
+ * Renders only in the fully rendered dialog **and only while the General tab is selected**:
17888
+ * not while the dialog context reports loading, and not while the stale-filters confirmation
17889
+ * step is shown. It unmounts — losing any local state — on every switch to the Filters tab.
17890
+ */
17891
+ Recipients?: ComponentType<ISlotProps<IScheduledEmailDialogRecipientsProps>>;
17725
17892
  }
17726
17893
 
17727
17894
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.54.0-alpha.3",
3
+ "version": "11.54.0-alpha.5",
4
4
  "description": "GoodData SDK - Dashboard Component",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -60,20 +60,20 @@
60
60
  "ts-invariant": "0.10.3",
61
61
  "tslib": "2.8.1",
62
62
  "uuid": "11.1.1",
63
- "@gooddata/sdk-backend-base": "11.54.0-alpha.3",
64
- "@gooddata/sdk-backend-spi": "11.54.0-alpha.3",
65
- "@gooddata/sdk-model": "11.54.0-alpha.3",
66
- "@gooddata/sdk-ui-charts": "11.54.0-alpha.3",
67
- "@gooddata/sdk-ui": "11.54.0-alpha.3",
68
- "@gooddata/sdk-ui-ext": "11.54.0-alpha.3",
69
- "@gooddata/sdk-ui-geo": "11.54.0-alpha.3",
70
- "@gooddata/sdk-ui-pivot": "11.54.0-alpha.3",
71
- "@gooddata/sdk-ui-kit": "11.54.0-alpha.3",
72
- "@gooddata/sdk-ui-semantic-search": "11.54.0-alpha.3",
73
- "@gooddata/sdk-ui-filters": "11.54.0-alpha.3",
74
- "@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.3",
75
- "@gooddata/sdk-ui-vis-commons": "11.54.0-alpha.3",
76
- "@gooddata/util": "11.54.0-alpha.3"
63
+ "@gooddata/sdk-backend-spi": "11.54.0-alpha.5",
64
+ "@gooddata/sdk-backend-base": "11.54.0-alpha.5",
65
+ "@gooddata/sdk-model": "11.54.0-alpha.5",
66
+ "@gooddata/sdk-ui": "11.54.0-alpha.5",
67
+ "@gooddata/sdk-ui-charts": "11.54.0-alpha.5",
68
+ "@gooddata/sdk-ui-ext": "11.54.0-alpha.5",
69
+ "@gooddata/sdk-ui-filters": "11.54.0-alpha.5",
70
+ "@gooddata/sdk-ui-geo": "11.54.0-alpha.5",
71
+ "@gooddata/sdk-ui-kit": "11.54.0-alpha.5",
72
+ "@gooddata/sdk-ui-pivot": "11.54.0-alpha.5",
73
+ "@gooddata/sdk-ui-semantic-search": "11.54.0-alpha.5",
74
+ "@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.5",
75
+ "@gooddata/util": "11.54.0-alpha.5",
76
+ "@gooddata/sdk-ui-vis-commons": "11.54.0-alpha.5"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@microsoft/api-documenter": "^7.17.0",
@@ -119,12 +119,12 @@
119
119
  "typescript": "5.9.3",
120
120
  "vitest": "4.1.8",
121
121
  "vitest-dom": "0.1.1",
122
- "@gooddata/eslint-config": "11.54.0-alpha.3",
123
- "@gooddata/i18n-toolkit": "11.54.0-alpha.3",
124
- "@gooddata/sdk-backend-mockingbird": "11.54.0-alpha.3",
125
- "@gooddata/oxlint-config": "11.54.0-alpha.3",
126
- "@gooddata/stylelint-config": "11.54.0-alpha.3",
127
- "@gooddata/reference-workspace": "11.54.0-alpha.3"
122
+ "@gooddata/eslint-config": "11.54.0-alpha.5",
123
+ "@gooddata/i18n-toolkit": "11.54.0-alpha.5",
124
+ "@gooddata/oxlint-config": "11.54.0-alpha.5",
125
+ "@gooddata/reference-workspace": "11.54.0-alpha.5",
126
+ "@gooddata/sdk-backend-mockingbird": "11.54.0-alpha.5",
127
+ "@gooddata/stylelint-config": "11.54.0-alpha.5"
128
128
  },
129
129
  "peerDependencies": {
130
130
  "react": "^18.0.0 || ^19.0.0",