@gooddata/sdk-ui-dashboard 11.43.0-alpha.1 → 11.43.0-alpha.2
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 +3 -3
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.js +10 -5
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +1 -2
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.d.ts.map +1 -1
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.js +11 -13
- package/esm/presentation/topBar/menuButton/DefaultMenuButton.d.ts.map +1 -1
- package/esm/presentation/topBar/menuButton/DefaultMenuButton.js +10 -19
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js +3 -4
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.js +1 -1
- package/package.json +20 -20
package/NOTICE
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
|
|
9
9
|
|
|
10
|
-
Date generated: 2026-6-
|
|
10
|
+
Date generated: 2026-6-19
|
|
11
11
|
|
|
12
|
-
Revision ID:
|
|
12
|
+
Revision ID: 3fa6914b6550194ce069d8f1ab41a8a22d3bf58a
|
|
13
13
|
|
|
14
14
|
================================================================================
|
|
15
15
|
================================================================================
|
|
@@ -38519,4 +38519,4 @@ POSSIBILITY OF SUCH DAMAGE.
|
|
|
38519
38519
|
--------------------------------------------------------------------------------
|
|
38520
38520
|
--------------------------------------------------------------------------------
|
|
38521
38521
|
|
|
38522
|
-
Report Generated by FOSSA on 2026-6-
|
|
38522
|
+
Report Generated by FOSSA on 2026-6-19
|
package/esm/__version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.43.0-alpha.
|
|
1
|
+
export declare const LIB_VERSION = "11.43.0-alpha.2";
|
|
2
2
|
export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
3
3
|
export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
4
4
|
//# sourceMappingURL=__version.d.ts.map
|
package/esm/__version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2021 GoodData Corporation
|
|
2
2
|
// DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
|
|
3
|
-
export const LIB_VERSION = "11.43.0-alpha.
|
|
3
|
+
export const LIB_VERSION = "11.43.0-alpha.2";
|
|
4
4
|
export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
5
5
|
export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDrillToCustomUrl.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAEH,KAAK,4BAA4B,EACjC,KAAK,mCAAmC,EAExC,KAAK,iBAAiB,IAAI,sBAAsB,
|
|
1
|
+
{"version":3,"file":"resolveDrillToCustomUrl.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
import stringify from "json-stable-stringify";
|
|
3
3
|
import { groupBy } from "lodash-es";
|
|
4
4
|
import { all, call, select } from "redux-saga/effects";
|
|
5
|
-
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardFilterObjRef, filterAttributeElements, filterObjRef, idRef, insightFilters as insightDefinitionFilters, insightId, isArbitraryAttributeFilter, isAttributeDescriptor, isAttributeElementsByValue, isComparisonCondition, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardTextAttributeFilter, isIdentifierRef, isMeasureValueFilter, isNegativeAttributeFilter, isRangeCondition, isTextAttributeFilter, isUriRef, measureValueFilterConditions, measureValueFilterMeasure, } from "@gooddata/sdk-model";
|
|
5
|
+
import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardFilterObjRef, filterAttributeElements, filterObjRef, idRef, insightFilters as insightDefinitionFilters, insightId, isArbitraryAttributeFilter, isAttributeDescriptor, isAttributeElementsByValue, isAttributeFilter, isComparisonCondition, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardTextAttributeFilter, isIdentifierRef, isMeasureValueFilter, isNegativeAttributeFilter, isRangeCondition, isTextAttributeFilter, isUriRef, measureValueFilterConditions, measureValueFilterMeasure, } from "@gooddata/sdk-model";
|
|
6
6
|
import { getAttributeIdentifiersPlaceholdersFromUrl, getDashboardAttributeFilterPlaceholdersFromUrl, getDashboardMeasureValueFilterPlaceholdersFromUrl, getInsightAttributeFilterPlaceholdersFromUrl, getInsightMeasureValueFilterPlaceholdersFromUrl, } from "@gooddata/sdk-model/internal";
|
|
7
7
|
import { isDrillIntersectionAttributeItem, } from "@gooddata/sdk-ui";
|
|
8
8
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
9
|
-
import { queryWidgetFilters } from "../../queries/widgets.js";
|
|
10
|
-
import { query } from "../../store/_infra/queryCall.js";
|
|
11
9
|
import { selectAllCatalogDisplayFormsMap, selectAllCatalogMeasuresMap, selectCatalogDateAttributes, } from "../../store/catalog/catalogSelectors.js";
|
|
12
10
|
import { selectEnableMeasureValueFilterKD } from "../../store/config/configSelectors.js";
|
|
13
11
|
import { selectInsightByRef } from "../../store/insights/insightsSelectors.js";
|
|
@@ -277,10 +275,17 @@ export function* getInsightAttributeFilterReplacements(url, widgetRef) {
|
|
|
277
275
|
if (attributeFilterPlaceholders.length === 0) {
|
|
278
276
|
return [];
|
|
279
277
|
}
|
|
280
|
-
|
|
278
|
+
// The {attribute_filter_selection(...)} placeholder is scoped to the visualization, so it reads the
|
|
279
|
+
// insight's own filters. Resolving it against the widget's effective filters would let a dashboard
|
|
280
|
+
// filter on the same attribute take precedence and override the insight's selection.
|
|
281
|
+
const widget = yield select(selectAnalyticalWidgetByRef(widgetRef));
|
|
282
|
+
const insight = yield select(selectInsightByRef(widget.insight));
|
|
283
|
+
const insightAttributeFilters = insight
|
|
284
|
+
? insightDefinitionFilters(insight).filter(isAttributeFilter)
|
|
285
|
+
: [];
|
|
281
286
|
const catalogDisplayForms = yield select(selectAllCatalogDisplayFormsMap);
|
|
282
287
|
return attributeFilterPlaceholders.map(({ placeholder: toBeReplaced, ref }) => {
|
|
283
|
-
const usedFilter =
|
|
288
|
+
const usedFilter = insightAttributeFilters.find((filter) => {
|
|
284
289
|
const filterRef = filterObjRef(filter);
|
|
285
290
|
const df = filterRef && catalogDisplayForms.get(filterRef);
|
|
286
291
|
return df && areObjRefsEqual(idRef(df.id), ref);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAlertingDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.tsx"],"names":[],"mappings":"AA2DA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA2BxD,wBAAgB,sBAAsB,CAAC,EACnC,WAAW,EACX,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EAChB,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"DefaultAlertingDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/_staging/alerting/DefaultAlertingDialog/DefaultAlertingDialog.tsx"],"names":[],"mappings":"AA2DA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA2BxD,wBAAgB,sBAAsB,CAAC,EACnC,WAAW,EACX,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EAChB,EAAE,oBAAoB,2CA+kBtB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,2CAMhE"}
|
|
@@ -125,9 +125,8 @@ export function AlertingDialogRenderer({ alertToEdit, users, usersError, notific
|
|
|
125
125
|
message: validationErrorMessage,
|
|
126
126
|
severity: isInvalidConnectionToInsight ? "error" : "warning",
|
|
127
127
|
}),
|
|
128
|
-
!!thresholdErrorMessage && createInvalidDatapoint({ message: thresholdErrorMessage }),
|
|
129
128
|
]);
|
|
130
|
-
}, [validationErrorMessage,
|
|
129
|
+
}, [validationErrorMessage, isInvalidConnectionToInsight, setInvalidDatapoints]);
|
|
131
130
|
const helpTextId = isMobileView()
|
|
132
131
|
? defineMessage({ id: "dialogs.alerting.footer.title.short" }).id
|
|
133
132
|
: defineMessage({ id: "dialogs.alerting.footer.title" }).id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomUrlEditor.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,SAAS,EAAW,MAAM,YAAY,CAAC;AAEvE,OAAO,EAKH,KAAK,MAAM,EAad,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"CustomUrlEditor.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,SAAS,EAAW,MAAM,YAAY,CAAC;AAEvE,OAAO,EAKH,KAAK,MAAM,EAad,MAAM,qBAAqB,CAAC;AA6B7B,OAAO,EAAE,KAAK,cAAc,EAA4B,MAAM,gBAAgB,CAAC;AAG/E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,uBAAuB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5C,IAAI,EAAE,SAAS,CAAC;CACnB;AAsCD,wBAAgB,QAAQ,CAAC,EACrB,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,uBAAuB,EAC1B,EAAE,cAAc,kDAoBhB;AAwHD,UAAU,eAAe;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAmLD,MAAM,WAAW,qBAAqB;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACpD,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,sCAAsC,EAAE,MAAM,EAAE,CAAC;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;IACjC,4BAA4B,EAAE,OAAO,CAAC;IACtC,uBAAuB,EAAE,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACrB;AAmHD,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,2CAkB3D"}
|
|
@@ -9,13 +9,11 @@ import { filterObjRef, idRef, insightFilters as insightDefinitionFilters, isArbi
|
|
|
9
9
|
import { ConfirmDialogBase, FullScreenOverlay, Overlay, OverlayController, OverlayControllerProvider, SyntaxHighlightingInput, useMediaQuery, } from "@gooddata/sdk-ui-kit";
|
|
10
10
|
import { dashboardAttributeFilterItemToAttributeFilter } from "../../../../converters/filterConverters.js";
|
|
11
11
|
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
12
|
-
import { useWidgetFilters } from "../../../../model/react/useWidgetFilters.js";
|
|
13
12
|
import { selectAllCatalogDisplayFormsMap, selectAllCatalogMeasuresMap, } from "../../../../model/store/catalog/catalogSelectors.js";
|
|
14
13
|
import { selectEnableMeasureValueFilterKD, selectIsWhiteLabeled, } from "../../../../model/store/config/configSelectors.js";
|
|
15
14
|
import { selectInsightByWidgetRef } from "../../../../model/store/insights/insightsSelectors.js";
|
|
16
15
|
import { selectAttributeFilterConfigsOverrides } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
17
16
|
import { selectFilterContextAttributeFilterItems, selectFilterContextMeasureValueFilters, } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
18
|
-
import { selectFilterableWidgetByRef } from "../../../../model/store/tabs/layout/layoutSelectors.js";
|
|
19
17
|
import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js";
|
|
20
18
|
import { useInvalidFilteringParametersIdentifiers } from "../../../widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.js";
|
|
21
19
|
import { isDrillToCustomUrlConfig } from "../../types.js";
|
|
@@ -291,19 +289,19 @@ function useInsightMeasureValueFilters(widgetRef, enabled) {
|
|
|
291
289
|
}, [enabled, insight]);
|
|
292
290
|
}
|
|
293
291
|
function useSanitizedInsightFilters(widgetRef) {
|
|
294
|
-
const
|
|
295
|
-
const widgetFiltersResult = useWidgetFilters(widget);
|
|
292
|
+
const insight = useDashboardSelector(selectInsightByWidgetRef(widgetRef));
|
|
296
293
|
const sanitizeAttributeFilter = useSanitizeAttributeFilter();
|
|
297
294
|
return useMemo(() => {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
295
|
+
if (!insight) {
|
|
296
|
+
return undefined;
|
|
297
|
+
}
|
|
298
|
+
// Date filters are currently not supported, so filter them out
|
|
299
|
+
return uniqBy(insightDefinitionFilters(insight)
|
|
300
|
+
.filter(isAttributeFilter)
|
|
301
|
+
.map(sanitizeAttributeFilter)
|
|
302
|
+
.filter(isAttributeFilter), // filter out undefined values (eg. filters with removed display forms)
|
|
303
|
+
(f) => serializeObjRef(filterObjRef(f)));
|
|
304
|
+
}, [insight, sanitizeAttributeFilter]);
|
|
307
305
|
}
|
|
308
306
|
function useSanitizedDashboardFilters() {
|
|
309
307
|
// Date filters are currently not supported, so select only attribute filters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultMenuButton.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/DefaultMenuButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,YAAY,EAOpB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultMenuButton.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/DefaultMenuButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,YAAY,EAOpB,MAAM,OAAO,CAAC;AA2Bf,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CAgOtF"}
|
|
@@ -3,7 +3,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
5
|
import { useIntl } from "react-intl";
|
|
6
|
-
import { Button, ItemsWrapper, Overlay, SingleSelectListItem, UiFocusManager, UiIcon, UiTooltip, getFocusableElements, isActionKey, makeMenuKeyboardNavigation, useId, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
|
|
6
|
+
import { Button, ItemsWrapper, Overlay, SingleSelectListItem, UiFocusManager, UiIcon, UiTooltip, findFocusableElementOutsideContainer, getFocusableElements, isActionKey, makeMenuKeyboardNavigation, useId, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { DEFAULT_MENU_BUTTON_ID } from "../../../_staging/accessibility/elementId.js";
|
|
8
8
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
9
9
|
import { selectDashboardDensity } from "../../../model/store/ui/uiSelectors.js";
|
|
@@ -20,6 +20,7 @@ export function DefaultMenuButton({ menuItems }) {
|
|
|
20
20
|
const backLabel = intl.formatMessage({ id: "controlButtons.options.back" });
|
|
21
21
|
const closeLabel = intl.formatMessage({ id: "controlButtons.options.closeMenu" });
|
|
22
22
|
const menuWrapperRef = useRef(null);
|
|
23
|
+
const triggerButtonRef = useRef(null);
|
|
23
24
|
const [parentItemId, setParentItemId] = useState(null);
|
|
24
25
|
const menuItemRefs = useRef(new Map());
|
|
25
26
|
const density = useDashboardSelector(selectDashboardDensity);
|
|
@@ -99,24 +100,14 @@ export function DefaultMenuButton({ menuItems }) {
|
|
|
99
100
|
}
|
|
100
101
|
event.stopPropagation();
|
|
101
102
|
event.preventDefault();
|
|
102
|
-
if (
|
|
103
|
+
if (event.key !== "Tab") {
|
|
103
104
|
return;
|
|
104
105
|
}
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const getNextElementIndex = (currentIndex, isShiftKey) => {
|
|
111
|
-
if (isShiftKey) {
|
|
112
|
-
return currentIndex <= 0 ? focusableElements.length - 1 : currentIndex - 1;
|
|
113
|
-
}
|
|
114
|
-
return (currentIndex + 1) % focusableElements.length;
|
|
115
|
-
};
|
|
116
|
-
do {
|
|
117
|
-
currentIndex = getNextElementIndex(currentIndex, event.shiftKey);
|
|
118
|
-
nextElement = focusableElements[currentIndex];
|
|
119
|
-
} while (isMenuItemExceptTheFirstOne(nextElement));
|
|
106
|
+
const triggerButton = triggerButtonRef.current;
|
|
107
|
+
const nextElement = triggerButton
|
|
108
|
+
? findFocusableElementOutsideContainer(triggerButton, event.shiftKey ? "backward" : "forward")
|
|
109
|
+
: null;
|
|
110
|
+
onClose();
|
|
120
111
|
nextElement?.focus();
|
|
121
112
|
},
|
|
122
113
|
});
|
|
@@ -139,7 +130,7 @@ export function DefaultMenuButton({ menuItems }) {
|
|
|
139
130
|
return null;
|
|
140
131
|
}
|
|
141
132
|
const renderMenuItems = () => {
|
|
142
|
-
return (_jsx(Overlay, { alignTo: `.${dropdownAnchorClassName}`, alignPoints: overlayAlignPoints, className: "gd-header-menu-overlay", closeOnMouseDrag: true, closeOnOutsideClick: true, onClose: onMenuButtonClick, children: _jsx(UiFocusManager, { enableAutofocus: true,
|
|
133
|
+
return (_jsx(Overlay, { alignTo: `.${dropdownAnchorClassName}`, alignPoints: overlayAlignPoints, className: "gd-header-menu-overlay", closeOnMouseDrag: true, closeOnOutsideClick: true, onClose: onMenuButtonClick, children: _jsx(UiFocusManager, { enableAutofocus: true, enableReturnFocusOnUnmount: true, children: _jsx("div", { onKeyDown: menuKeyboardNavigationHandler, children: _jsxs(ItemsWrapper, { smallItemsSpacing: true, className: "gd-menu", wrapperRef: menuWrapperRef, children: [selectedMenuItem ? (_jsx(DefaultSubmenuHeader, { title: selectedMenuItem.itemName, backLabel: backLabel, closeLabel: closeLabel, onClose: onClose, onGoBack: () => {
|
|
143
134
|
setAutofocusSubmenu(true);
|
|
144
135
|
setSelectedMenuItem(null);
|
|
145
136
|
} })) : null, _jsx("div", { role: "menu", id: menuId, "aria-labelledby": DEFAULT_MENU_BUTTON_ID, children: visibleMenuItems.map((menuItem) => {
|
|
@@ -148,7 +139,7 @@ export function DefaultMenuButton({ menuItems }) {
|
|
|
148
139
|
] }) }) }) }, "topBarMenuButton"));
|
|
149
140
|
};
|
|
150
141
|
return (_jsxs(_Fragment, { children: [
|
|
151
|
-
_jsx(UiTooltip, { arrowPlacement: "top-end", content: tooltipText, anchor: _jsx(Button, { onClick: onMenuButtonClick, value: "\u22EF", id: DEFAULT_MENU_BUTTON_ID, className: cx("gd-button-primary dash-header-options-button s-header-options-button gd-button", dropdownAnchorClassName, {
|
|
142
|
+
_jsx(UiTooltip, { arrowPlacement: "top-end", content: tooltipText, anchor: _jsx(Button, { ref: triggerButtonRef, onClick: onMenuButtonClick, value: "\u22EF", id: DEFAULT_MENU_BUTTON_ID, className: cx("gd-button-primary dash-header-options-button s-header-options-button gd-button", dropdownAnchorClassName, {
|
|
152
143
|
"gd-button-small": density === "compact",
|
|
153
144
|
}), accessibilityConfig: {
|
|
154
145
|
ariaLabel: tooltipText,
|
package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardInsight.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,YAAY,EAMpB,MAAM,OAAO,CAAC;AAkDf,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAkD7D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,YAAY,EACZ,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EAAE,SAAS,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,sBAAsB,EACxC,UAAU,EACV,YAAY,EACZ,aAAa,EAChB,EAAE,sBAAsB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"DashboardInsight.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,YAAY,EAMpB,MAAM,OAAO,CAAC;AAkDf,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAkD7D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,YAAY,EACZ,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EAAE,SAAS,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,sBAAsB,EACxC,UAAU,EACV,YAAY,EACZ,aAAa,EAChB,EAAE,sBAAsB,GAAG,YAAY,CAyQvC"}
|
package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js
CHANGED
|
@@ -164,11 +164,11 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
|
|
|
164
164
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
165
165
|
[onError, executionsHandler.onError, onResolveAsyncRender]);
|
|
166
166
|
const effectiveError = filtersError ?? visualizationError;
|
|
167
|
+
const execConfig = useWidgetExecConfig(ref);
|
|
167
168
|
useEffect(() => {
|
|
168
|
-
//
|
|
169
|
-
// one of custom error is no data
|
|
169
|
+
// Clear a stale error (e.g. "no data") on any execution change — parameters flow via execConfig, not filters.
|
|
170
170
|
setVisualizationError(undefined);
|
|
171
|
-
}, [filtersForInsightHash]);
|
|
171
|
+
}, [filtersForInsightHash, execConfig]);
|
|
172
172
|
// CSS
|
|
173
173
|
const insightPositionStyle = useInsightPositionStyle();
|
|
174
174
|
const insightWrapperStyle = useMemo(() => {
|
|
@@ -181,7 +181,6 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
|
|
|
181
181
|
// if filter status is success and visualization is loading, render both loading and insight
|
|
182
182
|
const loading = filtersStatus === "running" || isVisualizationLoading;
|
|
183
183
|
const exportDataVis = useVisualizationExportData(exportData, isVisualizationInitializing || isVisualizationLoading, !!effectiveError);
|
|
184
|
-
const execConfig = useWidgetExecConfig(ref);
|
|
185
184
|
const { setContent, isTooSmall, fontSize } = useMinimalSizeValidation(minimalWidth, minimalHeight, loading);
|
|
186
185
|
const isExportSlidesMode = useDashboardSelector(selectIsInExportMode);
|
|
187
186
|
const shouldLoadingBeHidden = isExportSlidesMode && !loading;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrillDialogExportDropdown.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAoC3F,wBAAgB,yBAAyB,CAAC,EACtC,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EACrB,EAAE,+BAA+B,
|
|
1
|
+
{"version":3,"file":"DrillDialogExportDropdown.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAoC3F,wBAAgB,yBAAyB,CAAC,EACtC,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EACrB,EAAE,+BAA+B,2CA+EjC"}
|
|
@@ -52,7 +52,7 @@ export function DrillDialogExportDropdown({ exportAvailable, exportXLSXEnabled,
|
|
|
52
52
|
item.data.action();
|
|
53
53
|
}, []);
|
|
54
54
|
const itemDataTestId = useCallback((item) => (item.type === "interactive" ? item.data.dataTestId : undefined), []);
|
|
55
|
-
return (_jsx("div", { className: classNames, children: _jsx(Dropdown, { autofocusOnOpen: true, alignPoints: dropdownAlignPoints, renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx("div", { className: "gd-drill-dialog-export", children: _jsx(UiMenu, { onClose: closeDropdown, ariaAttributes: ariaAttributes, onSelect: handleSelectItem, items: items, dataTestId: "s-drill-modal-export-options", itemDataTestId: itemDataTestId, InteractiveItem: DrillModalExportMenuItem }) })), renderButton: (buttonRenderProps) => {
|
|
55
|
+
return (_jsx("div", { className: classNames, children: _jsx(Dropdown, { autofocusOnOpen: true, shouldTrapFocus: false, alignPoints: dropdownAlignPoints, renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx("div", { className: "gd-drill-dialog-export", children: _jsx(UiMenu, { onClose: closeDropdown, ariaAttributes: ariaAttributes, onSelect: handleSelectItem, items: items, dataTestId: "s-drill-modal-export-options", itemDataTestId: itemDataTestId, InteractiveItem: DrillModalExportMenuItem }) })), renderButton: (buttonRenderProps) => {
|
|
56
56
|
return isDropdownDisabled ? (_jsx("div", { className: classNames, children: _jsxs(BubbleHoverTrigger, { children: [
|
|
57
57
|
_jsx(DropdownTriggerButton, { ...buttonRenderProps, isDisabled: true }), _jsx(Bubble, { className: "bubble-primary", alignPoints: dropdownDisabledBubbleAlignPoints, children: _jsx(FormattedMessage, { id: "export_unsupported.disabled" }) })
|
|
58
58
|
] }) })) : (_jsx(DropdownTriggerButton, { ...buttonRenderProps }));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-dashboard",
|
|
3
|
-
"version": "11.43.0-alpha.
|
|
3
|
+
"version": "11.43.0-alpha.2",
|
|
4
4
|
"description": "GoodData SDK - Dashboard Component",
|
|
5
5
|
"license": "LicenseRef-LICENSE",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -60,19 +60,19 @@
|
|
|
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.43.0-alpha.
|
|
66
|
-
"@gooddata/sdk-ui": "11.43.0-alpha.
|
|
67
|
-
"@gooddata/sdk-ui-charts": "11.43.0-alpha.
|
|
68
|
-
"@gooddata/sdk-ui-ext": "11.43.0-alpha.
|
|
69
|
-
"@gooddata/sdk-ui-filters": "11.43.0-alpha.
|
|
70
|
-
"@gooddata/sdk-ui-
|
|
71
|
-
"@gooddata/sdk-ui-
|
|
72
|
-
"@gooddata/sdk-ui-
|
|
73
|
-
"@gooddata/sdk-ui-
|
|
74
|
-
"@gooddata/sdk-ui-
|
|
75
|
-
"@gooddata/util": "11.43.0-alpha.
|
|
63
|
+
"@gooddata/sdk-backend-base": "11.43.0-alpha.2",
|
|
64
|
+
"@gooddata/sdk-backend-spi": "11.43.0-alpha.2",
|
|
65
|
+
"@gooddata/sdk-model": "11.43.0-alpha.2",
|
|
66
|
+
"@gooddata/sdk-ui": "11.43.0-alpha.2",
|
|
67
|
+
"@gooddata/sdk-ui-charts": "11.43.0-alpha.2",
|
|
68
|
+
"@gooddata/sdk-ui-ext": "11.43.0-alpha.2",
|
|
69
|
+
"@gooddata/sdk-ui-filters": "11.43.0-alpha.2",
|
|
70
|
+
"@gooddata/sdk-ui-kit": "11.43.0-alpha.2",
|
|
71
|
+
"@gooddata/sdk-ui-pivot": "11.43.0-alpha.2",
|
|
72
|
+
"@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.2",
|
|
73
|
+
"@gooddata/sdk-ui-vis-commons": "11.43.0-alpha.2",
|
|
74
|
+
"@gooddata/sdk-ui-geo": "11.43.0-alpha.2",
|
|
75
|
+
"@gooddata/util": "11.43.0-alpha.2"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@microsoft/api-documenter": "^7.17.0",
|
|
@@ -118,12 +118,12 @@
|
|
|
118
118
|
"typescript": "5.9.3",
|
|
119
119
|
"vitest": "4.1.8",
|
|
120
120
|
"vitest-dom": "0.1.1",
|
|
121
|
-
"@gooddata/
|
|
122
|
-
"@gooddata/
|
|
123
|
-
"@gooddata/
|
|
124
|
-
"@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.
|
|
125
|
-
"@gooddata/
|
|
126
|
-
"@gooddata/
|
|
121
|
+
"@gooddata/eslint-config": "11.43.0-alpha.2",
|
|
122
|
+
"@gooddata/i18n-toolkit": "11.43.0-alpha.2",
|
|
123
|
+
"@gooddata/oxlint-config": "11.43.0-alpha.2",
|
|
124
|
+
"@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.2",
|
|
125
|
+
"@gooddata/stylelint-config": "11.43.0-alpha.2",
|
|
126
|
+
"@gooddata/reference-workspace": "11.43.0-alpha.2"
|
|
127
127
|
},
|
|
128
128
|
"peerDependencies": {
|
|
129
129
|
"react": "^18.0.0 || ^19.0.0",
|