@gooddata/sdk-ui-dashboard 11.57.0-alpha.3 → 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.
- package/NOTICE +2 -2
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/kdaDialog/dialog/hooks/useChangeAnalysis.js +1 -1
- package/esm/model/react/useDashboardAsyncRender.js +2 -2
- package/esm/model/react/useDashboardCommand.js +1 -1
- package/esm/model/react/useDashboardQueryProcessing.js +1 -1
- package/esm/model/react/useDispatchDashboardCommand.js +1 -1
- package/esm/model/react/useInitializeDashboardStore.js +1 -1
- package/esm/model/react/useWidgetFilters.js +7 -7
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialogAttribute.js +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.js +1 -1
- package/esm/presentation/automations/shared/automationFilters/useAutomationFilters.js +3 -3
- package/esm/presentation/dragAndDrop/useDashboardDragScroll.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useTitleConfiguration.js +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.js +1 -1
- package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.js +1 -1
- package/esm/presentation/filterBar/filterBar/useFiltersWithAddedPlaceholder.js +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.js +1 -1
- package/esm/presentation/flexibleLayout/dragAndDrop/DragLayer.js +1 -1
- package/esm/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.js +1 -1
- package/esm/presentation/insightList/InsightList.js +1 -1
- package/esm/presentation/saveAs/DefaultSaveAsDialog/useSaveAs.js +1 -1
- package/esm/presentation/topBar/menuButton/useDefaultMenuItems.js +4 -4
- package/esm/presentation/widget/common/configuration/useAttributeFilterConfigurationHandling.js +5 -5
- package/esm/presentation/widget/common/configuration/useDateFilterConfigurationHandling.js +5 -5
- package/esm/presentation/widget/common/configuration/useIsSelectedDatasetHidden.js +1 -1
- package/esm/presentation/widget/common/configuration/useMeasureValueFilterConfigurationHandling.js +5 -5
- package/esm/presentation/widget/common/useCustomWidgetInsightDataView.js +3 -3
- package/esm/presentation/widget/common/useExportHandler.js +1 -1
- package/esm/presentation/widget/common/useImageExportHandler.d.ts.map +1 -1
- package/esm/presentation/widget/common/useImageExportHandler.js +2 -2
- package/esm/presentation/widget/common/useInsightExport.js +11 -11
- package/esm/presentation/widget/common/useInsightWidgetDataView.js +2 -2
- package/esm/presentation/widget/common/useRawExportHandler.js +1 -1
- package/esm/presentation/widget/common/useSlidesExportHandler.js +1 -1
- package/esm/presentation/widget/common/useWidgetHighlighting.js +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.js +6 -6
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/useResolveDashboardInsightProperties.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.js +2 -2
- package/esm/presentation/widget/visualizationSwitcher/configuration/Toolbar.js +2 -2
- package/esm/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationListMenu.js +2 -2
- package/esm/presentation/widget/widget/DashboardWidget.js +1 -1
- package/esm/presentation/widget/widget/DefaultDashboardWidget.js +1 -1
- package/esm/presentation/widget/widget/InsightWidget/useInsightMenu.js +1 -1
- package/package.json +22 -23
- package/styles/css/main.css +1 -0
- package/styles/css/main.css.map +1 -1
package/NOTICE
CHANGED
|
@@ -9,7 +9,7 @@ The following 3rd-party software packages may be used by or distributed with goo
|
|
|
9
9
|
|
|
10
10
|
Date generated: 2026-9-14
|
|
11
11
|
|
|
12
|
-
Revision ID:
|
|
12
|
+
Revision ID: b22f44aea3e618f71ec62f6853d9310a210cb741
|
|
13
13
|
|
|
14
14
|
================================================================================
|
|
15
15
|
================================================================================
|
|
@@ -22305,7 +22305,7 @@ MIT
|
|
|
22305
22305
|
|
|
22306
22306
|
Authors: ljharb@gmail.com
|
|
22307
22307
|
Package Manager: NPM
|
|
22308
|
-
Project URL: https://
|
|
22308
|
+
Project URL: https://github.com/ljharb/call-bind#readme
|
|
22309
22309
|
Package Download URL: https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz
|
|
22310
22310
|
Dependency Path: @formatjs/cli-lib > @formatjs/ts-transformer > @types/json-stable-stringify > json-stable-stringify > call-bind > @formatjs/cli-lib > @formatjs/ts-transformer > json-stable-stringify > call-bind > @formatjs/cli-lib > @types/json-stable-stringify > json-stable-stringify > call-bind > @formatjs/cli-lib > json-stable-stringify > call-bind > json-stable-stringify > call-bind
|
|
22311
22311
|
File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
|
package/esm/__version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.57.0-alpha.
|
|
1
|
+
export declare const LIB_VERSION = "11.57.0-alpha.4";
|
|
2
2
|
export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
3
3
|
export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
4
4
|
//# sourceMappingURL=__version.d.ts.map
|
package/esm/__version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2021 GoodData Corporation
|
|
2
2
|
// DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
|
|
3
|
-
export const LIB_VERSION = "11.57.0-alpha.
|
|
3
|
+
export const LIB_VERSION = "11.57.0-alpha.4";
|
|
4
4
|
export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
5
5
|
export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
@@ -15,7 +15,7 @@ export function useChangeAnalysis() {
|
|
|
15
15
|
const definition = state.definition;
|
|
16
16
|
const attributes = useMemo(() => {
|
|
17
17
|
return state.selectedAttributes;
|
|
18
|
-
//
|
|
18
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
19
19
|
}, [state.selectedUpdated]);
|
|
20
20
|
const filters = useRelevantFilters();
|
|
21
21
|
const measureValueFilters = state.measureValueFilters;
|
|
@@ -29,11 +29,11 @@ export const useDashboardAsyncRender = (id) => {
|
|
|
29
29
|
const resolveDashboardAsyncRender = useDispatchDashboardCommand(resolveAsyncRender);
|
|
30
30
|
const onRequestAsyncRender = useCallback(() => {
|
|
31
31
|
requestDashboardAsyncRender(id);
|
|
32
|
-
//
|
|
32
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
33
33
|
}, [id]);
|
|
34
34
|
const onResolveAsyncRender = useCallback(() => {
|
|
35
35
|
resolveDashboardAsyncRender(id);
|
|
36
|
-
//
|
|
36
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
37
37
|
}, [id]);
|
|
38
38
|
return {
|
|
39
39
|
onRequestAsyncRender,
|
|
@@ -54,6 +54,6 @@ export const useDashboardCommand = (commandCreator, eventHandlers, onBeforeRun)
|
|
|
54
54
|
}
|
|
55
55
|
onBeforeRun?.(command);
|
|
56
56
|
dispatch(command);
|
|
57
|
-
//
|
|
57
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
58
58
|
}, []);
|
|
59
59
|
};
|
|
@@ -67,7 +67,7 @@ export const useDashboardQueryProcessing = ({ queryCreator, onSuccess, onError,
|
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
69
|
},
|
|
70
|
-
//
|
|
70
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
71
71
|
[queryCreator, onSuccess, onError, onRejected, onBeforeRun]);
|
|
72
72
|
// cancel any "in-flight" queries once the parent component is unmounting to prevent react warnings
|
|
73
73
|
// about updating unmounted components
|
|
@@ -28,6 +28,6 @@ export const useDispatchDashboardCommand = (commandCreator) => {
|
|
|
28
28
|
const command = commandCreator(...args);
|
|
29
29
|
dispatch(command);
|
|
30
30
|
},
|
|
31
|
-
//
|
|
31
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
32
32
|
[commandCreator]);
|
|
33
33
|
};
|
|
@@ -80,7 +80,7 @@ export const useInitializeDashboardStore = (props) => {
|
|
|
80
80
|
dashboardStore.store.dispatch(configActions.setIsAiMode(!!props.config?.isAiMode));
|
|
81
81
|
}
|
|
82
82
|
}, [dashboardStore, props.config?.isAiMode]);
|
|
83
|
-
//
|
|
83
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
84
84
|
useEffect(() => {
|
|
85
85
|
if (!shallowEqualObjects(previousInitProps, currentInitProps) || !dashboardStore) {
|
|
86
86
|
if (dashboardStore) {
|
|
@@ -63,11 +63,11 @@ function useWidgetFiltersImpl(widget, insight) {
|
|
|
63
63
|
runFiltersQuery(widget.ref, insight);
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
-
//
|
|
66
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
67
67
|
[
|
|
68
|
-
//
|
|
68
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
69
69
|
safeSerializeObjRef(widget?.ref),
|
|
70
|
-
//
|
|
70
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
71
71
|
fullFiltersDigest(nonIgnoredFilters),
|
|
72
72
|
insight,
|
|
73
73
|
nonIgnoredFiltersStatus,
|
|
@@ -152,13 +152,13 @@ function useNonIgnoredFilters(widget) {
|
|
|
152
152
|
// force ignore the insight -> this way we get only the dashboard level filters even for InsightWidgets
|
|
153
153
|
run(widget.ref, null);
|
|
154
154
|
}
|
|
155
|
-
//
|
|
155
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
156
156
|
}, [
|
|
157
|
-
//
|
|
157
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
158
158
|
safeSerializeObjRef(widget?.ref),
|
|
159
|
-
//
|
|
159
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
160
160
|
stringify(widget?.ignoreDashboardFilters),
|
|
161
|
-
//
|
|
161
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
162
162
|
filtersDigest(usedFilters, widgetIgnoresDateFilter, isInEditMode),
|
|
163
163
|
]);
|
|
164
164
|
const nonIgnoredFilters = useMemo(() => usedFilters.filter((filter) => {
|
|
@@ -110,7 +110,7 @@ export function DefaultAlertingDialogAttribute({ id, disabled, selectedAttribute
|
|
|
110
110
|
// Attribute items
|
|
111
111
|
...attributeItems,
|
|
112
112
|
];
|
|
113
|
-
//
|
|
113
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
114
114
|
}, [
|
|
115
115
|
availableAttributes,
|
|
116
116
|
catalogAttributes,
|
|
@@ -34,7 +34,7 @@ export function useElementHeightSnapshot(ref, resubscribeKey) {
|
|
|
34
34
|
},
|
|
35
35
|
// resubscribeKey is not read in the body, but must force a resubscribe once the ref
|
|
36
36
|
// points to a newly mounted node.
|
|
37
|
-
//
|
|
37
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
38
38
|
[ref, resubscribeKey]);
|
|
39
39
|
const getSnapshot = useCallback(() => lastMeasuredHeightRef.current, []);
|
|
40
40
|
return useSyncExternalStore(subscribe, getSnapshot);
|
|
@@ -100,7 +100,7 @@ export const useAutomationFilters = ({ availableFilters, selectedFilters, onFilt
|
|
|
100
100
|
const updatedFilters = applyFilterChange(selectedFilters, filter);
|
|
101
101
|
onFiltersChange(updatedFilters);
|
|
102
102
|
},
|
|
103
|
-
//
|
|
103
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
104
104
|
[onFiltersChange, selectedFilters, allAttributes, allDateDatasets, intl]);
|
|
105
105
|
const handleDeleteFilter = useCallback((filter) => {
|
|
106
106
|
const filterTitle = getFilterTitle(filter, allAttributes, allDateDatasets, intl);
|
|
@@ -110,7 +110,7 @@ export const useAutomationFilters = ({ availableFilters, selectedFilters, onFilt
|
|
|
110
110
|
onFiltersChange(updatedFilters);
|
|
111
111
|
focusFilterGroup();
|
|
112
112
|
},
|
|
113
|
-
//
|
|
113
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
114
114
|
[onFiltersChange, focusFilterGroup, selectedFilters, allAttributes, allDateDatasets, intl]);
|
|
115
115
|
const handleAddFilter = useCallback((catalogItemRef, attributes, dateDatasets) => {
|
|
116
116
|
const filter = resolveFilterToAdd(catalogItemRef, nonSelectedFilters, attributes, dateDatasets);
|
|
@@ -123,7 +123,7 @@ export const useAutomationFilters = ({ availableFilters, selectedFilters, onFilt
|
|
|
123
123
|
setTimeout(focusAddFilterButton);
|
|
124
124
|
}
|
|
125
125
|
},
|
|
126
|
-
//
|
|
126
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
127
127
|
[
|
|
128
128
|
nonSelectedFilters,
|
|
129
129
|
onFiltersChange,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// (C) 2022-
|
|
1
|
+
// (C) 2022-2026 GoodData Corporation
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { useDragDropManager } from "@evil-internetmann/react-dnd";
|
|
4
4
|
import { useInterval } from "./useInterval.js";
|
|
@@ -64,7 +64,7 @@ export function useDashboardDragScroll(contentRef, stickyHeaderRef, stickyFooter
|
|
|
64
64
|
setScrollingDirection(ScrollingDirection.None);
|
|
65
65
|
});
|
|
66
66
|
// we want to subscribe only once
|
|
67
|
-
//
|
|
67
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
68
68
|
}, []);
|
|
69
69
|
useInterval(() => {
|
|
70
70
|
const scrollingTop = scrollingDirection * SCROLLING_STEP;
|
|
@@ -204,7 +204,7 @@ function DefaultDashboardAttributeFilterInner(props) {
|
|
|
204
204
|
}, attributes: attributes })) }));
|
|
205
205
|
}
|
|
206
206
|
return DropdownActions;
|
|
207
|
-
//
|
|
207
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
208
208
|
}, [
|
|
209
209
|
isConfigurationOpen,
|
|
210
210
|
cancelText,
|
|
@@ -107,7 +107,7 @@ export function AttributesDropdown({ id, className, bodyClassName, onClose, onOp
|
|
|
107
107
|
const insightsMap = useDashboardSelector(selectInsightsMap);
|
|
108
108
|
const insightWidgets = useDashboardSelector(selectAllInsightWidgets);
|
|
109
109
|
const shouldDisplayLocationIcon = useMemo(() => isLocationIconEnabled(insightWidgets, insightsMap), [insightWidgets, insightsMap]);
|
|
110
|
-
//
|
|
110
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
111
111
|
const onSearch = useCallback(debounce((query) => {
|
|
112
112
|
setSearchQuery(query);
|
|
113
113
|
}, 250), []);
|
|
@@ -22,7 +22,7 @@ export function useTitleConfiguration(currentFilter, defaultAttributeFilterTitle
|
|
|
22
22
|
}
|
|
23
23
|
const updatedTitle = title === defaultAttributeFilterTitle ? undefined : title?.trim();
|
|
24
24
|
changeTitle(currentFilter.attributeFilter.localIdentifier, updatedTitle);
|
|
25
|
-
//
|
|
25
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
26
26
|
}, [title, currentFilter, defaultAttributeFilterTitle, changeTitle]);
|
|
27
27
|
const onTitleReset = useCallback(() => {
|
|
28
28
|
setTitle(undefined);
|
|
@@ -19,7 +19,7 @@ export function DateAttributeListItem({ item: { item, isDisabled, title }, depen
|
|
|
19
19
|
return cx("gd-list-item date-filter__limit__popup__item", `s-${simplifyText(title ?? "unknown")}`, {
|
|
20
20
|
"is-disabled": isDisabled,
|
|
21
21
|
});
|
|
22
|
-
//
|
|
22
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
23
23
|
}, [item]);
|
|
24
24
|
const dataSet = isDashboardDependentDateFilter(item) ? item.dataSet : undefined;
|
|
25
25
|
const dependentDateFilterTitle = useDependentDateFilterTitle(dataSet, dependentDateFilters);
|
|
@@ -189,7 +189,7 @@ export const useResetFiltersButton = () => {
|
|
|
189
189
|
filterContextStateReset();
|
|
190
190
|
}
|
|
191
191
|
addSuccess(messages.filterResetButtonSuccess);
|
|
192
|
-
//
|
|
192
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
193
193
|
}, [
|
|
194
194
|
canReset,
|
|
195
195
|
canResetFilters,
|
|
@@ -137,7 +137,7 @@ export function useFiltersWithAddedPlaceholder(filters, workingFilters) {
|
|
|
137
137
|
}
|
|
138
138
|
filterObjects.splice(addedAttributeFilter.filterIndex, 0, addedAttributeFilter);
|
|
139
139
|
return filterObjects;
|
|
140
|
-
//
|
|
140
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
141
141
|
}, [addedAttributeFilter, draggableFilters, selectedDisplayForm]);
|
|
142
142
|
// selects AF, DF with dimension, or MVF
|
|
143
143
|
const selectDraggableFilter = useCallback(function (ref, selectionType) {
|
|
@@ -20,7 +20,7 @@ export function DashboardLayoutWidgetRenderer({ item, className, contentRef, isR
|
|
|
20
20
|
computedStyle.overflowY = "auto";
|
|
21
21
|
}
|
|
22
22
|
return computedStyle;
|
|
23
|
-
//
|
|
23
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
24
24
|
}, [minHeight, height, allowOverflow, heightAsRatio, isResizedByLayoutSizingStrategy]);
|
|
25
25
|
return (_jsx("div", { ref: contentRef, className: cx("gd-fluidlayout-column-container", className, {
|
|
26
26
|
"custom-height": !!gridHeight,
|
|
@@ -29,7 +29,7 @@ export function DragLayerComponent() {
|
|
|
29
29
|
const { itemType, isDragging } = dragLayerProperties;
|
|
30
30
|
const getDragLayerPosition = useCallback(() => {
|
|
31
31
|
return dragLayerRef.current?.getBoundingClientRect() ?? emptyDOMRect;
|
|
32
|
-
//
|
|
32
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
33
33
|
}, [dragLayerRef.current]);
|
|
34
34
|
const isResizing = itemType === "internal-height-resizer" || itemType === "internal-width-resizer";
|
|
35
35
|
const { scrollCorrection } = useScrollCorrection(getDragLayerPosition, isDragging && isResizing);
|
|
@@ -63,7 +63,7 @@ export function HeightResizerHotspot({ section, items, getLayoutDimensions }) {
|
|
|
63
63
|
if (isDragging) {
|
|
64
64
|
resizeStart("height", widgetIdentifiers, isItemNested);
|
|
65
65
|
}
|
|
66
|
-
//
|
|
66
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps -- we want to run this only when isDragging changes
|
|
67
67
|
}, [isDragging]);
|
|
68
68
|
const areWidgetsResizing = resizeDirection !== "none";
|
|
69
69
|
const isColumnResizing = resizeDirection === "width";
|
|
@@ -134,7 +134,7 @@ export function InsightList({ height, width = LIST_WIDTH, searchAutofocus, rende
|
|
|
134
134
|
e.preventDefault();
|
|
135
135
|
e.stopPropagation();
|
|
136
136
|
eventDispatch(createInsightRequested());
|
|
137
|
-
//
|
|
137
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
138
138
|
}, []);
|
|
139
139
|
const TABS_AND_SEARCHFIELD_HEIGHT = 70;
|
|
140
140
|
const SEARCHFIELD_HEIGHT = 47;
|
|
@@ -32,7 +32,7 @@ export const useSaveAs = (props) => {
|
|
|
32
32
|
const handleSaveAs = useCallback((title, switchToDashboard = false, useOriginalFilterContext = true) => {
|
|
33
33
|
saveAsCommandProcessing.run(title, switchToDashboard, useOriginalFilterContext);
|
|
34
34
|
},
|
|
35
|
-
//
|
|
35
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
36
36
|
[]);
|
|
37
37
|
return {
|
|
38
38
|
locale,
|
|
@@ -106,14 +106,14 @@ export function useDefaultMenuItems() {
|
|
|
106
106
|
filterContextTitle: null,
|
|
107
107
|
filterContextText: intl.formatMessage({ id: "options.menu.export.dialog.includeExportInfo" }),
|
|
108
108
|
});
|
|
109
|
-
//
|
|
109
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
110
110
|
}, [
|
|
111
111
|
isNewDashboard,
|
|
112
112
|
openDialog,
|
|
113
113
|
intl,
|
|
114
|
-
//
|
|
114
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
115
115
|
settings?.["cellMergedByDefault"],
|
|
116
|
-
//
|
|
116
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
117
117
|
settings?.["activeFiltersByDefault"],
|
|
118
118
|
closeDialog,
|
|
119
119
|
exportToTabular,
|
|
@@ -377,7 +377,7 @@ export function useDefaultMenuItems() {
|
|
|
377
377
|
},
|
|
378
378
|
],
|
|
379
379
|
]);
|
|
380
|
-
//
|
|
380
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
381
381
|
}, [
|
|
382
382
|
isDensitySettingEnabled,
|
|
383
383
|
openDensityDialog,
|
package/esm/presentation/widget/common/configuration/useAttributeFilterConfigurationHandling.js
CHANGED
|
@@ -107,15 +107,15 @@ export function useAttributeFilterConfigurationHandling(widget, displayFormRef,
|
|
|
107
107
|
ignore(ref, displayFormRef);
|
|
108
108
|
}
|
|
109
109
|
},
|
|
110
|
-
//
|
|
110
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
111
111
|
[
|
|
112
|
-
//
|
|
112
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
113
113
|
isInsightWidget(widget),
|
|
114
|
-
//
|
|
114
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
115
115
|
isRichTextWidget(widget),
|
|
116
|
-
//
|
|
116
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
117
117
|
safeSerializeObjRef(displayFormRef),
|
|
118
|
-
//
|
|
118
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
119
119
|
safeSerializeObjRef(ref),
|
|
120
120
|
ignoreInsightFilter,
|
|
121
121
|
ignoreKpiFilter,
|
|
@@ -109,13 +109,13 @@ export function useDateFilterConfigurationHandling(widget, relatedDateDatasets,
|
|
|
109
109
|
: (relatedDateDatasets?.at(0)?.dataSet.ref ?? null);
|
|
110
110
|
enable(ref, preselectedRef ?? "default");
|
|
111
111
|
},
|
|
112
|
-
//
|
|
112
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
113
113
|
[
|
|
114
|
-
//
|
|
114
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
115
115
|
isInsightWidget(widget),
|
|
116
|
-
//
|
|
116
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
117
117
|
isRichTextWidget(widget),
|
|
118
|
-
//
|
|
118
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
119
119
|
safeSerializeObjRef(ref),
|
|
120
120
|
enableInsightDateFilter,
|
|
121
121
|
disableInsightDateFilter,
|
|
@@ -211,7 +211,7 @@ export function useDateFilterConfigurationHandling(widget, relatedDateDatasets,
|
|
|
211
211
|
enableKpiDateFilter(ref, idRef(id, "dataSet"));
|
|
212
212
|
}
|
|
213
213
|
},
|
|
214
|
-
//
|
|
214
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
215
215
|
[isInsightWidget(widget), isRichTextWidget(widget), safeSerializeObjRef(ref)]);
|
|
216
216
|
return {
|
|
217
217
|
status,
|
|
@@ -32,7 +32,7 @@ export function useIsSelectedDatasetHidden(selectedDateDatasetRef) {
|
|
|
32
32
|
return false;
|
|
33
33
|
}
|
|
34
34
|
return !visibleDateDatasets.some((ds) => areObjRefsEqual(selectedDateDatasetRef, ds.dataSet.ref));
|
|
35
|
-
//
|
|
35
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
36
36
|
}, [safeSerializeObjRef(selectedDateDatasetRef), visibleDateDatasets]);
|
|
37
37
|
return {
|
|
38
38
|
selectedDateDatasetHiddenByObjectAvailability,
|
package/esm/presentation/widget/common/configuration/useMeasureValueFilterConfigurationHandling.js
CHANGED
|
@@ -72,15 +72,15 @@ export function useMeasureValueFilterConfigurationHandling(widget, measureRef, o
|
|
|
72
72
|
ignore(ref, measureRef);
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
//
|
|
75
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
76
76
|
[
|
|
77
|
-
//
|
|
77
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
78
78
|
isInsightWidget(widget),
|
|
79
|
-
//
|
|
79
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
80
80
|
isRichTextWidget(widget),
|
|
81
|
-
//
|
|
81
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
82
82
|
safeSerializeObjRef(measureRef),
|
|
83
|
-
//
|
|
83
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
84
84
|
safeSerializeObjRef(ref),
|
|
85
85
|
ignoreInsightFilter,
|
|
86
86
|
ignoreRichTextFilter,
|
|
@@ -78,7 +78,7 @@ export function useCustomWidgetInsightDataView({ widget, insight, enableExecutio
|
|
|
78
78
|
const insightWithAddedFilters = useMemo(() => effectiveInsightTask.result
|
|
79
79
|
? insightSetFilters(effectiveInsightTask.result, filterQueryTask.result)
|
|
80
80
|
: undefined,
|
|
81
|
-
//
|
|
81
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
82
82
|
[
|
|
83
83
|
effectiveInsightTask.result,
|
|
84
84
|
/**
|
|
@@ -86,14 +86,14 @@ export function useCustomWidgetInsightDataView({ widget, insight, enableExecutio
|
|
|
86
86
|
* and expensive re-renders down the line. The stringification is worth it as the filters are usually
|
|
87
87
|
* pretty small thus saving more time than it is taking.
|
|
88
88
|
*/
|
|
89
|
-
//
|
|
89
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
90
90
|
stringify(filterQueryTask.result),
|
|
91
91
|
]);
|
|
92
92
|
const insightExecution = useMemo(() => {
|
|
93
93
|
return insightWithAddedFilters
|
|
94
94
|
? backend.workspace(workspace).execution().forInsight(insightWithAddedFilters)
|
|
95
95
|
: undefined;
|
|
96
|
-
//
|
|
96
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
97
97
|
}, [backend, workspace, insightWithAddedFilters, widget]);
|
|
98
98
|
const dataViewTask = useExecutionDataView({
|
|
99
99
|
execution: insightExecution,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useImageExportHandler.d.ts","sourceRoot":"","sources":["../../../../src/presentation/widget/common/useImageExportHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useImageExportHandler.d.ts","sourceRoot":"","sources":["../../../../src/presentation/widget/common/useImageExportHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAMrF,KAAK,kBAAkB,GAAG,CACtB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,EACzD,KAAK,EAAE,MAAM,KACZ,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,eAAO,MAAM,qBAAqB,QAAO,kBA8BxC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// (C) 2020-
|
|
1
|
+
// (C) 2020-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useRef } from "react";
|
|
3
3
|
import { isProtectedDataError } from "@gooddata/sdk-backend-spi";
|
|
4
4
|
import { useToastMessage } from "@gooddata/sdk-ui-kit";
|
|
@@ -30,6 +30,6 @@ export const useImageExportHandler = () => {
|
|
|
30
30
|
addError(messages.messagesExportResultError);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
//
|
|
33
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
34
34
|
}, []);
|
|
35
35
|
};
|
|
@@ -51,16 +51,16 @@ export const useInsightExport = (config) => {
|
|
|
51
51
|
? "pdf"
|
|
52
52
|
: "csv",
|
|
53
53
|
}, uuid())).then((result) => result.payload.result),
|
|
54
|
-
//
|
|
54
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
55
55
|
[widgetRef, insight]);
|
|
56
56
|
const exportRawFunction = useCallback((title, options) => dispatchAndWaitFor(dispatch, exportRawInsightWidget(widgetRef, widget, insight, title, options, uuid())).then((result) => result.payload.result),
|
|
57
|
-
//
|
|
57
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
58
58
|
[widgetRef, widget, insight]);
|
|
59
59
|
const exportSlidesFunction = useCallback((title, exportType, templateId) => dispatchAndWaitFor(dispatch, exportSlidesInsightWidget(widgetRef, title, exportType, uuid(), templateId)).then((result) => result.payload.result),
|
|
60
|
-
//
|
|
60
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
61
61
|
[widgetRef]);
|
|
62
62
|
const exportImageFunction = useCallback((title) => dispatchAndWaitFor(dispatch, exportImageInsightWidget(widgetRef, title, uuid())).then((result) => result.payload.result),
|
|
63
|
-
//
|
|
63
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
64
64
|
[widgetRef]);
|
|
65
65
|
const settings = useDashboardSelector(selectSettings);
|
|
66
66
|
const isInsightExportable = insight
|
|
@@ -112,7 +112,7 @@ export const useInsightExport = (config) => {
|
|
|
112
112
|
resolveTemplateAndExport((templateId) => {
|
|
113
113
|
void exportSlidesHandler(exportSlidesFunction, title, "pptx", templateId).finally(() => setIsExporting(false));
|
|
114
114
|
}, () => setIsExporting(false));
|
|
115
|
-
//
|
|
115
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
116
116
|
}, [exportSlidesFunction, title, resolveTemplateAndExport]);
|
|
117
117
|
const onExportPdfPresentation = useCallback(() => {
|
|
118
118
|
// if this bombs there is an issue with the logic enabling the buttons
|
|
@@ -121,14 +121,14 @@ export const useInsightExport = (config) => {
|
|
|
121
121
|
resolveTemplateAndExport((templateId) => {
|
|
122
122
|
void exportSlidesHandler(exportSlidesFunction, title, "pdf", templateId).finally(() => setIsExporting(false));
|
|
123
123
|
}, () => setIsExporting(false));
|
|
124
|
-
//
|
|
124
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
125
125
|
}, [exportSlidesFunction, title, resolveTemplateAndExport]);
|
|
126
126
|
const onExportPngImage = useCallback(() => {
|
|
127
127
|
setIsExporting(true);
|
|
128
128
|
// if this bombs there is an issue with the logic enabling the buttons
|
|
129
129
|
invariant(exportImageFunction);
|
|
130
130
|
void exportImageHandler(exportImageFunction, title).finally(() => setIsExporting(false));
|
|
131
|
-
//
|
|
131
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
132
132
|
}, [exportImageFunction, title]);
|
|
133
133
|
const { exportToTabular } = useExportToTabular(() => setIsExporting(false));
|
|
134
134
|
const onExportPdfTabular = useCallback(() => {
|
|
@@ -168,7 +168,7 @@ export const useInsightExport = (config) => {
|
|
|
168
168
|
isShowInfoPageVisible: false,
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
|
-
//
|
|
171
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
172
172
|
}, [
|
|
173
173
|
setIsExporting,
|
|
174
174
|
title,
|
|
@@ -217,14 +217,14 @@ export const useInsightExport = (config) => {
|
|
|
217
217
|
filterContextVisible: false,
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
|
-
//
|
|
220
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
221
221
|
}, [
|
|
222
222
|
dashboardTabularExportEnabled,
|
|
223
223
|
openXlsxDialog,
|
|
224
224
|
intl,
|
|
225
|
-
//
|
|
225
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
226
226
|
settings?.["cellMergedByDefault"],
|
|
227
|
-
//
|
|
227
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
228
228
|
settings?.["activeFiltersByDefault"],
|
|
229
229
|
closeXlsxDialog,
|
|
230
230
|
exportToTabular,
|
|
@@ -19,7 +19,7 @@ export function useInsightWidgetDataView({ insightWidget, onCancel, onError, onL
|
|
|
19
19
|
const insight = useDashboardSelector(selectInsightByRef(insightWidget?.insight));
|
|
20
20
|
const widgetFiltersPromise = useWidgetFilters(insightWidget);
|
|
21
21
|
const insightWithAddedFilters = useMemo(() => insightSetFilters(insight, widgetFiltersPromise.result),
|
|
22
|
-
//
|
|
22
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
23
23
|
[
|
|
24
24
|
insight,
|
|
25
25
|
/**
|
|
@@ -27,7 +27,7 @@ export function useInsightWidgetDataView({ insightWidget, onCancel, onError, onL
|
|
|
27
27
|
* and expensive re-renders down the line. The stringification is worth it as the filters are usually
|
|
28
28
|
* pretty small thus saving more time than it is taking.
|
|
29
29
|
*/
|
|
30
|
-
//
|
|
30
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
31
31
|
stringify(widgetFiltersPromise.result),
|
|
32
32
|
]);
|
|
33
33
|
const insightExecution = useMemo(() => {
|
|
@@ -86,7 +86,7 @@ export const useWidgetHighlighting = (widget) => {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
// We intentionally exclude keepHighlight
|
|
89
|
-
//
|
|
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), []);
|