@gooddata/sdk-ui-dashboard 11.19.0-alpha.0 → 11.19.0-alpha.10
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 +1841 -1701
- package/esm/__version.d.ts +1 -1
- package/esm/__version.d.ts.map +1 -1
- package/esm/__version.js +1 -1
- package/esm/__version.js.map +1 -1
- package/esm/_staging/dateFilterConfig/validation.js +1 -1
- package/esm/_staging/dateFilterConfig/validation.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/kdaDialog/components/KdaFooter.js +2 -2
- package/esm/kdaDialog/components/KdaFooter.js.map +1 -1
- package/esm/kdaDialog/components/bars/DateBar.d.ts.map +1 -1
- package/esm/kdaDialog/components/bars/DateBar.js +1 -1
- package/esm/kdaDialog/components/bars/DateBar.js.map +1 -1
- package/esm/kdaDialog/composition/AddFilterButton.d.ts.map +1 -1
- package/esm/kdaDialog/composition/AddFilterButton.js +1 -1
- package/esm/kdaDialog/composition/AddFilterButton.js.map +1 -1
- package/esm/kdaDialog/composition/KeyDriversFooter.d.ts.map +1 -1
- package/esm/kdaDialog/composition/KeyDriversFooter.js +9 -2
- package/esm/kdaDialog/composition/KeyDriversFooter.js.map +1 -1
- package/esm/kdaDialog/composition/KeyDriversOverview.js +1 -1
- package/esm/kdaDialog/composition/KeyDriversOverview.js.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialog.d.ts +1 -1
- package/esm/kdaDialog/dialog/KdaDialog.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialog.js +14 -6
- package/esm/kdaDialog/dialog/KdaDialog.js.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogActionButtons.d.ts +3 -1
- package/esm/kdaDialog/dialog/KdaDialogActionButtons.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogActionButtons.js +17 -6
- package/esm/kdaDialog/dialog/KdaDialogActionButtons.js.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogController.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogController.js +13 -4
- package/esm/kdaDialog/dialog/KdaDialogController.js.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogControls.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogControls.js +2 -2
- package/esm/kdaDialog/dialog/KdaDialogControls.js.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogFloatingStatusBar.d.ts +5 -1
- package/esm/kdaDialog/dialog/KdaDialogFloatingStatusBar.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialogFloatingStatusBar.js +6 -9
- package/esm/kdaDialog/dialog/KdaDialogFloatingStatusBar.js.map +1 -1
- package/esm/kdaDialog/dialog/hooks/useKdaDialogAccessibility.d.ts +2 -2
- package/esm/kdaDialog/dialog/hooks/useKdaDialogAccessibility.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/hooks/useKdaDialogAccessibility.js +5 -4
- package/esm/kdaDialog/dialog/hooks/useKdaDialogAccessibility.js.map +1 -1
- package/esm/kdaDialog/types.d.ts +10 -0
- package/esm/kdaDialog/types.d.ts.map +1 -1
- package/esm/kdaDialog/types.js +1 -1
- package/esm/kdaDialog/types.js.map +1 -1
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowUtils.d.ts +11 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowUtils.d.ts.map +1 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowUtils.js +29 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowUtils.js.map +1 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.d.ts +4 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.d.ts.map +1 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.js +122 -0
- package/esm/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.js.map +1 -0
- package/esm/model/commandHandlers/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/index.js.map +1 -1
- package/esm/model/events/general.d.ts.map +1 -1
- package/esm/model/events/general.js.map +1 -1
- package/esm/model/headlessDashboard/HeadlessDashboard.d.ts.map +1 -1
- package/esm/model/headlessDashboard/HeadlessDashboard.js +2 -6
- package/esm/model/headlessDashboard/HeadlessDashboard.js.map +1 -1
- package/esm/model/react/useInitializeDashboardStore.d.ts.map +1 -1
- package/esm/model/react/useInitializeDashboardStore.js +2 -0
- package/esm/model/react/useInitializeDashboardStore.js.map +1 -1
- package/esm/model/store/config/configSelectors.d.ts +0 -6
- package/esm/model/store/config/configSelectors.d.ts.map +1 -1
- package/esm/model/store/config/configSelectors.js +13 -21
- package/esm/model/store/config/configSelectors.js.map +1 -1
- package/esm/model/store/dashboardStore.d.ts.map +1 -1
- package/esm/model/store/dashboardStore.js +2 -1
- package/esm/model/store/dashboardStore.js.map +1 -1
- package/esm/model/store/dashboardSummaryWorkflow/constants.d.ts +7 -0
- package/esm/model/store/dashboardSummaryWorkflow/constants.d.ts.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/constants.js +8 -0
- package/esm/model/store/dashboardSummaryWorkflow/constants.js.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowReducers.d.ts +25 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowReducers.d.ts.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowReducers.js +46 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowReducers.js.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.d.ts +6 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.d.ts.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.js +13 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.js.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowState.d.ts +30 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowState.d.ts.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowState.js +5 -0
- package/esm/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowState.js.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/index.d.ts +21 -0
- package/esm/model/store/dashboardSummaryWorkflow/index.d.ts.map +1 -0
- package/esm/model/store/dashboardSummaryWorkflow/index.js +12 -0
- package/esm/model/store/dashboardSummaryWorkflow/index.js.map +1 -0
- package/esm/model/store/listedDashboards/listedDashboardsSummarySelectors.d.ts +8 -0
- package/esm/model/store/listedDashboards/listedDashboardsSummarySelectors.d.ts.map +1 -0
- package/esm/model/store/listedDashboards/listedDashboardsSummarySelectors.js +16 -0
- package/esm/model/store/listedDashboards/listedDashboardsSummarySelectors.js.map +1 -0
- package/esm/model/store/storeAccessors/SingleDashboardStoreAccessor.d.ts +19 -0
- package/esm/model/store/storeAccessors/SingleDashboardStoreAccessor.d.ts.map +1 -1
- package/esm/model/store/storeAccessors/SingleDashboardStoreAccessor.js +19 -0
- package/esm/model/store/storeAccessors/SingleDashboardStoreAccessor.js.map +1 -1
- package/esm/model/store/types.d.ts +7 -0
- package/esm/model/store/types.d.ts.map +1 -1
- package/esm/model/types/layoutTypes.d.ts.map +1 -1
- package/esm/model/types/layoutTypes.js.map +1 -1
- package/esm/plugins/customizationApis/visualizationSwitcherCustomizer.d.ts.map +1 -1
- package/esm/plugins/customizationApis/visualizationSwitcherCustomizer.js.map +1 -1
- package/esm/presentation/alerting/DefaultAlertingDialog/components/AlertAttributeSelect.js.map +1 -1
- package/esm/presentation/alerting/DefaultAlertingDialog/components/AlertAttributeSelectOld.js.map +1 -1
- package/esm/presentation/automationFilters/components/AutomationFiltersSelect.d.ts.map +1 -1
- package/esm/presentation/automationFilters/components/AutomationFiltersSelect.js +2 -2
- package/esm/presentation/automationFilters/components/AutomationFiltersSelect.js.map +1 -1
- package/esm/presentation/dashboard/types.d.ts +1 -1
- package/esm/presentation/dashboard/types.d.ts.map +1 -1
- package/esm/presentation/dashboardList/DashboardList.d.ts.map +1 -1
- package/esm/presentation/dashboardList/DashboardList.js +1 -1
- package/esm/presentation/dashboardList/DashboardList.js.map +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.d.ts.map +1 -1
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js +34 -10
- package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.d.ts +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/types.d.ts +0 -1
- package/esm/presentation/filterBar/attributeFilter/types.d.ts.map +1 -1
- package/esm/presentation/insightList/InsightList.d.ts.map +1 -1
- package/esm/presentation/insightList/InsightList.js +22 -49
- package/esm/presentation/insightList/InsightList.js.map +1 -1
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +32 -0
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +35 -3
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js.map +1 -1
- package/esm/presentation/scheduledEmail/utils/validate.d.ts.map +1 -1
- package/esm/presentation/scheduledEmail/utils/validate.js +1 -2
- package/esm/presentation/scheduledEmail/utils/validate.js.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.js.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.js +5 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.js.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.js +1 -16
- package/esm/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.js.map +1 -1
- package/esm/presentation/widget/richText/ViewModeDashboardRichText.d.ts.map +1 -1
- package/esm/presentation/widget/richText/ViewModeDashboardRichText.js +31 -1
- package/esm/presentation/widget/richText/ViewModeDashboardRichText.js.map +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.d.ts.map +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.js.map +1 -1
- package/esm/sdk-ui-dashboard.d.ts +66 -2
- package/package.json +54 -52
- package/styles/css/configurationPanel.css +1 -1
- package/styles/css/kdaDialog.css +23 -1
- package/styles/css/kdaDialog.css.map +1 -1
- package/styles/css/main.css +25 -2
- package/styles/css/main.css.map +1 -1
- package/styles/scss/configurationPanel.scss +1 -1
- package/styles/scss/kdaDialog.scss +35 -1
|
@@ -2,9 +2,9 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
// (C) 2025-2026 GoodData Corporation
|
|
3
3
|
import { useId, useMemo } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
|
-
import { Dialog, OverlayController, OverlayControllerProvider
|
|
5
|
+
import { Dialog, OverlayController, OverlayControllerProvider } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { useKdaDialogAccessibility } from "./hooks/useKdaDialogAccessibility.js";
|
|
7
|
-
import { KdaDialogFloatingStatusBar } from "./KdaDialogFloatingStatusBar.js";
|
|
7
|
+
import { KdaDialogFloatingStatusBar, getFloatingStatus } from "./KdaDialogFloatingStatusBar.js";
|
|
8
8
|
import { KdaDialogSections } from "./KdaDialogSections.js";
|
|
9
9
|
import { KdaContent } from "../components/KdaContent.js";
|
|
10
10
|
import { KdaFooter } from "../components/KdaFooter.js";
|
|
@@ -27,21 +27,29 @@ const KDA_DIALOG_EXPANDED_DATA_TEST_ID = "kda-dialog-expanded";
|
|
|
27
27
|
/**
|
|
28
28
|
* @internal
|
|
29
29
|
*/
|
|
30
|
-
export function KdaDialog({ className, showCloseButton = true, onClose }) {
|
|
30
|
+
export function KdaDialog({ className, showCloseButton = true, parentOverlayController, onClose, titleElementId, }) {
|
|
31
31
|
const { state } = useKdaState();
|
|
32
32
|
const { isMinimized } = state;
|
|
33
|
-
const parentOverlayController = useOverlayController();
|
|
34
33
|
const effectiveOverlayController = useMemo(() => parentOverlayController ?? overlayController, [parentOverlayController]);
|
|
35
34
|
const metric = state.definition?.metric.measure;
|
|
36
35
|
const title = metric?.alias ?? metric?.title ?? "";
|
|
37
36
|
const detailsId = useId();
|
|
38
37
|
const minimizedAlignPoints = useMemo(() => (isMinimized ? [{ align: "tc tc", offset: { x: 0, y: 30 } }] : undefined), [isMinimized]);
|
|
39
|
-
const accessibilityConfig = useKdaDialogAccessibility(title, isMinimized);
|
|
38
|
+
const accessibilityConfig = useKdaDialogAccessibility(title, isMinimized, titleElementId);
|
|
40
39
|
const dialogBaseClassName = cx(accessibilityConfig.dialogId, className);
|
|
41
40
|
const displayCloseButton = showCloseButton ? !isMinimized : undefined;
|
|
41
|
+
const status = getFloatingStatus(state.relevantStatus, state.itemsStatus, state.selectedStatus);
|
|
42
42
|
useChangeAnalysis();
|
|
43
43
|
useValidAttributes();
|
|
44
44
|
useKdaDialogTooltipsOverride();
|
|
45
|
-
return (_jsx(OverlayControllerProvider, { overlayController: effectiveOverlayController, children: isMinimized ? (_jsx(Dialog, {
|
|
45
|
+
return (_jsx(OverlayControllerProvider, { overlayController: effectiveOverlayController, children: isMinimized ? (_jsx(Dialog, { autofocusOnOpen: true, initialFocus: accessibilityConfig.descriptionElementId, className: cx(dialogBaseClassName, "gd-kda-dialog--minimized", {
|
|
46
|
+
[`gd-kda-dialog--minimized--${status}`]: true,
|
|
47
|
+
}), closeOnEscape: false, isModal: false, alignPoints: minimizedAlignPoints, accessibilityConfig: {
|
|
48
|
+
...accessibilityConfig,
|
|
49
|
+
title: undefined,
|
|
50
|
+
}, displayCloseButton: displayCloseButton, onClose: onClose, CloseButton: KdaDialogControls, dataTestId: KDA_DIALOG_MINIMIZED_DATA_TEST_ID, children: _jsx(KdaDialogFloatingStatusBar, { titleElementId: accessibilityConfig.descriptionElementId, status: status, onClose: onClose }) })) : (_jsx(Dialog, { className: cx(dialogBaseClassName, "gd-kda-dialog--expanded"), closeOnEscape: !state.attributesDropdownOpen && !state.addFilterDropdownOpen, isModal: true, accessibilityConfig: {
|
|
51
|
+
...accessibilityConfig,
|
|
52
|
+
title: undefined,
|
|
53
|
+
}, displayCloseButton: displayCloseButton, onClose: onClose, CloseButton: KdaDialogControls, dataTestId: KDA_DIALOG_EXPANDED_DATA_TEST_ID, children: _jsx(KdaDialogSections, { header: _jsx(KdaHeader, { titleId: accessibilityConfig.descriptionElementId, title: accessibilityConfig.title, bars: _jsxs(_Fragment, { children: [_jsx(MetricsBar, {}), _jsx(FiltersBar, {})] }) }), content: _jsx(KdaContent, { contentError: (err) => (_jsx(KdaErrorComponent, { type: KdaErrorType.Items, error: err })), leftContent: _jsx(KeyDriversPanel, { detailsId: detailsId }), leftLoader: _jsx(KeyDriversPanel, { detailsId: detailsId, loading: true }), rightContent: _jsx(KeyDriversOverview, { detailsId: detailsId }), rightLoader: _jsx(KeyDriversOverview, { loading: true }), rightError: (err) => (_jsx(KdaErrorComponent, { type: KdaErrorType.Details, error: err })) }), footer: _jsx(KdaFooter, { content: _jsx(KeyDriversFooter, {}), onClose: onClose }) }) })) }));
|
|
46
54
|
}
|
|
47
55
|
//# sourceMappingURL=KdaDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialog.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialog.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"KdaDialog.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export type KdaDialogActionButtonsSize = "small" | "medium";
|
|
2
2
|
export interface IKdaDialogActionButtonsProps {
|
|
3
3
|
size: KdaDialogActionButtonsSize;
|
|
4
|
+
status?: "done" | "error" | string;
|
|
5
|
+
titleElementId?: string;
|
|
4
6
|
onClose?: () => void;
|
|
5
7
|
className?: string;
|
|
6
8
|
}
|
|
@@ -9,5 +11,5 @@ export interface IKdaDialogActionButtonsProps {
|
|
|
9
11
|
*
|
|
10
12
|
* @internal
|
|
11
13
|
*/
|
|
12
|
-
export declare function KdaDialogActionButtons({ size, onClose, className }: IKdaDialogActionButtonsProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function KdaDialogActionButtons({ size, onClose, className, status, titleElementId, }: IKdaDialogActionButtonsProps): import("react/jsx-runtime").JSX.Element;
|
|
13
15
|
//# sourceMappingURL=KdaDialogActionButtons.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogActionButtons.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogActionButtons.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,4BAA4B;IACzC,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"KdaDialogActionButtons.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogActionButtons.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,4BAA4B;IACzC,IAAI,EAAE,0BAA0B,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,cAAc,GACjB,EAAE,4BAA4B,2CA2B9B"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2025-2026 GoodData Corporation
|
|
3
3
|
import cx from "classnames";
|
|
4
|
-
import { useIntl } from "react-intl";
|
|
5
|
-
import { UiIconButton } from "@gooddata/sdk-ui-kit";
|
|
4
|
+
import { defineMessages, useIntl } from "react-intl";
|
|
5
|
+
import { UiButton, UiIconButton } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { useKdaState } from "../providers/KdaState.js";
|
|
7
7
|
/**
|
|
8
8
|
* Renders the KDA dialog actions (expand/minimize toggle + divider + close).
|
|
9
9
|
*
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
|
-
export function KdaDialogActionButtons({ size, onClose, className }) {
|
|
12
|
+
export function KdaDialogActionButtons({ size, onClose, className, status, titleElementId, }) {
|
|
13
13
|
const intl = useIntl();
|
|
14
14
|
const { state, setState } = useKdaState();
|
|
15
15
|
const { isMinimized } = state;
|
|
@@ -19,10 +19,21 @@ export function KdaDialogActionButtons({ size, onClose, className }) {
|
|
|
19
19
|
const handleToggle = () => {
|
|
20
20
|
setState({ isMinimized: !isMinimized });
|
|
21
21
|
};
|
|
22
|
-
return (_jsx(KdaDialogActionButtonsView, { className: className, size: size, isMinimized: isMinimized, expandLabel: expandLabel, shrinkLabel: shrinkLabel, closeLabel: closeLabel, onToggle: handleToggle, onClose: onClose }));
|
|
22
|
+
return (_jsx(KdaDialogActionButtonsView, { className: className, status: status, size: size, titleElementId: titleElementId, isMinimized: isMinimized, expandLabel: expandLabel, shrinkLabel: shrinkLabel, closeLabel: closeLabel, onToggle: handleToggle, onClose: onClose }));
|
|
23
23
|
}
|
|
24
|
+
const buttonMessages = defineMessages({
|
|
25
|
+
done: { id: "kdaDialog.floatingStatus.done.opener" },
|
|
26
|
+
error: { id: "kdaDialog.floatingStatus.error.opener" },
|
|
27
|
+
});
|
|
24
28
|
function KdaDialogActionButtonsView(props) {
|
|
25
|
-
const { size, isMinimized, expandLabel, shrinkLabel, closeLabel, onToggle, onClose, className } = props;
|
|
26
|
-
|
|
29
|
+
const { size, status, isMinimized, expandLabel, titleElementId, shrinkLabel, closeLabel, onToggle, onClose, className, } = props;
|
|
30
|
+
const intl = useIntl();
|
|
31
|
+
const text = status && buttonMessages[status] ? intl.formatMessage(buttonMessages[status]) : "";
|
|
32
|
+
const isFinished = status === "done" || status === "error";
|
|
33
|
+
return (_jsxs("div", { className: cx("gd-kda-dialog-action-buttons", `gd-kda-dialog-action-buttons--size-${size}`, className), children: [_jsx("div", { className: cx("gd-kda-dialog-action-buttons__button", isMinimized ? "s-kda-dialog-expand-button" : "s-kda-dialog-minimize-button", status), children: isMinimized && isFinished ? (_jsx("div", { className: "gd-kda-dialog-action-buttons__button__open", children: _jsx(UiButton, { label: text, accessibilityConfig: {
|
|
34
|
+
ariaDescribedBy: titleElementId,
|
|
35
|
+
}, variant: "tooltip", size: "medium", onClick: onToggle }) })) : (_jsx(UiIconButton, { label: isMinimized ? expandLabel : shrinkLabel, icon: isMinimized ? "expand" : "shrink", accessibilityConfig: {
|
|
36
|
+
ariaDescribedBy: titleElementId,
|
|
37
|
+
}, iconColor: "complementary-7", variant: "tertiary", size: size, onClick: onToggle })) }), _jsx("div", { className: cx("gd-kda-dialog-action-buttons__divider", status) }), _jsx("div", { className: cx("gd-kda-dialog-action-buttons__button", "s-dialog-close-button", "s-kda-dialog-close-button", status), children: _jsx(UiIconButton, { label: closeLabel, icon: "cross", variant: "tertiary", size: size, onClick: onClose, iconColor: isFinished ? "complementary-0" : "complementary-7" }) })] }));
|
|
27
38
|
}
|
|
28
39
|
//# sourceMappingURL=KdaDialogActionButtons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogActionButtons.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogActionButtons.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"KdaDialogActionButtons.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogActionButtons.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAA0B,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAYvD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,cAAc,GACa;IAC3B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IAC1C,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAE7E,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,0BAA0B,IACvB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,GAClB,CACL,CAAC;AACN,CAAC;AAED,MAAM,cAAc,GAAyD,cAAc,CAAC;IACxF,IAAI,EAAE,EAAE,EAAE,EAAE,sCAAsC,EAAE;IACpD,KAAK,EAAE,EAAE,EAAE,EAAE,uCAAuC,EAAE;CACzD,CAAC,CAAC;AAWH,SAAS,0BAA0B,CAAC,KAAuC;IACvE,MAAM,EACF,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,GACZ,GAAG,KAAK,CAAC;IACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC;IAE3D,OAAO,CACH,eACI,SAAS,EAAE,EAAE,CACT,8BAA8B,EAC9B,sCAAsC,IAAI,EAAE,EAC5C,SAAS,CACZ,aAED,cACI,SAAS,EAAE,EAAE,CACT,sCAAsC,EACtC,WAAW,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,8BAA8B,EAC3E,MAAM,CACT,YAEA,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,cAAK,SAAS,EAAC,4CAA4C,YACvD,KAAC,QAAQ,IACL,KAAK,EAAE,IAAI,EACX,mBAAmB,EAAE;4BACjB,eAAe,EAAE,cAAc;yBAClC,EACD,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,GACnB,GACA,CACT,CAAC,CAAC,CAAC,CACA,KAAC,YAAY,IACT,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAC9C,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EACvC,mBAAmB,EAAE;wBACjB,eAAe,EAAE,cAAc;qBAClC,EACD,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAC,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,QAAQ,GACnB,CACL,GACC,EACN,cAAK,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,MAAM,CAAC,GAAI,EACvE,cACI,SAAS,EAAE,EAAE,CACT,sCAAsC,EACtC,uBAAuB,EACvB,2BAA2B,EAC3B,MAAM,CACT,YAED,KAAC,YAAY,IACT,KAAK,EAAE,UAAU,EACjB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,GAC/D,GACA,IACJ,CACT,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogController.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogController.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOnE,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,cAAc,CAAC;IACrC;;;OAGG;IACH,2BAA2B,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACvE;AAED,wBAAgB,mBAAmB,CAAC,EAChC,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,WAAW,EACX,2BAA2B,EAC3B,GAAG,WAAW,EACjB,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"KdaDialogController.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogController.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOnE,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,cAAc,CAAC;IACrC;;;OAGG;IACH,2BAA2B,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;CACvE;AAED,wBAAgB,mBAAmB,CAAC,EAChC,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,WAAW,EACX,2BAA2B,EAC3B,GAAG,WAAW,EACjB,EAAE,yBAAyB,kDA2F3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2025-2026 GoodData Corporation
|
|
3
|
-
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { useCallback, useEffect, useId, useState } from "react";
|
|
4
4
|
import { v4 as uuid } from "uuid";
|
|
5
5
|
import { KdaProvider } from "../providers/Kda.js";
|
|
6
6
|
import { KdaDialog } from "./KdaDialog.js";
|
|
@@ -10,6 +10,7 @@ const arbiter = KdaDialogArbiter.getInstance();
|
|
|
10
10
|
export function KdaDialogController({ requestedDefinition, separators, excludeTags, includeTags, onRequestedDefinitionChange, ...dialogProps }) {
|
|
11
11
|
const [activeDefinition, setActiveDefinition] = useState(undefined);
|
|
12
12
|
const [pendingDefinition, setPendingDefinition] = useState(undefined);
|
|
13
|
+
const titleId = useId();
|
|
13
14
|
const isReplaceConfirmationOpen = !!pendingDefinition;
|
|
14
15
|
const [ownerId] = useState(() => uuid());
|
|
15
16
|
const handleDelegatedOpen = useCallback((definition) => {
|
|
@@ -53,7 +54,8 @@ export function KdaDialogController({ requestedDefinition, separators, excludeTa
|
|
|
53
54
|
if (activeDefinition) {
|
|
54
55
|
onRequestedDefinitionChange?.(activeDefinition);
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
+
focusTitleElement(titleId);
|
|
58
|
+
}, [activeDefinition, onRequestedDefinitionChange, titleId]);
|
|
57
59
|
const onConfirmReplace = useCallback(() => {
|
|
58
60
|
if (!pendingDefinition) {
|
|
59
61
|
return;
|
|
@@ -61,10 +63,17 @@ export function KdaDialogController({ requestedDefinition, separators, excludeTa
|
|
|
61
63
|
setActiveDefinition(pendingDefinition);
|
|
62
64
|
setPendingDefinition(undefined);
|
|
63
65
|
onRequestedDefinitionChange?.(pendingDefinition);
|
|
64
|
-
|
|
66
|
+
focusTitleElement(titleId);
|
|
67
|
+
}, [onRequestedDefinitionChange, pendingDefinition, titleId]);
|
|
65
68
|
if (!activeDefinition) {
|
|
66
69
|
return null;
|
|
67
70
|
}
|
|
68
|
-
return (_jsxs(_Fragment, { children: [_jsx(KdaReplaceConfirmationDialog, { isOpen: isReplaceConfirmationOpen, onCancel: onCancelReplace, onConfirm: onConfirmReplace }), _jsx(KdaProvider, { definition: activeDefinition, separators: separators, includeTags: includeTags, excludeTags: excludeTags, children: _jsx(KdaDialog, { ...dialogProps, onClose: onCloseInternal }) })] }));
|
|
71
|
+
return (_jsxs(_Fragment, { children: [_jsx(KdaReplaceConfirmationDialog, { isOpen: isReplaceConfirmationOpen, onCancel: onCancelReplace, onConfirm: onConfirmReplace }), _jsx(KdaProvider, { definition: activeDefinition, separators: separators, includeTags: includeTags, excludeTags: excludeTags, children: _jsx(KdaDialog, { ...dialogProps, titleElementId: titleId, onClose: onCloseInternal }) })] }));
|
|
72
|
+
}
|
|
73
|
+
function focusTitleElement(titleElementId) {
|
|
74
|
+
const titleElement = document.getElementById(titleElementId);
|
|
75
|
+
if (titleElement) {
|
|
76
|
+
titleElement.focus();
|
|
77
|
+
}
|
|
69
78
|
}
|
|
70
79
|
//# sourceMappingURL=KdaDialogController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogController.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogController.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"KdaDialogController.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogController.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogControls.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogControls.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAIpE;;GAEG;AACH,eAAO,MAAM,iBAAiB,+
|
|
1
|
+
{"version":3,"file":"KdaDialogControls.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogControls.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAIpE;;GAEG;AACH,eAAO,MAAM,iBAAiB,+DAU5B,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { KdaDialogActionButtons } from "./KdaDialogActionButtons.js";
|
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
export const KdaDialogControls = memo(function KdaDialogControls(props) {
|
|
10
|
-
const { className, onClose } = props;
|
|
11
|
-
return (_jsx(KdaDialogActionButtons, { className: cx("gd-dialog-close", "gd-kda-dialog-controls", className), size: "medium", onClose: onClose }));
|
|
10
|
+
const { className, accessibilityConfig, onClose } = props;
|
|
11
|
+
return (_jsx(KdaDialogActionButtons, { className: cx("gd-dialog-close", "gd-kda-dialog-controls", className), titleElementId: accessibilityConfig?.descriptionElementId, size: "medium", onClose: onClose }));
|
|
12
12
|
});
|
|
13
13
|
//# sourceMappingURL=KdaDialogControls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogControls.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogControls.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAC,KAA8B;IAC3F,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"KdaDialogControls.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogControls.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAC,KAA8B;IAC3F,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1D,OAAO,CACH,KAAC,sBAAsB,IACnB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,SAAS,CAAC,EACrE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EACzD,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,GAClB,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import type { KdaAsyncStatus } from "../internalTypes.js";
|
|
2
|
+
type KdaFloatingStatus = "step01" | "step02" | "done" | "error";
|
|
1
3
|
interface IKdaDialogFloatingStatusBarProps {
|
|
2
4
|
titleElementId: string;
|
|
5
|
+
status: KdaFloatingStatus;
|
|
3
6
|
onClose?: () => void;
|
|
4
7
|
}
|
|
5
8
|
/**
|
|
6
9
|
* @internal
|
|
7
10
|
*/
|
|
8
|
-
export declare function KdaDialogFloatingStatusBar({ onClose, titleElementId }: IKdaDialogFloatingStatusBarProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function KdaDialogFloatingStatusBar({ onClose, status, titleElementId, }: IKdaDialogFloatingStatusBarProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function getFloatingStatus(relevantStatus: KdaAsyncStatus, itemsStatus: KdaAsyncStatus, selectedStatus: KdaAsyncStatus): KdaFloatingStatus;
|
|
9
13
|
export {};
|
|
10
14
|
//# sourceMappingURL=KdaDialogFloatingStatusBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogFloatingStatusBar.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KdaDialogFloatingStatusBar.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,KAAK,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAShE,UAAU,gCAAgC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,EACvC,OAAO,EACP,MAAM,EACN,cAAc,GACjB,EAAE,gCAAgC,2CAwBlC;AAYD,wBAAgB,iBAAiB,CAC7B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,cAAc,GAC/B,iBAAiB,CAgBnB"}
|
|
@@ -3,7 +3,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { defineMessages, useIntl } from "react-intl";
|
|
4
4
|
import { LoadingSpinner, UiIcon } from "@gooddata/sdk-ui-kit";
|
|
5
5
|
import { KdaDialogActionButtons } from "./KdaDialogActionButtons.js";
|
|
6
|
-
import { useKdaState } from "../providers/KdaState.js";
|
|
7
6
|
const floatingStatusMessages = defineMessages({
|
|
8
7
|
step01: { id: "kdaDialog.floatingStatus.step1" },
|
|
9
8
|
step02: { id: "kdaDialog.floatingStatus.step2" },
|
|
@@ -13,23 +12,21 @@ const floatingStatusMessages = defineMessages({
|
|
|
13
12
|
/**
|
|
14
13
|
* @internal
|
|
15
14
|
*/
|
|
16
|
-
export function KdaDialogFloatingStatusBar({ onClose, titleElementId }) {
|
|
15
|
+
export function KdaDialogFloatingStatusBar({ onClose, status, titleElementId, }) {
|
|
17
16
|
const intl = useIntl();
|
|
18
|
-
const { state } = useKdaState();
|
|
19
|
-
const status = getFloatingStatus(state.relevantStatus, state.itemsStatus, state.selectedStatus);
|
|
20
17
|
const statusText = intl.formatMessage(floatingStatusMessages[status]);
|
|
21
|
-
return (_jsxs("div", { className: "gd-kda-floating-status-bar", children: [_jsx("div", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: status === "done" || status === "error" ? statusText : null }), _jsxs("div", { className: "gd-kda-floating-status-bar__content", children: [_jsx(StatusIndicator, { status: status }), _jsx("p", { className: "gd-kda-floating-status-bar__text", id: titleElementId, children: statusText })] }), _jsx(KdaDialogActionButtons, { size: "small", onClose: onClose })] }));
|
|
18
|
+
return (_jsxs("div", { className: "gd-kda-floating-status-bar", children: [_jsx("div", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: status === "done" || status === "error" ? statusText : null }), _jsxs("div", { className: "gd-kda-floating-status-bar__content", children: [_jsx(StatusIndicator, { status: status }), _jsx("p", { className: "gd-kda-floating-status-bar__text", id: titleElementId, tabIndex: 0, children: statusText })] }), _jsx(KdaDialogActionButtons, { size: "small", status: status, titleElementId: titleElementId, onClose: onClose })] }));
|
|
22
19
|
}
|
|
23
20
|
function StatusIndicator({ status }) {
|
|
24
21
|
if (status === "error") {
|
|
25
|
-
return _jsx(UiIcon, { type: "crossCircle", color: "
|
|
22
|
+
return _jsx(UiIcon, { type: "crossCircle", color: "currentColor", size: 16, layout: "block" });
|
|
26
23
|
}
|
|
27
24
|
if (status === "done") {
|
|
28
|
-
return _jsx(UiIcon, { type: "checkCircle", color: "
|
|
25
|
+
return _jsx(UiIcon, { type: "checkCircle", color: "currentColor", size: 16, layout: "block" });
|
|
29
26
|
}
|
|
30
|
-
return _jsx(LoadingSpinner, { className: "small gd-kda-floating-status-bar__spinner", color: "
|
|
27
|
+
return _jsx(LoadingSpinner, { className: "small gd-kda-floating-status-bar__spinner", color: "currentColor" });
|
|
31
28
|
}
|
|
32
|
-
function getFloatingStatus(relevantStatus, itemsStatus, selectedStatus) {
|
|
29
|
+
export function getFloatingStatus(relevantStatus, itemsStatus, selectedStatus) {
|
|
33
30
|
if (relevantStatus === "error" || itemsStatus === "error" || selectedStatus === "error") {
|
|
34
31
|
return "error";
|
|
35
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialogFloatingStatusBar.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAA0B,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"KdaDialogFloatingStatusBar.js","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AAErC,OAAO,EAA0B,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAIrE,MAAM,sBAAsB,GAAiD,cAAc,CAAC;IACxF,MAAM,EAAE,EAAE,EAAE,EAAE,gCAAgC,EAAE;IAChD,MAAM,EAAE,EAAE,EAAE,EAAE,gCAAgC,EAAE;IAChD,IAAI,EAAE,EAAE,EAAE,EAAE,+BAA+B,EAAE;IAC7C,KAAK,EAAE,EAAE,EAAE,EAAE,gCAAgC,EAAE;CAClD,CAAC,CAAC;AAQH;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACvC,OAAO,EACP,MAAM,EACN,cAAc,GACiB;IAC/B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtE,OAAO,CACH,eAAK,SAAS,EAAC,4BAA4B,aACvC,cAAK,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,eAAW,QAAQ,iBAAa,MAAM,YACvE,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAC1D,EACN,eAAK,SAAS,EAAC,qCAAqC,aAChD,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,GAAI,EACnC,YAAG,SAAS,EAAC,kCAAkC,EAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,YAC1E,UAAU,GACX,IACF,EACN,KAAC,sBAAsB,IACnB,IAAI,EAAC,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,GAClB,IACA,CACT,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,MAAM,EAAiC;IAC9D,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,KAAC,MAAM,IAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,OAAO,GAAG,CAAC;IACvF,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,KAAC,MAAM,IAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,OAAO,GAAG,CAAC;IACvF,CAAC;IACD,OAAO,KAAC,cAAc,IAAC,SAAS,EAAC,2CAA2C,EAAC,KAAK,EAAC,cAAc,GAAG,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,cAA8B,EAC9B,WAA2B,EAC3B,cAA8B;IAE9B,IAAI,cAAc,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;QACtF,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IACI,WAAW,KAAK,SAAS;QACzB,WAAW,KAAK,SAAS;QACzB,cAAc,KAAK,SAAS;QAC5B,cAAc,KAAK,SAAS,EAC9B,CAAC;QACC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare function useKdaDialogAccessibility(metric: string, isMinimized: boolean): {
|
|
2
|
-
|
|
1
|
+
export declare function useKdaDialogAccessibility(metric: string, isMinimized: boolean, titleElementId?: string): {
|
|
2
|
+
descriptionElementId: string;
|
|
3
3
|
title: string;
|
|
4
4
|
isModal: boolean;
|
|
5
5
|
dialogId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKdaDialogAccessibility.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/dialog/hooks/useKdaDialogAccessibility.ts"],"names":[],"mappings":"AAMA,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useKdaDialogAccessibility.d.ts","sourceRoot":"","sources":["../../../../src/kdaDialog/dialog/hooks/useKdaDialogAccessibility.ts"],"names":[],"mappings":"AAMA,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM;;;;;;;;EAyBtG"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useId, useMemo } from "react";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
|
-
export function useKdaDialogAccessibility(metric, isMinimized) {
|
|
4
|
+
export function useKdaDialogAccessibility(metric, isMinimized, titleElementId) {
|
|
5
5
|
const intl = useIntl();
|
|
6
|
-
const
|
|
6
|
+
const generatedTitleElementId = useId();
|
|
7
|
+
const titleId = titleElementId ?? generatedTitleElementId;
|
|
7
8
|
return useMemo(() => {
|
|
8
9
|
return {
|
|
9
|
-
|
|
10
|
+
descriptionElementId: titleId,
|
|
10
11
|
title: intl.formatMessage({
|
|
11
12
|
id: "kdaDialog.dialog.title",
|
|
12
13
|
}, {
|
|
@@ -20,6 +21,6 @@ export function useKdaDialogAccessibility(metric, isMinimized) {
|
|
|
20
21
|
}),
|
|
21
22
|
},
|
|
22
23
|
};
|
|
23
|
-
}, [intl, metric,
|
|
24
|
+
}, [intl, metric, titleId, isMinimized]);
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=useKdaDialogAccessibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKdaDialogAccessibility.js","sourceRoot":"","sources":["../../../../src/kdaDialog/dialog/hooks/useKdaDialogAccessibility.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,WAAoB;
|
|
1
|
+
{"version":3,"file":"useKdaDialogAccessibility.js","sourceRoot":"","sources":["../../../../src/kdaDialog/dialog/hooks/useKdaDialogAccessibility.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,WAAoB,EAAE,cAAuB;IACnG,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,uBAAuB,GAAG,KAAK,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,cAAc,IAAI,uBAAuB,CAAC;IAE1D,OAAO,OAAO,CAAC,GAAG,EAAE;QAChB,OAAO;YACH,oBAAoB,EAAE,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,aAAa,CACrB;gBACI,EAAE,EAAE,wBAAwB;aAC/B,EACD;gBACI,MAAM;aACT,CACJ;YACD,OAAO,EAAE,CAAC,WAAW;YACrB,QAAQ,EAAE,eAAe;YACzB,WAAW,EAAE;gBACT,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;oBAC1B,EAAE,EAAE,6BAA6B;iBACpC,CAAC;aACL;SACJ,CAAC;IACN,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
package/esm/kdaDialog/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type IAttributeDescriptorBody, type IDashboardAttributeFilter, type IMeasure, type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type OverlayController } from "@gooddata/sdk-ui-kit";
|
|
2
3
|
/**
|
|
3
4
|
* @internal
|
|
4
5
|
*/
|
|
@@ -15,6 +16,15 @@ export interface IKdaDialogProps {
|
|
|
15
16
|
* Whether to show the close button
|
|
16
17
|
*/
|
|
17
18
|
showCloseButton?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Parent overlay controller. If provided, the dialog will be rendered by this controller.
|
|
21
|
+
* Otherwise, the dialog will be rendered with na internal overlay controller.
|
|
22
|
+
*/
|
|
23
|
+
parentOverlayController?: OverlayController;
|
|
24
|
+
/**
|
|
25
|
+
* Title element id
|
|
26
|
+
*/
|
|
27
|
+
titleElementId?: string;
|
|
18
28
|
/**
|
|
19
29
|
* Custom close button handler
|
|
20
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kdaDialog/types.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACb,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kdaDialog/types.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACb,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,iBAAiB,CAAC;IAE5C;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACtC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,2BAA2B,GAAG,iBAAiB,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC7C,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAE9B,CAAC,SAAS,QAAQ,GAChB,CAAC,GACD,CAAC,SAAS,MAAM,GACd,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAChC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC"}
|
package/esm/kdaDialog/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/kdaDialog/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/kdaDialog/types.ts"],"names":[],"mappings":"AAAA,qCAAqC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type DashboardSummaryWorkflowStatus } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
import { type IDashboardLayout } from "@gooddata/sdk-model";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function isDashboardSummaryWorkflowStatus(status: unknown): status is DashboardSummaryWorkflowStatus;
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function hasMacroInLayout<TWidget>(layout: IDashboardLayout<TWidget> | undefined, macro: string): boolean;
|
|
11
|
+
//# sourceMappingURL=dashboardSummaryWorkflowUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboardSummaryWorkflowUtils.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/dashboard/dashboardSummaryWorkflowUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,KAAK,gBAAgB,EAAuC,MAAM,qBAAqB,CAAC;AAEjG;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,8BAA8B,CAE1G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EACpC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,SAAS,EAC7C,KAAK,EAAE,MAAM,GACd,OAAO,CAoBT"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { isDashboardLayout, isRichTextWidget } from "@gooddata/sdk-model";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export function isDashboardSummaryWorkflowStatus(status) {
|
|
7
|
+
return status === "RUNNING" || status === "COMPLETED" || status === "FAILED" || status === "CANCELLED";
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export function hasMacroInLayout(layout, macro) {
|
|
13
|
+
if (!layout) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
for (const section of layout.sections) {
|
|
17
|
+
for (const item of section.items) {
|
|
18
|
+
const widget = item.widget;
|
|
19
|
+
if (isRichTextWidget(widget) && (widget.content ?? "").includes(macro)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (isDashboardLayout(widget) && hasMacroInLayout(widget, macro)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=dashboardSummaryWorkflowUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboardSummaryWorkflowUtils.js","sourceRoot":"","sources":["../../../../src/model/commandHandlers/dashboard/dashboardSummaryWorkflowUtils.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAyB,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEjG;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,MAAe;IAC5D,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AAC3G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC5B,MAA6C,EAC7C,KAAa;IAEb,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAE3B,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrE,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SagaIterator } from "redux-saga";
|
|
2
|
+
import { type DashboardContext } from "../../types/commonTypes.js";
|
|
3
|
+
export declare function newDashboardSummaryWorkflowWorker(): (ctx: DashboardContext) => SagaIterator<void>;
|
|
4
|
+
//# sourceMappingURL=dashboardSummaryWorkflowWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboardSummaryWorkflowWorker.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB/C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,wBAAgB,iCAAiC,KACG,KAAK,gBAAgB,KAAG,YAAY,CAAC,IAAI,CAAC,CAS7F"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { call, delay, put, select, takeEvery } from "redux-saga/effects";
|
|
3
|
+
import { hasMacroInLayout, isDashboardSummaryWorkflowStatus } from "./dashboardSummaryWorkflowUtils.js";
|
|
4
|
+
import { newDashboardEventPredicate } from "../../events/index.js";
|
|
5
|
+
import { accessibleDashboardsActions } from "../../store/accessibleDashboards/index.js";
|
|
6
|
+
import { DASHBOARD_SUMMARY_MACRO } from "../../store/dashboardSummaryWorkflow/constants.js";
|
|
7
|
+
import { selectDashboardSummaryWorkflowInfoByDashboardId } from "../../store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.js";
|
|
8
|
+
import { dashboardSummaryWorkflowActions } from "../../store/dashboardSummaryWorkflow/index.js";
|
|
9
|
+
import { listedDashboardsActions } from "../../store/listedDashboards/index.js";
|
|
10
|
+
import { selectBasicLayout } from "../../store/tabs/layout/layoutSelectors.js";
|
|
11
|
+
import { selectTabs } from "../../store/tabs/tabsSelectors.js";
|
|
12
|
+
export function newDashboardSummaryWorkflowWorker() {
|
|
13
|
+
return function* dashboardSummaryWorkflowWorker(ctx) {
|
|
14
|
+
// Wait for init so selectors are usable
|
|
15
|
+
yield takeEvery(newDashboardEventPredicate("GDC.DASH/EVT.SAVED"), function* onDashboardSaved(event) {
|
|
16
|
+
yield call(handleDashboardSaved, ctx, event);
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function* handleDashboardSaved(ctx, event) {
|
|
21
|
+
const dashboardId = event.payload.dashboard.identifier;
|
|
22
|
+
const hasSummaryMacro = yield call(selectHasSummaryMacro);
|
|
23
|
+
if (!hasSummaryMacro) {
|
|
24
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const dashboardsService = ctx.backend.workspace(ctx.workspace).dashboards();
|
|
28
|
+
const startWorkflow = dashboardsService.startDashboardSummaryWorkflow?.bind(dashboardsService);
|
|
29
|
+
if (!startWorkflow) {
|
|
30
|
+
// Backend does not support this tiger-specific extension - keep behavior deterministic.
|
|
31
|
+
yield put(dashboardSummaryWorkflowActions.statusUpdated({ dashboardId, status: "FAILED" }));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
yield put(dashboardSummaryWorkflowActions.startRequested({ dashboardId }));
|
|
35
|
+
let started;
|
|
36
|
+
try {
|
|
37
|
+
started = yield call(startWorkflow, dashboardId);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Best-effort: do not break dashboard UX
|
|
41
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!started?.runId || !started?.status) {
|
|
45
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
yield put(dashboardSummaryWorkflowActions.started({
|
|
49
|
+
dashboardId,
|
|
50
|
+
runId: started.runId,
|
|
51
|
+
status: started.status,
|
|
52
|
+
}));
|
|
53
|
+
if (started.status === "RUNNING") {
|
|
54
|
+
yield call(pollUntilNotRunning, dashboardsService, dashboardId, started.runId);
|
|
55
|
+
}
|
|
56
|
+
// After completion (SUCCESS or otherwise), reload listed dashboards so the latest summary is available.
|
|
57
|
+
yield call(refreshDashboardsList, ctx);
|
|
58
|
+
const workflowInfo = yield select(selectDashboardSummaryWorkflowInfoByDashboardId(dashboardId));
|
|
59
|
+
if (workflowInfo?.status === "AWAITING_REFRESH") {
|
|
60
|
+
yield put(dashboardSummaryWorkflowActions.statusUpdated({
|
|
61
|
+
dashboardId,
|
|
62
|
+
status: "COMPLETED",
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function* pollUntilNotRunning(dashboardsService, dashboardId, runId) {
|
|
67
|
+
const timeoutMs = 5 * 60 * 1000; // 5 minutes
|
|
68
|
+
const delayMs = 3000;
|
|
69
|
+
const startedAt = Date.now();
|
|
70
|
+
const getStatus = dashboardsService.getDashboardSummaryWorkflowStatus?.bind(dashboardsService);
|
|
71
|
+
if (!getStatus) {
|
|
72
|
+
// Cannot poll, clear state so UI does not stay in "generating shortly" forever.
|
|
73
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
while (Date.now() - startedAt < timeoutMs) {
|
|
77
|
+
let statusResult;
|
|
78
|
+
try {
|
|
79
|
+
statusResult = yield call(getStatus, runId);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Polling stopped unexpectedly, clear state so UI falls back to "reload please".
|
|
83
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const status = statusResult?.status;
|
|
87
|
+
if (!isDashboardSummaryWorkflowStatus(status)) {
|
|
88
|
+
// Unexpected response - do not keep RUNNING in state indefinitely.
|
|
89
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
yield put(dashboardSummaryWorkflowActions.statusUpdated({
|
|
93
|
+
dashboardId,
|
|
94
|
+
status: status === "COMPLETED" ? "AWAITING_REFRESH" : status,
|
|
95
|
+
}));
|
|
96
|
+
if (status !== "RUNNING") {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
yield delay(delayMs);
|
|
100
|
+
}
|
|
101
|
+
// Timeout reached while backend still reports RUNNING (or we couldn't observe completion).
|
|
102
|
+
// Clear workflow state so UI falls back to the non-misleading "reload to see the result" message.
|
|
103
|
+
yield put(dashboardSummaryWorkflowActions.reset({ dashboardId }));
|
|
104
|
+
}
|
|
105
|
+
function* refreshDashboardsList(ctx) {
|
|
106
|
+
const loader = ctx.backend.workspace(ctx.workspace).dashboards();
|
|
107
|
+
const dashboards = yield call([loader, loader.getDashboards]);
|
|
108
|
+
yield put(listedDashboardsActions.setListedDashboards(dashboards));
|
|
109
|
+
yield put(accessibleDashboardsActions.setAccessibleDashboards(dashboards));
|
|
110
|
+
}
|
|
111
|
+
function* selectHasSummaryMacro() {
|
|
112
|
+
const rootLayout = yield select(selectBasicLayout);
|
|
113
|
+
const tabs = yield select(selectTabs);
|
|
114
|
+
const isSummaryInRoot = hasMacroInLayout(rootLayout, DASHBOARD_SUMMARY_MACRO);
|
|
115
|
+
if (isSummaryInRoot) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return (tabs ?? []).some((tab) => {
|
|
119
|
+
return hasMacroInLayout(tab.layout?.layout, DASHBOARD_SUMMARY_MACRO);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=dashboardSummaryWorkflowWorker.js.map
|