@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 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-18
10
+ Date generated: 2026-6-19
11
11
 
12
- Revision ID: 9a7112d1a258858d38a40b99546f85cdc462e845
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-18
38522
+ Report Generated by FOSSA on 2026-6-19
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.43.0-alpha.1";
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.1";
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":"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"}
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
- const widgetFilters = yield call(query, queryWidgetFilters(widgetRef));
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 = widgetFilters.find((filter) => {
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,2CAglBtB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,2CAMhE"}
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, thresholdErrorMessage, isInvalidConnectionToInsight, setInvalidDatapoints]);
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;AA+B7B,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"}
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 widget = useDashboardSelector(selectFilterableWidgetByRef(widgetRef));
295
- const widgetFiltersResult = useWidgetFilters(widget);
292
+ const insight = useDashboardSelector(selectInsightByWidgetRef(widgetRef));
296
293
  const sanitizeAttributeFilter = useSanitizeAttributeFilter();
297
294
  return useMemo(() => {
298
- return widgetFiltersResult.status === "success"
299
- ? // Date filters are currently not supported, so filter them out
300
- uniqBy(widgetFiltersResult.result
301
- ?.filter(isAttributeFilter)
302
- .map(sanitizeAttributeFilter)
303
- .filter(isAttributeFilter), // filter out undefined values (eg. filters with removed display forms)
304
- (f) => serializeObjRef(filterObjRef(f)))
305
- : undefined;
306
- }, [widgetFiltersResult.status, widgetFiltersResult.result, sanitizeAttributeFilter]);
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;AA0Bf,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CA0OtF"}
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 (!selectedMenuItem || event.key !== "Tab" || !menuWrapperRef.current) {
103
+ if (event.key !== "Tab") {
103
104
  return;
104
105
  }
105
- const { focusableElements } = getFocusableElements(menuWrapperRef.current);
106
- let currentIndex = Array.from(focusableElements).indexOf(document.activeElement);
107
- let nextElement;
108
- const isMenuItemExceptTheFirstOne = (element) => element.getAttribute("role") === "menuitem" &&
109
- element !== Array.from(menuItemRefs.current.values())[0];
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, enableFocusTrap: 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: () => {
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,
@@ -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,CA0QvC"}
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"}
@@ -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
- // need reset custom error when filters changed
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,2CA8EjC"}
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.1",
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-spi": "11.43.0-alpha.1",
64
- "@gooddata/sdk-backend-base": "11.43.0-alpha.1",
65
- "@gooddata/sdk-model": "11.43.0-alpha.1",
66
- "@gooddata/sdk-ui": "11.43.0-alpha.1",
67
- "@gooddata/sdk-ui-charts": "11.43.0-alpha.1",
68
- "@gooddata/sdk-ui-ext": "11.43.0-alpha.1",
69
- "@gooddata/sdk-ui-filters": "11.43.0-alpha.1",
70
- "@gooddata/sdk-ui-geo": "11.43.0-alpha.1",
71
- "@gooddata/sdk-ui-kit": "11.43.0-alpha.1",
72
- "@gooddata/sdk-ui-pivot": "11.43.0-alpha.1",
73
- "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.1",
74
- "@gooddata/sdk-ui-vis-commons": "11.43.0-alpha.1",
75
- "@gooddata/util": "11.43.0-alpha.1"
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/i18n-toolkit": "11.43.0-alpha.1",
122
- "@gooddata/oxlint-config": "11.43.0-alpha.1",
123
- "@gooddata/reference-workspace": "11.43.0-alpha.1",
124
- "@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.1",
125
- "@gooddata/eslint-config": "11.43.0-alpha.1",
126
- "@gooddata/stylelint-config": "11.43.0-alpha.1"
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",