@gooddata/sdk-ui-dashboard 11.57.0-alpha.2 → 11.57.0-alpha.4

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 (193) hide show
  1. package/NOTICE +4 -4
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/kdaDialog/dialog/hooks/useChangeAnalysis.js +1 -1
  5. package/esm/model/commandHandlers/common/validateDrillToCustomUrlParams.d.ts.map +1 -1
  6. package/esm/model/commandHandlers/common/validateDrillToCustomUrlParams.js +6 -5
  7. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.d.ts +1 -1
  8. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.d.ts.map +1 -1
  9. package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js +63 -3
  10. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.d.ts +2 -3
  11. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.d.ts.map +1 -1
  12. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.js +23 -17
  13. package/esm/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.d.ts.map +1 -1
  14. package/esm/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.js +5 -9
  15. package/esm/model/react/useDashboardAsyncRender.js +2 -2
  16. package/esm/model/react/useDashboardCommand.js +1 -1
  17. package/esm/model/react/useDashboardQueryProcessing.js +1 -1
  18. package/esm/model/react/useDispatchDashboardCommand.js +1 -1
  19. package/esm/model/react/useInitializeDashboardStore.js +1 -1
  20. package/esm/model/react/useWidgetFilters.js +7 -7
  21. package/esm/model/store/insights/insightsSelectors.d.ts +18 -0
  22. package/esm/model/store/insights/insightsSelectors.d.ts.map +1 -1
  23. package/esm/model/store/insights/insightsSelectors.js +51 -2
  24. package/esm/model/store/tabs/index.d.ts +12 -0
  25. package/esm/model/store/tabs/index.d.ts.map +1 -1
  26. package/esm/model/store/tabs/layout/layoutReducers.d.ts +36 -30
  27. package/esm/model/store/tabs/layout/layoutReducers.d.ts.map +1 -1
  28. package/esm/model/store/tabs/layout/layoutReducers.js +19 -0
  29. package/esm/model/store/tabs/layout/layoutSelectors.d.ts +17 -0
  30. package/esm/model/store/tabs/layout/layoutSelectors.d.ts.map +1 -1
  31. package/esm/model/store/tabs/layout/layoutSelectors.js +30 -1
  32. package/esm/model/store/ui/index.d.ts +3 -0
  33. package/esm/model/store/ui/index.d.ts.map +1 -1
  34. package/esm/model/store/ui/uiReducers.d.ts +3 -0
  35. package/esm/model/store/ui/uiReducers.d.ts.map +1 -1
  36. package/esm/model/store/ui/uiReducers.js +13 -0
  37. package/esm/model/store/ui/uiSelectors.d.ts +8 -0
  38. package/esm/model/store/ui/uiSelectors.d.ts.map +1 -1
  39. package/esm/model/store/ui/uiSelectors.js +8 -0
  40. package/esm/model/store/ui/uiState.d.ts +4 -0
  41. package/esm/model/store/ui/uiState.d.ts.map +1 -1
  42. package/esm/model/store/ui/uiState.js +4 -0
  43. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialogAttribute.js +1 -1
  44. package/esm/presentation/automations/alerting/blocks/AlertingDialogFieldLabelWithTooltip.d.ts.map +1 -1
  45. package/esm/presentation/automations/alerting/blocks/AlertingDialogFieldLabelWithTooltip.js +1 -1
  46. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.js +1 -1
  47. package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.d.ts.map +1 -1
  48. package/esm/presentation/automations/shared/automationFilters/components/AutomationFiltersSelect.js +1 -1
  49. package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.js +3 -3
  50. package/esm/presentation/dashboard/DashboardHeader/DashboardHeader.d.ts.map +1 -1
  51. package/esm/presentation/dashboard/DashboardHeader/DashboardHeader.js +5 -1
  52. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
  53. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +4 -3
  54. package/esm/presentation/dragAndDrop/useDashboardDragScroll.js +2 -2
  55. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.d.ts.map +1 -1
  56. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.js +16 -23
  57. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.d.ts.map +1 -1
  58. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.js +3 -2
  59. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.d.ts.map +1 -1
  60. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.js +2 -1
  61. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.d.ts.map +1 -1
  62. package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.js +2 -1
  63. package/esm/presentation/drill/utils/drillToCustomUrlUtils.d.ts.map +1 -1
  64. package/esm/presentation/drill/utils/drillToCustomUrlUtils.js +5 -3
  65. package/esm/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js +1 -1
  66. package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js +1 -1
  67. package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useTitleConfiguration.js +1 -1
  68. package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.js +1 -1
  69. package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.js +1 -1
  70. package/esm/presentation/filterBar/filterBar/useFiltersWithAddedPlaceholder.js +1 -1
  71. package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.js +1 -1
  72. package/esm/presentation/flexibleLayout/dragAndDrop/DragLayer.js +1 -1
  73. package/esm/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.js +1 -1
  74. package/esm/presentation/insightList/InsightList.js +1 -1
  75. package/esm/presentation/insightNotSavedDialog/InsightNotSavedDialog.d.ts +5 -0
  76. package/esm/presentation/insightNotSavedDialog/InsightNotSavedDialog.d.ts.map +1 -0
  77. package/esm/presentation/insightNotSavedDialog/InsightNotSavedDialog.js +29 -0
  78. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  79. package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  80. package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +1 -0
  81. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  82. package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  83. package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +1 -0
  84. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  85. package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  86. package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +1 -0
  87. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +20 -0
  88. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  89. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +22 -2
  90. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  91. package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  92. package/esm/presentation/localization/bundles/es-419.localization-bundle.js +1 -0
  93. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  94. package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  95. package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +1 -0
  96. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  97. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  98. package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +1 -0
  99. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  100. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  101. package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +1 -0
  102. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  103. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  104. package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +1 -0
  105. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  106. package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  107. package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +1 -0
  108. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  109. package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  110. package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +1 -0
  111. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  112. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  113. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +1 -0
  114. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  115. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  116. package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +1 -0
  117. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  118. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  119. package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +1 -0
  120. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  121. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  122. package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +1 -0
  123. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  124. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  125. package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +1 -0
  126. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  127. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  128. package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +1 -0
  129. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  130. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  131. package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +2 -1
  132. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  133. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  134. package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +1 -0
  135. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  136. package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  137. package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +1 -0
  138. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  139. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  140. package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +1 -0
  141. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  142. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  143. package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +1 -0
  144. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  145. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  146. package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +1 -0
  147. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  148. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  149. package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +1 -0
  150. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  151. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  152. package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +1 -0
  153. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  154. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  155. package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +1 -0
  156. package/esm/presentation/saveAs/DefaultSaveAsDialog/useSaveAs.js +1 -1
  157. package/esm/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.d.ts.map +1 -1
  158. package/esm/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.js +1 -1
  159. package/esm/presentation/topBar/menuButton/useDefaultMenuItems.js +4 -4
  160. package/esm/presentation/widget/common/configuration/useAttributeFilterConfigurationHandling.js +5 -5
  161. package/esm/presentation/widget/common/configuration/useDateFilterConfigurationHandling.js +5 -5
  162. package/esm/presentation/widget/common/configuration/useIsSelectedDatasetHidden.js +1 -1
  163. package/esm/presentation/widget/common/configuration/useMeasureValueFilterConfigurationHandling.js +5 -5
  164. package/esm/presentation/widget/common/useCustomWidgetInsightDataView.js +3 -3
  165. package/esm/presentation/widget/common/useExportHandler.js +1 -1
  166. package/esm/presentation/widget/common/useImageExportHandler.d.ts.map +1 -1
  167. package/esm/presentation/widget/common/useImageExportHandler.js +2 -2
  168. package/esm/presentation/widget/common/useInsightExport.js +11 -11
  169. package/esm/presentation/widget/common/useInsightWidgetDataView.js +2 -2
  170. package/esm/presentation/widget/common/useRawExportHandler.js +1 -1
  171. package/esm/presentation/widget/common/useSlidesExportHandler.js +1 -1
  172. package/esm/presentation/widget/common/useWidgetHighlighting.js +1 -1
  173. package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js +6 -6
  174. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +1 -1
  175. package/esm/presentation/widget/insight/ViewModeDashboardInsight/useResolveDashboardInsightProperties.js +1 -1
  176. package/esm/presentation/widget/insight/configuration/DrillTargets/useInvalidAttributeDisplayFormIdentifier.d.ts.map +1 -1
  177. package/esm/presentation/widget/insight/configuration/DrillTargets/useInvalidAttributeDisplayFormIdentifier.js +7 -6
  178. package/esm/presentation/widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.d.ts.map +1 -1
  179. package/esm/presentation/widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.js +16 -12
  180. package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.js +2 -2
  181. package/esm/presentation/widget/visualizationSwitcher/configuration/Toolbar.js +2 -2
  182. package/esm/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationListMenu.js +2 -2
  183. package/esm/presentation/widget/widget/DashboardWidget.js +1 -1
  184. package/esm/presentation/widget/widget/DefaultDashboardWidget.js +1 -1
  185. package/esm/presentation/widget/widget/InsightWidget/useInsightMenu.js +1 -1
  186. package/esm/sdk-ui-dashboard.d.ts +19 -0
  187. package/package.json +23 -24
  188. package/styles/css/insightsNotSavedDialog.css +26 -0
  189. package/styles/css/insightsNotSavedDialog.css.map +1 -0
  190. package/styles/css/main.css +27 -2
  191. package/styles/css/main.css.map +1 -1
  192. package/styles/scss/insightsNotSavedDialog.scss +26 -0
  193. package/styles/scss/main.scss +1 -0
@@ -30,6 +30,6 @@ export const useSlidesExportHandler = () => {
30
30
  addError(messages.messagesExportResultError);
31
31
  }
32
32
  }
33
- // eslint-disable-next-line react-hooks/exhaustive-deps
33
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
34
34
  }, []);
35
35
  };
@@ -86,7 +86,7 @@ export const useWidgetHighlighting = (widget) => {
86
86
  }
87
87
  }
88
88
  // We intentionally exclude keepHighlight
89
- // eslint-disable-next-line react-hooks/exhaustive-deps
89
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
90
90
  }, [isHighlighted, automationId, visualizationId, widgetId, retries]);
91
91
  // Remove highlight on outside click
92
92
  const removeHighlight = useCallback(() => setKeepHighlight(false), []);
@@ -65,7 +65,7 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
65
65
  const afterRenderCalled = useRef(false);
66
66
  useEffect(() => {
67
67
  onRequestAsyncRender();
68
- // eslint-disable-next-line react-hooks/exhaustive-deps
68
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
69
69
  }, []);
70
70
  // Custom components
71
71
  const { ErrorComponent, LoadingComponent } = useDashboardComponentsContext({
@@ -109,7 +109,7 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
109
109
  setIsVisualizationLoading(isLoading);
110
110
  onLoadingChanged?.({ isLoading });
111
111
  },
112
- // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
113
113
  [onLoadingChanged, executionsHandler.onLoadingChanged, initialRegistered]);
114
114
  const handleAfterRender = useCallback(() => {
115
115
  if (!afterRenderCalled.current) {
@@ -117,7 +117,7 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
117
117
  onResolveAsyncRender();
118
118
  setIsVisualizationInitializing(false);
119
119
  }
120
- // eslint-disable-next-line react-hooks/exhaustive-deps
120
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
121
121
  }, [afterRender, onResolveAsyncRender]);
122
122
  // Filtering
123
123
  const { result: filtersForInsight, status: filtersStatus, error: filtersError, } = useWidgetFilters(widget, insight);
@@ -129,7 +129,7 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
129
129
  */
130
130
  const filtersForInsightHash = stringify(filtersForInsight);
131
131
  const insightWithAddedFilters = useMemo(() => insightSetFilters(insight, filtersForInsight),
132
- // eslint-disable-next-line react-hooks/exhaustive-deps
132
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
133
133
  [insight, filtersForInsightHash]);
134
134
  const insightWithAddedWidgetProperties = useResolveDashboardInsightProperties({
135
135
  insight: insightWithAddedFilters ?? insight,
@@ -150,7 +150,7 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
150
150
  executionsHandler.onPushData(data);
151
151
  handlePropertiesPushData(data);
152
152
  },
153
- // eslint-disable-next-line react-hooks/exhaustive-deps
153
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
154
154
  [onPushData, executionsHandler.onPushData, handlePropertiesPushData]);
155
155
  // Error handling
156
156
  const handleError = useCallback((error) => {
@@ -161,7 +161,7 @@ export function DashboardInsight({ insight, widget, clientHeight, clientWidth, b
161
161
  onResolveAsyncRender();
162
162
  setIsVisualizationInitializing(false);
163
163
  },
164
- // eslint-disable-next-line react-hooks/exhaustive-deps
164
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
165
165
  [onError, executionsHandler.onError, onResolveAsyncRender]);
166
166
  const effectiveError = filtersError ?? visualizationError;
167
167
  const execConfig = useWidgetExecConfig(ref, insight);
@@ -64,7 +64,7 @@ export function DrillDialogInsight({ insight, widget, backend, workspace, drillS
64
64
  const handleLoadingChanged = useCallback(({ isLoading }) => {
65
65
  setIsVisualizationLoading(isLoading);
66
66
  onLoadingChanged?.({ isLoading });
67
- // eslint-disable-next-line react-hooks/exhaustive-deps
67
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
68
68
  }, []);
69
69
  // Filtering
70
70
  const { result: availableFiltersForInsight, status: filtersStatus, error: filtersError, } = useWidgetFilters(widget, insight);
@@ -6,6 +6,6 @@ import { mergeInsightWithWidgetProperties } from "../../../../_staging/insight/i
6
6
  */
7
7
  export const useResolveDashboardInsightProperties = (props) => {
8
8
  const { widget, insight } = props;
9
- // eslint-disable-next-line react-hooks/exhaustive-deps
9
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
10
10
  return useMemo(() => mergeInsightWithWidgetProperties(insight, widget), [insight, widget.properties]);
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useInvalidAttributeDisplayFormIdentifier.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillTargets/useInvalidAttributeDisplayFormIdentifier.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAA0B,MAAM,qBAAqB,CAAC;AAKxF,OAAO,EAAE,KAAK,cAAc,EAA4B,MAAM,4BAA4B,CAAC;AAE3F,wBAAgB,yCAAyC,CACrD,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,UAAU,EAAE,oBAAoB,EAAE,YAuBrC"}
1
+ {"version":3,"file":"useInvalidAttributeDisplayFormIdentifier.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillTargets/useInvalidAttributeDisplayFormIdentifier.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAmB,MAAM,qBAAqB,CAAC;AAQjF,OAAO,EAAE,KAAK,cAAc,EAA4B,MAAM,4BAA4B,CAAC;AAE3F,wBAAgB,yCAAyC,CACrD,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,UAAU,EAAE,oBAAoB,EAAE,YA0BrC"}
@@ -1,7 +1,7 @@
1
1
  // (C) 2020-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
- import { areObjRefsEqual, idRef } from "@gooddata/sdk-model";
4
- import { getAttributeIdentifiersPlaceholdersFromUrl } from "@gooddata/sdk-model/internal";
3
+ import { areObjRefsEqual } from "@gooddata/sdk-model";
4
+ import { getAttributeIdentifiersPlaceholdersFromUrl, placeholderIdentifierText, } from "@gooddata/sdk-model/internal";
5
5
  import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
6
6
  import { selectAllCatalogDisplayFormsMap } from "../../../../../model/store/catalog/catalogSelectors.js";
7
7
  import { isDrillToCustomUrlConfig } from "../../../../drill/types.js";
@@ -10,17 +10,18 @@ export function useInvalidAttributeDisplayFormIdentifiers(urlDrillTarget, attrib
10
10
  return useMemo(() => {
11
11
  if (isDrillToCustomUrlConfig(urlDrillTarget)) {
12
12
  const parameters = getAttributeIdentifiersPlaceholdersFromUrl(urlDrillTarget.customUrl);
13
- return parameters
14
- .filter(({ identifier }) => {
13
+ return (parameters
14
+ .filter(({ ref }) => {
15
15
  // parameter is invalid if either it points to display form that no longer exists
16
- const relevantDf = displayForms.get(idRef(identifier, "displayForm"));
16
+ const relevantDf = displayForms.get(ref);
17
17
  if (!relevantDf) {
18
18
  return false;
19
19
  }
20
20
  // or if it points to an attribute that is no longer a valid drill target
21
21
  return !attributes.some((attribute) => areObjRefsEqual(relevantDf.attribute, attribute.attributeHeader.formOf));
22
22
  })
23
- .map(({ identifier }) => identifier);
23
+ // named as it is written in the URL, so the warning quotes text the user can find there
24
+ .map(({ ref }) => placeholderIdentifierText(ref)));
24
25
  }
25
26
  return [];
26
27
  }, [displayForms, urlDrillTarget, attributes]);
@@ -1 +1 @@
1
- {"version":3,"file":"useInvalidFilteringParametersIdentifiers.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAI3B,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,EAAE,KAAK,cAAc,EAA4B,MAAM,4BAA4B,CAAC;AAE3F,wBAAgB,wCAAwC,CACpD,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,cAAc,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC9C,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAChD,4BAA4B,EAAE,4BAA4B,EAAE,GAAG,SAAS,EACxE,0BAA0B,EAAE,mBAAmB,EAAE,GAAG,SAAS,EAC7D,gCAAgC,EAAE,OAAO,EACzC,sBAAsB,EAAE,+BAA+B,EAAE,GAAG,SAAS,YAoGxE"}
1
+ {"version":3,"file":"useInvalidFilteringParametersIdentifiers.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAG3B,MAAM,qBAAqB,CAAC;AAkB7B,OAAO,EAAE,KAAK,cAAc,EAA4B,MAAM,4BAA4B,CAAC;AAE3F,wBAAgB,wCAAwC,CACpD,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,cAAc,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC9C,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAChD,4BAA4B,EAAE,4BAA4B,EAAE,GAAG,SAAS,EACxE,0BAA0B,EAAE,mBAAmB,EAAE,GAAG,SAAS,EAC7D,gCAAgC,EAAE,OAAO,EACzC,sBAAsB,EAAE,+BAA+B,EAAE,GAAG,SAAS,YAsGxE"}
@@ -1,8 +1,8 @@
1
1
  // (C) 2020-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { uniq } from "lodash-es";
4
- import { areObjRefsEqual, filterObjRef, idRef, } from "@gooddata/sdk-model";
5
- import { getDashboardAttributeFilterPlaceholdersFromUrl, getDashboardMeasureValueFilterPlaceholdersFromUrl, getInsightAttributeFilterPlaceholdersFromUrl, getInsightMeasureValueFilterPlaceholdersFromUrl, } from "@gooddata/sdk-model/internal";
4
+ import { areObjRefsEqual, filterObjRef, } from "@gooddata/sdk-model";
5
+ import { getDashboardAttributeFilterPlaceholdersFromUrl, getDashboardMeasureValueFilterPlaceholdersFromUrl, getInsightAttributeFilterPlaceholdersFromUrl, getInsightMeasureValueFilterPlaceholdersFromUrl, placeholderIdentifierText, } from "@gooddata/sdk-model/internal";
6
6
  import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
7
7
  import { selectAllCatalogDisplayFormsMap, selectAllCatalogMeasuresMap, } from "../../../../../model/store/catalog/catalogSelectors.js";
8
8
  import { dashboardMeasureValueFilterMatchesIdentifier, insightMeasureValueFilterMatchesIdentifier, } from "../../../../../model/utils/measureValueFilterUtils.js";
@@ -17,33 +17,37 @@ export function useInvalidFilteringParametersIdentifiers(urlDrillTarget, insight
17
17
  const dashboardMeasureValueFilterParameters = getDashboardMeasureValueFilterPlaceholdersFromUrl(urlDrillTarget.customUrl);
18
18
  const insightMeasureValueFilterParameters = getInsightMeasureValueFilterPlaceholdersFromUrl(urlDrillTarget.customUrl);
19
19
  const invalidDashboardParameters = dashboardAttributeFilterParameters
20
- .filter(({ identifier }) => {
20
+ // The placeholder's own ref is used rather than a display-form one rebuilt from the
21
+ // identifier: a computed attribute shares the shape of a display form but not its type,
22
+ // and the filters are sanitized to that same typed ref.
23
+ .filter(({ ref }) => {
21
24
  // parameter is invalid if either it points to display form that no longer exists
22
- const relevantDf = displayForms.get(idRef(identifier, "displayForm"));
25
+ const relevantDf = displayForms.get(ref);
23
26
  if (!relevantDf) {
24
27
  return true;
25
28
  }
26
29
  return (!dashboardFilters?.some((filter) => {
27
- return areObjRefsEqual(filterObjRef(filter), idRef(identifier, "displayForm"));
30
+ return areObjRefsEqual(filterObjRef(filter), ref);
28
31
  }) &&
29
32
  !attributeFilterConfigs?.some((config) => {
30
- return (config.displayAsLabel &&
31
- areObjRefsEqual(config.displayAsLabel, idRef(identifier, "displayForm")));
33
+ return config.displayAsLabel && areObjRefsEqual(config.displayAsLabel, ref);
32
34
  }));
33
35
  })
34
- .map(({ identifier }) => identifier);
36
+ // named as it is written in the URL, so the warning quotes text the user can find there
37
+ .map(({ ref }) => placeholderIdentifierText(ref));
35
38
  const invalidInsightParameters = insightAttributeFilterParameters
36
- .filter(({ identifier }) => {
39
+ .filter(({ ref }) => {
37
40
  // parameter is invalid if either it points to display form that no longer exists
38
- const relevantDf = displayForms.get(idRef(identifier, "displayForm"));
41
+ const relevantDf = displayForms.get(ref);
39
42
  if (!relevantDf) {
40
43
  return true;
41
44
  }
42
45
  return !insightFilters?.some((filter) => {
43
- return areObjRefsEqual(filterObjRef(filter), idRef(identifier, "displayForm"));
46
+ return areObjRefsEqual(filterObjRef(filter), ref);
44
47
  });
45
48
  })
46
- .map(({ identifier }) => identifier);
49
+ // named as it is written in the URL, so the warning quotes text the user can find there
50
+ .map(({ ref }) => placeholderIdentifierText(ref));
47
51
  const invalidDashboardMvfParameters = dashboardMeasureValueFilterParameters
48
52
  .filter(({ identifier }) => {
49
53
  return !dashboardMeasureValueFilters?.some((filter) => dashboardMeasureValueFilterMatchesIdentifier(filter.dashboardMeasureValueFilter.measure, identifier, measures));
@@ -76,13 +76,13 @@ export const useInsightDrillConfigPanel = (props) => {
76
76
  return availableDrillTargets
77
77
  ? getMappedConfigForWidget(widgetDrills, availableDrillTargets, invalidCustomUrlDrillLocalIds, widgetRef)
78
78
  : [];
79
- // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
80
80
  }, [availableDrillTargets, widgetDrills, invalidCustomUrlDrillLocalIds]);
81
81
  const globalDrillDownItems = useMemo(() => {
82
82
  return availableDrillTargets
83
83
  ? getGlobalDrillDownMappedConfigForWidget(widgetGlobalDrillDowns, availableDrillTargets, widget)
84
84
  : [];
85
- // eslint-disable-next-line react-hooks/exhaustive-deps
85
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
86
86
  }, [widgetGlobalDrillDowns, availableDrillTargets]);
87
87
  const drillToUrlItems = useMemo(() => {
88
88
  return availableDrillTargets
@@ -67,7 +67,7 @@ export function Toolbar({ widget, onVisualizationsChanged, onVisualizationAdded,
67
67
  onVisualizationsChanged(updatedVisualizations);
68
68
  userInteraction.visualizationSwitcherInteraction("visualizationSwitcherOrderChanged");
69
69
  },
70
- // eslint-disable-next-line react-hooks/exhaustive-deps
70
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
71
71
  [onVisualizationsChanged, visualizations]);
72
72
  const showVisualizationsList = () => {
73
73
  setVisualizationsListVisible(true);
@@ -82,7 +82,7 @@ export function Toolbar({ widget, onVisualizationsChanged, onVisualizationAdded,
82
82
  setVisualizationsListVisible(false);
83
83
  userInteraction.visualizationSwitcherInteraction("visualizationSwitcherVisualizationDetailOpened");
84
84
  },
85
- // eslint-disable-next-line react-hooks/exhaustive-deps
85
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
86
86
  [onSelectedVisualizationChanged]);
87
87
  const activeVisualization = visualizations.find((visualization) => visualization.identifier === activeVisualizationId);
88
88
  const shouldShowVisualizationsList = isVisualizationsListVisible || !activeVisualization;
@@ -1,5 +1,5 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // (C) 2024-2025 GoodData Corporation
2
+ // (C) 2024-2026 GoodData Corporation
3
3
  import { useCallback } from "react";
4
4
  import cx from "classnames";
5
5
  import { useIntl } from "react-intl";
@@ -15,7 +15,7 @@ export function VisualizationListMenu({ alignTo, isLast, isFirst, visualization,
15
15
  onVisualizationPositionChange(visualization.identifier, direction);
16
16
  onMenuButtonClick();
17
17
  },
18
- // eslint-disable-next-line react-hooks/exhaustive-deps
18
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
19
19
  [visualization.identifier]);
20
20
  return (_jsx(Overlay, { alignTo: alignTo, alignPoints: menuAlignPoints, className: "gd-more-menu-overlay", closeOnMouseDrag: true, closeOnOutsideClick: true, onClose: onMenuButtonClick, children: _jsxs(ItemsWrapper, { smallItemsSpacing: true, className: ".s-visualization-switcher-more-menu", children: [shouldRenderActions ? (_jsxs(_Fragment, { children: [_jsx(VisualizationListMenuItem, { className: cx("gd-vis-switcher-show-more-item", { "is-disabled": isFirst }), disabled: isFirst, onClick: () => {
21
21
  handleOnVisualizationPositionChange(isFirst, "moveUp");
@@ -52,7 +52,7 @@ export function DashboardWidget(props) {
52
52
  }
53
53
  console.warn(`Unable to render widget ${extendedWidgetDebugStr(widget)}`);
54
54
  return BadWidgetType;
55
- // eslint-disable-next-line react-hooks/exhaustive-deps
55
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
56
56
  }, [widget]);
57
57
  return (_jsx(WidgetComponent, { ...props,
58
58
  // @ts-expect-error Don't expose index prop on public interface (we need it only for css class for KD tests)
@@ -75,7 +75,7 @@ index, parentLayoutItemSize, parentLayoutPath, rowIndex, exportData, }) {
75
75
  onError(error, executionId);
76
76
  },
77
77
  });
78
- // eslint-disable-next-line react-hooks/exhaustive-deps
78
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
79
79
  }, [effectiveBackend, dispatchEvent, safeSerializeObjRef(ref)]);
80
80
  if (isWidget(widget)) {
81
81
  return (_jsx(BackendProvider, { backend: backendWithEventing, children: _jsx(WidgetComponent, { widget: widget, screen: screen, index: index, parentLayoutPath: parentLayoutPath, onFiltersChange: onFiltersChange, onError: onError, rowIndex: rowIndex, exportData: exportData }) }));
@@ -96,7 +96,7 @@ function useDefaultMenuItems(config, setIsMenuOpen) {
96
96
  exportPdfTabularDisabled,
97
97
  disabledReason,
98
98
  }, execution);
99
- // eslint-disable-next-line react-hooks/exhaustive-deps
99
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
100
100
  }, [
101
101
  intl,
102
102
  exportCSVEnabled,
@@ -23348,6 +23348,10 @@ export declare interface IUiState {
23348
23348
  saveAsDialog: {
23349
23349
  open: boolean;
23350
23350
  };
23351
+ insightNotSavedDialog: {
23352
+ open: boolean;
23353
+ saveConfirmed: boolean;
23354
+ };
23351
23355
  settingsDialog: {
23352
23356
  open: boolean;
23353
23357
  };
@@ -31796,6 +31800,18 @@ newSize?: IVisualizationSizeInfo;
31796
31800
  };
31797
31801
  type: string;
31798
31802
  }) => void | ITabsState | WritableDraft<ITabsState>;
31803
+ readonly replaceInsightWidgetInsightForTab: (state: WritableDraft<ITabsState>, action: {
31804
+ payload: {
31805
+ ref: ObjRef;
31806
+ insightRef: ObjRef;
31807
+ properties: VisualizationProperties | undefined;
31808
+ header: IWidgetHeader | undefined;
31809
+ newSize?: IVisualizationSizeInfo;
31810
+ } & IUndoPayload<IDashboardCommand> & {
31811
+ tabId: string;
31812
+ };
31813
+ type: string;
31814
+ }) => void | ITabsState | WritableDraft<ITabsState>;
31799
31815
  readonly replaceWidgetFilterSettings: (state: WritableDraft<ITabsState>, action: {
31800
31816
  payload: IUndoPayload<IDashboardCommand> & {
31801
31817
  ref: ObjRef;
@@ -32057,6 +32073,9 @@ export declare const uiActions: {
32057
32073
  closeAlertingDialog: ActionCreatorWithoutPayload<"uiSlice/closeAlertingDialog">;
32058
32074
  openSaveAsDialog: ActionCreatorWithoutPayload<"uiSlice/openSaveAsDialog">;
32059
32075
  closeSaveAsDialog: ActionCreatorWithoutPayload<"uiSlice/closeSaveAsDialog">;
32076
+ openInsightNotSavedDialog: ActionCreatorWithoutPayload<"uiSlice/openInsightNotSavedDialog">;
32077
+ closeInsightNotSavedDialog: ActionCreatorWithoutPayload<"uiSlice/closeInsightNotSavedDialog">;
32078
+ confirmInsightNotSavedDialogSubmit: ActionCreatorWithoutPayload<"uiSlice/confirmInsightNotSavedDialogSubmit">;
32060
32079
  setFilterBarExpanded: ActionCreatorWithPayload<boolean, "uiSlice/setFilterBarExpanded">;
32061
32080
  closeKpiAlertDialog: ActionCreatorWithoutPayload<"uiSlice/closeKpiAlertDialog">;
32062
32081
  openKpiAlertDialog: ActionCreatorWithPayload<ObjRef, "uiSlice/openKpiAlertDialog">;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-dashboard",
3
- "version": "11.57.0-alpha.2",
3
+ "version": "11.57.0-alpha.4",
4
4
  "description": "GoodData SDK - Dashboard Component",
5
5
  "license": "LicenseRef-LICENSE",
6
6
  "author": "GoodData Corporation",
@@ -60,20 +60,20 @@
60
60
  "ts-invariant": "0.10.3",
61
61
  "tslib": "2.8.1",
62
62
  "uuid": "11.1.1",
63
- "@gooddata/sdk-backend-base": "11.57.0-alpha.2",
64
- "@gooddata/sdk-model": "11.57.0-alpha.2",
65
- "@gooddata/sdk-backend-spi": "11.57.0-alpha.2",
66
- "@gooddata/sdk-ui-ext": "11.57.0-alpha.2",
67
- "@gooddata/sdk-ui": "11.57.0-alpha.2",
68
- "@gooddata/sdk-ui-geo": "11.57.0-alpha.2",
69
- "@gooddata/sdk-ui-filters": "11.57.0-alpha.2",
70
- "@gooddata/sdk-ui-kit": "11.57.0-alpha.2",
71
- "@gooddata/sdk-ui-charts": "11.57.0-alpha.2",
72
- "@gooddata/sdk-ui-pivot": "11.57.0-alpha.2",
73
- "@gooddata/sdk-ui-semantic-search": "11.57.0-alpha.2",
74
- "@gooddata/sdk-ui-theme-provider": "11.57.0-alpha.2",
75
- "@gooddata/sdk-ui-vis-commons": "11.57.0-alpha.2",
76
- "@gooddata/util": "11.57.0-alpha.2"
63
+ "@gooddata/sdk-backend-base": "11.57.0-alpha.4",
64
+ "@gooddata/sdk-model": "11.57.0-alpha.4",
65
+ "@gooddata/sdk-ui-charts": "11.57.0-alpha.4",
66
+ "@gooddata/sdk-backend-spi": "11.57.0-alpha.4",
67
+ "@gooddata/sdk-ui": "11.57.0-alpha.4",
68
+ "@gooddata/sdk-ui-ext": "11.57.0-alpha.4",
69
+ "@gooddata/sdk-ui-filters": "11.57.0-alpha.4",
70
+ "@gooddata/sdk-ui-geo": "11.57.0-alpha.4",
71
+ "@gooddata/sdk-ui-kit": "11.57.0-alpha.4",
72
+ "@gooddata/sdk-ui-pivot": "11.57.0-alpha.4",
73
+ "@gooddata/sdk-ui-semantic-search": "11.57.0-alpha.4",
74
+ "@gooddata/sdk-ui-theme-provider": "11.57.0-alpha.4",
75
+ "@gooddata/sdk-ui-vis-commons": "11.57.0-alpha.4",
76
+ "@gooddata/util": "11.57.0-alpha.4"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@microsoft/api-documenter": "7.30.10",
@@ -99,14 +99,13 @@
99
99
  "eslint-plugin-no-barrel-files": "1.2.2",
100
100
  "eslint-plugin-no-only-tests": "3.3.0",
101
101
  "eslint-plugin-react": "7.37.5",
102
- "eslint-plugin-react-hooks": "5.2.0",
103
102
  "eslint-plugin-sonarjs": "3.0.6",
104
103
  "happy-dom": "20.12.0",
105
104
  "npm-run-all": "4.1.5",
106
105
  "oxfmt": "0.66.0",
107
- "oxlint": "1.66.0",
106
+ "oxlint": "1.82.0",
108
107
  "oxlint-plugin-eslint": "1.82.0",
109
- "oxlint-tsgolint": "0.18.1",
108
+ "oxlint-tsgolint": "0.22.1",
110
109
  "raf": "3.4.1",
111
110
  "react": "19.1.1",
112
111
  "react-dom": "19.1.1",
@@ -116,12 +115,12 @@
116
115
  "typescript": "7.0.2",
117
116
  "vitest": "4.1.8",
118
117
  "vitest-dom": "0.1.1",
119
- "@gooddata/eslint-config": "11.57.0-alpha.2",
120
- "@gooddata/i18n-toolkit": "11.57.0-alpha.2",
121
- "@gooddata/oxlint-config": "11.57.0-alpha.2",
122
- "@gooddata/reference-workspace": "11.57.0-alpha.2",
123
- "@gooddata/sdk-backend-mockingbird": "11.57.0-alpha.2",
124
- "@gooddata/stylelint-config": "11.57.0-alpha.2"
118
+ "@gooddata/eslint-config": "11.57.0-alpha.4",
119
+ "@gooddata/i18n-toolkit": "11.57.0-alpha.4",
120
+ "@gooddata/oxlint-config": "11.57.0-alpha.4",
121
+ "@gooddata/reference-workspace": "11.57.0-alpha.4",
122
+ "@gooddata/stylelint-config": "11.57.0-alpha.4",
123
+ "@gooddata/sdk-backend-mockingbird": "11.57.0-alpha.4"
125
124
  },
126
125
  "peerDependencies": {
127
126
  "react": "^18.0.0 || ^19.0.0",
@@ -0,0 +1,26 @@
1
+ /* allow vendor prefixes and disable max length */
2
+ /* allow vendor prefixes and disable max length */
3
+ /* ==========================================================================
4
+ Variables, mixins, silent classes etc.
5
+ ========================================================================== */
6
+ .gdc-insight-not-saved-dialog {
7
+ display: flex;
8
+ flex-direction: column;
9
+ align-items: flex-start;
10
+ gap: 10px;
11
+ }
12
+ .gdc-insight-not-saved-dialog .gd-ui-kit-button {
13
+ font-weight: 700;
14
+ }
15
+ .gdc-insight-not-saved-dialog ul {
16
+ padding: 0;
17
+ margin: -5px 0 0 18px;
18
+ list-style: none;
19
+ }
20
+ .gdc-insight-not-saved-dialog ul li {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: 5px;
24
+ }
25
+
26
+ /*# sourceMappingURL=insightsNotSavedDialog.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../node_modules/@gooddata/sdk-ui-kit/styles/scss/mixins.scss","../../node_modules/@gooddata/sdk-ui-kit/styles/scss/Bubble/_variables.scss","../scss/insightsNotSavedDialog.scss"],"names":[],"mappings":"AA0HA;AA4DA;ACjLA;AAAA;AAAA;ACDA;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA","file":"insightsNotSavedDialog.css"}
@@ -235,7 +235,7 @@
235
235
  --gd-palette-primary-base-d06: #129cc6;
236
236
  --gd-palette-primary-base-d12: #0f86aa;
237
237
  --gd-palette-primary-base-darken20: #0c6884;
238
- --gd-palette-primary-base-dimmed-darken03: #daf2fa;
238
+ --gd-palette-primary-base-dimmed-darken03: #daf3fa;
239
239
  --gd-palette-primary-base-lighten45: #dff5fc;
240
240
  --gd-palette-primary-base-mix15-white: rgba(220, 243, 251, 0.925);
241
241
  --gd-palette-primary-base-t02: rgba(20, 178, 226, 0.98);
@@ -288,12 +288,15 @@
288
288
  --gd-spacing-16px: 16px;
289
289
  --gd-spacing-34px: 34px;
290
290
  --gd-transition-all: all 0.25s ease-in-out;
291
+ --gd-geo-multi-layer-legend__section-header-height: 34px;
292
+ --gd-geo-multi-layer-legend__toggle-duration: 0.2s;
293
+ --gd-viz-tooltip-max-height: none;
294
+ --gd-avatar-background-color: var(--gd-palette-complementary-2);
291
295
  --gd-button-XXL: 55px;
292
296
  --gd-button-XL: 45px;
293
297
  --gd-button-L: 38px;
294
298
  --gd-button-M: 32px;
295
299
  --gd-button-S: 27px;
296
- --gd-button-XS: 21px;
297
300
  --gd-icon-fill-color: var(--gd-palette-complementary-9);
298
301
  --gd-icon-background-color: var(--gd-palette-complementary-2);
299
302
  --gd-tabs-height-L: 56px;
@@ -313,6 +316,8 @@
313
316
  --gd-table-multi-line-line-height-large: 23px;
314
317
  --gd-table-dropdown-item-height: 28px;
315
318
  --gd-table-title-font-size: 24px;
319
+ --gd-toolbar-borderRadius: 2px;
320
+ --gd-tooltip-maxWidth: 300px;
316
321
  }
317
322
 
318
323
  .animation-fadeIn,
@@ -33328,4 +33333,24 @@ body.gd-kda-dialog-opened .highcharts-tooltip-container {
33328
33333
  z-index: 6111 !important;
33329
33334
  }
33330
33335
 
33336
+ .gdc-insight-not-saved-dialog {
33337
+ display: flex;
33338
+ flex-direction: column;
33339
+ align-items: flex-start;
33340
+ gap: 10px;
33341
+ }
33342
+ .gdc-insight-not-saved-dialog .gd-ui-kit-button {
33343
+ font-weight: 700;
33344
+ }
33345
+ .gdc-insight-not-saved-dialog ul {
33346
+ padding: 0;
33347
+ margin: -5px 0 0 18px;
33348
+ list-style: none;
33349
+ }
33350
+ .gdc-insight-not-saved-dialog ul li {
33351
+ display: flex;
33352
+ align-items: center;
33353
+ gap: 5px;
33354
+ }
33355
+
33331
33356
  /*# sourceMappingURL=main.css.map */