@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,95 @@
1
+ // (C) 2007-2026 GoodData Corporation
2
+ import { idRef } from "@gooddata/sdk-model";
3
+ import { newInsight } from "../../../../_staging/insight/insightBuilder.js";
4
+ import { DropZoneType, WidgetPosition } from "./LayoutTypes.js";
5
+ export const widgetMock = () => (ref) => {
6
+ return {
7
+ type: "widget",
8
+ ref,
9
+ };
10
+ };
11
+ export const widgetDropzoneMock = (visType = "bar", isInitialDropzone = false, position = WidgetPosition.next) => (ref) => {
12
+ return {
13
+ type: "widgetDropzone",
14
+ dragZoneWidget: {
15
+ dropzone: {
16
+ ref,
17
+ widgetType: "insight",
18
+ content: newInsight(`local:${visType}`, (m) => m.title("Some vis").uri("gdc/some/vis")),
19
+ isInitialDropzone,
20
+ position,
21
+ },
22
+ },
23
+ ref,
24
+ };
25
+ };
26
+ export const widgetDropzoneHotspotMock = (widgetRef, dropZoneType = DropZoneType.next) => (ref) => {
27
+ return {
28
+ type: "widgetDropzoneHotspot",
29
+ dropZoneType,
30
+ ref,
31
+ widgetRef,
32
+ };
33
+ };
34
+ export const widgetKpiPlaceholderMock = () => (ref) => {
35
+ return {
36
+ type: "widgetKpiPlaceholder",
37
+ ref,
38
+ };
39
+ };
40
+ export const widgetNewInsightPlaceholderMock = () => (ref) => {
41
+ return {
42
+ type: "widgetNewInsightPlaceholder",
43
+ ref,
44
+ };
45
+ };
46
+ export const rowMock = (contentGeneratorColumnWidthAndHeightAsRatioTuples, title, description, isDropzone) => {
47
+ return {
48
+ contentGeneratorColumnWidthAndHeightAsRatioTuples,
49
+ title,
50
+ description,
51
+ isDropzone,
52
+ };
53
+ };
54
+ export const getWidgetMockRef = (itemIndex, sectionIndex) => idRef(`widget_${itemIndex}_row_${sectionIndex}`);
55
+ export const layoutMock = (rowMocks) => {
56
+ const emptyLayout = {
57
+ type: "IDashboardLayout",
58
+ sections: [],
59
+ };
60
+ return rowMocks.reduce((acc, rowMock, sectionIndex) => {
61
+ const rowId = `row_${sectionIndex}`;
62
+ if (!acc.sections[sectionIndex]) {
63
+ acc.sections[sectionIndex] = {
64
+ type: "IDashboardLayoutSection",
65
+ items: [],
66
+ ...(rowMock.title || rowMock.description
67
+ ? {
68
+ header: {
69
+ title: rowMock.title,
70
+ description: rowMock.description,
71
+ },
72
+ }
73
+ : {}),
74
+ };
75
+ }
76
+ return rowMock.contentGeneratorColumnWidthAndHeightAsRatioTuples.reduce((acc2, [contentGenerator, gridWidth = 12, heightAsRatio = undefined], itemIndex) => {
77
+ const widgetRef = getWidgetMockRef(itemIndex, sectionIndex);
78
+ const widget = contentGenerator(widgetRef, rowId);
79
+ const item = {
80
+ type: "IDashboardLayoutItem",
81
+ size: {
82
+ xl: {
83
+ gridWidth,
84
+ },
85
+ },
86
+ widget,
87
+ };
88
+ if (heightAsRatio) {
89
+ item.size.xl.heightAsRatio = heightAsRatio;
90
+ }
91
+ acc2.sections[sectionIndex].items[itemIndex] = item;
92
+ return acc2;
93
+ }, acc);
94
+ }, emptyLayout);
95
+ };
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ScreenSize } from "@gooddata/sdk-model";
3
+ import { type IDashboardLayoutItemFacade, type IDashboardLayoutSectionFacade } from "../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js";
4
+ import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js";
5
+ export interface IDashboardEditLayoutRowRendererOwnProps {
6
+ layoutItems: IDashboardLayoutItemFacade<IDashboardEditLayoutContent>[];
7
+ screen: ScreenSize;
8
+ section: IDashboardLayoutSectionFacade<IDashboardEditLayoutContent>;
9
+ children?: ReactNode;
10
+ }
11
+ export type IDashboardEditLayoutRowRendererProps = IDashboardEditLayoutRowRendererOwnProps;
12
+ export declare function RenderDashboardEditLayoutRowRenderer({ children }: IDashboardEditLayoutRowRendererProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare const DashboardEditLayoutRowRenderer: typeof RenderDashboardEditLayoutRowRenderer;
14
+ //# sourceMappingURL=DashboardEditLayoutRowRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutRowRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACH,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EACrC,MAAM,oEAAoE,CAAC;AAE5E,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,MAAM,WAAW,uCAAuC;IACpD,WAAW,EAAE,0BAA0B,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACvE,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,6BAA6B,CAAC,2BAA2B,CAAC,CAAC;IACpE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,MAAM,oCAAoC,GAAG,uCAAuC,CAAC;AAE3F,wBAAgB,oCAAoC,CAAC,EAAE,QAAQ,EAAE,EAAE,oCAAoC,2CAQtG;AAED,eAAO,MAAM,8BAA8B,6CAAuC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2007-2026 GoodData Corporation
3
+ import { Fragment, useRef } from "react";
4
+ export function RenderDashboardEditLayoutRowRenderer({ children }) {
5
+ const rowId = "rowId";
6
+ const contentRef = useRef(null);
7
+ return (_jsx("div", { ref: contentRef, className: "gd-fluid-layout-row s-gd-fluid-layout-row", children: _jsx(Fragment, { children: children }) }, rowId));
8
+ }
9
+ export const DashboardEditLayoutRowRenderer = RenderDashboardEditLayoutRowRenderer;
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from "react";
2
+ export type DashboardEditLayoutSectionBorderStatus = "active" | "muted" | "invisible";
3
+ interface IDashboardEditLayoutSectionBorderProps {
4
+ children?: ReactNode;
5
+ status: DashboardEditLayoutSectionBorderStatus;
6
+ }
7
+ export declare function DashboardEditLayoutSectionBorder(props: IDashboardEditLayoutSectionBorderProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=DashboardEditLayoutSectionBorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutSectionBorder.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjD,MAAM,MAAM,sCAAsC,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtF,UAAU,sCAAsC;IAC5C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,sCAAsC,CAAC;CAClD;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sCAAsC,2CA0B7F"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2019-2026 GoodData Corporation
3
+ import { Fragment } from "react";
4
+ import cx from "classnames";
5
+ import { DashboardEditLayoutSectionBorderMarker } from "./DashboardEditLayoutSectionBorderMarker.js";
6
+ export function DashboardEditLayoutSectionBorder(props) {
7
+ return (_jsxs(Fragment, { children: [
8
+ _jsxs("div", { className: classNames("top", props.status), children: [
9
+ _jsx(DashboardEditLayoutSectionBorderMarker, { className: "gd-fluidlayout-row-separator-icon gd-fluidlayout-row-separator-icon-left", active: props.status === "active" }), _jsx(DashboardEditLayoutSectionBorderMarker, { className: "gd-fluidlayout-row-separator-icon gd-fluidlayout-row-separator-icon-right", active: props.status === "active" })
10
+ ] }), props.children, _jsxs("div", { className: classNames("bottom", props.status), children: [
11
+ _jsx(DashboardEditLayoutSectionBorderMarker, { className: "gd-fluidlayout-row-separator-icon gd-fluidlayout-row-separator-icon-left", active: props.status === "active" }), _jsx(DashboardEditLayoutSectionBorderMarker, { className: "gd-fluidlayout-row-separator-icon gd-fluidlayout-row-separator-icon-right", active: props.status === "active" })
12
+ ] })
13
+ ] }));
14
+ }
15
+ function classNames(position, status) {
16
+ return cx("gd-fluidlayout-row-separator", "s-fluidlayout-row-separator", position, status);
17
+ }
@@ -0,0 +1,6 @@
1
+ export interface IDashboardEditLayoutSectionBorderMarkerProps {
2
+ active?: boolean;
3
+ className?: string;
4
+ }
5
+ export declare function DashboardEditLayoutSectionBorderMarker({ active, className }: IDashboardEditLayoutSectionBorderMarkerProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=DashboardEditLayoutSectionBorderMarker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutSectionBorderMarker.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,4CAA4C;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,sCAAsC,CAAC,EACnD,MAAM,EACN,SAAS,EACZ,EAAE,4CAA4C,2CAsB9C"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2020-2026 GoodData Corporation
3
+ import { GD_COLOR_HIGHLIGHT, GD_COLOR_WHITE, INFO_TEXT_COLOR } from "@gooddata/sdk-ui-kit";
4
+ export function DashboardEditLayoutSectionBorderMarker({ active, className, }) {
5
+ const background = active ? `var(--gd-palette-primary-base, ${GD_COLOR_HIGHLIGHT})` : "#E6E6E6";
6
+ const color = active ? GD_COLOR_WHITE : INFO_TEXT_COLOR;
7
+ return (_jsx("svg", { width: "20", height: "20", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", className: className, children: _jsxs("g", { fill: "none", fillRule: "evenodd", children: [
8
+ _jsx("circle", { cx: "10", cy: "10", r: "10", fill: background }), _jsx("path", { d: "M6.5 9.5H14c.2761424 0 .5.22385763.5.5 0 .2761424-.2238576.5-.5.5H6.5V14c0 .2761424-.22385763.5-.5.5-.27614237 0-.5-.2238576-.5-.5V6c0-.27614237.22385763-.5.5-.5.27614237 0 .5.22385763.5.5v3.5z", fill: color, fillRule: "nonzero" })
9
+ ] }) }));
10
+ }
@@ -0,0 +1,9 @@
1
+ export interface IDashboardEditLayoutSectionHeaderOwnProps {
2
+ title: string;
3
+ description: string;
4
+ rowId: string;
5
+ }
6
+ export type IDashboardEditLayoutSectionHeaderProps = IDashboardEditLayoutSectionHeaderOwnProps;
7
+ export declare function RenderDashboardEditLayoutSectionHeader({ description, title }: IDashboardEditLayoutSectionHeaderProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare const DashboardEditLayoutSectionHeader: typeof RenderDashboardEditLayoutSectionHeader;
9
+ //# sourceMappingURL=DashboardEditLayoutSectionHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutSectionHeader.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,yCAAyC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,sCAAsC,GAAG,yCAAyC,CAAC;AAE/F,wBAAgB,sCAAsC,CAAC,EACnD,WAAW,EACX,KAAK,EACR,EAAE,sCAAsC,2CAexC;AAED,eAAO,MAAM,gCAAgC,+CAAyC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2019-2026 GoodData Corporation
3
+ import { DashboardLayoutEditSectionHeader } from "../../DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.js";
4
+ export function RenderDashboardEditLayoutSectionHeader({ description, title, }) {
5
+ const isDashboardEditing = true;
6
+ return (_jsx(DashboardLayoutEditSectionHeader
7
+ // @ts-expect-error this is weird, who did this?
8
+ , {
9
+ // @ts-expect-error this is weird, who did this?
10
+ title: title, description: description, renderHeader: isDashboardEditing
11
+ ? "<SectionHeaderEditable title={title} description={description} rowId={rowId} />"
12
+ : null }));
13
+ }
14
+ export const DashboardEditLayoutSectionHeader = RenderDashboardEditLayoutSectionHeader;
@@ -0,0 +1,8 @@
1
+ import { type IDashboardLayoutSectionHeaderRenderProps } from "../../DefaultDashboardLayoutRenderer/interfaces.js";
2
+ import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js";
3
+ type IDashboardLayoutSectionHeaderRendererOwnProps = IDashboardLayoutSectionHeaderRenderProps<IDashboardEditLayoutContent>;
4
+ type IDashboardLayoutSectionHeaderRendererProps = IDashboardLayoutSectionHeaderRendererOwnProps;
5
+ export declare function RenderDashboardEditLayoutSectionHeaderRenderer(props: IDashboardLayoutSectionHeaderRendererProps): import("react/jsx-runtime").JSX.Element | null;
6
+ export declare const DashboardEditLayoutSectionHeaderRenderer: typeof RenderDashboardEditLayoutSectionHeaderRenderer;
7
+ export {};
8
+ //# sourceMappingURL=DashboardEditLayoutSectionHeaderRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardEditLayoutSectionHeaderRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,wCAAwC,EAAE,MAAM,oDAAoD,CAAC;AAGnH,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,KAAK,6CAA6C,GAC9C,wCAAwC,CAAC,2BAA2B,CAAC,CAAC;AAE1E,KAAK,0CAA0C,GAAG,6CAA6C,CAAC;AAkChG,wBAAgB,8CAA8C,CAC1D,KAAK,EAAE,0CAA0C,kDA+BpD;AAED,eAAO,MAAM,wCAAwC,uDAAiD,CAAC"}
@@ -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: [