@gooddata/sdk-ui-dashboard 11.54.0-alpha.1 → 11.54.0-alpha.3

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.
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.54.0-alpha.1";
1
+ export declare const LIB_VERSION = "11.54.0-alpha.3";
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.54.0-alpha.1";
3
+ export const LIB_VERSION = "11.54.0-alpha.3";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
@@ -7,6 +7,6 @@ interface IFilterContextSelectionResult {
7
7
  configUpdates: Map<string, DisplayAsLabelUpdate>;
8
8
  }
9
9
  export declare const changeFilterContextSelection: (filterContext: IFilterContext, filterViewFilters: FilterContextItem[], attributeFilterConfigs?: IDashboardAttributeFilterConfig[] | undefined) => IFilterContextSelectionResult;
10
- export declare function applyDefaultFilterView(dashboard: IDashboard, filterViews: IDashboardFilterView[]): IDashboard;
10
+ export declare function applyDefaultFilterView(dashboard: IDashboard, filterViews: IDashboardFilterView[], exportId: string | undefined): IDashboard;
11
11
  export {};
12
12
  //# sourceMappingURL=filterViews.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterViews.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/filterViews.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAGf,KAAK,+BAA+B,EAEpC,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACnB,KAAK,MAAM,EAkBd,MAAM,qBAAqB,CAAC;AAyP7B,KAAK,oBAAoB,GAAG;IAAE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAkBnE,UAAU,6BAA6B;IACnC,aAAa,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,4BAA4B,kLAuJxC,CAAC;AAEF,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,oBAAoB,EAAE,GACpC,UAAU,CA6DZ"}
1
+ {"version":3,"file":"filterViews.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/filterViews.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAGf,KAAK,+BAA+B,EAEpC,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACnB,KAAK,MAAM,EAmBd,MAAM,qBAAqB,CAAC;AAyP7B,KAAK,oBAAoB,GAAG;IAAE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAkBnE,UAAU,6BAA6B;IACnC,aAAa,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,4BAA4B,kLAuJxC,CAAC;AAEF,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,oBAAoB,EAAE,EACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC7B,UAAU,CAsEZ"}
@@ -1,6 +1,6 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { isEqual, omit } from "lodash-es";
3
- import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemFilterElementsBy, dashboardAttributeFilterItemFilterElementsByDate, dashboardAttributeFilterItemLocalIdentifier, dashboardAttributeFilterItemTitle, dashboardAttributeFilterItemValidateElementsBy, dashboardMeasureValueFilterLocalIdentifier, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, isDashboardTextAttributeFilter, isFilterContext, isSingleSelectionFilter, } from "@gooddata/sdk-model";
3
+ import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, dashboardAttributeFilterItemFilterElementsBy, dashboardAttributeFilterItemFilterElementsByDate, dashboardAttributeFilterItemLocalIdentifier, dashboardAttributeFilterItemTitle, dashboardAttributeFilterItemValidateElementsBy, dashboardMeasureValueFilterLocalIdentifier, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardAttributeFilterItem, isDashboardDateFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, isDashboardTextAttributeFilter, isExportOverrideFilterContext, isFilterContext, isSingleSelectionFilter, } from "@gooddata/sdk-model";
4
4
  import { isFilterTypeCompatibleWithSelectionType } from "./attributeFilterSelectionTypeCompatibility.js";
5
5
  const findMatchingAttributeFilterByLocalIdentifier = (filter, viewFilters) => viewFilters.find((item) => isDashboardAttributeFilter(item) &&
6
6
  item.attributeFilter.localIdentifier === filter.attributeFilter.localIdentifier);
@@ -291,7 +291,15 @@ export const changeFilterContextSelection = (filterContext, filterViewFilters, a
291
291
  configUpdates,
292
292
  };
293
293
  };
294
- export function applyDefaultFilterView(dashboard, filterViews) {
294
+ export function applyDefaultFilterView(dashboard, filterViews, exportId) {
295
+ // In an export render, the loaded filter context may be synthesized from export metadata,
296
+ // carrying the filters captured at export-request time (they replace the persisted context on
297
+ // the root and on every tab). The user's default filter view must not clobber those filters
298
+ // (or parameters). Exports whose metadata supplied no filters keep the persisted context and
299
+ // get the default view applied as usual.
300
+ if (isExportOverrideFilterContext(dashboard.filterContext, exportId)) {
301
+ return dashboard;
302
+ }
295
303
  // If dashboard has tabs, apply default views per tab
296
304
  if (dashboard.tabs && dashboard.tabs.length > 0) {
297
305
  // Find legacy global default view (without tabLocalIdentifier) as fallback for first tab
@@ -178,7 +178,7 @@ function* loadExistingDashboard(ctx, cmd, dashboardRef) {
178
178
  ];
179
179
  const [dashboardWithReferences, { resolvedConfig: config, additionalData: { workspaceAutomationsCount, notificationChannelsCount }, }, permissions, entitlements, user, dashboardPermissions, dateHierarchyTemplates, filterViews, exportTimezone,] = yield all(calls);
180
180
  const { dashboard: loadedDashboard, references: { insights }, } = dashboardWithReferences;
181
- const dashboardWithFilterView = applyDefaultFilterView(loadedDashboard, filterViews);
181
+ const dashboardWithFilterView = applyDefaultFilterView(loadedDashboard, filterViews, config.exportId);
182
182
  // Resolve active tab: URL's initialTabId takes precedence, otherwise default to first tab
183
183
  // Note: activeTabLocalIdentifier is app state only, NOT persisted to/read from dashboard MD
184
184
  const resolvedActiveTabId = resolveActiveTabId(dashboardWithFilterView.tabs, cmd.payload.initialTabId, undefined);
@@ -111,7 +111,7 @@ function* resetDashboardFromPersisted(ctx) {
111
111
  // end of ad-hoc migration content
112
112
  const settings = yield select(selectSettings);
113
113
  const filterViews = yield select(selectFilterViews);
114
- const dashboardWithUpdatedFilterContext = applyDefaultFilterView(persistedDashboard, filterViews);
114
+ const dashboardWithUpdatedFilterContext = applyDefaultFilterView(persistedDashboard, filterViews, ctx.config?.exportId);
115
115
  const insightRefsFromWidgets = insightReferencesFromDashboard(dashboardWithUpdatedFilterContext);
116
116
  const uniqueInsightRefsFromWidgets = uniqWith(insightRefsFromWidgets, areObjRefsEqual);
117
117
  const resolvedInsights = yield call(resolveInsights, ctx, uniqueInsightRefsFromWidgets);
@@ -1 +1 @@
1
- {"version":3,"file":"changeFilterContextSelectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAwC/C,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAmC9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgGnE,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,4BAA4B,GAClC,YAAY,CAAC,IAAI,CAAC,CA4IpB"}
1
+ {"version":3,"file":"changeFilterContextSelectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAwC/C,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAmC9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAgGnE,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,4BAA4B,GAClC,YAAY,CAAC,IAAI,CAAC,CA2JpB"}
@@ -66,7 +66,7 @@ function* selectAttributeFilterConfigsSelectionTypeMapTabAware(tabLocalIdentifie
66
66
  return yield select(selectAttributeFilterConfigsSelectionTypeMap);
67
67
  }
68
68
  export function* changeFilterContextSelectionHandler(ctx, cmd) {
69
- const { filters, resetOthers, attributeFilterConfigs = [], tabLocalIdentifier } = cmd.payload;
69
+ const { filters, resetOthers, attributeFilterConfigs = [], tabLocalIdentifier, matchByLocalIdentifier = false, } = cmd.payload;
70
70
  // Validate that the target tab exists if tabLocalIdentifier is provided
71
71
  if (tabLocalIdentifier) {
72
72
  const tabs = yield select(selectTabs);
@@ -98,6 +98,14 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
98
98
  // by localIdentifier (last occurrence wins, mirroring text attribute filter handling).
99
99
  const measureValueFilters = uniqBy(normalizedFilters.filter(isDashboardMeasureValueFilter).slice().reverse(), (f) => dashboardMeasureValueFilterLocalIdentifier(f)).reverse();
100
100
  const uniqueFilters = uniqBy(supportedFilters, (filter) => {
101
+ if (matchByLocalIdentifier && isDashboardAttributeFilter(filter)) {
102
+ const localIdentifier = dashboardAttributeFilterItemLocalIdentifier(filter);
103
+ if (localIdentifier) {
104
+ // The prefix keeps localIdentifier keys different from display form keys that have
105
+ // the same string value.
106
+ return `localId:${localIdentifier}`;
107
+ }
108
+ }
101
109
  const identification = isDashboardAttributeFilter(filter)
102
110
  ? dashboardAttributeFilterItemDisplayForm(filter)
103
111
  : filter.dateFilter.dataSet;
@@ -115,7 +123,7 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
115
123
  const [[commonDateFilter], dateFiltersWithDimension] = partition(dateFilters, isDashboardCommonDateFilter);
116
124
  const selectionTypeMap = yield call(selectAttributeFilterConfigsSelectionTypeMapTabAware, tabLocalIdentifier);
117
125
  const [attributeFilterResult, commonDateFilterUpdateActions, dateFiltersUpdateActions, measureValueFilterUpdateActions,] = yield all([
118
- call(getAttributeFiltersUpdateActions, [...attributeFilters].reverse(), textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap),
126
+ call(getAttributeFiltersUpdateActions, [...attributeFilters].reverse(), textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap, matchByLocalIdentifier),
119
127
  call(getDateFilterUpdateActions, commonDateFilter, resetOthers, tabLocalIdentifier),
120
128
  call(getDateFiltersUpdateActions, dateFiltersWithDimension, resetOthers, tabLocalIdentifier),
121
129
  call(getMeasureValueFiltersUpdateActions, measureValueFilters, resetOthers),
@@ -139,7 +147,7 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
139
147
  ]));
140
148
  yield call(dispatchFilterContextChanged, ctx, cmd, tabLocalIdentifier);
141
149
  }
142
- function* getDashboardFilterByAttributeMatching(filterRef, resolvedDisplayForms, ctx, tabLocalIdentifier) {
150
+ function* getDashboardFilterByAttributeMatching(filterRef, resolvedDisplayForms, ctx, tabLocalIdentifier, isFilterExcluded, areDisplayFormsEquivalent = areObjRefsEqual) {
143
151
  if (isUriRef(filterRef) && !ctx.backend.capabilities.supportsObjectUris) {
144
152
  throw new NotSupported("Unsupported filter ObjRef! Please provide IdentifierRef instead of UriRef.");
145
153
  }
@@ -148,11 +156,19 @@ function* getDashboardFilterByAttributeMatching(filterRef, resolvedDisplayForms,
148
156
  const attribute = filterDF?.attribute && resolvedAttribute.resolved.get(filterDF?.attribute);
149
157
  for (const displayForm of attribute?.displayForms ?? []) {
150
158
  const dashboardFilter = yield call(selectFilterContextAttributeFilterByDisplayFormTabAware, displayForm.ref, tabLocalIdentifier);
151
- if (dashboardFilter) {
159
+ if (dashboardFilter && !isFilterExcluded?.(dashboardFilter)) {
152
160
  return dashboardFilter;
153
161
  }
162
+ if (dashboardFilter && isFilterExcluded) {
163
+ // The first match with this display form is excluded. Continue with a free filter.
164
+ const contextFilters = yield call(selectFilterContextAttributeFiltersTabAware, tabLocalIdentifier);
165
+ const freeFilter = contextFilters.find((candidate) => areDisplayFormsEquivalent(dashboardAttributeFilterItemDisplayForm(candidate), dashboardAttributeFilterItemDisplayForm(dashboardFilter)) && !isFilterExcluded(candidate));
166
+ if (freeFilter) {
167
+ return freeFilter;
168
+ }
169
+ }
154
170
  }
155
- return null;
171
+ return undefined;
156
172
  }
157
173
  function* getDashboardFilterByDisplayAsLabelMatching(attributeFilter, attributeFilterConfigs, tabLocalIdentifier) {
158
174
  let foundByDisplayAsLabel = false;
@@ -202,15 +218,95 @@ function* findTargetFilterItemByDisplayForm(displayFormRef, tabLocalIdentifier)
202
218
  }
203
219
  return undefined;
204
220
  }
205
- function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap) {
221
+ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap, matchByLocalIdentifier) {
206
222
  const updateActions = [];
207
223
  const displayFormsToResolve = [];
208
224
  const handledLocalIds = new Set();
209
225
  const resolvedDisplayForms = yield call(resolveDisplayFormMetadata, ctx, attributeFilters.map((af) => dashboardAttributeFilterItemDisplayForm(af)));
226
+ // A payload can give a display form as a URI ref, and the dashboard can store it as an
227
+ // identifier ref. The two refs are equal when they point to the same display form metadata.
228
+ const displayFormsMap = yield select(selectAttributeFilterDisplayFormsMap);
229
+ const areSameDisplayForms = (a, b) => {
230
+ if (areObjRefsEqual(a, b)) {
231
+ return true;
232
+ }
233
+ const metadataA = displayFormsMap.get(a);
234
+ const metadataB = displayFormsMap.get(b);
235
+ return !!metadataA && !!metadataB && metadataA.id === metadataB.id;
236
+ };
237
+ // The selection type config decides which filter kinds a candidate accepts.
238
+ const selectionTypeOf = (candidate) => {
239
+ const candidateLocalId = dashboardAttributeFilterItemLocalIdentifier(candidate);
240
+ return candidateLocalId ? selectionTypeMap?.get(candidateLocalId) : undefined;
241
+ };
242
+ // Exact localIdentifier matches claim their targets before the loops start. A payload entry
243
+ // without an exact match can then not take a claimed filter through its display form fallback.
244
+ // An element filter's exact match is valid only when the display forms agree, because element
245
+ // values are valid only for one display form. When the display forms do not agree, the entry
246
+ // goes through the display form matching below. A text filter entry replaces the full filter,
247
+ // so its exact match is valid on the localIdentifier alone.
248
+ const claimedByLocalIdentifier = new Set();
249
+ if (matchByLocalIdentifier) {
250
+ const claimEntries = [
251
+ ...attributeFilters.map((entry) => ({ entry, isElementEntry: true })),
252
+ ...textAttributeFilters.map((entry) => ({ entry, isElementEntry: false })),
253
+ ];
254
+ for (const { entry, isElementEntry } of claimEntries) {
255
+ const localId = dashboardAttributeFilterItemLocalIdentifier(entry);
256
+ if (!localId) {
257
+ continue;
258
+ }
259
+ const match = yield call(selectFilterContextAttributeFilterItemByLocalIdTabAware, localId, tabLocalIdentifier);
260
+ if (!match) {
261
+ continue;
262
+ }
263
+ if (isElementEntry &&
264
+ !(isDashboardAttributeFilter(match) &&
265
+ areSameDisplayForms(dashboardAttributeFilterItemDisplayForm(match), dashboardAttributeFilterItemDisplayForm(entry)))) {
266
+ continue;
267
+ }
268
+ claimedByLocalIdentifier.add(localId);
269
+ }
270
+ }
271
+ // A fallback target is taken in two conditions: a different payload entry claims it exactly,
272
+ // or an earlier payload entry has updated it. An entry can always use its own localIdentifier.
273
+ // Thus an exact match is never blocked.
274
+ const isTakenTarget = (candidateLocalId, ownLocalId) => !!candidateLocalId &&
275
+ candidateLocalId !== ownLocalId &&
276
+ (claimedByLocalIdentifier.has(candidateLocalId) || handledLocalIds.has(candidateLocalId));
277
+ // This function keeps fallback matching one-to-one. It returns a free match unchanged. It
278
+ // replaces a taken match with the next free accepted filter that has the same display form.
279
+ // It returns nothing when no free filter exists. A taken target is never used, and it does
280
+ // not stop the search.
281
+ function* substituteTakenTarget(matched, ownLocalId, acceptsCandidate) {
282
+ if (!isTakenTarget(dashboardAttributeFilterItemLocalIdentifier(matched), ownLocalId)) {
283
+ return matched;
284
+ }
285
+ const matchedDisplayForm = dashboardAttributeFilterItemDisplayForm(matched);
286
+ const contextItems = yield call(selectFilterContextAttributeFilterItemsTabAware, tabLocalIdentifier);
287
+ return contextItems.find((candidate) => acceptsCandidate(candidate) &&
288
+ areSameDisplayForms(dashboardAttributeFilterItemDisplayForm(candidate), matchedDisplayForm) &&
289
+ !isTakenTarget(dashboardAttributeFilterItemLocalIdentifier(candidate), ownLocalId));
290
+ }
210
291
  for (const attributeFilter of attributeFilters) {
211
292
  const filterRef = dashboardAttributeFilterItemDisplayForm(attributeFilter);
212
- // only attribute filters with elements are relevant
213
- let dashboardFilter = yield call(selectFilterContextAttributeFilterByDisplayFormTabAware, filterRef, tabLocalIdentifier);
293
+ let dashboardFilter = undefined;
294
+ // When the option is set, the localIdentifier match must come first. Display form matching
295
+ // cannot tell apart two filters that use the same display form. The display form check
296
+ // occurs here again. Thus the exact match is correct on its own, and it does not depend on
297
+ // how the claimed set was built.
298
+ const incomingLocalId = dashboardAttributeFilterItemLocalIdentifier(attributeFilter);
299
+ if (matchByLocalIdentifier && incomingLocalId) {
300
+ const exactMatch = yield call(selectFilterContextAttributeFilterByLocalIdTabAware, incomingLocalId, tabLocalIdentifier);
301
+ if (exactMatch &&
302
+ areSameDisplayForms(dashboardAttributeFilterItemDisplayForm(exactMatch), filterRef)) {
303
+ dashboardFilter = exactMatch;
304
+ }
305
+ }
306
+ if (!dashboardFilter) {
307
+ // only attribute filters with elements are relevant
308
+ dashboardFilter = (yield call(selectFilterContextAttributeFilterByDisplayFormTabAware, filterRef, tabLocalIdentifier));
309
+ }
214
310
  if (!dashboardFilter && canMapDashboardFilterFromAnotherDisplayForm(ctx)) {
215
311
  dashboardFilter = (yield call(getDashboardFilterByAttributeMatching, filterRef, resolvedDisplayForms, ctx, tabLocalIdentifier));
216
312
  }
@@ -222,6 +318,23 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
222
318
  foundByDashboardFilterDisplayAsLabel = result.foundByDashboardFilterDisplayAsLabel;
223
319
  dashboardFilter = result.dashboardFilter;
224
320
  }
321
+ // No fallback result may use a taken target. This applies to the direct display form
322
+ // match, the attribute matching, and the display-as-label matching. A rejected match is
323
+ // replaced with the next free filter that has the same display form. On backends that can
324
+ // match across the display forms of one attribute, a free filter with a different display
325
+ // form of that attribute is also accepted.
326
+ if (matchByLocalIdentifier &&
327
+ dashboardFilter &&
328
+ isTakenTarget(dashboardAttributeFilterItemLocalIdentifier(dashboardFilter), incomingLocalId)) {
329
+ dashboardFilter = (yield call(substituteTakenTarget, dashboardFilter, incomingLocalId, isDashboardAttributeFilter));
330
+ if (!dashboardFilter && canMapDashboardFilterFromAnotherDisplayForm(ctx)) {
331
+ dashboardFilter = (yield call(getDashboardFilterByAttributeMatching, filterRef, resolvedDisplayForms, ctx, tabLocalIdentifier, (candidate) => isTakenTarget(dashboardAttributeFilterItemLocalIdentifier(candidate), incomingLocalId), areSameDisplayForms));
332
+ }
333
+ if (!dashboardFilter) {
334
+ foundByDisplayAsLabel = false;
335
+ foundByDashboardFilterDisplayAsLabel = false;
336
+ }
337
+ }
225
338
  const displayFormData = resolvedDisplayForms.resolved.get(filterRef);
226
339
  if (dashboardFilter) {
227
340
  const dashboardFilterLocalId = dashboardAttributeFilterItemLocalIdentifier(dashboardFilter);
@@ -288,6 +401,13 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
288
401
  }
289
402
  }
290
403
  }
404
+ // This fallback must not use a taken text target. Only a text filter that accepts a
405
+ // list entry is a valid substitute, so the search does not stop on a filter that the
406
+ // migration check below rejects.
407
+ if (matchByLocalIdentifier && targetTextFilter) {
408
+ targetTextFilter = (yield call(substituteTakenTarget, targetTextFilter, sourceLocalId, (candidate) => isDashboardTextAttributeFilter(candidate) &&
409
+ canApplyFilterTypeToTarget("list", selectionTypeOf(candidate), candidate)));
410
+ }
291
411
  if (targetTextFilter && isDashboardTextAttributeFilter(targetTextFilter)) {
292
412
  const targetLocalId = dashboardAttributeFilterItemLocalIdentifier(targetTextFilter);
293
413
  const configSelectionType = selectionTypeMap?.get(targetLocalId);
@@ -335,7 +455,19 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
335
455
  if (!existingFilter) {
336
456
  continue;
337
457
  }
338
- const targetLocalId = dashboardAttributeFilterItemLocalIdentifier(existingFilter);
458
+ let targetLocalId = dashboardAttributeFilterItemLocalIdentifier(existingFilter);
459
+ // The display form fallback of this entry must not use a taken target. The entry's own
460
+ // localIdentifier identifies its exact match, and that match is always permitted. Only a
461
+ // filter that accepts a text entry is a valid substitute, so the search does not stop on
462
+ // a filter that the migration check below rejects.
463
+ if (matchByLocalIdentifier) {
464
+ existingFilter = (yield call(substituteTakenTarget, existingFilter, localId, (candidate) => isDashboardTextAttributeFilter(candidate) ||
465
+ canApplyFilterTypeToTarget("text", selectionTypeOf(candidate), candidate)));
466
+ if (!existingFilter) {
467
+ continue;
468
+ }
469
+ targetLocalId = dashboardAttributeFilterItemLocalIdentifier(existingFilter);
470
+ }
339
471
  if (handledLocalIds.has(targetLocalId)) {
340
472
  continue;
341
473
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filterViewHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/filterViewHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE/B,MAAM,2BAA2B,CAAC;AAwBnC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAcnE,wBAAiB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAoEtG;AAMD,wBAAiB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,CAsB1G;AAOD,wBAAiB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAmCxG;AAMD,wBAAiB,6BAA6B,CAC1C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,uBAAuB,GAC7B,YAAY,CAAC,IAAI,CAAC,CAuBpB;AAED,wBAAiB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAcnF"}
1
+ {"version":3,"file":"filterViewHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/filterViewHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE/B,MAAM,2BAA2B,CAAC;AAwBnC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAcnE,wBAAiB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAoEtG;AAMD,wBAAiB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,CAsB1G;AAOD,wBAAiB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAuCxG;AAMD,wBAAiB,6BAA6B,CAC1C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,uBAAuB,GAC7B,YAAY,CAAC,IAAI,CAAC,CAuBpB;AAED,wBAAiB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAcnF"}
@@ -103,6 +103,10 @@ export function* applyFilterViewHandler(ctx, cmd) {
103
103
  attributeFilterConfigs,
104
104
  resetOthers: true,
105
105
  correlationId: cmd.correlationId,
106
+ // a filter view snapshots this dashboard's own filter context, so its localIdentifiers
107
+ // are authoritative; display form matching alone cannot tell apart filters that share
108
+ // a display form
109
+ matchByLocalIdentifier: true,
106
110
  }));
107
111
  if (filterView.parameters && filterView.parameters.length > 0) {
108
112
  const workspaceParameters = yield select(selectCatalogParameters);
@@ -693,6 +693,19 @@ export type ChangeFilterContextSelectionPayload = {
693
693
  * @internal
694
694
  */
695
695
  tabLocalIdentifier?: string;
696
+ /**
697
+ * When true, attribute filters from the payload are matched against the dashboard's filter context
698
+ * by their localIdentifier first, falling back to display form matching for filters without a
699
+ * localIdentifier or without a localIdentifier match. Payload duplicities are also keyed by
700
+ * localIdentifier when present. Defaults to false (display form matching only).
701
+ *
702
+ * @remarks
703
+ * Display form matching cannot distinguish between multiple attribute filters that use the same
704
+ * display form (the first one in the filter context always wins and the other payload entries are
705
+ * dropped as duplicities). Enable this option when the dashboard contains such filters and the
706
+ * payload carries localIdentifiers.
707
+ */
708
+ matchByLocalIdentifier?: boolean;
696
709
  };
697
710
  /**
698
711
  * Command for changing multiple filters at once.
@@ -720,9 +733,11 @@ export type ChangeFilterContextSelection = IDashboardCommand & {
720
733
  * @param filters - attribute filters and date filter to apply.
721
734
  * @param resetOthers - If true, filters not mentioned in the payload will be reset to All items selected/All time. Defaults to false.
722
735
  * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing.
736
+ * @param matchByLocalIdentifier - If true, attribute filters are matched by localIdentifier first, with display form matching as a fallback. Defaults to false.
723
737
  * @returns change filter selection command
738
+ * @deprecated Use {@link changeFilterContextSelectionByParams} instead; the positional parameter list no longer covers all command options.
724
739
  */
725
- export declare function changeFilterContextSelection(filters: (IDashboardFilter | FilterContextItem)[], resetOthers?: boolean, correlationId?: string): ChangeFilterContextSelection;
740
+ export declare function changeFilterContextSelection(filters: (IDashboardFilter | FilterContextItem)[], resetOthers?: boolean, correlationId?: string, matchByLocalIdentifier?: boolean): ChangeFilterContextSelection;
726
741
  /**
727
742
  * Params for {@link changeFilterContextSelectionByParams} command.
728
743
  *
@@ -740,6 +755,11 @@ export type ChangeFilterContextSelectionParams = {
740
755
  * @internal
741
756
  */
742
757
  tabLocalIdentifier?: string;
758
+ /**
759
+ * When true, attribute filters are matched by localIdentifier first, with display form matching
760
+ * as a fallback. See {@link ChangeFilterContextSelectionPayload}. Defaults to false.
761
+ */
762
+ matchByLocalIdentifier?: boolean;
743
763
  };
744
764
  /**
745
765
  * Creates the {@link ChangeFilterContextSelection} command.
@@ -752,11 +772,11 @@ export type ChangeFilterContextSelectionParams = {
752
772
  * Date filter that does not match any visible option by the current date filter config will be also omitted.
753
773
  *
754
774
  * @param params - params for the command creator
755
- * @internal
775
+ * @public
756
776
  * TODO: next major release can remove ByParams suffix and use this implementation instead of original cmd creator + other creators can be rewritten to use params object
757
777
  * https://gooddata.atlassian.net/browse/STL-700
758
778
  */
759
- export declare function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs, resetOthers, correlationId, tabLocalIdentifier }: ChangeFilterContextSelectionParams): ChangeFilterContextSelection;
779
+ export declare function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs, resetOthers, correlationId, tabLocalIdentifier, matchByLocalIdentifier }: ChangeFilterContextSelectionParams): ChangeFilterContextSelection;
760
780
  /**
761
781
  * @beta
762
782
  */
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/model/commands/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/model/commands/filters.ts"],"names":[],"mappings":"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"}
@@ -556,15 +556,18 @@ export function setAttributeFilterParents(filterLocalId, parentFilters, correlat
556
556
  * @param filters - attribute filters and date filter to apply.
557
557
  * @param resetOthers - If true, filters not mentioned in the payload will be reset to All items selected/All time. Defaults to false.
558
558
  * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing.
559
+ * @param matchByLocalIdentifier - If true, attribute filters are matched by localIdentifier first, with display form matching as a fallback. Defaults to false.
559
560
  * @returns change filter selection command
561
+ * @deprecated Use {@link changeFilterContextSelectionByParams} instead; the positional parameter list no longer covers all command options.
560
562
  */
561
- export function changeFilterContextSelection(filters, resetOthers = false, correlationId) {
563
+ export function changeFilterContextSelection(filters, resetOthers = false, correlationId, matchByLocalIdentifier) {
562
564
  return {
563
565
  type: "GDC.DASH/CMD.FILTER_CONTEXT.CHANGE_SELECTION",
564
566
  correlationId,
565
567
  payload: {
566
568
  filters,
567
569
  resetOthers,
570
+ matchByLocalIdentifier,
568
571
  },
569
572
  };
570
573
  }
@@ -579,11 +582,11 @@ export function changeFilterContextSelection(filters, resetOthers = false, corre
579
582
  * Date filter that does not match any visible option by the current date filter config will be also omitted.
580
583
  *
581
584
  * @param params - params for the command creator
582
- * @internal
585
+ * @public
583
586
  * TODO: next major release can remove ByParams suffix and use this implementation instead of original cmd creator + other creators can be rewritten to use params object
584
587
  * https://gooddata.atlassian.net/browse/STL-700
585
588
  */
586
- export function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs = [], resetOthers = false, correlationId, tabLocalIdentifier, }) {
589
+ export function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs = [], resetOthers = false, correlationId, tabLocalIdentifier, matchByLocalIdentifier, }) {
587
590
  return {
588
591
  type: "GDC.DASH/CMD.FILTER_CONTEXT.CHANGE_SELECTION",
589
592
  correlationId,
@@ -592,6 +595,7 @@ export function changeFilterContextSelectionByParams({ filters, attributeFilterC
592
595
  attributeFilterConfigs,
593
596
  resetOthers,
594
597
  tabLocalIdentifier,
598
+ matchByLocalIdentifier,
595
599
  },
596
600
  };
597
601
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useResetFiltersButton.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/hooks/useResetFiltersButton.ts"],"names":[],"mappings":"AAqLA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;CAwJjC,CAAC"}
1
+ {"version":3,"file":"useResetFiltersButton.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/hooks/useResetFiltersButton.ts"],"names":[],"mappings":"AAqLA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;CA8JjC,CAAC"}
@@ -5,7 +5,7 @@ import { generateDateFilterLocalIdentifier } from "@gooddata/sdk-backend-base";
5
5
  import { dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMeasureValueFilter, isNoopAllTimeDashboardDateFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
6
6
  import { useToastMessage } from "@gooddata/sdk-ui-kit";
7
7
  import { messages } from "../../../../locales.js";
8
- import { changeFilterContextSelection, removeAttributeFilters, resetFilterContextWorkingSelection, } from "../../../../model/commands/filters.js";
8
+ import { changeFilterContextSelectionByParams, removeAttributeFilters, resetFilterContextWorkingSelection, } from "../../../../model/commands/filters.js";
9
9
  import { filterContextSelectionReset } from "../../../../model/events/filters.js";
10
10
  import { parametersSelectionReset } from "../../../../model/events/parameters.js";
11
11
  import { useDashboardDispatch, useDashboardSelector, } from "../../../../model/react/DashboardStoreProvider.js";
@@ -159,12 +159,18 @@ export const useResetFiltersButton = () => {
159
159
  if (isApplyAllAtOnceEnabledAndSet) {
160
160
  dispatch(resetFilterContextWorkingSelection());
161
161
  }
162
- // Dispatch a command, so it goes through the proper piping and trigger all the events
163
- dispatch(changeFilterContextSelection([
164
- commonDateFilter ??
165
- newAllTimeDashboardDateFilter(undefined, generateDateFilterLocalIdentifier(0, undefined)),
166
- ...otherFilters,
167
- ]));
162
+ // Dispatch a command, so it goes through the proper piping and trigger all the events.
163
+ // The original filters come from this dashboard's own filter context, so their
164
+ // localIdentifiers are authoritative — matching by them keeps filters that share a
165
+ // display form from clobbering each other during the reset.
166
+ dispatch(changeFilterContextSelectionByParams({
167
+ filters: [
168
+ commonDateFilter ??
169
+ newAllTimeDashboardDateFilter(undefined, generateDateFilterLocalIdentifier(0, undefined)),
170
+ ...otherFilters,
171
+ ],
172
+ matchByLocalIdentifier: true,
173
+ }));
168
174
  }
169
175
  // If cross filtering is enabled, we need to remove all attribute filters that were added by cross filtering
170
176
  if (willResetFilterContext && crossFilteringEnabled) {
@@ -1087,9 +1087,11 @@ export declare type ChangeFilterContextSelection = IDashboardCommand & {
1087
1087
  * @param filters - attribute filters and date filter to apply.
1088
1088
  * @param resetOthers - If true, filters not mentioned in the payload will be reset to All items selected/All time. Defaults to false.
1089
1089
  * @param correlationId - specify correlation id. It will be included in all events that will be emitted during the command processing.
1090
+ * @param matchByLocalIdentifier - If true, attribute filters are matched by localIdentifier first, with display form matching as a fallback. Defaults to false.
1090
1091
  * @returns change filter selection command
1092
+ * @deprecated Use {@link changeFilterContextSelectionByParams} instead; the positional parameter list no longer covers all command options.
1091
1093
  */
1092
- export declare function changeFilterContextSelection(filters: (IDashboardFilter | FilterContextItem)[], resetOthers?: boolean, correlationId?: string): ChangeFilterContextSelection;
1094
+ export declare function changeFilterContextSelection(filters: (IDashboardFilter | FilterContextItem)[], resetOthers?: boolean, correlationId?: string, matchByLocalIdentifier?: boolean): ChangeFilterContextSelection;
1093
1095
 
1094
1096
  /**
1095
1097
  * Creates the {@link ChangeFilterContextSelection} command.
@@ -1102,11 +1104,11 @@ export declare function changeFilterContextSelection(filters: (IDashboardFilter
1102
1104
  * Date filter that does not match any visible option by the current date filter config will be also omitted.
1103
1105
  *
1104
1106
  * @param params - params for the command creator
1105
- * @internal
1107
+ * @public
1106
1108
  * TODO: next major release can remove ByParams suffix and use this implementation instead of original cmd creator + other creators can be rewritten to use params object
1107
1109
  * https://gooddata.atlassian.net/browse/STL-700
1108
1110
  */
1109
- export declare function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs, resetOthers, correlationId, tabLocalIdentifier }: ChangeFilterContextSelectionParams): ChangeFilterContextSelection;
1111
+ export declare function changeFilterContextSelectionByParams({ filters, attributeFilterConfigs, resetOthers, correlationId, tabLocalIdentifier, matchByLocalIdentifier }: ChangeFilterContextSelectionParams): ChangeFilterContextSelection;
1110
1112
 
1111
1113
  /**
1112
1114
  * Params for {@link changeFilterContextSelectionByParams} command.
@@ -1125,6 +1127,11 @@ export declare type ChangeFilterContextSelectionParams = {
1125
1127
  * @internal
1126
1128
  */
1127
1129
  tabLocalIdentifier?: string;
1130
+ /**
1131
+ * When true, attribute filters are matched by localIdentifier first, with display form matching
1132
+ * as a fallback. See {@link ChangeFilterContextSelectionPayload}. Defaults to false.
1133
+ */
1134
+ matchByLocalIdentifier?: boolean;
1128
1135
  };
1129
1136
 
1130
1137
  /**
@@ -1155,6 +1162,19 @@ export declare type ChangeFilterContextSelectionPayload = {
1155
1162
  * @internal
1156
1163
  */
1157
1164
  tabLocalIdentifier?: string;
1165
+ /**
1166
+ * When true, attribute filters from the payload are matched against the dashboard's filter context
1167
+ * by their localIdentifier first, falling back to display form matching for filters without a
1168
+ * localIdentifier or without a localIdentifier match. Payload duplicities are also keyed by
1169
+ * localIdentifier when present. Defaults to false (display form matching only).
1170
+ *
1171
+ * @remarks
1172
+ * Display form matching cannot distinguish between multiple attribute filters that use the same
1173
+ * display form (the first one in the filter context always wins and the other payload entries are
1174
+ * dropped as duplicities). Enable this option when the dashboard contains such filters and the
1175
+ * payload carries localIdentifiers.
1176
+ */
1177
+ matchByLocalIdentifier?: boolean;
1158
1178
  };
1159
1179
 
1160
1180
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.54.0-alpha.1",
3
+ "version": "11.54.0-alpha.3",
4
4
  "description": "GoodData SDK - Dashboard Component",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -60,20 +60,20 @@
60
60
  "ts-invariant": "0.10.3",
61
61
  "tslib": "2.8.1",
62
62
  "uuid": "11.1.1",
63
- "@gooddata/sdk-backend-base": "11.54.0-alpha.1",
64
- "@gooddata/sdk-backend-spi": "11.54.0-alpha.1",
65
- "@gooddata/sdk-model": "11.54.0-alpha.1",
66
- "@gooddata/sdk-ui": "11.54.0-alpha.1",
67
- "@gooddata/sdk-ui-charts": "11.54.0-alpha.1",
68
- "@gooddata/sdk-ui-ext": "11.54.0-alpha.1",
69
- "@gooddata/sdk-ui-filters": "11.54.0-alpha.1",
70
- "@gooddata/sdk-ui-geo": "11.54.0-alpha.1",
71
- "@gooddata/sdk-ui-kit": "11.54.0-alpha.1",
72
- "@gooddata/sdk-ui-pivot": "11.54.0-alpha.1",
73
- "@gooddata/sdk-ui-semantic-search": "11.54.0-alpha.1",
74
- "@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.1",
75
- "@gooddata/sdk-ui-vis-commons": "11.54.0-alpha.1",
76
- "@gooddata/util": "11.54.0-alpha.1"
63
+ "@gooddata/sdk-backend-base": "11.54.0-alpha.3",
64
+ "@gooddata/sdk-backend-spi": "11.54.0-alpha.3",
65
+ "@gooddata/sdk-model": "11.54.0-alpha.3",
66
+ "@gooddata/sdk-ui-charts": "11.54.0-alpha.3",
67
+ "@gooddata/sdk-ui": "11.54.0-alpha.3",
68
+ "@gooddata/sdk-ui-ext": "11.54.0-alpha.3",
69
+ "@gooddata/sdk-ui-geo": "11.54.0-alpha.3",
70
+ "@gooddata/sdk-ui-pivot": "11.54.0-alpha.3",
71
+ "@gooddata/sdk-ui-kit": "11.54.0-alpha.3",
72
+ "@gooddata/sdk-ui-semantic-search": "11.54.0-alpha.3",
73
+ "@gooddata/sdk-ui-filters": "11.54.0-alpha.3",
74
+ "@gooddata/sdk-ui-theme-provider": "11.54.0-alpha.3",
75
+ "@gooddata/sdk-ui-vis-commons": "11.54.0-alpha.3",
76
+ "@gooddata/util": "11.54.0-alpha.3"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@microsoft/api-documenter": "^7.17.0",
@@ -119,12 +119,12 @@
119
119
  "typescript": "5.9.3",
120
120
  "vitest": "4.1.8",
121
121
  "vitest-dom": "0.1.1",
122
- "@gooddata/eslint-config": "11.54.0-alpha.1",
123
- "@gooddata/i18n-toolkit": "11.54.0-alpha.1",
124
- "@gooddata/oxlint-config": "11.54.0-alpha.1",
125
- "@gooddata/reference-workspace": "11.54.0-alpha.1",
126
- "@gooddata/sdk-backend-mockingbird": "11.54.0-alpha.1",
127
- "@gooddata/stylelint-config": "11.54.0-alpha.1"
122
+ "@gooddata/eslint-config": "11.54.0-alpha.3",
123
+ "@gooddata/i18n-toolkit": "11.54.0-alpha.3",
124
+ "@gooddata/sdk-backend-mockingbird": "11.54.0-alpha.3",
125
+ "@gooddata/oxlint-config": "11.54.0-alpha.3",
126
+ "@gooddata/stylelint-config": "11.54.0-alpha.3",
127
+ "@gooddata/reference-workspace": "11.54.0-alpha.3"
128
128
  },
129
129
  "peerDependencies": {
130
130
  "react": "^18.0.0 || ^19.0.0",
@@ -1402,7 +1402,7 @@ button.gd-list-item {
1402
1402
  box-sizing: border-box;
1403
1403
  display: inline-block;
1404
1404
  padding: 4px 8px 4px 10px;
1405
- min-height: 1px;
1405
+ min-height: auto;
1406
1406
  line-height: 1.4em;
1407
1407
  pointer-events: all;
1408
1408
  max-width: 100%;