@gooddata/sdk-ui-dashboard 11.37.0-alpha.5 → 11.38.0

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-5-20
10
+ Date generated: 2026-5-25
11
11
 
12
- Revision ID: b6d15371a966d44461e8af8bc123206c32e6cb20
12
+ Revision ID: 071fd8600e18fa643f19bd192894b326ecedff0a
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -377,7 +377,7 @@ Revision ID: b6d15371a966d44461e8af8bc123206c32e6cb20
377
377
  - bail (2.0.2) [MIT]
378
378
  - balanced-match (2.0.0) [MIT]
379
379
  - base64-js (1.5.1) [MIT]
380
- - baseline-browser-mapping (2.10.29) [Apache-2.0]
380
+ - baseline-browser-mapping (2.10.32) [Apache-2.0]
381
381
  - batch (0.6.1) [MIT]
382
382
  - binary-extensions (2.3.0) [MIT]
383
383
  - bl (4.1.0) [MIT]
@@ -5379,9 +5379,9 @@ MIT
5379
5379
 
5380
5380
 
5381
5381
  --------------------------------------------------------------------------------
5382
- Package Title: baseline-browser-mapping (2.10.29)
5382
+ Package Title: baseline-browser-mapping (2.10.32)
5383
5383
 
5384
- Package Locator: npm+baseline-browser-mapping$2.10.29
5384
+ Package Locator: npm+baseline-browser-mapping$2.10.32
5385
5385
 
5386
5386
  Package Depth: Transitive
5387
5387
  --------------------------------------------------------------------------------
@@ -38189,4 +38189,4 @@ POSSIBILITY OF SUCH DAMAGE.
38189
38189
  --------------------------------------------------------------------------------
38190
38190
  --------------------------------------------------------------------------------
38191
38191
 
38192
- Report Generated by FOSSA on 2026-5-20
38192
+ Report Generated by FOSSA on 2026-5-25
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.37.0-alpha.5";
1
+ export declare const LIB_VERSION = "11.38.0";
2
2
  export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
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.37.0-alpha.5";
3
+ export const LIB_VERSION = "11.38.0";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
@@ -39,5 +39,10 @@ export declare function dashboardFilterContextIdentity<TWidget>({ filterContext
39
39
  export declare function dashboardFilterContextSanitize(filterContext: IFilterContextDefinition): IFilterContextDefinition;
40
40
  /**
41
41
  * Transform supported dashboard filter to filter context item.
42
+ *
43
+ * Returns undefined when the input has no honest representation in the dashboard filter context —
44
+ * specifically for insight-originated MVFs that reference the measure via LocalIdRef (bucket localId).
45
+ * Dashboard MVFs require an ObjRef measure; callers receiving alert/automation execution filters
46
+ * (which mix dashboard and insight filters) should drop the undefined entries.
42
47
  */
43
- export declare function dashboardFilterToFilterContextItem(filter: IDashboardFilter, keepDatasets: boolean): FilterContextItem;
48
+ export declare function dashboardFilterToFilterContextItem(filter: IDashboardFilter, keepDatasets: boolean): FilterContextItem | undefined;
@@ -111,6 +111,11 @@ export function dashboardFilterContextSanitize(filterContext) {
111
111
  }
112
112
  /**
113
113
  * Transform supported dashboard filter to filter context item.
114
+ *
115
+ * Returns undefined when the input has no honest representation in the dashboard filter context —
116
+ * specifically for insight-originated MVFs that reference the measure via LocalIdRef (bucket localId).
117
+ * Dashboard MVFs require an ObjRef measure; callers receiving alert/automation execution filters
118
+ * (which mix dashboard and insight filters) should drop the undefined entries.
114
119
  */
115
120
  export function dashboardFilterToFilterContextItem(filter, keepDatasets) {
116
121
  if (isAttributeFilterWithSelection(filter)) {
@@ -157,10 +162,12 @@ export function dashboardFilterToFilterContextItem(filter, keepDatasets) {
157
162
  }
158
163
  else if (isMeasureValueFilter(filter)) {
159
164
  const measure = measureValueFilterMeasure(filter);
160
- // Dashboard MVF requires an ObjRef (catalog metric reference); LocalIdRef cannot
161
- // survive the round-trip from execution to filter context.
165
+ // Dashboard MVFs always reference the measure by ObjRef. Insight MVFs use LocalIdRef
166
+ // (bucket localId) and have no honest representation in the dashboard filter context
167
+ // they reach this converter only because automation execution filters mix dashboard and
168
+ // insight filters. Caller is responsible for dropping these undefined entries.
162
169
  if (!isObjRef(measure)) {
163
- throw new NotSupported(`Unsupported filter type! Please provide valid dashboard filter. Filter: ${JSON.stringify(filter)}`);
170
+ return undefined;
164
171
  }
165
172
  const conditions = measureValueFilterConditions(filter);
166
173
  return {
@@ -78,16 +78,14 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
78
78
  }
79
79
  // Cross-filtering is always compatible with dashboard tabs now
80
80
  // (removed the check that prevented cross-filtering without tabs)
81
- const normalizedFilters = filters.map((filter) => {
81
+ const normalizedFilters = compact(filters.map((filter) => {
82
82
  if (isDashboardAttributeFilterItem(filter) ||
83
83
  isDashboardDateFilter(filter) ||
84
84
  isDashboardMeasureValueFilter(filter)) {
85
85
  return filter;
86
86
  }
87
- else {
88
- return dashboardFilterToFilterContextItem(filter, !!ctx.backend.capabilities.supportsMultipleDateFilters);
89
- }
90
- });
87
+ return dashboardFilterToFilterContextItem(filter, !!ctx.backend.capabilities.supportsMultipleDateFilters);
88
+ }));
91
89
  // Separate text filter types (arbitrary, match) — they use whole-filter replacement
92
90
  const textAttributeFiltersRaw = normalizedFilters.filter((filter) => isDashboardAttributeFilterItem(filter) && !isDashboardAttributeFilter(filter));
93
91
  // Deduplicate text filters by localIdentifier (last occurrence wins, matching batch behavior)
@@ -3,7 +3,7 @@ import { compact, omit } from "lodash-es";
3
3
  import { batchActions } from "redux-batched-actions";
4
4
  import { all, call, put, select } from "redux-saga/effects";
5
5
  import { generateDateFilterLocalIdentifier } from "@gooddata/sdk-backend-base";
6
- import { dashboardFilterLocalIdentifier, filterLocalIdentifier, filterObjRef, idRef, insightFilters, isAbsoluteDateFilter, isAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDateFilter, isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isFilterContextItem, isInsightWidget, isMeasureValueFilter, isObjRef, isRelativeDateFilter, isSingleSelectionFilter, measureValueFilterMeasure, } from "@gooddata/sdk-model";
6
+ import { dashboardFilterLocalIdentifier, filterLocalIdentifier, filterObjRef, idRef, insightFilters, isAbsoluteDateFilter, isAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDateFilter, isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, isFilterContextItem, isInsightWidget, isMeasureValueFilter, isRankingFilter, isRelativeDateFilter, isSingleSelectionFilter, } from "@gooddata/sdk-model";
7
7
  import { convertError } from "@gooddata/sdk-ui";
8
8
  import { dashboardFilterToFilterContextItem } from "../../../_staging/dashboard/dashboardFilterContext.js";
9
9
  import { isDashboardFilter } from "../../../types.js";
@@ -94,7 +94,7 @@ export function* initializeAutomationsHandler(ctx, _cmd) {
94
94
  ? getDashboardFiltersOnly(targetAlertFilters, commonDateFilterLocalId, insight, widget)
95
95
  : targetAlertFilters;
96
96
  const keepDateFilterDataSets = !!ctx.backend.capabilities.supportsMultipleDateFilters;
97
- const filtersToSetAsFilterContextItems = filtersToSet.map((filter) => dashboardFilterToFilterContextItem(filter, keepDateFilterDataSets));
97
+ const filtersToSetAsFilterContextItems = compact(filtersToSet.map((filter) => dashboardFilterToFilterContextItem(filter, keepDateFilterDataSets)));
98
98
  const compatibleFiltersToSet = filtersToSetAsFilterContextItems.filter((filter) => isFilterContextItemCompatibleWithSelectionType(filter, effectiveActiveTabSelectionTypeMap, enableArbitraryFilterKD, enableMatchFilterKD, filterContextFilters));
99
99
  // Empty alert execution filters = reset all filters (set them to all).
100
100
  // Empty sanitized filters = keep filters as they are, do not reset them (all alert execution filters are insight specific / ignored).
@@ -304,8 +304,10 @@ function getDashboardFiltersOnly(filters, commonDateFilterLocalId, insight, widg
304
304
  const withoutAlertFilters = removeAlertFilters(filters);
305
305
  // Remove insight specific attribute filters from the list of filters.
306
306
  const withoutInsightAttributeFilters = removeInsightAttributeFilters(withoutAlertFilters, insight);
307
+ // Remove insight specific MVFs from the list of filters.
308
+ const withoutInsightMVFs = removeInsightMVFs(withoutInsightAttributeFilters, insight);
307
309
  // If widget has ignored date filter, remove date filter(s) - they originate from the insight, otherwise, it's the dashboard date filter, so keep it.
308
- const withoutInsightDateFilters = removeDateFiltersIfDateFilterIsIgnored(withoutInsightAttributeFilters, widget);
310
+ const withoutInsightDateFilters = removeDateFiltersIfDateFilterIsIgnored(withoutInsightMVFs, widget);
309
311
  // Find common date filter by local id or by absence of dataset
310
312
  const dateFilters = withoutInsightDateFilters.filter(isDateFilter);
311
313
  const foundCommonFilter = dateFilters.find((f) => {
@@ -334,15 +336,14 @@ function getDashboardFiltersOnly(filters, commonDateFilterLocalId, insight, widg
334
336
  /**
335
337
  * Remove alert filters (these that are set during creation of the alert sliced by attribute) from the list of filters.
336
338
  * These filters can be recognized by the fact that they do not have filter objRef (they have localIdentifier only).
339
+ * MVFs and ranking filters are not the concern of this function — filterObjRef returns undefined for them,
340
+ * so they are passed through and filtered by later steps.
337
341
  * @internal
338
342
  */
339
343
  function removeAlertFilters(filters) {
340
344
  return filters?.filter((f) => {
341
- if (isMeasureValueFilter(f)) {
342
- // Keep MVFs whose measure is an ObjRef —
343
- // dashboard MVFs always store an ObjRef (catalog metric) and the downstream conversion
344
- // in dashboardFilterToFilterContextItem requires it.
345
- return isObjRef(measureValueFilterMeasure(f));
345
+ if (isMeasureValueFilter(f) || isRankingFilter(f)) {
346
+ return true;
346
347
  }
347
348
  const objRef = filterObjRef(f);
348
349
  return !!objRef;
@@ -362,6 +363,19 @@ function removeInsightAttributeFilters(filters, insight) {
362
363
  return !insightFilter;
363
364
  });
364
365
  }
366
+ /**
367
+ * Remove insight specific measure value filters from the list of filters.
368
+ * These filters can be recognized by matching them against insight filters and their local identifiers.
369
+ */
370
+ function removeInsightMVFs(filters, insight) {
371
+ const insightMVFs = insightFilters(insight).filter(isMeasureValueFilter);
372
+ return filters.filter((f) => {
373
+ const insightFilter = insightMVFs.find((f2) => {
374
+ return filterLocalIdentifier(f) === filterLocalIdentifier(f2);
375
+ });
376
+ return !insightFilter;
377
+ });
378
+ }
365
379
  /**
366
380
  * Remove date filters if widget date filter is ignored.
367
381
  * If widget date filter is not ignored, date filter provided to the alert execution is the dashboard date filter.
@@ -11,6 +11,7 @@ import { selectDateFormat, selectEnableAutomationManagement, selectEnableCustomi
11
11
  import { selectIsCrossFiltering } from "../../../../model/store/drill/drillSelectors.js";
12
12
  import { selectEntitlementMinimumRecurrenceMinutes, selectMaxAutomationRecipients, } from "../../../../model/store/entitlements/entitlementsSelectors.js";
13
13
  import { selectDashboardTitle } from "../../../../model/store/meta/metaSelectors.js";
14
+ import { selectTabs } from "../../../../model/store/tabs/tabsSelectors.js";
14
15
  import { selectIsAutomationDialogSecondaryTitleVisible } from "../../../../model/store/topBar/topBarSelectors.js";
15
16
  import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors.js";
16
17
  import { getWidgetTitle } from "../../../../model/utils/dashboardItemUtils.js";
@@ -58,6 +59,8 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
58
59
  const externalRecipientOverride = useDashboardSelector(selectExternalRecipient);
59
60
  const isSecondaryTitleVisible = useDashboardSelector(selectIsAutomationDialogSecondaryTitleVisible);
60
61
  const enableAutomationManagement = useDashboardSelector(selectEnableAutomationManagement);
62
+ const dashboardTabs = useDashboardSelector(selectTabs);
63
+ const hasMultipleTabs = (dashboardTabs?.length ?? 0) > 1;
61
64
  const exportTemplates = useExportTemplates();
62
65
  const handleScheduleDeleteSuccess = () => {
63
66
  onDeleteSuccess?.();
@@ -206,10 +209,9 @@ export function ScheduledMailDialogRenderer({ scheduledExportToEdit, users, user
206
209
  }), children: [
207
210
  _jsx("div", { className: "gd-divider-with-margin" }), selectedTabId === "filters" ? (_jsx("div", { ref: filtersTabContentRef, className: "gd-schedule-dialog-tab-content", style: tabContentHeight
208
211
  ? { minHeight: `${tabContentHeight}px` }
209
- : undefined, children: _jsx(AutomationFiltersSelect, { availableFilters: availableFilters, selectedFilters: editedAutomationFilters, onFiltersChange: onFiltersChange, storeFilters: storeFilters, onStoreFiltersChange: onStoreFiltersChange, isDashboardAutomation: !widget, overlayPositionType: OVERLAY_POSITION_TYPE, hideTitle: true, showAllFilters: true, filtersByTab: filtersByTab, editedFiltersByTab: editedAutomationFiltersByTab, onFiltersByTabChange: onFiltersByTabChange }) })) : (_jsxs("div", { ref: generalTabContentRef, className: "gd-schedule-dialog-tab-content", children: [
210
- _jsx(Message, { type: "progress", className: "gd-schedule-dialog-tab-content-info", children: intl.formatMessage({
212
+ : undefined, children: _jsx(AutomationFiltersSelect, { availableFilters: availableFilters, selectedFilters: editedAutomationFilters, onFiltersChange: onFiltersChange, storeFilters: storeFilters, onStoreFiltersChange: onStoreFiltersChange, isDashboardAutomation: !widget, overlayPositionType: OVERLAY_POSITION_TYPE, hideTitle: true, showAllFilters: true, filtersByTab: filtersByTab, editedFiltersByTab: editedAutomationFiltersByTab, onFiltersByTabChange: onFiltersByTabChange }) })) : (_jsxs("div", { ref: generalTabContentRef, className: "gd-schedule-dialog-tab-content", children: [!widget && hasMultipleTabs ? (_jsx(Message, { type: "progress", className: "gd-schedule-dialog-tab-content-info", children: intl.formatMessage({
211
213
  id: "dialogs.schedule.email.tabs.info",
212
- }) }), _jsx(RecurrenceForm, { startDate: startDate, cronExpression: editedAutomation.schedule?.cron ??
214
+ }) })) : null, _jsx(RecurrenceForm, { startDate: startDate, cronExpression: editedAutomation.schedule?.cron ??
213
215
  getDefaultCronExpression(startDate), cronDescription: editedAutomation.schedule?.cronDescription, timezone: editedAutomation.schedule?.timezone ??
214
216
  TIMEZONE_DEFAULT.identifier, dateFormat: dateFormat ?? "MM/dd/yyyy", locale: locale, weekStart: weekStart, onChange: onRecurrenceChange, allowHourlyRecurrence: allowHourlyRecurrence, isWhiteLabeled: isWhiteLabeled, closeDropdownsOnParentScroll: CLOSE_ON_PARENT_SCROLL, onKeyDownSubmit: handleSubmitForm }), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), _jsx(DestinationSelect, { notificationChannels: notificationChannels, selectedItemId: editedAutomation.notificationChannel, onChange: onDestinationChange, closeOnParentScroll: CLOSE_ON_PARENT_SCROLL, overlayPositionType: OVERLAY_POSITION_TYPE }), _jsx(ContentDivider, { className: "gd-divider-with-margin" }), _jsx(RecipientsSelect, { id: "schedule.email.recipients", loggedUser: defaultUser, users: users, usersError: usersError, value: editedAutomation.recipients ?? [], originalValue: originalAutomation.recipients || [], onChange: onRecipientsChange, allowEmptySelection: true, allowOnlyLoggedUserRecipients: allowOnlyLoggedUserRecipients, allowExternalRecipients: allowExternalRecipients, maxRecipients: maxAutomationsRecipients, notificationChannels: notificationChannels, notificationChannelId: editedAutomation.notificationChannel, onKeyDownSubmit: handleSubmitForm, externalRecipientOverride: externalRecipientOverride }), isInPlatformChannel ? null : (_jsxs(_Fragment, { children: [
215
217
  _jsx(SubjectForm, { dashboardTitle: dashboardTitle, editedAutomation: editedAutomation, onChange: onSubjectChange, onKeyDownSubmit: handleSaveScheduledEmail, isSubmitDisabled: isSubmitDisabled }), _jsx(MessageForm, { onChange: onMessageChange, value: editedAutomation.details?.message ?? "" })
@@ -1,6 +1,6 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
- import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isDashboardAttributeFilter, isDashboardDateFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
3
+ import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
4
4
  import { getAutomationAlertFilters, getAutomationDashboardFilters, getAutomationDashboardFiltersByTab, getAutomationVisualizationFilters, } from "../../../../../_staging/automation/index.js";
5
5
  import { dashboardFilterToFilterContextItem } from "../../../../../_staging/dashboard/dashboardFilterContext.js";
6
6
  import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
@@ -18,7 +18,8 @@ export function useDefaultSelectedFiltersForExistingAutomation(automationToEdit,
18
18
  const savedAutomationWidgetFilters = savedWidgetAlertFilters ?? savedWidgetScheduleFilters;
19
19
  const convertedSavedWidgetFilters = savedAutomationWidgetFilters
20
20
  ?.filter(isDashboardFilter)
21
- .map((filter) => convertAndSanitizeFilter(filter, availableVisibleFilters));
21
+ .map((filter) => convertAndSanitizeFilter(filter, availableVisibleFilters))
22
+ .filter((item) => item !== undefined);
22
23
  return (savedDashboardScheduleFilters ??
23
24
  savedWidgetScheduleFilterContextItems ??
24
25
  convertedSavedWidgetFilters);
@@ -113,6 +114,9 @@ export function getDefaultSelectedFiltersByTabForExistingAutomation(automationTo
113
114
  }
114
115
  function convertAndSanitizeFilter(filter, availableVisibleFilters) {
115
116
  const convertedItem = dashboardFilterToFilterContextItem(filter, true);
117
+ if (!convertedItem) {
118
+ return undefined;
119
+ }
116
120
  // Because execution filters do not include titles, and they cannot be saved there,
117
121
  // get them from the current available visible filters.
118
122
  const titleToUse = availableVisibleFilters?.find((visibleFilter) => visibleFilter.localIdentifier === filterLocalIdentifier(filter));
@@ -126,6 +130,10 @@ function convertAndSanitizeFilter(filter, availableVisibleFilters) {
126
130
  };
127
131
  }
128
132
  else if (isDashboardDateFilter(convertedItem)) {
133
+ // IDashboardDateFilter has no `title` field on its current type, but downstream UI relies
134
+ // on the saved automation title carried alongside the filter. Preserved as pre-existing
135
+ // behavior via a structural assertion until the type is widened or the field is consumed
136
+ // from a different source.
129
137
  return {
130
138
  ...convertedItem,
131
139
  dateFilter: {
@@ -134,6 +142,32 @@ function convertAndSanitizeFilter(filter, availableVisibleFilters) {
134
142
  },
135
143
  };
136
144
  }
137
- // New filter types (arbitrary, match) - return as-is
145
+ else if (isDashboardMeasureValueFilter(convertedItem)) {
146
+ return {
147
+ ...convertedItem,
148
+ dashboardMeasureValueFilter: {
149
+ ...convertedItem.dashboardMeasureValueFilter,
150
+ title: titleToUse?.title,
151
+ },
152
+ };
153
+ }
154
+ else if (isDashboardArbitraryAttributeFilter(convertedItem)) {
155
+ return {
156
+ ...convertedItem,
157
+ arbitraryAttributeFilter: {
158
+ ...convertedItem.arbitraryAttributeFilter,
159
+ title: titleToUse?.title,
160
+ },
161
+ };
162
+ }
163
+ else if (isDashboardMatchAttributeFilter(convertedItem)) {
164
+ return {
165
+ ...convertedItem,
166
+ matchAttributeFilter: {
167
+ ...convertedItem.matchAttributeFilter,
168
+ title: titleToUse?.title,
169
+ },
170
+ };
171
+ }
138
172
  return convertedItem;
139
173
  }
@@ -1,6 +1,6 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { differenceBy, omit } from "lodash-es";
3
- import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isAllValuesAttributeFilter, isAllValuesDashboardAttributeFilter, isAttributeFilter, isAttributeFilterWithSelection, isDashboardAttributeFilter, isDashboardCommonDateFilter, isDateFilter, isInsightWidget, isLocalIdRef, isNegativeAttributeFilter, isPositiveAttributeFilter, isRelativeDateFilter, isSingleSelectionFilter, } from "@gooddata/sdk-model";
3
+ import { dashboardFilterLocalIdentifier, filterLocalIdentifier, isAllDashboardMeasureValueFilter, isAllValuesAttributeFilter, isAllValuesDashboardAttributeFilter, isAttributeFilter, isAttributeFilterWithSelection, isDashboardAttributeFilter, isDashboardCommonDateFilter, isDateFilter, isInsightWidget, isLocalIdRef, isNegativeAttributeFilter, isPositiveAttributeFilter, isRelativeDateFilter, isSingleSelectionFilter, } from "@gooddata/sdk-model";
4
4
  import { getAutomationAlertFilters, getAutomationDashboardFilters, getAutomationDashboardFiltersByTab, getAutomationVisualizationFilters, } from "../../../../../_staging/automation/index.js";
5
5
  import { filterContextItemsToDashboardFiltersByWidget } from "../../../../../converters/filterConverters.js";
6
6
  import { isFilterTypeCompatibleWithSelectionType } from "../../../../../model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.js";
@@ -365,6 +365,9 @@ function validateVisibleFilters(savedAutomationFilters, savedVisibleFilters, das
365
365
  if (isAllValuesDashboardAttributeFilter(currentDashboardFilter)) {
366
366
  continue;
367
367
  }
368
+ if (isAllDashboardMeasureValueFilter(currentDashboardFilter)) {
369
+ continue;
370
+ }
368
371
  visibleFilterIsMissingInSavedFilters = true;
369
372
  }
370
373
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.37.0-alpha.5",
3
+ "version": "11.38.0",
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.0",
63
- "@gooddata/sdk-backend-base": "11.37.0-alpha.5",
64
- "@gooddata/sdk-backend-spi": "11.37.0-alpha.5",
65
- "@gooddata/sdk-model": "11.37.0-alpha.5",
66
- "@gooddata/sdk-ui": "11.37.0-alpha.5",
67
- "@gooddata/sdk-ui-charts": "11.37.0-alpha.5",
68
- "@gooddata/sdk-ui-ext": "11.37.0-alpha.5",
69
- "@gooddata/sdk-ui-filters": "11.37.0-alpha.5",
70
- "@gooddata/sdk-ui-geo": "11.37.0-alpha.5",
71
- "@gooddata/sdk-ui-kit": "11.37.0-alpha.5",
72
- "@gooddata/sdk-ui-pivot": "11.37.0-alpha.5",
73
- "@gooddata/sdk-ui-theme-provider": "11.37.0-alpha.5",
74
- "@gooddata/sdk-ui-vis-commons": "11.37.0-alpha.5",
75
- "@gooddata/util": "11.37.0-alpha.5"
63
+ "@gooddata/sdk-ui": "11.38.0",
64
+ "@gooddata/sdk-backend-base": "11.38.0",
65
+ "@gooddata/sdk-backend-spi": "11.38.0",
66
+ "@gooddata/sdk-model": "11.38.0",
67
+ "@gooddata/sdk-ui-charts": "11.38.0",
68
+ "@gooddata/sdk-ui-ext": "11.38.0",
69
+ "@gooddata/sdk-ui-filters": "11.38.0",
70
+ "@gooddata/sdk-ui-geo": "11.38.0",
71
+ "@gooddata/sdk-ui-kit": "11.38.0",
72
+ "@gooddata/sdk-ui-pivot": "11.38.0",
73
+ "@gooddata/sdk-ui-theme-provider": "11.38.0",
74
+ "@gooddata/sdk-ui-vis-commons": "11.38.0",
75
+ "@gooddata/util": "11.38.0"
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.0",
120
120
  "vitest-dom": "0.1.1",
121
- "@gooddata/eslint-config": "11.37.0-alpha.5",
122
- "@gooddata/sdk-backend-mockingbird": "11.37.0-alpha.5",
123
- "@gooddata/i18n-toolkit": "11.37.0-alpha.5",
124
- "@gooddata/reference-workspace": "11.37.0-alpha.5",
125
- "@gooddata/stylelint-config": "11.37.0-alpha.5",
126
- "@gooddata/oxlint-config": "11.37.0-alpha.5"
121
+ "@gooddata/oxlint-config": "11.38.0",
122
+ "@gooddata/eslint-config": "11.38.0",
123
+ "@gooddata/sdk-backend-mockingbird": "11.38.0",
124
+ "@gooddata/i18n-toolkit": "11.38.0",
125
+ "@gooddata/reference-workspace": "11.38.0",
126
+ "@gooddata/stylelint-config": "11.38.0"
127
127
  },
128
128
  "peerDependencies": {
129
129
  "react": "^18.0.0 || ^19.0.0",