@gooddata/sdk-ui-dashboard 11.42.0-alpha.0 → 11.42.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/esm/__version.d.ts +1 -1
  2. package/esm/__version.js +1 -1
  3. package/esm/index.d.ts +3 -3
  4. package/esm/index.d.ts.map +1 -1
  5. package/esm/index.js +3 -3
  6. package/esm/model/store/config/configSelectors.d.ts +6 -0
  7. package/esm/model/store/config/configSelectors.d.ts.map +1 -1
  8. package/esm/model/store/config/configSelectors.js +8 -0
  9. package/esm/model/store/executionResults/constants.d.ts +7 -0
  10. package/esm/model/store/executionResults/constants.d.ts.map +1 -0
  11. package/esm/model/store/executionResults/constants.js +8 -0
  12. package/esm/model/store/executionResults/executionResultsSelectors.d.ts +12 -0
  13. package/esm/model/store/executionResults/executionResultsSelectors.d.ts.map +1 -1
  14. package/esm/model/store/executionResults/executionResultsSelectors.js +16 -1
  15. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts +6 -0
  16. package/esm/model/store/tabs/parameters/parametersHelpers.d.ts.map +1 -1
  17. package/esm/model/store/tabs/parameters/parametersHelpers.js +11 -0
  18. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts +7 -0
  19. package/esm/model/store/tabs/parameters/parametersSelectors.d.ts.map +1 -1
  20. package/esm/model/store/tabs/parameters/parametersSelectors.js +18 -7
  21. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  22. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +2 -2
  23. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +5 -0
  24. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
  25. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +20 -3
  26. package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentEnhanced.d.ts.map +1 -1
  27. package/esm/presentation/automations/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentEnhanced.js +5 -2
  28. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts.map +1 -1
  29. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js +13 -2
  30. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.d.ts.map +1 -1
  31. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.js +5 -2
  32. package/esm/presentation/automations/shared/automationFilters/automationParameters.d.ts +37 -0
  33. package/esm/presentation/automations/shared/automationFilters/automationParameters.d.ts.map +1 -0
  34. package/esm/presentation/automations/shared/automationFilters/automationParameters.js +90 -0
  35. package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.d.ts +23 -2
  36. package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.d.ts.map +1 -1
  37. package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.js +27 -15
  38. package/esm/presentation/automations/shared/automationFilters/components/AutomationParameter.d.ts +20 -0
  39. package/esm/presentation/automations/shared/automationFilters/components/AutomationParameter.d.ts.map +1 -0
  40. package/esm/presentation/automations/shared/automationFilters/components/AutomationParameter.js +32 -0
  41. package/esm/presentation/automations/shared/automationFilters/useAutomationAlertParameters.d.ts +32 -0
  42. package/esm/presentation/automations/shared/automationFilters/useAutomationAlertParameters.d.ts.map +1 -0
  43. package/esm/presentation/automations/shared/automationFilters/useAutomationAlertParameters.js +57 -0
  44. package/esm/presentation/dashboard/components/DashboardLoading.d.ts.map +1 -1
  45. package/esm/presentation/dashboard/components/DashboardLoading.js +12 -2
  46. package/esm/presentation/export/types.d.ts +1 -1
  47. package/esm/presentation/export/types.d.ts.map +1 -1
  48. package/esm/presentation/export/useExportData.d.ts +1 -1
  49. package/esm/presentation/export/useExportData.d.ts.map +1 -1
  50. package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.d.ts +20 -1
  51. package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.d.ts.map +1 -1
  52. package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js +41 -6
  53. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +3 -11
  54. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  55. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +3 -11
  56. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +3 -11
  57. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  58. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +3 -11
  59. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +3 -11
  60. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  61. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +3 -11
  62. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +12 -44
  63. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  64. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +12 -44
  65. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +3 -11
  66. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  67. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +3 -11
  68. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +3 -11
  69. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  70. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +3 -11
  71. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +3 -11
  72. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  73. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +3 -11
  74. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +3 -11
  75. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  76. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +3 -11
  77. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +3 -11
  78. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  79. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +3 -11
  80. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +3 -11
  81. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  82. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +3 -11
  83. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +3 -11
  84. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  85. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +3 -11
  86. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +3 -11
  87. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  88. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +3 -11
  89. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +3 -11
  90. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  91. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +3 -11
  92. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +3 -11
  93. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  94. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +3 -11
  95. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +3 -11
  96. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  97. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +3 -11
  98. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +3 -11
  99. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  100. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +3 -11
  101. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +3 -11
  102. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  103. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +3 -11
  104. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +3 -11
  105. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  106. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +3 -11
  107. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +3 -11
  108. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  109. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +3 -11
  110. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +3 -11
  111. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  112. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +3 -11
  113. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +3 -11
  114. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  115. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +3 -11
  116. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +3 -11
  117. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  118. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +3 -11
  119. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +3 -11
  120. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  121. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +3 -11
  122. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +3 -11
  123. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  124. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +3 -11
  125. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +3 -11
  126. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  127. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +3 -11
  128. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +3 -11
  129. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  130. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +3 -11
  131. package/esm/presentation/shareDialog/DefaultShareDialog.d.ts.map +1 -1
  132. package/esm/presentation/shareDialog/DefaultShareDialog.js +6 -2
  133. package/esm/presentation/topBar/menuButton/DefaultMenuButton.d.ts.map +1 -1
  134. package/esm/presentation/topBar/menuButton/DefaultMenuButton.js +39 -16
  135. package/esm/presentation/topBar/menuButton/types.d.ts +6 -0
  136. package/esm/presentation/topBar/menuButton/types.d.ts.map +1 -1
  137. package/esm/presentation/topBar/menuButton/types.js +1 -0
  138. package/esm/presentation/topBar/menuButton/useDefaultMenuItems.d.ts.map +1 -1
  139. package/esm/presentation/topBar/menuButton/useDefaultMenuItems.js +7 -0
  140. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdown.js +1 -1
  141. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.d.ts.map +1 -1
  142. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +14 -10
  143. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogExportItems.d.ts +0 -1
  144. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogExportItems.d.ts.map +1 -1
  145. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogExportItems.js +23 -8
  146. package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/DashboardInsightMenuItemButton.js +1 -1
  147. package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.d.ts.map +1 -1
  148. package/esm/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.js +56 -27
  149. package/esm/presentation/widget/widget/warningPartialResult/InsightWidgetWarningPartialResult.d.ts.map +1 -1
  150. package/esm/presentation/widget/widget/warningPartialResult/InsightWidgetWarningPartialResult.js +4 -89
  151. package/esm/sdk-ui-dashboard.d.ts +49 -3
  152. package/package.json +20 -20
  153. package/styles/css/dashboard.css +7 -2
  154. package/styles/css/dashboard.css.map +1 -1
  155. package/styles/css/main.css +32 -6
  156. package/styles/css/main.css.map +1 -1
  157. package/styles/css/warningPartialResult.css +1 -0
  158. package/styles/css/warningPartialResult.css.map +1 -1
  159. package/styles/scss/dashboard.scss +14 -2
  160. package/styles/scss/warningPartialResult.scss +1 -0
@@ -43,6 +43,8 @@ export const zh_HK = {
43
43
  "options.menu.export.dialog.widget.EXCEL": "導出格式化數據(.xlsx)",
44
44
  "options.menu.export.dialog.includeExportInfo": "包含包含導出信息嘅工作表",
45
45
  "options.menu.export.EXCEL": "數據(.xlsx)",
46
+ "options.menu.export.partialResults.exportDisabled": "無法匯出,因為可視化超出結果限制。",
47
+ "options.menu.export.partialResults.warning.dashboard": "部分可視化超出結果限制,因此不會包含在 XLSX 匯出中。",
46
48
  "options.menu.export.presentation.PPTX": "幻燈片(.pptx)",
47
49
  "options.menu.export.presentation.PDF": "幻燈片(.pdf)",
48
50
  "options.menu.export.image.PNG": "快照(.png)",
@@ -206,6 +208,7 @@ export const zh_HK = {
206
208
  "dialogs.automation.filters.deleteAriaLabel": "除濾網",
207
209
  "dialogs.automation.filters.deleteTooltip": "除濾網",
208
210
  "dialogs.automation.filters.lockedTooltip": "呢個過濾器係上鎖嘅,唔可以拆。",
211
+ "dialogs.automation.parameters.chip": "{title} 為 {value}",
209
212
  "dialogs.automation.filters.useFiltersMessage.tooltip": "選中以保留呢啲過濾器以進行每次導出。 如果未選中,導出將使用儀錶板中最新嘅默認過濾器。",
210
213
  "dialogs.automation.filters.activeFilters": "注意:呢啲過濾器將始終用于將來嘅導出。",
211
214
  "dialogs.automation.filters.missing": "<b>警告:</b>某些篩選條件無法應用,它們在控制面板上不再可用。",
@@ -321,17 +324,6 @@ export const zh_HK = {
321
324
  "partial_data_warning.hide_details": "隱藏詳情",
322
325
  "partial_data_warning.close": "關閉部分資料警告",
323
326
  "partial_data_warning.export_raw": "匯出完整結果為原始 (.csv)",
324
- "partial_data_warning.description": "結果超出結果大小限制。",
325
- "partial_data_warning.rows.description": "結果超出 {rowLimit} 列限制,共超出 {rowOverflow} 列。",
326
- "partial_data_warning.rows.description.unknown_total": "結果超出 {rowLimit} 列限制。",
327
- "partial_data_warning.columns.description": "結果超出 {columnLimit} 欄限制,共超出 {columnOverflow} 欄。",
328
- "partial_data_warning.columns.description.unknown_total": "結果超出 {columnLimit} 欄限制。",
329
- "partial_data_warning.rows_columns.description": "結果同時超出 {columnLimit} 欄及 {rowLimit} 列限制,共超出 {columnOverflow} 欄及 {rowOverflow} 列。",
330
- "partial_data_warning.rows_columns.description.unknown_column_total": "結果同時超出 {columnLimit} 欄及 {rowLimit} 列限制。列數超出 {rowOverflow} 列。",
331
- "partial_data_warning.rows_columns.description.unknown_row_total": "結果同時超出 {columnLimit} 欄及 {rowLimit} 列限制。欄數超出 {columnOverflow} 欄。",
332
- "partial_data_warning.rows_columns.description.unknown_total": "結果同時超出 {columnLimit} 欄及 {rowLimit} 列限制。",
333
- "partial_data_warning.cells.description": "結果超出 {cellLimit} 資料點限制,共超出 {cellOverflow} 個資料點。",
334
- "partial_data_warning.cells.description.unknown_total": "結果超出 {cellLimit} 資料點限制。",
335
327
  "export_unsupported.disabled": "不支持匯出",
336
328
  "widget.options.description": "描述",
337
329
  "widget.options.menu.exportToCSV": "匯出到CSV",
@@ -41,6 +41,8 @@ export declare const zh_Hans: {
41
41
  "options.menu.export.dialog.widget.EXCEL": string;
42
42
  "options.menu.export.dialog.includeExportInfo": string;
43
43
  "options.menu.export.EXCEL": string;
44
+ "options.menu.export.partialResults.exportDisabled": string;
45
+ "options.menu.export.partialResults.warning.dashboard": string;
44
46
  "options.menu.export.presentation.PPTX": string;
45
47
  "options.menu.export.presentation.PDF": string;
46
48
  "options.menu.export.image.PNG": string;
@@ -204,6 +206,7 @@ export declare const zh_Hans: {
204
206
  "dialogs.automation.filters.deleteAriaLabel": string;
205
207
  "dialogs.automation.filters.deleteTooltip": string;
206
208
  "dialogs.automation.filters.lockedTooltip": string;
209
+ "dialogs.automation.parameters.chip": string;
207
210
  "dialogs.automation.filters.useFiltersMessage.tooltip": string;
208
211
  "dialogs.automation.filters.activeFilters": string;
209
212
  "dialogs.automation.filters.missing": string;
@@ -319,17 +322,6 @@ export declare const zh_Hans: {
319
322
  "partial_data_warning.hide_details": string;
320
323
  "partial_data_warning.close": string;
321
324
  "partial_data_warning.export_raw": string;
322
- "partial_data_warning.description": string;
323
- "partial_data_warning.rows.description": string;
324
- "partial_data_warning.rows.description.unknown_total": string;
325
- "partial_data_warning.columns.description": string;
326
- "partial_data_warning.columns.description.unknown_total": string;
327
- "partial_data_warning.rows_columns.description": string;
328
- "partial_data_warning.rows_columns.description.unknown_column_total": string;
329
- "partial_data_warning.rows_columns.description.unknown_row_total": string;
330
- "partial_data_warning.rows_columns.description.unknown_total": string;
331
- "partial_data_warning.cells.description": string;
332
- "partial_data_warning.cells.description.unknown_total": string;
333
325
  "export_unsupported.disabled": string;
334
326
  "widget.options.description": string;
335
327
  "widget.options.menu.exportToCSV": string;
@@ -1 +1 @@
1
- {"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA22BnB,CAAC"}
1
+ {"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAm2BnB,CAAC"}
@@ -43,6 +43,8 @@ export const zh_Hans = {
43
43
  "options.menu.export.dialog.widget.EXCEL": "导出格式化数据(.xlsx)",
44
44
  "options.menu.export.dialog.includeExportInfo": "包含导出信息表",
45
45
  "options.menu.export.EXCEL": "数据(.xlsx)",
46
+ "options.menu.export.partialResults.exportDisabled": "无法导出,因为可视化超出了结果限制。",
47
+ "options.menu.export.partialResults.warning.dashboard": "某些可视化超出结果限制,因此不会包含在 XLSX 导出中。",
46
48
  "options.menu.export.presentation.PPTX": "幻灯片 (.pptx)",
47
49
  "options.menu.export.presentation.PDF": "幻灯片(.pdf)",
48
50
  "options.menu.export.image.PNG": "快照 (.png)",
@@ -206,6 +208,7 @@ export const zh_Hans = {
206
208
  "dialogs.automation.filters.deleteAriaLabel": "移除过滤器",
207
209
  "dialogs.automation.filters.deleteTooltip": "移除过滤器",
208
210
  "dialogs.automation.filters.lockedTooltip": "此过滤器已锁定,无法移除。",
211
+ "dialogs.automation.parameters.chip": "{title} 为 {value}",
209
212
  "dialogs.automation.filters.useFiltersMessage.tooltip": "勾选此项可在每次导出时保留这些筛选条件。如果未勾选,导出将使用仪表板中最新的默认筛选条件。",
210
213
  "dialogs.automation.filters.activeFilters": "注意:这些过滤器将始终用于未来的导出。",
211
214
  "dialogs.automation.filters.missing": "<b>警告:</b> 某些过滤器无法应用 — 它们在仪表板上不再可用。",
@@ -321,17 +324,6 @@ export const zh_Hans = {
321
324
  "partial_data_warning.hide_details": "隐藏详情",
322
325
  "partial_data_warning.close": "关闭部分数据警告",
323
326
  "partial_data_warning.export_raw": "将完整结果导出为 Raw (.csv)",
324
- "partial_data_warning.description": "结果超出了结果大小限制。",
325
- "partial_data_warning.rows.description": "结果超出了 {rowLimit} 行限制,超出 {rowOverflow} 行。",
326
- "partial_data_warning.rows.description.unknown_total": "结果超出了 {rowLimit} 行限制。",
327
- "partial_data_warning.columns.description": "结果超出了 {columnLimit} 列限制,超出 {columnOverflow} 列。",
328
- "partial_data_warning.columns.description.unknown_total": "结果超出了 {columnLimit} 列限制。",
329
- "partial_data_warning.rows_columns.description": "结果超出了 {columnLimit} 列和 {rowLimit} 行限制,超出 {columnOverflow} 列和 {rowOverflow} 行。",
330
- "partial_data_warning.rows_columns.description.unknown_column_total": "结果超出了 {columnLimit} 列和 {rowLimit} 行限制。超出行限制 {rowOverflow} 行。",
331
- "partial_data_warning.rows_columns.description.unknown_row_total": "结果超出了 {columnLimit} 列和 {rowLimit} 行限制。超出列限制 {columnOverflow} 列。",
332
- "partial_data_warning.rows_columns.description.unknown_total": "结果超出了 {columnLimit} 列和 {rowLimit} 行限制。",
333
- "partial_data_warning.cells.description": "结果超出了 {cellLimit} 数据点限制,超出 {cellOverflow} 个数据点。",
334
- "partial_data_warning.cells.description.unknown_total": "结果超出了 {cellLimit} 数据点限制。",
335
327
  "export_unsupported.disabled": "不支持导出",
336
328
  "widget.options.description": "描述",
337
329
  "widget.options.menu.exportToCSV": "导出至 CSV",
@@ -41,6 +41,8 @@ export declare const zh_Hant: {
41
41
  "options.menu.export.dialog.widget.EXCEL": string;
42
42
  "options.menu.export.dialog.includeExportInfo": string;
43
43
  "options.menu.export.EXCEL": string;
44
+ "options.menu.export.partialResults.exportDisabled": string;
45
+ "options.menu.export.partialResults.warning.dashboard": string;
44
46
  "options.menu.export.presentation.PPTX": string;
45
47
  "options.menu.export.presentation.PDF": string;
46
48
  "options.menu.export.image.PNG": string;
@@ -204,6 +206,7 @@ export declare const zh_Hant: {
204
206
  "dialogs.automation.filters.deleteAriaLabel": string;
205
207
  "dialogs.automation.filters.deleteTooltip": string;
206
208
  "dialogs.automation.filters.lockedTooltip": string;
209
+ "dialogs.automation.parameters.chip": string;
207
210
  "dialogs.automation.filters.useFiltersMessage.tooltip": string;
208
211
  "dialogs.automation.filters.activeFilters": string;
209
212
  "dialogs.automation.filters.missing": string;
@@ -319,17 +322,6 @@ export declare const zh_Hant: {
319
322
  "partial_data_warning.hide_details": string;
320
323
  "partial_data_warning.close": string;
321
324
  "partial_data_warning.export_raw": string;
322
- "partial_data_warning.description": string;
323
- "partial_data_warning.rows.description": string;
324
- "partial_data_warning.rows.description.unknown_total": string;
325
- "partial_data_warning.columns.description": string;
326
- "partial_data_warning.columns.description.unknown_total": string;
327
- "partial_data_warning.rows_columns.description": string;
328
- "partial_data_warning.rows_columns.description.unknown_column_total": string;
329
- "partial_data_warning.rows_columns.description.unknown_row_total": string;
330
- "partial_data_warning.rows_columns.description.unknown_total": string;
331
- "partial_data_warning.cells.description": string;
332
- "partial_data_warning.cells.description.unknown_total": string;
333
325
  "export_unsupported.disabled": string;
334
326
  "widget.options.description": string;
335
327
  "widget.options.menu.exportToCSV": string;
@@ -1 +1 @@
1
- {"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA22BnB,CAAC"}
1
+ {"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAm2BnB,CAAC"}
@@ -43,6 +43,8 @@ export const zh_Hant = {
43
43
  "options.menu.export.dialog.widget.EXCEL": "匯出格式化資料(.xlsx)",
44
44
  "options.menu.export.dialog.includeExportInfo": "包含匯出資訊表",
45
45
  "options.menu.export.EXCEL": "資料(.xlsx)",
46
+ "options.menu.export.partialResults.exportDisabled": "無法匯出,因為視覺化超出結果限制。",
47
+ "options.menu.export.partialResults.warning.dashboard": "部分視覺化超出結果限制,將不會包含在 XLSX 匯出中。",
46
48
  "options.menu.export.presentation.PPTX": "幻燈片 (.pptx)",
47
49
  "options.menu.export.presentation.PDF": "幻燈片(.pdf)",
48
50
  "options.menu.export.image.PNG": "快照 (.png)",
@@ -206,6 +208,7 @@ export const zh_Hant = {
206
208
  "dialogs.automation.filters.deleteAriaLabel": "移除過濾器",
207
209
  "dialogs.automation.filters.deleteTooltip": "移除過濾器",
208
210
  "dialogs.automation.filters.lockedTooltip": "此過濾器已鎖定,無法移除。",
211
+ "dialogs.automation.parameters.chip": "{title} 為 {value}",
209
212
  "dialogs.automation.filters.useFiltersMessage.tooltip": "勾選此項目可在每次匯出時保留這些篩選條件。如果未勾選,匯出將使用儀表板中最新的預設篩選條件。",
210
213
  "dialogs.automation.filters.activeFilters": "注意:這些過濾器將始終用於未來的匯出。",
211
214
  "dialogs.automation.filters.missing": "<b>警告:</b> 某些過濾器無法套用 — 它們在儀表板上不再可用。",
@@ -321,17 +324,6 @@ export const zh_Hant = {
321
324
  "partial_data_warning.hide_details": "隱藏詳細資料",
322
325
  "partial_data_warning.close": "關閉部分資料警告",
323
326
  "partial_data_warning.export_raw": "將完整結果匯出為原始檔 (.csv)",
324
- "partial_data_warning.description": "結果超出結果大小限制。",
325
- "partial_data_warning.rows.description": "結果超出 {rowLimit} 列限制,共超出 {rowOverflow} 列。",
326
- "partial_data_warning.rows.description.unknown_total": "結果超出 {rowLimit} 列限制。",
327
- "partial_data_warning.columns.description": "結果超出 {columnLimit} 欄限制,共超出 {columnOverflow} 欄。",
328
- "partial_data_warning.columns.description.unknown_total": "結果超出 {columnLimit} 欄限制。",
329
- "partial_data_warning.rows_columns.description": "結果同時超出 {columnLimit} 欄限制與 {rowLimit} 列限制,共超出 {columnOverflow} 欄與 {rowOverflow} 列。",
330
- "partial_data_warning.rows_columns.description.unknown_column_total": "結果同時超出 {columnLimit} 欄限制與 {rowLimit} 列限制。列數超出限制 {rowOverflow} 列。",
331
- "partial_data_warning.rows_columns.description.unknown_row_total": "結果同時超出 {columnLimit} 欄限制與 {rowLimit} 列限制。欄數超出限制 {columnOverflow} 欄。",
332
- "partial_data_warning.rows_columns.description.unknown_total": "結果同時超出 {columnLimit} 欄限制與 {rowLimit} 列限制。",
333
- "partial_data_warning.cells.description": "結果超出 {cellLimit} 資料點限制,共超出 {cellOverflow} 個資料點。",
334
- "partial_data_warning.cells.description.unknown_total": "結果超出 {cellLimit} 資料點限制。",
335
327
  "export_unsupported.disabled": "不支援導出",
336
328
  "widget.options.description": "描述",
337
329
  "widget.options.menu.exportToCSV": "匯出為 CSV",
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultShareDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/shareDialog/DefaultShareDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;AASnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAC/B,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,aAAa,EACb,eAAe,EAClB,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CA+CzC"}
1
+ {"version":3,"file":"DefaultShareDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/shareDialog/DefaultShareDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;AASnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAC/B,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,aAAa,EACb,eAAe,EAClB,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAoDzC"}
@@ -4,12 +4,16 @@ import { useMemo } from "react";
4
4
  import { useIntl } from "react-intl";
5
5
  import { ShareDialog } from "@gooddata/sdk-ui-kit";
6
6
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
7
- import { selectLocale } from "../../model/store/config/configSelectors.js";
7
+ import { selectLocale, selectSettings } from "../../model/store/config/configSelectors.js";
8
8
  /**
9
9
  * @alpha
10
10
  */
11
11
  export function DefaultShareDialog({ workspace, backend, isVisible, sharedObject, currentUser, isLockingSupported, isCurrentUserWorkspaceManager, currentUserPermissions, dashboardFilters, dashboardParameters, isShareGrantHidden, applyShareGrantOnSelect, showDashboardShareLink, isGranteeShareLoading, onApply, onCancel, onError, onInteraction, onShareLinkCopy, }) {
12
12
  const locale = useDashboardSelector(selectLocale);
13
+ const settings = useDashboardSelector(selectSettings);
14
+ const dashboardLinkBasePath = settings.enableShellApplication_dashboards
15
+ ? `/workspace/${workspace}/dashboards/`
16
+ : undefined;
13
17
  const intl = useIntl();
14
18
  const labels = useMemo(() => ({
15
19
  accessTypeLabel: intl.formatMessage({ id: "dashboard.shareDialog.lock.label" }),
@@ -26,5 +30,5 @@ export function DefaultShareDialog({ workspace, backend, isVisible, sharedObject
26
30
  if (!isVisible) {
27
31
  return null;
28
32
  }
29
- return (_jsx(ShareDialog, { locale: locale, backend: backend, workspace: workspace, sharedObject: sharedObject, currentUser: currentUser, onApply: onApply, onCancel: onCancel, onError: onError, isLockingSupported: isLockingSupported, labels: labels, isCurrentUserWorkspaceManager: isCurrentUserWorkspaceManager, currentUserPermissions: currentUserPermissions, dashboardFilters: dashboardFilters, dashboardParameters: dashboardParameters, isShareGrantHidden: isShareGrantHidden, applyShareGrantOnSelect: applyShareGrantOnSelect, showDashboardShareLink: showDashboardShareLink, isGranteeShareLoading: isGranteeShareLoading, onInteraction: onInteraction, onShareLinkCopy: onShareLinkCopy }));
33
+ return (_jsx(ShareDialog, { locale: locale, backend: backend, workspace: workspace, sharedObject: sharedObject, currentUser: currentUser, onApply: onApply, onCancel: onCancel, onError: onError, isLockingSupported: isLockingSupported, labels: labels, isCurrentUserWorkspaceManager: isCurrentUserWorkspaceManager, currentUserPermissions: currentUserPermissions, dashboardFilters: dashboardFilters, dashboardParameters: dashboardParameters, dashboardLinkBasePath: dashboardLinkBasePath, isShareGrantHidden: isShareGrantHidden, applyShareGrantOnSelect: applyShareGrantOnSelect, showDashboardShareLink: showDashboardShareLink, isGranteeShareLoading: isGranteeShareLoading, onInteraction: onInteraction, onShareLinkCopy: onShareLinkCopy }));
30
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultMenuButton.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/DefaultMenuButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,YAAY,EAMpB,MAAM,OAAO,CAAC;AAyBf,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CA0OtF"}
1
+ {"version":3,"file":"DefaultMenuButton.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/DefaultMenuButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,YAAY,EAOpB,MAAM,OAAO,CAAC;AA0Bf,OAAO,EAIH,KAAK,gBAAgB,EACxB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CA0OtF"}
@@ -3,7 +3,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
3
3
  import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
4
4
  import cx from "classnames";
5
5
  import { useIntl } from "react-intl";
6
- import { Button, ItemsWrapper, Overlay, SingleSelectListItem, UiFocusManager, UiTooltip, getFocusableElements, isActionKey, makeMenuKeyboardNavigation, useId, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
6
+ import { Button, ItemsWrapper, Overlay, SingleSelectListItem, UiFocusManager, UiIcon, UiTooltip, getFocusableElements, isActionKey, makeMenuKeyboardNavigation, useId, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
7
7
  import { DEFAULT_MENU_BUTTON_ID } from "../../../_staging/accessibility/elementId.js";
8
8
  import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
9
9
  import { selectDashboardDensity } from "../../../model/store/ui/uiSelectors.js";
@@ -159,6 +159,10 @@ export function DefaultMenuButton({ menuItems }) {
159
159
  }
160
160
  function MenuItem({ menuItem, selectedMenuItem, setMenuItemRef, setSelectedMenuItem, setParentItemId, setAutofocusSubmenu, setIsOpen, }) {
161
161
  const tooltipId = useIdPrefixed(`menu-tooltip-${menuItem.itemId}`);
162
+ const warningTooltipId = useIdPrefixed(`menu-warning-${menuItem.itemId}`);
163
+ // Tracks whether the item-level (focus-triggered) warning tooltip is open, so the icon's hover tooltip can
164
+ // be suppressed while the item is focused - avoids both tooltips showing at once.
165
+ const [isWarningFocusTooltipOpen, setIsWarningFocusTooltipOpen] = useState(false);
162
166
  const renderWithOptionalTooltip = (menuItem, children) => {
163
167
  const selectorClassName = `gd-menu-item-${menuItem.itemId}`;
164
168
  const hasTooltip = !!menuItem.tooltip;
@@ -199,19 +203,38 @@ function MenuItem({ menuItem, selectedMenuItem, setMenuItemRef, setSelectedMenuI
199
203
  ariaDescribedBy: menuItem.disabled ? tooltipId : undefined,
200
204
  } }, menuItem.itemId)));
201
205
  }
202
- return renderWithOptionalTooltip(menuItem, ({ selectorClassName, tooltipId }) => (_jsx(SingleSelectListItem, { ref: setMenuItemRef(menuItem.itemId), className: cx("gd-menu-item", menuItem.className, `s-${menuItem.itemId}`, {
203
- [selectorClassName]: menuItem.tooltip,
204
- "is-disabled": menuItem.disabled,
205
- }), title: menuItem.itemName, icon: menuItem.icon, onClick: menuItem.disabled
206
- ? undefined
207
- : () => {
208
- menuItem.onClick?.();
209
- setIsOpen(false);
210
- setSelectedMenuItem(null);
211
- }, elementType: "button", accessibilityConfig: {
212
- role: "menuitem",
213
- ariaDisabled: menuItem.disabled,
214
- ariaHasPopup: menuItem.opensDialog ? "dialog" : undefined,
215
- ariaDescribedBy: menuItem.disabled ? tooltipId : undefined,
216
- } }, menuItem.itemId)));
206
+ return renderWithOptionalTooltip(menuItem, ({ selectorClassName, tooltipId }) => {
207
+ const hasWarning = !!menuItem.warning;
208
+ const item = (_jsx(SingleSelectListItem, { ref: setMenuItemRef(menuItem.itemId), className: cx("gd-menu-item", menuItem.className, `s-${menuItem.itemId}`, {
209
+ [selectorClassName]: menuItem.tooltip,
210
+ "is-disabled": menuItem.disabled,
211
+ }), title: menuItem.itemName, icon: menuItem.icon, info: menuItem.warning ?? undefined, infoRenderer: hasWarning ? (info) => renderMenuItemWarning(info, isWarningFocusTooltipOpen) : undefined, onClick: menuItem.disabled
212
+ ? undefined
213
+ : () => {
214
+ menuItem.onClick?.();
215
+ setIsOpen(false);
216
+ setSelectedMenuItem(null);
217
+ }, elementType: "button", accessibilityConfig: {
218
+ role: "menuitem",
219
+ ariaDisabled: menuItem.disabled,
220
+ ariaHasPopup: menuItem.opensDialog ? "dialog" : undefined,
221
+ // The warning icon is not focusable and is hidden from AT, so describe the whole item by
222
+ // the warning text for screen-reader users (disabled tooltip takes precedence when present).
223
+ ariaDescribedBy: menuItem.disabled
224
+ ? tooltipId
225
+ : hasWarning
226
+ ? warningTooltipId
227
+ : undefined,
228
+ } }, menuItem.itemId));
229
+ // Keyboard accessibility: the warning icon has its own hover-only tooltip for mouse users, but it is
230
+ // not focusable. Add a second, focus-triggered tooltip anchored to the whole (focusable) menu item so
231
+ // keyboard users see the warning too. Skip it when a disabled tooltip already takes over on focus.
232
+ if (!hasWarning || menuItem.tooltip) {
233
+ return item;
234
+ }
235
+ return (_jsx(UiTooltip, { id: warningTooltipId, triggerBy: ["focus"], arrowPlacement: "left", optimalPlacement: true, content: menuItem.warning, anchor: item, onOpen: () => setIsWarningFocusTooltipOpen(true), onClose: () => setIsWarningFocusTooltipOpen(false) }));
236
+ });
237
+ }
238
+ function renderMenuItemWarning(info, suppressHover) {
239
+ return (_jsx("span", { className: "gd-list-icon gd-list-icon-right", children: _jsx(UiTooltip, { triggerBy: ["hover"], disabled: suppressHover, arrowPlacement: "left", optimalPlacement: true, content: info, anchor: _jsx(UiIcon, { type: "warning", size: 16, color: "warning", accessibilityConfig: { ariaHidden: true } }) }) }));
217
240
  }
@@ -18,6 +18,12 @@ export interface IMenuButtonItemButton extends IMenuItemCommonProps {
18
18
  * If specified, the value is shown on hover of the item as a tooltip.
19
19
  */
20
20
  tooltip?: string | ReactNode;
21
+ /**
22
+ * If specified, a warning indicator is rendered on the trailing side of the item, shown regardless of
23
+ * the item's disabled state. The value is the content shown on hover of the warning indicator. Used e.g.
24
+ * to flag that an export will contain partial results because an execution reached a result limit.
25
+ */
26
+ warning?: ReactNode;
21
27
  disabled?: boolean;
22
28
  icon?: string | ReactNode;
23
29
  opensDialog?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE;QACH,qBAAqB,GAAG,wBAAwB,GAAG,qBAAqB;QACxE,GAAG,CAAC,qBAAqB,GAAG,wBAAwB,GAAG,qBAAqB,CAAC,EAAE;KAClF,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IAClE,IAAI,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,qBAAqB,GACrB,mBAAmB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAE1C,iBAAiB,EAAE,yBAAyB,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAE3C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;CAClE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE;QACH,qBAAqB,GAAG,wBAAwB,GAAG,qBAAqB;QACxE,GAAG,CAAC,qBAAqB,GAAG,wBAAwB,GAAG,qBAAqB,CAAC,EAAE;KAClF,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IAClE,IAAI,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,qBAAqB,GACrB,mBAAmB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAE1C,iBAAiB,EAAE,yBAAyB,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAE3C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;CAClE"}
@@ -1 +1,2 @@
1
+ // (C) 2021-2026 GoodData Corporation
1
2
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useDefaultMenuItems.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/useDefaultMenuItems.tsx"],"names":[],"mappings":"AAwCA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA8BlD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CA2bvD"}
1
+ {"version":3,"file":"useDefaultMenuItems.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/useDefaultMenuItems.tsx"],"names":[],"mappings":"AAyCA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA8BlD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAicvD"}
@@ -8,6 +8,7 @@ import { useDashboardDispatch, useDashboardSelector } from "../../../model/react
8
8
  import { useDashboardScheduledEmails } from "../../../model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.js";
9
9
  import { useDashboardAlerts } from "../../../model/react/useDashboardAlerting/useDashboardAlerts.js";
10
10
  import { selectEnableAutomationManagement, selectEnableDashboardDensitySetting, selectEnableDashboardTabularExport, selectEnableSnapshotExport, selectIsReadOnly, selectSettings, } from "../../../model/store/config/configSelectors.js";
11
+ import { selectHasAnyExecutionResultLimitBreaks } from "../../../model/store/executionResults/executionResultsSelectors.js";
11
12
  import { selectDashboardTitle, selectIsNewDashboard } from "../../../model/store/meta/metaSelectors.js";
12
13
  import { selectCanCreateAutomation, selectCanExportPdf, selectCanExportTabular, } from "../../../model/store/permissions/permissionsSelectors.js";
13
14
  import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
@@ -52,6 +53,10 @@ export function useDefaultMenuItems() {
52
53
  const isEmptyLayout = !useDashboardSelector(selectLayoutHasAnalyticalWidgets); // we need at least one non-custom widget there
53
54
  const settings = useDashboardSelector(selectSettings);
54
55
  const dashboardTitle = useDashboardSelector(selectDashboardTitle);
56
+ const hasAnyLimitBreaks = useDashboardSelector(selectHasAnyExecutionResultLimitBreaks);
57
+ const xlsxPartialResultsWarning = hasAnyLimitBreaks
58
+ ? intl.formatMessage({ id: "options.menu.export.partialResults.warning.dashboard" })
59
+ : undefined;
55
60
  const { isScheduledEmailingVisible, isScheduledManagementEmailingVisible, numberOfAvailableDestinations, defaultOnScheduleEmailing, defaultOnScheduleEmailingManagement, } = useDashboardScheduledEmails();
56
61
  const { defaultOnAlertingManagement: defaultOnAlertsManagement, isAlertManagementVisible: isAlertsManagementVisible, } = useDashboardAlerts();
57
62
  const dispatch = useDashboardDispatch();
@@ -355,6 +360,7 @@ export function useDefaultMenuItems() {
355
360
  visible: isXlsxExportVisible,
356
361
  disabled: isInProgress,
357
362
  tooltip: disabledTooltip,
363
+ warning: xlsxPartialResultsWarning,
358
364
  icon: "gd-icon-type-sheet",
359
365
  },
360
366
  ],
@@ -414,5 +420,6 @@ export function useDefaultMenuItems() {
414
420
  isXlsxExportVisible,
415
421
  isAutomationManagementEnabled,
416
422
  enableSnapshotExport,
423
+ xlsxPartialResultsWarning,
417
424
  ]);
418
425
  }
@@ -62,7 +62,7 @@ function DrillModalExportMenuItem(props) {
62
62
  const { item, isFocused } = props;
63
63
  const tooltip = item.data.disabledTooltip;
64
64
  return item.isDisabled && tooltip !== undefined ? (_jsxs(_Fragment, { children: [
65
- _jsx(UiTooltip, { triggerBy: isFocused ? [] : ["hover", "focus"], arrowPlacement: "right", optimalPlacement: true, content: tooltip, anchor: _jsx(InteractiveItemWithIcon, { ...props }) }), _jsx("div", { className: "sr-only", "aria-live": "polite", children: tooltip })
65
+ _jsx(UiTooltip, { triggerBy: isFocused ? [] : ["hover", "focus"], arrowPlacement: "left", optimalPlacement: true, content: tooltip, anchor: _jsx(InteractiveItemWithIcon, { ...props }) }), _jsx("div", { className: "sr-only", "aria-live": "polite", children: tooltip })
66
66
  ] })) : (_jsx(InteractiveItemWithIcon, { ...props }));
67
67
  }
68
68
  function DropdownTriggerButton({ toggleDropdown, buttonRef, accessibilityConfig, isDisabled, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"InsightDrillDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,YAAY,EAAyB,MAAM,OAAO,CAAC;AAKrF,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,cAAc,EAMtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,kBAAkB,CAAC;AA0BvE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAc7G;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAoCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CA8LhF"}
1
+ {"version":3,"file":"InsightDrillDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,YAAY,EAAyB,MAAM,OAAO,CAAC;AAKrF,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,cAAc,EAKtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,kBAAkB,CAAC;AA2BvE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAgB7G;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAkCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CA2MhF"}
@@ -3,12 +3,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useCallback, useState } from "react";
4
4
  import cx from "classnames";
5
5
  import { useIntl } from "react-intl";
6
- import { idRef, insightTitle, insightVisualizationType, isInsight, } from "@gooddata/sdk-model";
6
+ import { insightTitle, insightVisualizationType, isInsight, } from "@gooddata/sdk-model";
7
7
  import { Button, FullScreenOverlay, Overlay, OverlayController, OverlayControllerProvider, RichText, UiIcon, UiTooltip, isNotDocumentFocused, useIdPrefixed, useMediaQuery, } from "@gooddata/sdk-ui-kit";
8
8
  import { DOWNLOADER_ID } from "../../../../../_staging/fileUtils/downloadFile.js";
9
9
  import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
10
10
  import { useWidgetExecutionsHandler } from "../../../../../model/react/useWidgetExecutionsHandler.js";
11
11
  import { selectEnableRichTextDynamicReferences, selectSeparators, } from "../../../../../model/store/config/configSelectors.js";
12
+ import { DRILL_MODAL_EXECUTION_PSEUDO_REF } from "../../../../../model/store/executionResults/constants.js";
12
13
  import { selectExecutionTimestamp } from "../../../../../model/store/ui/uiSelectors.js";
13
14
  import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../../constants/zIndex.js";
14
15
  import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js";
@@ -17,6 +18,8 @@ import { IntlWrapper } from "../../../../localization/IntlWrapper.js";
17
18
  import { ThemedLoadingEqualizer } from "../../../../presentationComponents/ThemedLoadingEqualizer.js";
18
19
  import { useInsightExport } from "../../../common/useInsightExport.js";
19
20
  import { useShowAsTable } from "../../../showAsTableButton/useShowAsTable.js";
21
+ import { useInsightWarning } from "../../../widget/InsightWidget/useInsightWarning.js";
22
+ import { InsightWidgetWarningPartialResult } from "../../../widget/warningPartialResult/InsightWidgetWarningPartialResult.js";
20
23
  import { supportsShowAsTable } from "../../insightToTable.js";
21
24
  import { DrillDialog } from "./DrillDialog.js";
22
25
  import { DrillDialogInsight } from "./DrillDialogInsight.js";
@@ -48,7 +51,6 @@ const getInsightWidgetDescription = (descriptionConfig, widget, insight) => {
48
51
  // If widget is not insight or insight is not same as insight in dialog, we will use insight summary as default
49
52
  return insight?.summary;
50
53
  };
51
- const DRILL_MODAL_EXECUTION_PSEUDO_REF = idRef("@@GDC_DRILL_MODAL");
52
54
  export function InsightDrillDialog(props) {
53
55
  const { widget, locale, breadcrumbs, insight, enableDrillDescription, drillStep, returnFocusToInsight, onClose, onBackButtonClick, onDrillDown, onDrillStart, } = props;
54
56
  const isMobileDevice = useMediaQuery("mobileDevice");
@@ -94,16 +96,18 @@ export function InsightDrillDialog(props) {
94
96
  const onCloseDialog = () => {
95
97
  onClose();
96
98
  };
99
+ const { limitBreaks, executionResult } = useInsightWarning(DRILL_MODAL_EXECUTION_PSEUDO_REF);
97
100
  const isShowAsTableVisible = supportsShowAsTable(insightVisualizationType(insight));
98
- return (_jsx(OverlayControllerProvider, { overlayController: overlayController, children: _jsx(OverlayComponent, { className: "gd-drill-modal-overlay", isModal: true, closeOnEscape: true, closeOnOutsideClick: true, ignoreClicksOnByClass: overlayIgnoredClasses, onClose: onCloseDialog, positionType: "fixed", children: _jsx(IntlWrapper, { locale: locale, children: _jsx(DrillDialog, { insight: insight, widget: widget, insightTitle: baseInsightTitle, isBackButtonVisible: breadcrumbs.length > 1, onBackButtonClick: onBackButtonClick, onCloseDialog: onCloseDialog, breadcrumbs: breadcrumbs, exportAvailable: exportXLSXEnabled || exportCSVEnabled, exportXLSXEnabled: exportXLSXEnabled, exportCSVEnabled: exportCSVEnabled, exportCSVRawEnabled: exportCSVRawEnabled, exportPDFEnabled: exportPdfTabularEnabled, exportPDFVisible: isExportPdfTabularVisible, enableDrillDescription: enableDrillDescription, onExportXLSX: onExportXLSX, onExportCSV: onExportCSV, onExportCSVRaw: onExportRawCSV, onExportPDF: onExportPdfTabular, isLoading: isLoading, isExporting: isExporting, isExportRawVisible: isExportRawVisible, isShowAsTableVisible: isShowAsTableVisible, isWidgetAsTable: drillDialogIsAsTable, onShowAsTable: toggleWidgetAsTable, focusCheckFn: isNotDocumentFocused, accessibilityConfig: {
101
+ return (_jsx(OverlayControllerProvider, { overlayController: overlayController, children: _jsx(OverlayComponent, { className: "gd-drill-modal-overlay", isModal: true, closeOnEscape: true, closeOnOutsideClick: true, ignoreClicksOnByClass: overlayIgnoredClasses, onClose: onCloseDialog, positionType: "fixed", children: _jsx(IntlWrapper, { locale: locale, children: _jsxs(DrillDialog, { insight: insight, widget: widget, insightTitle: baseInsightTitle, isBackButtonVisible: breadcrumbs.length > 1, onBackButtonClick: onBackButtonClick, onCloseDialog: onCloseDialog, breadcrumbs: breadcrumbs, exportAvailable: exportXLSXEnabled || exportCSVEnabled, exportXLSXEnabled: exportXLSXEnabled, exportCSVEnabled: exportCSVEnabled, exportCSVRawEnabled: exportCSVRawEnabled, exportPDFEnabled: exportPdfTabularEnabled, exportPDFVisible: isExportPdfTabularVisible, enableDrillDescription: enableDrillDescription, onExportXLSX: onExportXLSX, onExportCSV: onExportCSV, onExportCSVRaw: onExportRawCSV, onExportPDF: onExportPdfTabular, isLoading: isLoading, isExporting: isExporting, isExportRawVisible: isExportRawVisible, isShowAsTableVisible: isShowAsTableVisible, isWidgetAsTable: drillDialogIsAsTable, onShowAsTable: toggleWidgetAsTable, focusCheckFn: isNotDocumentFocused, accessibilityConfig: {
99
102
  dialogId,
100
- }, children: _jsx(WithDrillSelect, { widgetRef: widget.ref, insight: props.insight, returnFocusToInsight: returnFocusToInsight, onDrillStart: onDrillStart, onDrillDownSuccess: onDrillDown, children: ({ onDrill }) => {
101
- return description && enableDrillDescription ? (_jsxs("div", { className: "drill-dialog-insight-container", children: [
102
- _jsxs("div", { className: "drill-dialog-insight-container-insight", children: [
103
- _jsx(InsightDrillDialogDescriptionButton, { isOpen: isOpen, isMobileDevice: isMobileDevice, setIsOpen: setIsOpen, descriptionId: descriptionId }), _jsx(DrillDialogInsight, { ...props, onDrill: onDrill, onLoadingChanged: handleLoadingChanged, onError: executionsHandler.onError, onWidgetFiltersReady: handleFiltersReady, pushData: executionsHandler.onPushData, ErrorComponent: ErrorComponent, LoadingComponent: LoadingComponent, drillStep: drillStep, isWidgetAsTable: drillDialogIsAsTable })
104
- ] }), _jsx(InsightDrillDialogDescriptionContent, { id: descriptionId, isOpen: isOpen, isMobileDevice: isMobileDevice, description: description, widgetFilters: widgetFilters, LoadingComponent: LoadingComponent })
105
- ] })) : (_jsx(DrillDialogInsight, { ...props, onDrill: onDrill, onLoadingChanged: handleLoadingChanged, onError: executionsHandler.onError, pushData: executionsHandler.onPushData, ErrorComponent: ErrorComponent, LoadingComponent: LoadingComponent, drillStep: drillStep, isWidgetAsTable: drillDialogIsAsTable }));
106
- } }) }) }) }) }));
103
+ }, children: [
104
+ _jsx(WithDrillSelect, { widgetRef: widget.ref, insight: props.insight, returnFocusToInsight: returnFocusToInsight, onDrillStart: onDrillStart, onDrillDownSuccess: onDrillDown, children: ({ onDrill }) => {
105
+ return description && enableDrillDescription ? (_jsxs("div", { className: "drill-dialog-insight-container", children: [
106
+ _jsxs("div", { className: "drill-dialog-insight-container-insight", children: [
107
+ _jsx(InsightDrillDialogDescriptionButton, { isOpen: isOpen, isMobileDevice: isMobileDevice, setIsOpen: setIsOpen, descriptionId: descriptionId }), _jsx(DrillDialogInsight, { ...props, onDrill: onDrill, onLoadingChanged: handleLoadingChanged, onError: executionsHandler.onError, onWidgetFiltersReady: handleFiltersReady, pushData: executionsHandler.onPushData, ErrorComponent: ErrorComponent, LoadingComponent: LoadingComponent, drillStep: drillStep, isWidgetAsTable: drillDialogIsAsTable })
108
+ ] }), _jsx(InsightDrillDialogDescriptionContent, { id: descriptionId, isOpen: isOpen, isMobileDevice: isMobileDevice, description: description, widgetFilters: widgetFilters, LoadingComponent: LoadingComponent })
109
+ ] })) : (_jsx(DrillDialogInsight, { ...props, onDrill: onDrill, onLoadingChanged: handleLoadingChanged, onError: executionsHandler.onError, pushData: executionsHandler.onPushData, ErrorComponent: ErrorComponent, LoadingComponent: LoadingComponent, drillStep: drillStep, isWidgetAsTable: drillDialogIsAsTable }));
110
+ } }), limitBreaks.length > 0 && executionResult ? (_jsx(InsightWidgetWarningPartialResult, { className: "gd-warning-partial-result", limitBreaks: limitBreaks, onExportRawCSV: onExportRawCSV, isExporting: isExporting, isExportRawVisible: isExportRawVisible, isLoading: executionResult?.isLoading, executionResult: executionResult })) : null] }) }) }) }));
107
111
  }
108
112
  function InsightDrillDialogDescriptionButton({ isOpen, isMobileDevice, setIsOpen, descriptionId, }) {
109
113
  const { formatMessage } = useIntl();
@@ -13,7 +13,6 @@ export interface IMenuItemData {
13
13
  }
14
14
  export type IMenuItem = IUiMenuItem<IMenuItemData>;
15
15
  export type IMenuInteractiveItem = IUiMenuInteractiveItem<IMenuItemData>;
16
- export declare const DRILL_MODAL_EXECUTION_PSEUDO_REF: import("@gooddata/sdk-model").IdentifierRef;
17
16
  export declare const itemMessages: {
18
17
  xlsx: {
19
18
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useDrillDialogExportItems.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogExportItems.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOpG,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE;QACT,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC;KAClB,CAAC;CACL;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAEzE,eAAO,MAAM,gCAAgC,6CAA6B,CAAC;AAE3E,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAKvB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;4BA6HrC,CAAC"}
1
+ {"version":3,"file":"useDrillDialogExportItems.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogExportItems.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQpG,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE;QACT,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC;KAClB,CAAC;CACL;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAEzE,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAKvB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;4BAgJrC,CAAC"}
@@ -1,12 +1,11 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { defineMessages, useIntl } from "react-intl";
4
- import { idRef } from "@gooddata/sdk-model";
5
4
  import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
6
5
  import { selectSettings } from "../../../../../model/store/config/configSelectors.js";
6
+ import { DRILL_MODAL_EXECUTION_PSEUDO_REF } from "../../../../../model/store/executionResults/constants.js";
7
7
  import { selectExecutionResultByRef } from "../../../../../model/store/executionResults/executionResultsSelectors.js";
8
8
  import { getExportTooltipId } from "../../../insightMenu/DefaultDashboardInsightMenu/getExportTooltips.js";
9
- export const DRILL_MODAL_EXECUTION_PSEUDO_REF = idRef("@@GDC_DRILL_MODAL");
10
9
  export const itemMessages = defineMessages({
11
10
  xlsx: { id: "widget.drill.dialog.exportToXLSX" },
12
11
  csvFormatted: { id: "widget.drill.dialog.exportToCSV.formatted" },
@@ -20,6 +19,14 @@ export const useDrillDialogExportItems = ({ isExporting, isDropdownDisabled, isE
20
19
  const disabledTooltip = formatMessage({
21
20
  id: getExportTooltipId({ execution, isExporting, isRawExportsEnabled: settings?.enableRawExports }),
22
21
  });
22
+ // When the drilled execution reached a result limit, formatted exports (XLSX, formatted CSV, PDF) can
23
+ // only contain partial data and are disabled with an explanatory tooltip. Raw CSV is unaffected (it runs
24
+ // a separate full execution). An in-progress export takes priority over the limit message (disabledTooltip
25
+ // already resolves to the in-progress reason while exporting).
26
+ const hasLimitBreaks = (execution?.limitBreaks?.length ?? 0) > 0;
27
+ const formattedExportTooltip = !isExporting && hasLimitBreaks
28
+ ? formatMessage({ id: "options.menu.export.partialResults.exportDisabled" })
29
+ : disabledTooltip;
23
30
  return useMemo(() => {
24
31
  const allItems = [
25
32
  {
@@ -28,12 +35,12 @@ export const useDrillDialogExportItems = ({ isExporting, isDropdownDisabled, isE
28
35
  action: onExportXLSX,
29
36
  className: "s-export-drilled-insight-xlsx gd-icon-type-sheet",
30
37
  dataTestId: "s-export-drilled-insight-xlsx",
31
- disabledTooltip,
38
+ disabledTooltip: formattedExportTooltip,
32
39
  icon: "fileXlsx",
33
40
  },
34
41
  id: "xlsx",
35
42
  stringTitle: formatMessage({ id: itemMessages.xlsx.id }),
36
- isDisabled: !isExportXLSXEnabled,
43
+ isDisabled: !isExportXLSXEnabled || hasLimitBreaks,
37
44
  },
38
45
  ...(isExportPDFVisible
39
46
  ? [
@@ -43,12 +50,12 @@ export const useDrillDialogExportItems = ({ isExporting, isDropdownDisabled, isE
43
50
  action: onExportPDF,
44
51
  className: "s-export-drilled-insight-pdf gd-icon-type-pdf",
45
52
  dataTestId: "s-export-drilled-insight-pdf",
46
- disabledTooltip,
53
+ disabledTooltip: formattedExportTooltip,
47
54
  icon: "filePdf",
48
55
  },
49
56
  id: "pdf",
50
57
  stringTitle: formatMessage({ id: itemMessages.pdf.id }),
51
- isDisabled: !isExportPDFEnabled,
58
+ isDisabled: !isExportPDFEnabled || hasLimitBreaks,
52
59
  },
53
60
  ]
54
61
  : []),
@@ -58,12 +65,12 @@ export const useDrillDialogExportItems = ({ isExporting, isDropdownDisabled, isE
58
65
  action: onExportCSV,
59
66
  className: "s-export-drilled-insight-csv-formatted gd-icon-type-csv-formatted",
60
67
  dataTestId: "s-export-drilled-insight-csv-formatted",
61
- disabledTooltip,
68
+ disabledTooltip: formattedExportTooltip,
62
69
  icon: "fileCsvFormatted",
63
70
  },
64
71
  id: "csv-formatted",
65
72
  stringTitle: formatMessage({ id: itemMessages.csvFormatted.id }),
66
- isDisabled: !isExportCSVEnabled,
73
+ isDisabled: !isExportCSVEnabled || hasLimitBreaks,
67
74
  },
68
75
  {
69
76
  type: "interactive",
@@ -85,6 +92,12 @@ export const useDrillDialogExportItems = ({ isExporting, isDropdownDisabled, isE
85
92
  if (isDropdownDisabled) {
86
93
  return [];
87
94
  }
95
+ // When the execution reached a result limit, keep the (disabled) formatted export items in the menu
96
+ // so the user sees they are unavailable because of the limit, instead of hiding them.
97
+ if (hasLimitBreaks) {
98
+ return allItems;
99
+ }
100
+ // Otherwise, when raw exports are not shown, disabled items are hidden as usual.
88
101
  return allItems.filter((item) => !item.isDisabled);
89
102
  }, [
90
103
  formatMessage,
@@ -100,5 +113,7 @@ export const useDrillDialogExportItems = ({ isExporting, isDropdownDisabled, isE
100
113
  isExportRawVisible,
101
114
  isDropdownDisabled,
102
115
  disabledTooltip,
116
+ formattedExportTooltip,
117
+ hasLimitBreaks,
103
118
  ]);
104
119
  };
@@ -9,7 +9,7 @@ export const DashboardInsightMenuItemButton = (props) => {
9
9
  function renderButtonWithTooltip(button, disabled, tooltip, isFocused) {
10
10
  if (tooltip && disabled) {
11
11
  return (_jsxs(_Fragment, { children: [
12
- _jsx(UiTooltip, { triggerBy: isFocused ? [] : ["hover", "focus"], arrowPlacement: "right", optimalPlacement: true, content: tooltip, anchor: button }), _jsx("div", { className: "sr-only", "aria-live": "polite", children: tooltip })
12
+ _jsx(UiTooltip, { triggerBy: isFocused ? [] : ["hover", "focus"], arrowPlacement: "left", optimalPlacement: true, content: tooltip, anchor: button }), _jsx("div", { className: "sr-only", "aria-live": "polite", children: tooltip })
13
13
  ] }));
14
14
  }
15
15
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"getDefaultInsightMenuItems.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAElG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAuKxD;;GAEG;AACH,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,qBAAqB,EAC7B,SAAS,CAAC,EAAE,wBAAwB,GACrC,gBAAgB,EAAE,CA2MpB"}
1
+ {"version":3,"file":"getDefaultInsightMenuItems.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAElG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA8MxD;;GAEG;AACH,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,qBAAqB,EAC7B,SAAS,CAAC,EAAE,wBAAwB,GACrC,gBAAgB,EAAE,CAuOpB"}