@gooddata/sdk-ui-dashboard 11.36.0-alpha.6 → 11.36.0-alpha.7

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.
Files changed (70) hide show
  1. package/NOTICE +14 -50
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/index.d.ts +1 -1
  5. package/esm/index.js +1 -1
  6. package/esm/model/store/config/configSelectors.d.ts +0 -6
  7. package/esm/model/store/config/configSelectors.js +2 -10
  8. package/esm/model/store/widgetDrills/widgetDrillSelectors.js +10 -18
  9. package/esm/presentation/alerting/DefaultAlertingDialog/utils/items.js +5 -2
  10. package/esm/presentation/drill/DrillSelect/DrillSelectDropdown.js +1 -3
  11. package/esm/presentation/drill/hooks/useDrillSelectDropdownMenuItems.js +1 -5
  12. package/esm/presentation/export/DefaultDashboardExportVariables.js +5 -2
  13. package/esm/presentation/export/hooks/useDashboardRelatedFilters.d.ts +2 -1
  14. package/esm/presentation/export/hooks/useDashboardRelatedFilters.js +9 -0
  15. package/esm/presentation/export/types.d.ts +2 -1
  16. package/esm/presentation/export/types.js +1 -1
  17. package/esm/presentation/export/useExportData.js +4 -0
  18. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  19. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +1 -0
  20. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  21. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +1 -0
  22. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  23. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +2 -1
  24. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  25. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +2 -1
  26. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  27. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +2 -1
  28. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  29. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -0
  30. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  31. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +1 -0
  32. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  33. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +1 -0
  34. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  35. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +1 -0
  36. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  37. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +1 -0
  38. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  39. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +1 -0
  40. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  41. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +1 -0
  42. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  43. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +1 -0
  44. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  45. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +1 -0
  46. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  47. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +1 -0
  48. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  49. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +1 -0
  50. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  51. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +1 -0
  52. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  53. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +1 -0
  54. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  55. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +1 -0
  56. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  57. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +1 -0
  58. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  59. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +1 -0
  60. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  61. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +1 -0
  62. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  63. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +1 -0
  64. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  65. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -0
  66. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  67. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -0
  68. package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.js +4 -10
  69. package/esm/sdk-ui-dashboard.d.ts +3 -9
  70. package/package.json +20 -20
package/NOTICE CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
9
9
 
10
- Date generated: 2026-5-19
10
+ Date generated: 2026-5-20
11
11
 
12
- Revision ID: e8feca49139df19ea79a50cc6d819cf8eeafeb2e
12
+ Revision ID: b6d15371a966d44461e8af8bc123206c32e6cb20
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -232,7 +232,7 @@ Revision ID: e8feca49139df19ea79a50cc6d819cf8eeafeb2e
232
232
  - @nodelib/fs.walk (1.2.8) [MIT]
233
233
  - @oxc-project/runtime (0.115.0) [MIT]
234
234
  - @oxc-project/types (0.115.0) [MIT]
235
- - @playwright/test (1.59.1) [Apache-2.0]
235
+ - @playwright/test (1.60.0) [Apache-2.0]
236
236
  - @polka/url (1.0.0-next.29) [MIT]
237
237
  - @react-aria/interactions (3.25.5) [Apache-2.0]
238
238
  - @react-aria/ssr (3.9.10) [Apache-2.0]
@@ -839,8 +839,8 @@ Revision ID: e8feca49139df19ea79a50cc6d819cf8eeafeb2e
839
839
  - picomatch (4.0.3) [MIT]
840
840
  - pify (4.0.1) [MIT]
841
841
  - pkg-dir (4.2.0) [MIT]
842
- - playwright (1.59.1) [Apache-2.0, CC-BY-4.0, MIT, ISC, BSD-3-Clause]
843
- - playwright-core (1.59.1) [Apache-2.0, mit-addition, IETF, BSD-2-Clause, MIT, BSD-3-Clause, ISC]
842
+ - playwright (1.60.0) [Apache-2.0, MIT, ISC, CC-BY-4.0, BSD-3-Clause]
843
+ - playwright-core (1.60.0) [Apache-2.0, MIT, BSD-2-Clause, ISC, BSD-3-Clause]
844
844
  - polished (3.7.2) [MIT, OFL-1.1]
845
845
  - possible-typed-array-names (1.1.0) [MIT]
846
846
  - postcss (8.5.6) [MIT]
@@ -3619,9 +3619,9 @@ MIT
3619
3619
 
3620
3620
 
3621
3621
  --------------------------------------------------------------------------------
3622
- Package Title: @playwright/test (1.59.1)
3622
+ Package Title: @playwright/test (1.60.0)
3623
3623
 
3624
- Package Locator: npm+@playwright/test$1.59.1
3624
+ Package Locator: npm+@playwright/test$1.60.0
3625
3625
 
3626
3626
  Package Depth: Direct
3627
3627
  --------------------------------------------------------------------------------
@@ -10961,9 +10961,9 @@ MIT
10961
10961
 
10962
10962
 
10963
10963
  --------------------------------------------------------------------------------
10964
- Package Title: playwright (1.59.1)
10964
+ Package Title: playwright (1.60.0)
10965
10965
 
10966
- Package Locator: npm+playwright$1.59.1
10966
+ Package Locator: npm+playwright$1.60.0
10967
10967
 
10968
10968
  Package Depth: Transitive
10969
10969
  --------------------------------------------------------------------------------
@@ -10973,13 +10973,13 @@ Apache-2.0
10973
10973
 
10974
10974
 
10975
10975
  * Other Licenses *
10976
- CC-BY-4.0, MIT, ISC, BSD-3-Clause
10976
+ MIT, ISC, CC-BY-4.0, BSD-3-Clause
10977
10977
 
10978
10978
 
10979
10979
  --------------------------------------------------------------------------------
10980
- Package Title: playwright-core (1.59.1)
10980
+ Package Title: playwright-core (1.60.0)
10981
10981
 
10982
- Package Locator: npm+playwright-core$1.59.1
10982
+ Package Locator: npm+playwright-core$1.60.0
10983
10983
 
10984
10984
  Package Depth: Transitive
10985
10985
  --------------------------------------------------------------------------------
@@ -10989,7 +10989,7 @@ Apache-2.0
10989
10989
 
10990
10990
 
10991
10991
  * Other Licenses *
10992
- mit-addition, IETF, BSD-2-Clause, MIT, BSD-3-Clause, ISC
10992
+ MIT, BSD-2-Clause, ISC, BSD-3-Clause
10993
10993
 
10994
10994
 
10995
10995
  --------------------------------------------------------------------------------
@@ -30356,14 +30356,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30356
30356
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30357
30357
 
30358
30358
 
30359
- * IETF *
30360
-
30361
- This repository relates to activities in the Internet Engineering Task Force (IETF). All material in this repository is considered Contributions to the IETF Standards Process, as defined in the intellectual property policies of IETF currently designated as BCP 78, BCP 79 and the IETF Trust Legal Provisions (TLP) Relating to IETF Documents.
30362
-
30363
- Any edit, commit, pull request, issue, comment or other change made to this repository constitutes Contributions to the IETF Standards Process (https://www.ietf.org/).
30364
-
30365
- You agree to comply with all applicable IETF policies and procedures, including, BCP 78, 79, the TLP, and the TLP rules regarding code components (e.g. being subject to a Simplified BSD License) in Contributions.
30366
-
30367
30359
  * ISC *
30368
30360
 
30369
30361
  ISC License
@@ -38157,34 +38149,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38157
38149
  SOFTWARE.
38158
38150
 
38159
38151
 
38160
- * mit-addition *
38161
-
38162
- Permission is hereby granted, free of charge, to any person obtaining a
38163
- copy of this software and associated documentation files (the
38164
- "Software"), to deal in the Software without restriction, including
38165
- without limitation the rights to use, copy, modify, merge, publish,
38166
- distribute, sublicense, and/or sell copies of the Software, and to
38167
- permit persons to whom the Software is furnished to do so, subject to
38168
- the following conditions:
38169
-
38170
- The above copyright notice and this permission notice shall be included
38171
- in all copies or substantial portions of the Software.
38172
-
38173
- THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
38174
- EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
38175
- WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
38176
-
38177
- IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT
38178
- OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
38179
- RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
38180
- THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
38181
- OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
38182
-
38183
- In addition, the following condition applies:
38184
-
38185
- All redistributions must retain an intact copy of this copyright notice
38186
- and disclaimer.
38187
-
38188
38152
  * public-domain *
38189
38153
 
38190
38154
  No license text available
@@ -38225,4 +38189,4 @@ POSSIBILITY OF SUCH DAMAGE.
38225
38189
  --------------------------------------------------------------------------------
38226
38190
  --------------------------------------------------------------------------------
38227
38191
 
38228
- Report Generated by FOSSA on 2026-5-19
38192
+ Report Generated by FOSSA on 2026-5-20
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.36.0-alpha.6";
1
+ export declare const LIB_VERSION = "11.36.0-alpha.7";
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.36.0-alpha.6";
3
+ export const LIB_VERSION = "11.36.0-alpha.7";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
package/esm/index.d.ts CHANGED
@@ -100,7 +100,7 @@ export type { SavingState } from "./model/store/saving/savingState.js";
100
100
  export type { BackendCapabilitiesState } from "./model/store/backendCapabilities/backendCapabilitiesState.js";
101
101
  export { selectBackendCapabilities, selectSupportsElementsQueryParentFiltering, selectSupportsElementUris, selectSupportsKpiWidgetCapability, selectSupportsAccessControlCapability, selectSupportsHierarchicalWorkspacesCapability, selectSupportsObjectUris, selectSupportsSettingConnectingAttributes, selectSupportsKeepingDependentFiltersSelection, selectAllowMultipleInteractionsPerAttributeAndMeasure, selectSupportsAttributeHierarchies, selectSupportsSingleSelectDependentFilters, selectSupportsCrossFiltering, selectSupportsMultipleDateFilters, selectSupportsRichTextWidgets, } from "./model/store/backendCapabilities/backendCapabilitiesSelectors.js";
102
102
  export type { ConfigState } from "./model/store/config/configState.js";
103
- export { selectConfig, selectLocale, selectSeparators, selectSettings, selectColorPalette, selectDateFilterConfig, selectObjectAvailabilityConfig, selectIsReadOnly, selectMapboxToken, selectAgGridToken, selectDateFormat, selectIsEmbedded, selectIsExport, selectExportMetadata, selectPlatformEdition, selectDisableDefaultDrills, selectEnableFilterValuesResolutionInDrillEvents, selectEnableKPIDashboardExportPDF, selectDisableKpiDashboardHeadlineUnderline, selectIsWhiteLabeled, selectIsSaveAsNewButtonHidden, selectAllowUnfinishedFeatures, selectAllowCreateInsightRequest, selectIsKPIDashboardDependentFiltersEnabled, selectIsShareButtonHidden, selectWeekStart, selectTimezone, selectEnableUnavailableItemsVisibility, selectEnableKDDependentFilters, selectIsKDDependentFiltersEnabled, selectEnableKDCrossFiltering, selectEnableMultipleDateFilters, selectEnableKDRichText, selectEnableKDAttributeFilterDatesValidation, selectEnableImmediateAttributeFilterDisplayAsLabelMigration, selectEnableRichTextDescriptions, selectIsDisabledCrossFiltering, selectIsDisableUserFilterReset, selectEnableScheduling, selectEnableParameters, selectEnableFilterViews, selectEnableCustomizedDashboardsWithoutPluginOverlay, selectEnableAlerting, selectEnableAlertAttributes, selectEnableComparisonInAlerting, selectEnableVisualizationSwitcher, selectEnableIgnoreCrossFiltering, selectEnableAutomations, selectEnableCrossFilteringAliasTitles, selectEnableInPlatformNotifications, selectEnableExternalRecipients, selectEnableDrilledTooltip, selectFocusObject, selectEnableDashboardDescriptionDynamicHeight, selectEnableSlideshowExports, selectEnableRichTextDynamicReferences, selectEnableRichTextWidgetFilterConfiguration, selectEnableDashboardSectionHeadersDateDataSet, selectDashboardFiltersApplyMode, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectEnableExecutionCancelling, selectEnableOrchestratedTabularExports, selectEnableDashboardTabularExport, selectEnableDashboardShareLink, selectEnableAlertsEvaluationFrequencySetup, selectEnableDateFilterIdentifiers, selectEnableKDEmptyDateValuesFilter, selectEnableSnapshotExportAccessibility, selectEnableExportToDocumentStorage, selectExternalRecipient, selectEnableDashboardShareDialogLink, selectEnableNewScheduledExport, selectEnableAutomationManagement, selectEnableAutomationEvaluationMode, selectEnableExportToPdfTabular, selectEnableSnapshotExport, selectEnableAccessibilityMode, selectIsAddTabButtonHidden, selectExportResultPollingTimeout, selectEnableAnomalyDetectionAlert, selectEnableImplicitDrillToUrl, selectEnableFiscalCalendars, selectActiveCalendars, selectEnableDashboardFilterGroups, selectEnableDashboardDensitySetting, selectEnableFilterControlInDrillingConfiguration, } from "./model/store/config/configSelectors.js";
103
+ export { selectConfig, selectLocale, selectSeparators, selectSettings, selectColorPalette, selectDateFilterConfig, selectObjectAvailabilityConfig, selectIsReadOnly, selectMapboxToken, selectAgGridToken, selectDateFormat, selectIsEmbedded, selectIsExport, selectExportMetadata, selectPlatformEdition, selectDisableDefaultDrills, selectEnableFilterValuesResolutionInDrillEvents, selectEnableKPIDashboardExportPDF, selectDisableKpiDashboardHeadlineUnderline, selectIsWhiteLabeled, selectIsSaveAsNewButtonHidden, selectAllowUnfinishedFeatures, selectAllowCreateInsightRequest, selectIsKPIDashboardDependentFiltersEnabled, selectIsShareButtonHidden, selectWeekStart, selectTimezone, selectEnableUnavailableItemsVisibility, selectEnableKDDependentFilters, selectIsKDDependentFiltersEnabled, selectEnableKDCrossFiltering, selectEnableMultipleDateFilters, selectEnableKDRichText, selectEnableKDAttributeFilterDatesValidation, selectEnableImmediateAttributeFilterDisplayAsLabelMigration, selectEnableRichTextDescriptions, selectIsDisabledCrossFiltering, selectIsDisableUserFilterReset, selectEnableScheduling, selectEnableParameters, selectEnableFilterViews, selectEnableCustomizedDashboardsWithoutPluginOverlay, selectEnableAlerting, selectEnableAlertAttributes, selectEnableComparisonInAlerting, selectEnableVisualizationSwitcher, selectEnableIgnoreCrossFiltering, selectEnableAutomations, selectEnableCrossFilteringAliasTitles, selectEnableInPlatformNotifications, selectEnableExternalRecipients, selectEnableDrilledTooltip, selectFocusObject, selectEnableDashboardDescriptionDynamicHeight, selectEnableSlideshowExports, selectEnableRichTextDynamicReferences, selectEnableRichTextWidgetFilterConfiguration, selectEnableDashboardSectionHeadersDateDataSet, selectDashboardFiltersApplyMode, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectEnableExecutionCancelling, selectEnableOrchestratedTabularExports, selectEnableDashboardTabularExport, selectEnableDashboardShareLink, selectEnableAlertsEvaluationFrequencySetup, selectEnableDateFilterIdentifiers, selectEnableKDEmptyDateValuesFilter, selectEnableSnapshotExportAccessibility, selectEnableExportToDocumentStorage, selectExternalRecipient, selectEnableDashboardShareDialogLink, selectEnableNewScheduledExport, selectEnableAutomationManagement, selectEnableAutomationEvaluationMode, selectEnableExportToPdfTabular, selectEnableSnapshotExport, selectEnableAccessibilityMode, selectIsAddTabButtonHidden, selectExportResultPollingTimeout, selectEnableAnomalyDetectionAlert, selectEnableFiscalCalendars, selectActiveCalendars, selectEnableDashboardFilterGroups, selectEnableDashboardDensitySetting, selectEnableFilterControlInDrillingConfiguration, } from "./model/store/config/configSelectors.js";
104
104
  export type { IEntitlementsState } from "./model/store/entitlements/entitlementsState.js";
105
105
  export { selectEntitlementMaxAutomationRecipients, selectEntitlementMaxAutomations, selectEntitlementMinimumRecurrenceMinutes, selectEntitlementUnlimitedAutomations, selectEntitlementUnlimitedAutomationRecipients, selectMaxAutomationRecipients, } from "./model/store/entitlements/entitlementsSelectors.js";
106
106
  export type { PermissionsState } from "./model/store/permissions/permissionsState.js";
package/esm/index.js CHANGED
@@ -79,7 +79,7 @@ export { queryAvailableDatasetsForItems, } from "./model/queries/availableDatase
79
79
  export { selectDashboardLoading, selectIsDashboardLoading } from "./model/store/loading/loadingSelectors.js";
80
80
  export { selectDashboardSaving, selectIsDashboardSaving } from "./model/store/saving/savingSelectors.js";
81
81
  export { selectBackendCapabilities, selectSupportsElementsQueryParentFiltering, selectSupportsElementUris, selectSupportsKpiWidgetCapability, selectSupportsAccessControlCapability, selectSupportsHierarchicalWorkspacesCapability, selectSupportsObjectUris, selectSupportsSettingConnectingAttributes, selectSupportsKeepingDependentFiltersSelection, selectAllowMultipleInteractionsPerAttributeAndMeasure, selectSupportsAttributeHierarchies, selectSupportsSingleSelectDependentFilters, selectSupportsCrossFiltering, selectSupportsMultipleDateFilters, selectSupportsRichTextWidgets, } from "./model/store/backendCapabilities/backendCapabilitiesSelectors.js";
82
- export { selectConfig, selectLocale, selectSeparators, selectSettings, selectColorPalette, selectDateFilterConfig, selectObjectAvailabilityConfig, selectIsReadOnly, selectMapboxToken, selectAgGridToken, selectDateFormat, selectIsEmbedded, selectIsExport, selectExportMetadata, selectPlatformEdition, selectDisableDefaultDrills, selectEnableFilterValuesResolutionInDrillEvents, selectEnableKPIDashboardExportPDF, selectDisableKpiDashboardHeadlineUnderline, selectIsWhiteLabeled, selectIsSaveAsNewButtonHidden, selectAllowUnfinishedFeatures, selectAllowCreateInsightRequest, selectIsKPIDashboardDependentFiltersEnabled, selectIsShareButtonHidden, selectWeekStart, selectTimezone, selectEnableUnavailableItemsVisibility, selectEnableKDDependentFilters, selectIsKDDependentFiltersEnabled, selectEnableKDCrossFiltering, selectEnableMultipleDateFilters, selectEnableKDRichText, selectEnableKDAttributeFilterDatesValidation, selectEnableImmediateAttributeFilterDisplayAsLabelMigration, selectEnableRichTextDescriptions, selectIsDisabledCrossFiltering, selectIsDisableUserFilterReset, selectEnableScheduling, selectEnableParameters, selectEnableFilterViews, selectEnableCustomizedDashboardsWithoutPluginOverlay, selectEnableAlerting, selectEnableAlertAttributes, selectEnableComparisonInAlerting, selectEnableVisualizationSwitcher, selectEnableIgnoreCrossFiltering, selectEnableAutomations, selectEnableCrossFilteringAliasTitles, selectEnableInPlatformNotifications, selectEnableExternalRecipients, selectEnableDrilledTooltip, selectFocusObject, selectEnableDashboardDescriptionDynamicHeight, selectEnableSlideshowExports, selectEnableRichTextDynamicReferences, selectEnableRichTextWidgetFilterConfiguration, selectEnableDashboardSectionHeadersDateDataSet, selectDashboardFiltersApplyMode, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectEnableExecutionCancelling, selectEnableOrchestratedTabularExports, selectEnableDashboardTabularExport, selectEnableDashboardShareLink, selectEnableAlertsEvaluationFrequencySetup, selectEnableDateFilterIdentifiers, selectEnableKDEmptyDateValuesFilter, selectEnableSnapshotExportAccessibility, selectEnableExportToDocumentStorage, selectExternalRecipient, selectEnableDashboardShareDialogLink, selectEnableNewScheduledExport, selectEnableAutomationManagement, selectEnableAutomationEvaluationMode, selectEnableExportToPdfTabular, selectEnableSnapshotExport, selectEnableAccessibilityMode, selectIsAddTabButtonHidden, selectExportResultPollingTimeout, selectEnableAnomalyDetectionAlert, selectEnableImplicitDrillToUrl, selectEnableFiscalCalendars, selectActiveCalendars, selectEnableDashboardFilterGroups, selectEnableDashboardDensitySetting, selectEnableFilterControlInDrillingConfiguration, } from "./model/store/config/configSelectors.js";
82
+ export { selectConfig, selectLocale, selectSeparators, selectSettings, selectColorPalette, selectDateFilterConfig, selectObjectAvailabilityConfig, selectIsReadOnly, selectMapboxToken, selectAgGridToken, selectDateFormat, selectIsEmbedded, selectIsExport, selectExportMetadata, selectPlatformEdition, selectDisableDefaultDrills, selectEnableFilterValuesResolutionInDrillEvents, selectEnableKPIDashboardExportPDF, selectDisableKpiDashboardHeadlineUnderline, selectIsWhiteLabeled, selectIsSaveAsNewButtonHidden, selectAllowUnfinishedFeatures, selectAllowCreateInsightRequest, selectIsKPIDashboardDependentFiltersEnabled, selectIsShareButtonHidden, selectWeekStart, selectTimezone, selectEnableUnavailableItemsVisibility, selectEnableKDDependentFilters, selectIsKDDependentFiltersEnabled, selectEnableKDCrossFiltering, selectEnableMultipleDateFilters, selectEnableKDRichText, selectEnableKDAttributeFilterDatesValidation, selectEnableImmediateAttributeFilterDisplayAsLabelMigration, selectEnableRichTextDescriptions, selectIsDisabledCrossFiltering, selectIsDisableUserFilterReset, selectEnableScheduling, selectEnableParameters, selectEnableFilterViews, selectEnableCustomizedDashboardsWithoutPluginOverlay, selectEnableAlerting, selectEnableAlertAttributes, selectEnableComparisonInAlerting, selectEnableVisualizationSwitcher, selectEnableIgnoreCrossFiltering, selectEnableAutomations, selectEnableCrossFilteringAliasTitles, selectEnableInPlatformNotifications, selectEnableExternalRecipients, selectEnableDrilledTooltip, selectFocusObject, selectEnableDashboardDescriptionDynamicHeight, selectEnableSlideshowExports, selectEnableRichTextDynamicReferences, selectEnableRichTextWidgetFilterConfiguration, selectEnableDashboardSectionHeadersDateDataSet, selectDashboardFiltersApplyMode, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectEnableExecutionCancelling, selectEnableOrchestratedTabularExports, selectEnableDashboardTabularExport, selectEnableDashboardShareLink, selectEnableAlertsEvaluationFrequencySetup, selectEnableDateFilterIdentifiers, selectEnableKDEmptyDateValuesFilter, selectEnableSnapshotExportAccessibility, selectEnableExportToDocumentStorage, selectExternalRecipient, selectEnableDashboardShareDialogLink, selectEnableNewScheduledExport, selectEnableAutomationManagement, selectEnableAutomationEvaluationMode, selectEnableExportToPdfTabular, selectEnableSnapshotExport, selectEnableAccessibilityMode, selectIsAddTabButtonHidden, selectExportResultPollingTimeout, selectEnableAnomalyDetectionAlert, selectEnableFiscalCalendars, selectActiveCalendars, selectEnableDashboardFilterGroups, selectEnableDashboardDensitySetting, selectEnableFilterControlInDrillingConfiguration, } from "./model/store/config/configSelectors.js";
83
83
  export { selectEntitlementMaxAutomationRecipients, selectEntitlementMaxAutomations, selectEntitlementMinimumRecurrenceMinutes, selectEntitlementUnlimitedAutomations, selectEntitlementUnlimitedAutomationRecipients, selectMaxAutomationRecipients, } from "./model/store/entitlements/entitlementsSelectors.js";
84
84
  export { selectPermissions, selectCanListUsersInWorkspace, selectCanManageWorkspace, selectCanExportReport, selectCanExportTabular, selectCanExportPdf, selectCanCreateAnalyticalDashboard, selectCanManageACL, selectCanManageAnalyticalDashboard, selectCanCreateScheduledMail, selectCanInitData, selectCanUploadNonProductionCSV, selectCanExecuteRaw, selectCanCreateVisualization, selectCanManageMetric, selectCanManageDomain, selectCanInviteUserToWorkspace, selectCanRefreshData, selectCanManageScheduledMail, selectCanManageAttributeHierarchy, selectCanCreateFilterView, selectCanCreateAutomation, selectCanUseAiAssistant, } from "./model/store/permissions/permissionsSelectors.js";
85
85
  export { selectCanViewDashboardPermission, selectCanShareDashboardPermission, selectCanShareLockedDashboardPermission, selectCanEditDashboardPermission, selectCanEditLockedDashboardPermission, selectDashboardPermissions, } from "./model/store/dashboardPermissions/dashboardPermissionsSelectors.js";
@@ -557,12 +557,6 @@ export declare const selectEnableSnapshotExport: DashboardSelector<boolean>;
557
557
  * @internal
558
558
  */
559
559
  export declare const selectEnableAccessibilityMode: DashboardSelector<boolean>;
560
- /**
561
- * Returns whether implicit drill to url feature is enabled.
562
- *
563
- * @alpha
564
- */
565
- export declare const selectEnableImplicitDrillToUrl: DashboardSelector<boolean>;
566
560
  /**
567
561
  * Returns the timeout to use when polling for export results (in milliseconds).
568
562
  *
@@ -750,14 +750,6 @@ export const selectEnableSnapshotExport = createSelector(selectConfig, (state) =
750
750
  export const selectEnableAccessibilityMode = createSelector(selectConfig, (state) => {
751
751
  return Boolean(state.settings?.enableAccessibilityMode);
752
752
  });
753
- /**
754
- * Returns whether implicit drill to url feature is enabled.
755
- *
756
- * @alpha
757
- */
758
- export const selectEnableImplicitDrillToUrl = createSelector(selectConfig, (state) => {
759
- return state.settings?.enableImplicitDrillToUrl ?? true;
760
- });
761
753
  /**
762
754
  * Returns the timeout to use when polling for export results (in milliseconds).
763
755
  *
@@ -776,8 +768,8 @@ export const selectExportResultPollingTimeout = createSelector(selectConfig, (st
776
768
  *
777
769
  * @alpha
778
770
  */
779
- export const selectEnableDrillToUrlByDefault = createSelector(selectConfig, selectEnableImplicitDrillToUrl, (state, enableImplicitDrillToUrl) => {
780
- return enableImplicitDrillToUrl ? (state.settings?.enableDrillToUrlByDefault ?? false) : false;
771
+ export const selectEnableDrillToUrlByDefault = createSelector(selectConfig, (state) => {
772
+ return state.settings?.enableDrillToUrlByDefault ?? false;
781
773
  });
782
774
  /**
783
775
  * Returns whether fiscal calendars feature flag is enabled.
@@ -10,7 +10,7 @@ import { createMemoizedSelector } from "../_infra/selectors.js";
10
10
  import { selectAccessibleDashboardsLoaded, selectAccessibleDashboardsMap, } from "../accessibleDashboards/accessibleDashboardsSelectors.js";
11
11
  import { selectBackendCapabilities, selectSupportsAttributeHierarchies, selectSupportsCrossFiltering, } from "../backendCapabilities/backendCapabilitiesSelectors.js";
12
12
  import { selectAllCatalogAttributeHierarchies, selectAllCatalogAttributesMap, selectAllCatalogDisplayFormsMap, selectAttributesWithDisplayFormLink, selectAttributesWithHierarchyDescendants, selectCatalogDateAttributes, selectCatalogIsLoaded, } from "../catalog/catalogSelectors.js";
13
- import { selectDisableDefaultDrills, selectEnableDrillToUrlByDefault, selectEnableImplicitDrillToUrl, selectEnableKDCrossFiltering, selectEnableKda, selectIsDisabledCrossFiltering, selectIsDisabledKda, selectIsEmbedded, } from "../config/configSelectors.js";
13
+ import { selectDisableDefaultDrills, selectEnableDrillToUrlByDefault, selectEnableKDCrossFiltering, selectEnableKda, selectIsDisabledCrossFiltering, selectIsDisabledKda, selectIsEmbedded, } from "../config/configSelectors.js";
14
14
  import { selectDrillableItems } from "../drill/drillSelectors.js";
15
15
  import { selectDrillTargetsByWidgetRef } from "../drillTargets/drillTargetsSelectors.js";
16
16
  import { selectInsightByWidgetRef, selectInsightsMap } from "../insights/insightsSelectors.js";
@@ -126,14 +126,11 @@ function getDrillDownDefinitionsWithPredicates(availableDrillAttributes, attribu
126
126
  });
127
127
  });
128
128
  }
129
- function getDrillToUrlDefinitionsWithPredicates(availableDrillAttributes, attributesWithDisplayFormLink, ignoredDrillToUrlAttributes, enableImplicitDrillToUrl) {
129
+ function getDrillToUrlDefinitionsWithPredicates(availableDrillAttributes, attributesWithDisplayFormLink, ignoredDrillToUrlAttributes) {
130
130
  const matchingAvailableDrillAttributes = availableDrillAttributes.filter((candidate) => {
131
131
  return attributesWithDisplayFormLink.some((attr) => areObjRefsEqual(attr.attribute.ref, candidate.attribute.attributeHeader.formOf.ref));
132
132
  });
133
133
  const filterIgnoredDrillToUrlAttributes = (targetAttribute) => {
134
- if (!enableImplicitDrillToUrl) {
135
- return true;
136
- }
137
134
  return !ignoredDrillToUrlAttributes?.some((ignoredAttributeRef) => areObjRefsEqual(targetAttribute.attribute.attributeHeader.ref, ignoredAttributeRef));
138
135
  };
139
136
  const mapDrillTargetToDefinition = (targetAttribute) => {
@@ -304,10 +301,7 @@ export const selectGlobalDrillsDownAttributeHierarchyByWidgetRef = createMemoize
304
301
  /**
305
302
  * @internal
306
303
  */
307
- export const selectDrillsToUrlAttributeByWidgetRef = createMemoizedSelector((ref) => createSelector(selectDrillTargetsByWidgetRef(ref), selectIgnoredDrillToUrlAttributesByWidgetRef(ref), selectInsightByWidgetRef(ref), selectAllCatalogDisplayFormsMap, selectAllCatalogAttributesMap, selectEnableDrillToUrlByDefault, selectEnableImplicitDrillToUrl, (availableDrillTargets, ignoredDrillToUrlAttributes, widgetInsight, allCatalogDisplayFormsMap, allCatalogAttributesMap, enableDrillToUrlByDefault, enableImplicitDrillToUrl) => {
308
- if (!enableImplicitDrillToUrl) {
309
- return [];
310
- }
304
+ export const selectDrillsToUrlAttributeByWidgetRef = createMemoizedSelector((ref) => createSelector(selectDrillTargetsByWidgetRef(ref), selectIgnoredDrillToUrlAttributesByWidgetRef(ref), selectInsightByWidgetRef(ref), selectAllCatalogDisplayFormsMap, selectAllCatalogAttributesMap, selectEnableDrillToUrlByDefault, (availableDrillTargets, ignoredDrillToUrlAttributes, widgetInsight, allCatalogDisplayFormsMap, allCatalogAttributesMap, enableDrillToUrlByDefault) => {
311
305
  const disableDrillIntoURL = widgetInsight?.insight?.properties?.["controls"]?.disableDrillIntoURL ??
312
306
  !enableDrillToUrlByDefault;
313
307
  if (disableDrillIntoURL) {
@@ -341,9 +335,9 @@ export const selectDrillsToUrlAttributeByWidgetRef = createMemoizedSelector((ref
341
335
  /**
342
336
  * @internal
343
337
  */
344
- export const selectImplicitDrillsToUrlByWidgetRef = createMemoizedSelector((ref) => createSelector(selectDrillTargetsByWidgetRef(ref), selectAttributesWithDisplayFormLink, selectIgnoredDrillToUrlAttributesByWidgetRef(ref), selectEnableImplicitDrillToUrl, (availableDrillTargets, attributesWithLink, ignoredDrillToUrlAttributes, enableImplicitDrillToUrl) => {
338
+ export const selectImplicitDrillsToUrlByWidgetRef = createMemoizedSelector((ref) => createSelector(selectDrillTargetsByWidgetRef(ref), selectAttributesWithDisplayFormLink, selectIgnoredDrillToUrlAttributesByWidgetRef(ref), (availableDrillTargets, attributesWithLink, ignoredDrillToUrlAttributes) => {
345
339
  const availableDrillAttributes = availableDrillTargets?.availableDrillTargets?.attributes ?? [];
346
- return getDrillToUrlDefinitionsWithPredicates(availableDrillAttributes, attributesWithLink, ignoredDrillToUrlAttributes, enableImplicitDrillToUrl);
340
+ return getDrillToUrlDefinitionsWithPredicates(availableDrillAttributes, attributesWithLink, ignoredDrillToUrlAttributes);
347
341
  }));
348
342
  /**
349
343
  * @internal
@@ -433,9 +427,9 @@ const selectKeyDriverAnalysisPredicates = createMemoizedSelector((ref) => create
433
427
  /**
434
428
  * @internal
435
429
  */
436
- export const selectConfiguredAndImplicitDrillsByWidgetRef = createMemoizedSelector((ref) => createSelector(selectCatalogIsLoaded, selectAccessibleDashboardsLoaded, selectValidConfiguredDrillsByWidgetRef(ref), selectImplicitDrillsDownByWidgetRef(ref), selectImplicitDrillsToUrlByWidgetRef(ref), selectCrossFilteringByWidgetRef(ref), selectKdaByWidgetRef(ref), selectInsightByWidgetRef(ref), selectEnableDrillToUrlByDefault, selectEnableImplicitDrillToUrl, (catalogIsLoaded, accessibleDashboardsLoaded, configuredDrills, implicitDrillDownDrills, implicitDrillToUrlDrills, crossFiltering, keyDriverAnalysis, insight, enableDrillToUrlByDefault, enableImplicitDrillToUrl) => {
430
+ export const selectConfiguredAndImplicitDrillsByWidgetRef = createMemoizedSelector((ref) => createSelector(selectCatalogIsLoaded, selectAccessibleDashboardsLoaded, selectValidConfiguredDrillsByWidgetRef(ref), selectImplicitDrillsDownByWidgetRef(ref), selectImplicitDrillsToUrlByWidgetRef(ref), selectCrossFilteringByWidgetRef(ref), selectKdaByWidgetRef(ref), selectInsightByWidgetRef(ref), selectEnableDrillToUrlByDefault, (catalogIsLoaded, accessibleDashboardsLoaded, configuredDrills, implicitDrillDownDrills, implicitDrillToUrlDrills, crossFiltering, keyDriverAnalysis, insight, enableDrillToUrlByDefault) => {
437
431
  const disableDrillIntoURL = insight?.insight.properties["controls"]?.disableDrillIntoURL ?? !enableDrillToUrlByDefault;
438
- const isDrillToUrlDisabled = !enableImplicitDrillToUrl || disableDrillIntoURL;
432
+ const isDrillToUrlDisabled = disableDrillIntoURL;
439
433
  // disable drilling until all necessary items are loaded (catalog, dash list, ...)
440
434
  const drillActive = catalogIsLoaded && accessibleDashboardsLoaded;
441
435
  return drillActive
@@ -464,16 +458,14 @@ export const selectDrillableItemsByWidgetRef = createMemoizedSelector((ref) => c
464
458
  /**
465
459
  * @internal
466
460
  */
467
- export const selectImplicitDrillsByAvailableDrillTargets = createMemoizedSelector((availableDrillTargets, ignoredDrillDownHierarchies = [], disableDrillIntoURL) => createSelector(selectAttributesWithDisplayFormLink, selectAttributesWithHierarchyDescendants, selectAllCatalogAttributesMap, selectSupportsAttributeHierarchies, selectAllCatalogAttributeHierarchies, selectBackendCapabilities, selectEnableDrillToUrlByDefault, selectEnableImplicitDrillToUrl, (attributesWithLink, attributesWithHierarchyDescendants, allCatalogAttributesMap, isDrillDownEnabled, allCatalogHierarchies, backendCapabilities, enableDrillToUrlByDefault, enableImplicitDrillToUrl) => {
461
+ export const selectImplicitDrillsByAvailableDrillTargets = createMemoizedSelector((availableDrillTargets, ignoredDrillDownHierarchies = [], disableDrillIntoURL) => createSelector(selectAttributesWithDisplayFormLink, selectAttributesWithHierarchyDescendants, selectAllCatalogAttributesMap, selectSupportsAttributeHierarchies, selectAllCatalogAttributeHierarchies, selectBackendCapabilities, selectEnableDrillToUrlByDefault, (attributesWithLink, attributesWithHierarchyDescendants, allCatalogAttributesMap, isDrillDownEnabled, allCatalogHierarchies, backendCapabilities, enableDrillToUrlByDefault) => {
468
462
  const isDrillToUrlDisabled = disableDrillIntoURL ?? !enableDrillToUrlByDefault;
469
463
  const availableDrillAttributes = availableDrillTargets?.attributes ?? [];
470
464
  const drillDownDrills = isDrillDownEnabled
471
465
  ? getDrillDownDefinitionsWithPredicates(availableDrillAttributes, attributesWithHierarchyDescendants, allCatalogAttributesMap, allCatalogHierarchies, ignoredDrillDownHierarchies, backendCapabilities.supportsAttributeHierarchies)
472
466
  : [];
473
- const drillToUrlDrills = getDrillToUrlDefinitionsWithPredicates(availableDrillAttributes, attributesWithLink, [], enableImplicitDrillToUrl);
474
- return !enableImplicitDrillToUrl || isDrillToUrlDisabled
475
- ? drillDownDrills
476
- : [...drillDownDrills, ...drillToUrlDrills];
467
+ const drillToUrlDrills = getDrillToUrlDefinitionsWithPredicates(availableDrillAttributes, attributesWithLink, []);
468
+ return isDrillToUrlDisabled ? drillDownDrills : [...drillDownDrills, ...drillToUrlDrills];
477
469
  }));
478
470
  /**
479
471
  * @internal
@@ -59,6 +59,7 @@ export function getSupportedInsightMeasuresByInsight(insight, dateDatasets = [],
59
59
  function getSupportedBucketsForComparison(insightType) {
60
60
  switch (insightType) {
61
61
  case "line":
62
+ case "radar":
62
63
  return [BucketNames.TREND];
63
64
  case "column":
64
65
  case "bar":
@@ -169,7 +170,8 @@ function collectAllMetric(insight) {
169
170
  case "waterfall":
170
171
  case "dependencywheel":
171
172
  case "sankey":
172
- case "table": {
173
+ case "table":
174
+ case "radar": {
173
175
  return collectAllMetricsFrom(insight, [BucketNames.MEASURES], [BucketNames.SECONDARY_MEASURES, BucketNames.TERTIARY_MEASURES]);
174
176
  }
175
177
  case "pushpin": {
@@ -210,7 +212,8 @@ function collectAllAttributes(insight) {
210
212
  case "waterfall":
211
213
  case "dependencywheel":
212
214
  case "sankey":
213
- case "table": {
215
+ case "table":
216
+ case "radar": {
214
217
  return collectAllAttributesFrom(insight, [
215
218
  BucketNames.ATTRIBUTE,
216
219
  BucketNames.ATTRIBUTES,
@@ -12,7 +12,6 @@ import { getDrillOriginLocalIdentifier } from "../../../_staging/drills/drilling
12
12
  import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
13
13
  import { selectAccessibleDashboards } from "../../../model/store/accessibleDashboards/accessibleDashboardsSelectors.js";
14
14
  import { selectCatalogAttributeDisplayFormsById } from "../../../model/store/catalog/catalogSelectors.js";
15
- import { selectEnableImplicitDrillToUrl } from "../../../model/store/config/configSelectors.js";
16
15
  import { selectInsightsMap } from "../../../model/store/insights/insightsSelectors.js";
17
16
  import { selectDashboardTitle } from "../../../model/store/meta/metaSelectors.js";
18
17
  import { selectWidgetByRef } from "../../../model/store/tabs/layout/layoutSelectors.js";
@@ -32,7 +31,6 @@ export function DrillSelectDropdown({ isOpen, dropDownAnchorClass, onClose, onCl
32
31
  const insights = useDashboardSelector(selectInsightsMap);
33
32
  const widget = useDashboardSelector(selectWidgetByRef(drillEvent.widgetRef));
34
33
  const attributeDisplayForms = useDashboardSelector(selectCatalogAttributeDisplayFormsById);
35
- const enableImplicitDrillToUrl = useDashboardSelector(selectEnableImplicitDrillToUrl);
36
34
  const stopPropagation = useCallback((e) => {
37
35
  e.stopPropagation();
38
36
  }, []);
@@ -93,7 +91,7 @@ export function DrillSelectDropdown({ isOpen, dropDownAnchorClass, onClose, onCl
93
91
  if (isDrillDownDefinition(item.drillDefinition)) {
94
92
  return "drillDown";
95
93
  }
96
- if (isDrillToUrl(item.drillDefinition) && enableImplicitDrillToUrl) {
94
+ if (isDrillToUrl(item.drillDefinition)) {
97
95
  return "drillToUrl";
98
96
  }
99
97
  if (isCrossFiltering(item.drillDefinition)) {
@@ -1,8 +1,6 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { defineMessages, useIntl } from "react-intl";
4
- import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
5
- import { selectEnableImplicitDrillToUrl } from "../../../model/store/config/configSelectors.js";
6
4
  import { DrillType } from "../DrillSelect/types.js";
7
5
  const groupMenuItemMessages = defineMessages({
8
6
  drillDown: { id: "drill_modal_picker.drill-down" },
@@ -13,7 +11,6 @@ const groupMenuItemMessages = defineMessages({
13
11
  });
14
12
  export const useDrillSelectDropdownMenuItems = ({ drillDownItems, drillItems, crossFilteringItems, keyDriverAnalysisItems, drillToUrlItems, onSelect, }) => {
15
13
  const { formatMessage } = useIntl();
16
- const enableImplicitDrillToUrl = useDashboardSelector(selectEnableImplicitDrillToUrl);
17
14
  return useMemo(() => {
18
15
  const createMenuGroup = (items, groupId, groupTitle) => ({
19
16
  type: "group",
@@ -45,7 +42,7 @@ export const useDrillSelectDropdownMenuItems = ({ drillDownItems, drillItems, cr
45
42
  const drillDownMenuItems = drillDownItems.length > 0
46
43
  ? [createMenuGroup(drillDownItems, "drill-down", groupMenuItemMessages.drillDown.id)]
47
44
  : [];
48
- const drillToUrlMenuItems = enableImplicitDrillToUrl && drillToUrlItems.length > 0
45
+ const drillToUrlMenuItems = drillToUrlItems.length > 0
49
46
  ? [createMenuGroup(drillToUrlItems, "drill-to-url", groupMenuItemMessages.drillToUrl.id)]
50
47
  : [];
51
48
  const drillMenuItems = drillItems.length > 0
@@ -74,6 +71,5 @@ export const useDrillSelectDropdownMenuItems = ({ drillDownItems, drillItems, cr
74
71
  drillToUrlItems,
75
72
  formatMessage,
76
73
  onSelect,
77
- enableImplicitDrillToUrl,
78
74
  ]);
79
75
  };
@@ -19,18 +19,21 @@ export function DefaultDashboardExportVariables({ renderMode }) {
19
19
  const conf = useDashboardSelector(selectConfig);
20
20
  const dashboardId = useDashboardSelector(selectDashboardId);
21
21
  const dashboardDescriptor = useDashboardSelector(selectDashboardDescriptor);
22
- const { dateFilters, attributeFilters, isError, isLoading } = useDashboardRelatedFilters(run);
22
+ const { dateFilters, attributeFilters, measureValueFilters, isError, isLoading } = useDashboardRelatedFilters(run);
23
23
  const theme = useTheme();
24
24
  if (!run) {
25
25
  return null;
26
26
  }
27
27
  return (_jsxs("div", { className: "gd-dashboard-meta", ...exportData?.root, children: [
28
- _jsx("div", { ...exportData?.id, children: dashboardId }), dashboardDescriptor.title ? _jsx("div", { ...exportData?.title, children: dashboardDescriptor.title }) : null, dashboardDescriptor.description ? (_jsx("div", { ...exportData?.description, children: dashboardDescriptor.description })) : null, dashboardDescriptor.tags && dashboardDescriptor.tags.length > 0 ? (_jsx("div", { ...exportData?.tags?.root, children: dashboardDescriptor.tags.map((tag, i) => (_jsx("span", { ...exportData?.tags?.tag, children: tag }, i))) })) : null, _jsx("div", { ...exportData?.filters?.root, ...exportData?.filters?.rootData(isLoading, isError), children: dateFilters.length > 0 || attributeFilters.length > 0 ? (_jsxs(_Fragment, { children: [dateFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.dateFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
28
+ _jsx("div", { ...exportData?.id, children: dashboardId }), dashboardDescriptor.title ? _jsx("div", { ...exportData?.title, children: dashboardDescriptor.title }) : null, dashboardDescriptor.description ? (_jsx("div", { ...exportData?.description, children: dashboardDescriptor.description })) : null, dashboardDescriptor.tags && dashboardDescriptor.tags.length > 0 ? (_jsx("div", { ...exportData?.tags?.root, children: dashboardDescriptor.tags.map((tag, i) => (_jsx("span", { ...exportData?.tags?.tag, children: tag }, i))) })) : null, _jsx("div", { ...exportData?.filters?.root, ...exportData?.filters?.rootData(isLoading, isError), children: dateFilters.length > 0 || attributeFilters.length > 0 || measureValueFilters.length > 0 ? (_jsxs(_Fragment, { children: [dateFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.dateFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
29
29
  _jsx("span", { ...exportData?.filters?.filter.name, children: filter?.title }),
30
30
  " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: filter?.subtitle })
31
31
  ] }, i))), attributeFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.attributeFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
32
32
  _jsx("span", { ...exportData?.filters?.filter.name, children: filter?.title }),
33
33
  " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: filter?.subtitle })
34
+ ] }, i))), measureValueFilters.map((filter, i) => (_jsxs("div", { ...exportData?.filters?.measureValueFilter, ...exportData?.filters?.filter.filterData(filter, isLoading, isError), children: [
35
+ _jsx("span", { ...exportData?.filters?.filter.name, children: filter?.title }),
36
+ " -", " ", _jsx("span", { ...exportData?.filters?.filter.value, children: filter?.subtitle })
34
37
  ] }, i)))] })) : null }), user?.fullName ? _jsx("div", { ...exportData?.user, children: user.fullName }) : null, conf.workspaceDescriptor ? (_jsx("div", { ...exportData?.workspace, children: conf.workspaceDescriptor.title })) : null, _jsx(MetaImage, { image: theme?.images?.logo, type: "logo" }), _jsx(MetaImage, { image: theme?.images?.coverImage, type: "cover-image" }), _jsx(Palette, { data: theme?.palette?.complementary })
35
38
  ] }));
36
39
  }
@@ -3,7 +3,7 @@ import { type DashboardAttributeFilterConfigMode, type DashboardDateFilterConfig
3
3
  * @alpha
4
4
  */
5
5
  export type DashboardRelatedFilter = {
6
- type: "attributeFilter" | "dateFilter";
6
+ type: "attributeFilter" | "dateFilter" | "measureValueFilter";
7
7
  all: boolean;
8
8
  id: string;
9
9
  title: string;
@@ -14,6 +14,7 @@ export type DashboardRelatedFilter = {
14
14
  export declare function useDashboardRelatedFilters(run: boolean): {
15
15
  dateFilters: DashboardRelatedFilter[];
16
16
  attributeFilters: DashboardRelatedFilter[];
17
+ measureValueFilters: DashboardRelatedFilter[];
17
18
  isLoading: boolean;
18
19
  isError: boolean;
19
20
  isSuccess: boolean;
@@ -7,6 +7,7 @@ import { selectAttributeFilterConfigsOverrides } from "../../../model/store/tabs
7
7
  import { selectDateFilterConfigOverrides } from "../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js";
8
8
  import { selectDateFilterConfigsOverrides } from "../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js";
9
9
  import { selectFilterContextFilters } from "../../../model/store/tabs/filterContext/filterContextSelectors.js";
10
+ import { selectMeasureValueFilterConfigsOverrides } from "../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
10
11
  export function useDashboardRelatedFilters(run) {
11
12
  const backend = useBackendStrict();
12
13
  const workspaceId = useWorkspaceStrict();
@@ -14,6 +15,7 @@ export function useDashboardRelatedFilters(run) {
14
15
  const dateFilterConfig = useDashboardSelector(selectDateFilterConfigOverrides);
15
16
  const dateFiltersConfig = useDashboardSelector(selectDateFilterConfigsOverrides);
16
17
  const attributeFiltersConfig = useDashboardSelector(selectAttributeFilterConfigsOverrides);
18
+ const measureValueFiltersConfig = useDashboardSelector(selectMeasureValueFilterConfigsOverrides);
17
19
  const { result, status } = useCancelablePromise({
18
20
  promise: async () => {
19
21
  if (!run) {
@@ -36,6 +38,12 @@ export function useDashboardRelatedFilters(run) {
36
38
  mode: dateFiltersConfig.find((c) => areObjRefsEqual(c.dateDataSet, f?.dataSet))?.config?.mode,
37
39
  };
38
40
  }
41
+ else if (f?.type === "measureValueFilter") {
42
+ return {
43
+ ...f,
44
+ mode: measureValueFiltersConfig.find((c) => c.localIdentifier === f?.id)?.mode,
45
+ };
46
+ }
39
47
  return {
40
48
  ...f,
41
49
  mode: attributeFiltersConfig.find((c) => c.localIdentifier === f?.id)?.mode,
@@ -47,6 +55,7 @@ export function useDashboardRelatedFilters(run) {
47
55
  isSuccess: status === "success",
48
56
  dateFilters: all.filter((f) => f?.type === "dateFilter"),
49
57
  attributeFilters: all.filter((f) => f?.type === "attributeFilter"),
58
+ measureValueFilters: all.filter((f) => f?.type === "measureValueFilter"),
50
59
  };
51
60
  }
52
61
  async function updateLabelElements(backend, workspaceId, attributeFiltersConfig, dashboardFilter) {
@@ -28,7 +28,7 @@ export type CommonExportDataAttributes = {
28
28
  */
29
29
  export type MetaExportDataAttributes = {
30
30
  "data-export-meta-type"?: ExportMetaType;
31
- "data-export-meta-filter-type"?: "date" | "attribute";
31
+ "data-export-meta-filter-type"?: "date" | "attribute" | "measureValue";
32
32
  "data-export-meta-filter-mode"?: "readonly" | "hidden" | "active";
33
33
  "data-export-meta-filter-status"?: "loading" | "loaded" | "error";
34
34
  "data-export-meta-filters-status"?: "loading" | "loaded" | "error";
@@ -57,6 +57,7 @@ export type MetaExportData = {
57
57
  rootData: (isLoading: boolean, isError: boolean) => MetaExportDataAttributes;
58
58
  dateFilter: MetaExportDataAttributes;
59
59
  attributeFilter: MetaExportDataAttributes;
60
+ measureValueFilter: MetaExportDataAttributes;
60
61
  filter: {
61
62
  name: MetaExportDataAttributes;
62
63
  value: MetaExportDataAttributes;
@@ -1,2 +1,2 @@
1
- // (C) 2025 GoodData Corporation
1
+ // (C) 2025-2026 GoodData Corporation
2
2
  export {};
@@ -201,6 +201,10 @@ export const useMetaExportData = () => {
201
201
  "data-export-meta-type": "dashboard-filter",
202
202
  "data-export-meta-filter-type": "attribute",
203
203
  },
204
+ measureValueFilter: {
205
+ "data-export-meta-type": "dashboard-filter",
206
+ "data-export-meta-filter-type": "measureValue",
207
+ },
204
208
  filter: {
205
209
  name: {
206
210
  "data-export-meta-type": "dashboard-filter-name",
@@ -573,6 +573,7 @@ export declare const de_DE: {
573
573
  "filter.configuration.mode.hidden.title": string;
574
574
  "filter.configuration.mode.hidden.tooltip": string;
575
575
  "filter.dependency.icon.tooltip": string;
576
+ "filter.dependency.icon.aria.label": string;
576
577
  "configurationPanel.drillConfig.alreadyUsedTooltip": string;
577
578
  "configurationPanel.respectCrossFiltering": string;
578
579
  "configurationPanel.respectCrossFiltering.tooltip": string;
@@ -575,6 +575,7 @@ export const de_DE = {
575
575
  "filter.configuration.mode.hidden.title": "Ausgeblendet",
576
576
  "filter.configuration.mode.hidden.tooltip": "Dashboard-Benutzer können den Filter nicht sehen, er ist jedoch angewendet.",
577
577
  "filter.dependency.icon.tooltip": "Werte für <strong>{filterTitle}</strong> werden durch Auswahl in einem anderen Filter gefiltert.",
578
+ "filter.dependency.icon.aria.label": "Verknüpfter Filter — verfügbare Werte hängen von der Auswahl eines anderen Filters ab.",
578
579
  "configurationPanel.drillConfig.alreadyUsedTooltip": "Diese <strong>Hierarchie</strong> wird bereits für <strong>denselben</strong> Drilldown verwendet.",
579
580
  "configurationPanel.respectCrossFiltering": "Querfilterung berücksichtigen",
580
581
  "configurationPanel.respectCrossFiltering.tooltip": "Deaktivieren Sie diese Option, um Cross-Filtering von anderen Visualisierungen zu ignorieren.",
@@ -573,6 +573,7 @@ export declare const en_AU: {
573
573
  "filter.configuration.mode.hidden.title": string;
574
574
  "filter.configuration.mode.hidden.tooltip": string;
575
575
  "filter.dependency.icon.tooltip": string;
576
+ "filter.dependency.icon.aria.label": string;
576
577
  "configurationPanel.drillConfig.alreadyUsedTooltip": string;
577
578
  "configurationPanel.respectCrossFiltering": string;
578
579
  "configurationPanel.respectCrossFiltering.tooltip": string;
@@ -575,6 +575,7 @@ export const en_AU = {
575
575
  "filter.configuration.mode.hidden.title": "Hidden",
576
576
  "filter.configuration.mode.hidden.tooltip": "Dashboard users cannot see the filter but it is applied.",
577
577
  "filter.dependency.icon.tooltip": "Values for <strong>{filterTitle}</strong> are filtered by selection in another filter.",
578
+ "filter.dependency.icon.aria.label": "Linked filter — available values depend on another filter selection.",
578
579
  "configurationPanel.drillConfig.alreadyUsedTooltip": "This <strong>hierarchy</strong> is already used for <strong>the same</strong> drilling down.",
579
580
  "configurationPanel.respectCrossFiltering": "Respect cross-filtering",
580
581
  "configurationPanel.respectCrossFiltering.tooltip": "Disable this option to ignore cross-filtering from other visualisations.",
@@ -573,6 +573,7 @@ export declare const en_GB: {
573
573
  "filter.configuration.mode.hidden.title": string;
574
574
  "filter.configuration.mode.hidden.tooltip": string;
575
575
  "filter.dependency.icon.tooltip": string;
576
+ "filter.dependency.icon.aria.label": string;
576
577
  "configurationPanel.drillConfig.alreadyUsedTooltip": string;
577
578
  "configurationPanel.respectCrossFiltering": string;
578
579
  "configurationPanel.respectCrossFiltering.tooltip": string;
@@ -575,6 +575,7 @@ export const en_GB = {
575
575
  "filter.configuration.mode.hidden.title": "Hidden",
576
576
  "filter.configuration.mode.hidden.tooltip": "Dashboard users cannot see the filter but it is applied.",
577
577
  "filter.dependency.icon.tooltip": "Values for <strong>{filterTitle}</strong> are filtered by selection in another filter.",
578
+ "filter.dependency.icon.aria.label": "Linked filter — available values depend on another filter selection.",
578
579
  "configurationPanel.drillConfig.alreadyUsedTooltip": "This <strong>hierarchy</strong> is already used for <strong>the same</strong> drilling down.",
579
580
  "configurationPanel.respectCrossFiltering": "Respect cross-filtering",
580
581
  "configurationPanel.respectCrossFiltering.tooltip": "Disable this option to ignore cross-filtering from other visualisations.",
@@ -730,7 +731,7 @@ export const en_GB = {
730
731
  "insightAlert.config.threshold": "Threshold",
731
732
  "insightAlert.config.comparison": "Comparison",
732
733
  "insightAlert.config.recipients": "Recipients",
733
- "insightAlert.config.do": "Certainly!",
734
+ "insightAlert.config.do": "Do",
734
735
  "insightAlert.config.warning.destination": "The selected destination only supports sending the alert to yourself.",
735
736
  "insightAlert.config.filters": "using {n} {n, plural, one {filter} other {filters}}",
736
737
  "insightAlert.config.and": "and",
@@ -573,6 +573,7 @@ export declare const es_419: {
573
573
  "filter.configuration.mode.hidden.title": string;
574
574
  "filter.configuration.mode.hidden.tooltip": string;
575
575
  "filter.dependency.icon.tooltip": string;
576
+ "filter.dependency.icon.aria.label": string;
576
577
  "configurationPanel.drillConfig.alreadyUsedTooltip": string;
577
578
  "configurationPanel.respectCrossFiltering": string;
578
579
  "configurationPanel.respectCrossFiltering.tooltip": string;