@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.
- package/NOTICE +92923 -17333
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/automation/index.d.ts +6 -0
- package/esm/_staging/automation/index.d.ts.map +1 -1
- package/esm/_staging/automation/index.js +7 -0
- package/esm/_staging/dashboard/flexibleLayout/builder/utils.d.ts +45 -0
- package/esm/_staging/dashboard/flexibleLayout/builder/utils.d.ts.map +1 -0
- package/esm/_staging/dashboard/flexibleLayout/builder/utils.js +54 -0
- package/esm/_staging/dateFilterConfig/fixtures.d.ts +10 -0
- package/esm/_staging/dateFilterConfig/fixtures.d.ts.map +1 -0
- package/esm/_staging/dateFilterConfig/fixtures.js +60 -0
- package/esm/_staging/layout/coordinates.mock.d.ts +17 -0
- package/esm/_staging/layout/coordinates.mock.d.ts.map +1 -0
- package/esm/_staging/layout/coordinates.mock.js +103 -0
- package/esm/index.d.ts +2 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/model/DashboardTester.d.ts +150 -0
- package/esm/model/DashboardTester.d.ts.map +1 -0
- package/esm/model/DashboardTester.js +208 -0
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +27 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts +9 -0
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.d.ts.map +1 -0
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadAutomationTimezone.js +27 -0
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.js +2 -11
- package/esm/model/commands/timezone.d.ts +10 -2
- package/esm/model/commands/timezone.d.ts.map +1 -1
- package/esm/model/commands/timezone.js +5 -2
- package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts +14 -0
- package/esm/model/fixtures/CatalogAvailability.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/CatalogAvailability.fixtures.js +57 -0
- package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts +56 -0
- package/esm/model/fixtures/ComplexDashboard.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/ComplexDashboard.fixtures.js +71 -0
- package/esm/model/fixtures/Dashboard.fixtures.d.ts +10 -0
- package/esm/model/fixtures/Dashboard.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/Dashboard.fixtures.js +13 -0
- package/esm/model/fixtures/Insights.fixtures.d.ts +6 -0
- package/esm/model/fixtures/Insights.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/Insights.fixtures.js +11 -0
- package/esm/model/fixtures/Layout.fixtures.d.ts +14 -0
- package/esm/model/fixtures/Layout.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/Layout.fixtures.js +115 -0
- package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts +46 -0
- package/esm/model/fixtures/SimpleDashboard.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/SimpleDashboard.fixtures.js +315 -0
- package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts +28 -0
- package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.d.ts.map +1 -0
- package/esm/model/fixtures/SimpleDashboardNoDrills.fixtures.js +40 -0
- package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.d.ts +16 -0
- package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.d.ts.map +1 -0
- package/esm/plugins/customizationApis/fixtures/TestingDashboardCustomizationLogger.js +30 -0
- package/esm/plugins/customizationApis/utils.d.ts +3 -0
- package/esm/plugins/customizationApis/utils.d.ts.map +1 -0
- package/esm/plugins/customizationApis/utils.js +17 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts +6 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogDestination.js +13 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts +7 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/AlertingDialogRecipients.js +12 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +25 -13
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts +8 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/FormField.js +8 -0
- package/esm/presentation/automations/alerting/state/fixtures.d.ts +13 -0
- package/esm/presentation/automations/alerting/state/fixtures.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/fixtures.js +37 -0
- package/esm/presentation/automations/alerting/types.d.ts +42 -2
- package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +24 -5
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts +1 -5
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts +0 -4
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts +6 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogDestination.js +10 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts +6 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/ScheduledEmailDialogRecipients.js +8 -0
- package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts +18 -0
- package/esm/presentation/automations/scheduledEmail/state/fixtures.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/fixtures.js +105 -0
- package/esm/presentation/automations/scheduledEmail/types.d.ts +52 -3
- package/esm/presentation/automations/scheduledEmail/types.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts +5 -0
- package/esm/presentation/automations/shared/automationFilters/parameterFixtures.d.ts.map +1 -0
- package/esm/presentation/automations/shared/automationFilters/parameterFixtures.js +22 -0
- package/esm/presentation/automations/shared/slots/types.d.ts +67 -1
- package/esm/presentation/automations/shared/slots/types.d.ts.map +1 -1
- package/esm/presentation/automations/shared/test/fixtures.d.ts +9 -0
- package/esm/presentation/automations/shared/test/fixtures.d.ts.map +1 -0
- package/esm/presentation/automations/shared/test/fixtures.js +101 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts +17 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayout.js +18 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts +12 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.js +26 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts +20 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.js +95 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts +14 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.js +9 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts +9 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorder.js +17 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts +6 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionBorderMarker.js +10 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts +9 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeader.js +14 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts +8 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.js +49 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts +7 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.js +33 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts +62 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.js +2 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts +11 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.js +4 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts +8 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.js +28 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts +26 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.d.ts.map +1 -0
- package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/LayoutTypes.js +21 -0
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.js +1 -1
- package/esm/sdk-ui-dashboard.d.ts +172 -5
- 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;
|
package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutTypes.d.ts
ADDED
|
@@ -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"}
|
package/esm/presentation/flexibleLayout/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.d.ts
ADDED
|
@@ -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,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,
|
|
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 ?? [],
|
|
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
|
|
13183
|
-
* {@link IScheduledEmailDialogSlots
|
|
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
|
+
"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-
|
|
64
|
-
"@gooddata/sdk-backend-
|
|
65
|
-
"@gooddata/sdk-model": "11.54.0-alpha.
|
|
66
|
-
"@gooddata/sdk-ui
|
|
67
|
-
"@gooddata/sdk-ui": "11.54.0-alpha.
|
|
68
|
-
"@gooddata/sdk-ui-ext": "11.54.0-alpha.
|
|
69
|
-
"@gooddata/sdk-ui-
|
|
70
|
-
"@gooddata/sdk-ui-
|
|
71
|
-
"@gooddata/sdk-ui-kit": "11.54.0-alpha.
|
|
72
|
-
"@gooddata/sdk-ui-
|
|
73
|
-
"@gooddata/sdk-ui-
|
|
74
|
-
"@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.
|
|
75
|
-
"@gooddata/
|
|
76
|
-
"@gooddata/
|
|
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.
|
|
123
|
-
"@gooddata/i18n-toolkit": "11.54.0-alpha.
|
|
124
|
-
"@gooddata/
|
|
125
|
-
"@gooddata/
|
|
126
|
-
"@gooddata/
|
|
127
|
-
"@gooddata/
|
|
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",
|