@gooddata/sdk-ui-dashboard 11.61.0 → 11.62.0-alpha.1
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/esm/__version.d.ts +1 -1
- package/esm/__version.d.ts.map +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/sharedHooks/useAttributes.d.ts.map +1 -1
- package/esm/_staging/sharedHooks/useAttributes.js +4 -2
- package/esm/_staging/sharedHooks/useFiltersNamings.d.ts.map +1 -1
- package/esm/_staging/sharedHooks/useFiltersNamings.js +3 -5
- package/esm/kdaDialog/dialog/KdaDialog.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/KdaDialog.js +0 -2
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.js +3 -1
- package/esm/presentation/automations/shared/hooks/useFiltersNamings.d.ts.map +1 -1
- package/esm/presentation/automations/shared/hooks/useFiltersNamings.js +3 -5
- package/esm/presentation/constants/zIndex.js +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAttributeDataSet.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAttributeDataSet.js +4 -2
- package/esm/presentation/filterBar/dateFilter/dateDimensionGranularities.d.ts +20 -0
- package/esm/presentation/filterBar/dateFilter/dateDimensionGranularities.d.ts.map +1 -0
- package/esm/presentation/filterBar/dateFilter/dateDimensionGranularities.js +47 -0
- package/esm/presentation/filterBar/dateFilter/useDateFilterConfigNarrowedToDimension.d.ts +11 -0
- package/esm/presentation/filterBar/dateFilter/useDateFilterConfigNarrowedToDimension.d.ts.map +1 -0
- package/esm/presentation/filterBar/dateFilter/useDateFilterConfigNarrowedToDimension.js +25 -0
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarItem.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarItem.js +4 -2
- package/esm/presentation/filterBar/filterBar/filterViews/FilterViews.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/filterViews/FilterViews.js +7 -2
- package/esm/presentation/widget/dashboardLayout/DashboardCanvasOverlayZIndex.d.ts +5 -0
- package/esm/presentation/widget/dashboardLayout/DashboardCanvasOverlayZIndex.d.ts.map +1 -0
- package/esm/presentation/widget/dashboardLayout/DashboardCanvasOverlayZIndex.js +10 -0
- package/esm/presentation/widget/dashboardLayout/DashboardLayout.d.ts.map +1 -1
- package/esm/presentation/widget/dashboardLayout/DashboardLayout.js +2 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +0 -2
- package/package.json +21 -21
- package/styles/css/dashboard.css.map +1 -1
- package/styles/css/drillDialog.css +0 -5
- package/styles/css/drillDialog.css.map +1 -1
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/floatingToolbar.css.map +1 -1
- package/styles/css/kdaDialog.css +0 -5
- package/styles/css/kdaDialog.css.map +1 -1
- package/styles/css/kpi_alert_dialog.css.map +1 -1
- package/styles/css/layout.css.map +1 -1
- package/styles/css/main.css +12 -15
- package/styles/css/main.css.map +1 -1
- package/styles/css/notifications_channels_dialog.css.map +1 -1
- package/styles/css/resizing.css.map +1 -1
- package/styles/css/toolbar.css.map +1 -1
- package/styles/css/topBar.css.map +1 -1
- package/styles/scss/_zIndexes.scss +0 -1
- package/styles/scss/drillDialog.scss +0 -8
- package/styles/scss/kdaDialog.scss +0 -6
- package/esm/kdaDialog/dialog/hooks/useKdaDialogTooltipsOverride.d.ts +0 -2
- package/esm/kdaDialog/dialog/hooks/useKdaDialogTooltipsOverride.d.ts.map +0 -1
- package/esm/kdaDialog/dialog/hooks/useKdaDialogTooltipsOverride.js +0 -11
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogTooltipsOverride.d.ts +0 -4
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogTooltipsOverride.d.ts.map +0 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogTooltipsOverride.js +0 -26
package/esm/__version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "11.
|
|
1
|
+
export declare const LIB_VERSION = "11.62.0-alpha.1";
|
|
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.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"__version.d.ts","sourceRoot":"","sources":["../src/__version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"__version.d.ts","sourceRoot":"","sources":["../src/__version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,eAAO,MAAM,eAAe,uCAAuC,CAAC;AAEpE,eAAO,MAAM,QAAQ,+BAA+B,CAAC"}
|
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.
|
|
3
|
+
export const LIB_VERSION = "11.62.0-alpha.1";
|
|
4
4
|
export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
5
5
|
export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttributes.d.ts","sourceRoot":"","sources":["../../../src/_staging/sharedHooks/useAttributes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAttributes.d.ts","sourceRoot":"","sources":["../../../src/_staging/sharedHooks/useAttributes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAYjF;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE;;;;EAmCnD"}
|
|
@@ -3,6 +3,7 @@ import { useEffect, useMemo } from "react";
|
|
|
3
3
|
import { queryAttributeByDisplayForm, } from "../../model/queries/attributes.js";
|
|
4
4
|
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
5
5
|
import { useDashboardQueryProcessing } from "../../model/react/useDashboardQueryProcessing.js";
|
|
6
|
+
import { selectIsAiMode } from "../../model/store/config/configSelectors.js";
|
|
6
7
|
import { selectIsNewDashboard } from "../../model/store/meta/metaSelectors.js";
|
|
7
8
|
import { selectPreloadedAttributesWithReferences } from "../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
8
9
|
/**
|
|
@@ -15,12 +16,13 @@ export function useAttributes(displayForms) {
|
|
|
15
16
|
// First wait for preloaded filter attributes, otherwise we might be spawning lot of unnecessary requests
|
|
16
17
|
const attributesWithReferences = useDashboardSelector(selectPreloadedAttributesWithReferences);
|
|
17
18
|
const isNewDashboard = useDashboardSelector(selectIsNewDashboard);
|
|
19
|
+
const isAiMode = useDashboardSelector(selectIsAiMode);
|
|
18
20
|
useEffect(() => {
|
|
19
|
-
const shouldLoad = isNewDashboard || attributesWithReferences;
|
|
21
|
+
const shouldLoad = isNewDashboard || isAiMode || attributesWithReferences;
|
|
20
22
|
if (shouldLoad) {
|
|
21
23
|
getAttributes(displayForms);
|
|
22
24
|
}
|
|
23
|
-
}, [displayForms, getAttributes, isNewDashboard, attributesWithReferences]);
|
|
25
|
+
}, [displayForms, getAttributes, isNewDashboard, isAiMode, attributesWithReferences]);
|
|
24
26
|
const attributesLoading = useMemo(() => {
|
|
25
27
|
return attributesLoadingStatus === "pending" || attributesLoadingStatus === "running";
|
|
26
28
|
}, [attributesLoadingStatus]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiltersNamings.d.ts","sourceRoot":"","sources":["../../../src/_staging/sharedHooks/useFiltersNamings.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,iBAAiB,EAItB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"useFiltersNamings.d.ts","sourceRoot":"","sources":["../../../src/_staging/sharedHooks/useFiltersNamings.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,KAAK,iBAAiB,EAItB,KAAK,MAAM,EAiBd,MAAM,qBAAqB,CAAC;AA0B7B,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,iBAAiB,GAAG,YAAY,GAAG,oBAAoB,CAAC;IAC9D,GAAG,EAAE,OAAO,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA4OF,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAIrG;AAED,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAChD,MAAM,CAAC,MAAM,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC,CAa9C"}
|
|
@@ -5,7 +5,7 @@ import { areObjRefsEqual, dashboardAttributeFilterItemLocalIdentifier, dashboard
|
|
|
5
5
|
import { DateFilterHelpers, getAttributeFilterSubtitle, getLocalizedIcuDateFormatPattern, getMeasureValueFilterConditionLabel, getTextFilterStateText, } from "@gooddata/sdk-ui-filters";
|
|
6
6
|
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
7
7
|
import { selectAllCatalogAttributesMap, selectCatalogMeasures, } from "../../model/store/catalog/catalogSelectors.js";
|
|
8
|
-
import { selectLocale, selectSeparators, selectSettings
|
|
8
|
+
import { selectLocale, selectSeparators, selectSettings } from "../../model/store/config/configSelectors.js";
|
|
9
9
|
import { convertDateFilterConfigToDateFilterOptions } from "../dateFilterConfig/dateFilterConfigConverters.js";
|
|
10
10
|
import { matchDateFilterToDateFilterOptionWithPreference } from "../dateFilterConfig/dateFilterOptionMapping.js";
|
|
11
11
|
import { defaultDateFilterConfig } from "../dateFilterConfig/defaultConfig.js";
|
|
@@ -35,7 +35,6 @@ function useFilterNamingDependencies(filtersForTitles) {
|
|
|
35
35
|
const attrMap = useDashboardSelector(selectAllCatalogAttributesMap);
|
|
36
36
|
const measures = useDashboardSelector(selectCatalogMeasures);
|
|
37
37
|
const separators = useDashboardSelector(selectSeparators);
|
|
38
|
-
const weekStart = useDashboardSelector(selectWeekStart);
|
|
39
38
|
const dateFiltersForTitles = filtersForTitles.filter(isDashboardDateFilterWithDimension);
|
|
40
39
|
const commonDateFilterTitle = useCommonDateFilterTitle(intl);
|
|
41
40
|
const allDateFiltersTitlesObj = useDateFiltersTitles(dateFiltersForTitles, intl);
|
|
@@ -43,7 +42,6 @@ function useFilterNamingDependencies(filtersForTitles) {
|
|
|
43
42
|
intl,
|
|
44
43
|
locale,
|
|
45
44
|
dateFormat,
|
|
46
|
-
weekStart,
|
|
47
45
|
getAttributeFilterDisplayFormFromMap,
|
|
48
46
|
attrMap,
|
|
49
47
|
measures,
|
|
@@ -57,7 +55,7 @@ function useFilterNamingDependencies(filtersForTitles) {
|
|
|
57
55
|
* Extracted to avoid code duplication between useFiltersNamings and useFiltersByTabNamings.
|
|
58
56
|
*/
|
|
59
57
|
function transformFiltersToNamings(filtersToDisplay, deps) {
|
|
60
|
-
const { intl, dateFormat,
|
|
58
|
+
const { intl, dateFormat, getAttributeFilterDisplayFormFromMap, attrMap, measures, separators, commonDateFilterTitle, allDateFiltersTitlesObj, } = deps;
|
|
61
59
|
// we want to show all time filter in the list of filters even if it is not stored
|
|
62
60
|
const extendedFiltersToDisplay = ensureAllTimeFilterForExport(filtersToDisplay);
|
|
63
61
|
return extendedFiltersToDisplay.map((filter) => {
|
|
@@ -90,7 +88,7 @@ function transformFiltersToNamings(filtersToDisplay, deps) {
|
|
|
90
88
|
*/
|
|
91
89
|
const dateFilterOptionInfo = matchDateFilterToDateFilterOptionWithPreference(filter, convertDateFilterConfigToDateFilterOptions(defaultDateFilterConfig), undefined);
|
|
92
90
|
const dateFilterOption = DateFilterHelpers.applyExcludeCurrentPeriod(dateFilterOptionInfo.dateFilterOption, dateFilterOptionInfo.excludeCurrentPeriod);
|
|
93
|
-
const subtitle = DateFilterHelpers.getDateFilterTitleUsingTranslator(dateFilterOption, intl, "full", dateFormat
|
|
91
|
+
const subtitle = DateFilterHelpers.getDateFilterTitleUsingTranslator(dateFilterOption, intl, "full", dateFormat);
|
|
94
92
|
const a = filter;
|
|
95
93
|
if (isDashboardDateFilterWithDimension(a)) {
|
|
96
94
|
const key = serializeObjRef(a.dateFilter.dataSet);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KdaDialog.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialog.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"KdaDialog.d.ts","sourceRoot":"","sources":["../../../src/kdaDialog/dialog/KdaDialog.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAenD;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACtB,SAAS,EACT,eAAsB,EACtB,uBAAuB,EACvB,OAAO,EACP,QAAQ,EACR,cAAc,GACjB,EAAE,eAAe,2CAgHjB"}
|
|
@@ -17,7 +17,6 @@ import { useKdaState } from "../providers/KdaState.js";
|
|
|
17
17
|
import { useChangeAnalysis } from "./hooks/useChangeAnalysis.js";
|
|
18
18
|
import { useCloseOnEscape } from "./hooks/useCloseOnEscape.js";
|
|
19
19
|
import { useKdaDialogAccessibility } from "./hooks/useKdaDialogAccessibility.js";
|
|
20
|
-
import { useKdaDialogTooltipsOverride } from "./hooks/useKdaDialogTooltipsOverride.js";
|
|
21
20
|
import { useValidAttributes } from "./hooks/useValidAttributes.js";
|
|
22
21
|
import { KdaDialogControls } from "./KdaDialogControls.js";
|
|
23
22
|
import { KdaDialogFloatingStatusBar, getFloatingStatus } from "./KdaDialogFloatingStatusBar.js";
|
|
@@ -47,7 +46,6 @@ export function KdaDialog({ className, showCloseButton = true, parentOverlayCont
|
|
|
47
46
|
}, [isMinimized, onToggle]);
|
|
48
47
|
useChangeAnalysis();
|
|
49
48
|
useValidAttributes();
|
|
50
|
-
useKdaDialogTooltipsOverride();
|
|
51
49
|
const closeOnEscape = useCloseOnEscape();
|
|
52
50
|
return (_jsx(OverlayControllerProvider, { overlayController: effectiveOverlayController, children: isMinimized ? (_jsx(Dialog, { autofocusOnOpen: true, initialFocus: accessibilityConfig.descriptionElementId, className: cx(dialogBaseClassName, "gd-kda-dialog--minimized", {
|
|
53
51
|
[`gd-kda-dialog--minimized--${status}`]: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationDateFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/shared/automationFilters/components/AutomationDateFilter.tsx"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,iBAAiB,EAEtB,KAAK,oBAAoB,EAE5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,mBAAmB,EAAoC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AutomationDateFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/shared/automationFilters/components/AutomationDateFilter.tsx"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,iBAAiB,EAEtB,KAAK,oBAAoB,EAE5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,mBAAmB,EAAoC,MAAM,sBAAsB,CAAC;AAsGlG,wBAAgB,oBAAoB,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,KAAK,GACR,EAAE;IACC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,2CAoEA"}
|
package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.js
CHANGED
|
@@ -5,6 +5,7 @@ import { useIntl } from "react-intl";
|
|
|
5
5
|
import { areObjRefsEqual, } from "@gooddata/sdk-model";
|
|
6
6
|
import { UiChip, UiTooltip, useIdPrefixed } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { DefaultDashboardDateFilter } from "../../../../filterBar/dateFilter/DefaultDashboardDateFilter.js";
|
|
8
|
+
import { useDateFilterConfigNarrowedToDimension } from "../../../../filterBar/dateFilter/useDateFilterConfigNarrowedToDimension.js";
|
|
8
9
|
import { useAutomationsContext } from "../../../contexts/AutomationsContext.js";
|
|
9
10
|
import { AutomationDateFilterProvider, useAutomationDateFilterContext, } from "./AutomationDateFilterContext.js";
|
|
10
11
|
function AutomationDateFilterButton(props) {
|
|
@@ -64,11 +65,12 @@ export function AutomationDateFilter({ filter, onChange, onDelete, isLocked, isC
|
|
|
64
65
|
availableGranularities,
|
|
65
66
|
dateFilterOptions,
|
|
66
67
|
};
|
|
68
|
+
const dateFilterConfigNarrowedToDimension = useDateFilterConfigNarrowedToDimension(commonDateFilterComponentConfig, allDateDatasets, isCommonDateFilter ? undefined : filter.dateFilter.dataSet);
|
|
67
69
|
const defaultDateFilterName = allDateDatasets.find((ds) => areObjRefsEqual(ds.dataSet.ref, filter.dateFilter.dataSet))?.dataSet?.title;
|
|
68
70
|
const filterConfig = isCommonDateFilter
|
|
69
71
|
? commonDateFilterComponentConfig
|
|
70
72
|
: {
|
|
71
|
-
...
|
|
73
|
+
...dateFilterConfigNarrowedToDimension,
|
|
72
74
|
customFilterName: defaultDateFilterName,
|
|
73
75
|
};
|
|
74
76
|
return (_jsx(AutomationDateFilterProvider, { filter: filter, onDelete: onDelete, isLocked: isLocked, isCommonDateFilter: isCommonDateFilter, deleteAriaLabel: deleteAriaLabel, deleteTooltipContent: deleteTooltipContent, lockedTooltipContent: lockedTooltipContent, children: _jsx(DefaultDashboardDateFilter, { filter: filter, workingFilter: filter, onFilterChanged: handleFilterChanged, readonly: readonly || isLocked, config: filterConfig, overlayPositionType: overlayPositionType, ButtonComponent: AutomationDateFilterButton, tabId: tabId }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFiltersNamings.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/hooks/useFiltersNamings.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,iBAAiB,EAItB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"useFiltersNamings.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/shared/hooks/useFiltersNamings.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,iBAAiB,EAItB,KAAK,MAAM,EAgBd,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,iBAAiB,GAAG,YAAY,GAAG,oBAAoB,CAAC;IAC9D,GAAG,EAAE,OAAO,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA8PF,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAIrG;AAED,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GAChD,MAAM,CAAC,MAAM,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC,CAe9C"}
|
|
@@ -24,7 +24,7 @@ function isPercentageFormat(format) {
|
|
|
24
24
|
*/
|
|
25
25
|
function useFilterNamingDependencies(filtersForTitles) {
|
|
26
26
|
const intl = useIntl();
|
|
27
|
-
const { locale, settings, catalogMeasures: measures, separators,
|
|
27
|
+
const { locale, settings, catalogMeasures: measures, separators, getCatalogAttributeByRef, } = useAutomationsContext();
|
|
28
28
|
const dateFormat = settings?.formatLocale
|
|
29
29
|
? getLocalizedIcuDateFormatPattern(settings.formatLocale)
|
|
30
30
|
: settings?.responsiveUiDateFormat;
|
|
@@ -36,7 +36,6 @@ function useFilterNamingDependencies(filtersForTitles) {
|
|
|
36
36
|
intl,
|
|
37
37
|
locale,
|
|
38
38
|
dateFormat,
|
|
39
|
-
weekStart,
|
|
40
39
|
getAttributeFilterDisplayFormFromMap,
|
|
41
40
|
getCatalogAttributeByRef,
|
|
42
41
|
measures,
|
|
@@ -47,7 +46,6 @@ function useFilterNamingDependencies(filtersForTitles) {
|
|
|
47
46
|
intl,
|
|
48
47
|
locale,
|
|
49
48
|
dateFormat,
|
|
50
|
-
weekStart,
|
|
51
49
|
getAttributeFilterDisplayFormFromMap,
|
|
52
50
|
getCatalogAttributeByRef,
|
|
53
51
|
measures,
|
|
@@ -61,7 +59,7 @@ function useFilterNamingDependencies(filtersForTitles) {
|
|
|
61
59
|
* Extracted to avoid code duplication between useFiltersNamings and useFiltersByTabNamings.
|
|
62
60
|
*/
|
|
63
61
|
function transformFiltersToNamings(filtersToDisplay, deps) {
|
|
64
|
-
const { intl, dateFormat,
|
|
62
|
+
const { intl, dateFormat, getAttributeFilterDisplayFormFromMap, getCatalogAttributeByRef, measures, separators, commonDateFilterTitle, allDateFiltersTitlesObj, } = deps;
|
|
65
63
|
// we want to show all time filter in the list of filters even if it is not stored
|
|
66
64
|
const extendedFiltersToDisplay = ensureAllTimeFilterForExport(filtersToDisplay);
|
|
67
65
|
return extendedFiltersToDisplay.map((filter) => {
|
|
@@ -94,7 +92,7 @@ function transformFiltersToNamings(filtersToDisplay, deps) {
|
|
|
94
92
|
*/
|
|
95
93
|
const dateFilterOptionInfo = matchDateFilterToDateFilterOptionWithPreference(filter, convertDateFilterConfigToDateFilterOptions(defaultDateFilterConfig), undefined);
|
|
96
94
|
const dateFilterOption = DateFilterHelpers.applyExcludeCurrentPeriod(dateFilterOptionInfo.dateFilterOption, dateFilterOptionInfo.excludeCurrentPeriod);
|
|
97
|
-
const subtitle = DateFilterHelpers.getDateFilterTitleUsingTranslator(dateFilterOption, intl, "full", dateFormat
|
|
95
|
+
const subtitle = DateFilterHelpers.getDateFilterTitleUsingTranslator(dateFilterOption, intl, "full", dateFormat);
|
|
98
96
|
const a = filter;
|
|
99
97
|
if (isDashboardDateFilterWithDimension(a)) {
|
|
100
98
|
const key = serializeObjRef(a.dateFilter.dataSet);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAttributeDataSet.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAttributeDataSet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAttributeDataSet.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAttributeDataSet.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAY/E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,UAAO;;;;EAmCxE"}
|
|
@@ -3,6 +3,7 @@ import { useEffect, useMemo } from "react";
|
|
|
3
3
|
import { queryAttributeDataSet, } from "../../../../../../model/queries/attributeDataSet.js";
|
|
4
4
|
import { useDashboardSelector } from "../../../../../../model/react/DashboardStoreProvider.js";
|
|
5
5
|
import { useDashboardQueryProcessing } from "../../../../../../model/react/useDashboardQueryProcessing.js";
|
|
6
|
+
import { selectIsAiMode } from "../../../../../../model/store/config/configSelectors.js";
|
|
6
7
|
import { selectIsNewDashboard } from "../../../../../../model/store/meta/metaSelectors.js";
|
|
7
8
|
import { selectPreloadedAttributesWithReferences } from "../../../../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
8
9
|
/**
|
|
@@ -15,12 +16,13 @@ export function useAttributeDataSet(displayForm, loadQuery = true) {
|
|
|
15
16
|
// First wait for preloaded filter attributes, otherwise we might be spawning lot of unnecessary requests
|
|
16
17
|
const attributesWithReferences = useDashboardSelector(selectPreloadedAttributesWithReferences);
|
|
17
18
|
const isNewDashboard = useDashboardSelector(selectIsNewDashboard);
|
|
19
|
+
const isAiMode = useDashboardSelector(selectIsAiMode);
|
|
18
20
|
useEffect(() => {
|
|
19
|
-
const shouldLoad = isNewDashboard || attributesWithReferences;
|
|
21
|
+
const shouldLoad = isNewDashboard || isAiMode || attributesWithReferences;
|
|
20
22
|
if (loadQuery && shouldLoad) {
|
|
21
23
|
getAttributeDataSet(displayForm);
|
|
22
24
|
}
|
|
23
|
-
}, [displayForm, isNewDashboard, loadQuery, getAttributeDataSet, attributesWithReferences]);
|
|
25
|
+
}, [displayForm, isNewDashboard, isAiMode, loadQuery, getAttributeDataSet, attributesWithReferences]);
|
|
24
26
|
const attributesDataSetLoading = useMemo(() => {
|
|
25
27
|
return attributesDataSetLoadingStatus === "pending" || attributesDataSetLoadingStatus === "running";
|
|
26
28
|
}, [attributesDataSetLoadingStatus]);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type DateFilterGranularity, type ICatalogDateDataset, type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type IDateFilterOptionsByType } from "@gooddata/sdk-ui-filters";
|
|
3
|
+
/**
|
|
4
|
+
* Date filter granularities exposed by the date dimension the filter is bound to.
|
|
5
|
+
*
|
|
6
|
+
* Returns undefined when the filter is not bound to a dimension (the common date filter) or when the dimension
|
|
7
|
+
* is not in the catalog - in both cases the granularities must not be narrowed.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getDateDimensionGranularities(dateDatasets: ICatalogDateDataset[], dataSetRef: ObjRef | undefined): DateFilterGranularity[] | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Keeps only the relative presets and the relative/absolute form granularities supported by the dimension.
|
|
12
|
+
* A stored filter whose granularity is dropped is reconstructed as a form and the date filter body moves it
|
|
13
|
+
* to the first available granularity once the form is opened.
|
|
14
|
+
*/
|
|
15
|
+
export declare function narrowDateFilterOptionsToGranularities(dateFilterOptions: IDateFilterOptionsByType, granularities: DateFilterGranularity[]): IDateFilterOptionsByType;
|
|
16
|
+
/**
|
|
17
|
+
* Keeps only the available granularities the dimension exposes, preserving their original order.
|
|
18
|
+
*/
|
|
19
|
+
export declare function narrowGranularities(availableGranularities: DateFilterGranularity[], granularities: DateFilterGranularity[]): DateFilterGranularity[];
|
|
20
|
+
//# sourceMappingURL=dateDimensionGranularities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateDimensionGranularities.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/dateFilter/dateDimensionGranularities.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,MAAM,EAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE;;;;;GAKG;AACH,wBAAgB,6BAA6B,CACzC,YAAY,EAAE,mBAAmB,EAAE,EACnC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC/B,qBAAqB,EAAE,GAAG,SAAS,CAUrC;AAED;;;;GAIG;AACH,wBAAgB,sCAAsC,CAClD,iBAAiB,EAAE,wBAAwB,EAC3C,aAAa,EAAE,qBAAqB,EAAE,GACvC,wBAAwB,CA0B1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,sBAAsB,EAAE,qBAAqB,EAAE,EAC/C,aAAa,EAAE,qBAAqB,EAAE,GACvC,qBAAqB,EAAE,CAEzB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { areObjRefsEqual, isDateFilterGranularity, } from "@gooddata/sdk-model";
|
|
3
|
+
/**
|
|
4
|
+
* Date filter granularities exposed by the date dimension the filter is bound to.
|
|
5
|
+
*
|
|
6
|
+
* Returns undefined when the filter is not bound to a dimension (the common date filter) or when the dimension
|
|
7
|
+
* is not in the catalog - in both cases the granularities must not be narrowed.
|
|
8
|
+
*/
|
|
9
|
+
export function getDateDimensionGranularities(dateDatasets, dataSetRef) {
|
|
10
|
+
if (!dataSetRef) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
const dateDataset = dateDatasets.find((ds) => areObjRefsEqual(ds.dataSet.ref, dataSetRef));
|
|
14
|
+
return dateDataset?.dateAttributes
|
|
15
|
+
.map((attribute) => attribute.granularity)
|
|
16
|
+
.filter(isDateFilterGranularity);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Keeps only the relative presets and the relative/absolute form granularities supported by the dimension.
|
|
20
|
+
* A stored filter whose granularity is dropped is reconstructed as a form and the date filter body moves it
|
|
21
|
+
* to the first available granularity once the form is opened.
|
|
22
|
+
*/
|
|
23
|
+
export function narrowDateFilterOptionsToGranularities(dateFilterOptions, granularities) {
|
|
24
|
+
const { relativePreset, absoluteForm } = dateFilterOptions;
|
|
25
|
+
return {
|
|
26
|
+
...dateFilterOptions,
|
|
27
|
+
...(relativePreset
|
|
28
|
+
? {
|
|
29
|
+
relativePreset: Object.fromEntries(Object.entries(relativePreset).filter(([granularity]) => granularities.includes(granularity))),
|
|
30
|
+
}
|
|
31
|
+
: {}),
|
|
32
|
+
...(absoluteForm?.availableGranularities
|
|
33
|
+
? {
|
|
34
|
+
absoluteForm: {
|
|
35
|
+
...absoluteForm,
|
|
36
|
+
availableGranularities: narrowGranularities(absoluteForm.availableGranularities, granularities),
|
|
37
|
+
},
|
|
38
|
+
}
|
|
39
|
+
: {}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Keeps only the available granularities the dimension exposes, preserving their original order.
|
|
44
|
+
*/
|
|
45
|
+
export function narrowGranularities(availableGranularities, granularities) {
|
|
46
|
+
return availableGranularities.filter((granularity) => granularities.includes(granularity));
|
|
47
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ICatalogDateDataset, type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type IDashboardDateFilterConfig } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Narrows the date filter config to the granularities exposed by the date dimension the filter is bound to,
|
|
5
|
+
* so the date filter component (default or custom) offers only presets and granularities the dimension has.
|
|
6
|
+
*
|
|
7
|
+
* The config is returned with the original granularities and options when there is no dimension (the common
|
|
8
|
+
* date filter) or the dimension is not in the catalog.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useDateFilterConfigNarrowedToDimension(config: IDashboardDateFilterConfig, dateDatasets: ICatalogDateDataset[], dataSetRef: ObjRef | undefined): IDashboardDateFilterConfig;
|
|
11
|
+
//# sourceMappingURL=useDateFilterConfigNarrowedToDimension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDateFilterConfigNarrowedToDimension.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/dateFilter/useDateFilterConfigNarrowedToDimension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAO5E,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,sCAAsC,CAClD,MAAM,EAAE,0BAA0B,EAClC,YAAY,EAAE,mBAAmB,EAAE,EACnC,UAAU,EAAE,MAAM,GAAG,SAAS,GAC/B,0BAA0B,CA6B5B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { getDateDimensionGranularities, narrowDateFilterOptionsToGranularities, narrowGranularities, } from "./dateDimensionGranularities.js";
|
|
4
|
+
/**
|
|
5
|
+
* Narrows the date filter config to the granularities exposed by the date dimension the filter is bound to,
|
|
6
|
+
* so the date filter component (default or custom) offers only presets and granularities the dimension has.
|
|
7
|
+
*
|
|
8
|
+
* The config is returned with the original granularities and options when there is no dimension (the common
|
|
9
|
+
* date filter) or the dimension is not in the catalog.
|
|
10
|
+
*/
|
|
11
|
+
export function useDateFilterConfigNarrowedToDimension(config, dateDatasets, dataSetRef) {
|
|
12
|
+
const { availableGranularities, dateFilterOptions } = config;
|
|
13
|
+
const dimensionGranularities = useMemo(() => getDateDimensionGranularities(dateDatasets, dataSetRef), [dateDatasets, dataSetRef]);
|
|
14
|
+
const narrowedOptions = useMemo(() => dimensionGranularities
|
|
15
|
+
? narrowDateFilterOptionsToGranularities(dateFilterOptions, dimensionGranularities)
|
|
16
|
+
: dateFilterOptions, [dateFilterOptions, dimensionGranularities]);
|
|
17
|
+
const narrowedGranularities = useMemo(() => dimensionGranularities
|
|
18
|
+
? narrowGranularities(availableGranularities, dimensionGranularities)
|
|
19
|
+
: availableGranularities, [availableGranularities, dimensionGranularities]);
|
|
20
|
+
return {
|
|
21
|
+
...config,
|
|
22
|
+
availableGranularities: narrowedGranularities,
|
|
23
|
+
dateFilterOptions: narrowedOptions,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultFilterBarItem.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAGH,KAAK,MAAM,EAQd,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultFilterBarItem.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,EAGH,KAAK,MAAM,EAQd,MAAM,qBAAqB,CAAC;AAoC7B,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAG/E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACH,KAAK,aAAa,EAMrB,MAAM,qCAAqC,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IACxD,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAC3F,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,sBAAsB,EAAE,MAAM,IAAI,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAwN1E"}
|
|
@@ -17,8 +17,9 @@ import { useDashboardComponentsContext } from "../../dashboardContexts/Dashboard
|
|
|
17
17
|
import { DraggableAttributeFilter } from "../../dragAndDrop/draggableAttributeFilter/DraggableAttributeFilter.js";
|
|
18
18
|
import { DraggableDateFilter } from "../../dragAndDrop/draggableDateFilter/DraggableDateFilter.js";
|
|
19
19
|
import { DraggableMeasureValueFilter } from "../../dragAndDrop/draggableMeasureValueFilter/DraggableMeasureValueFilter.js";
|
|
20
|
+
import { useDateFilterConfigNarrowedToDimension } from "../dateFilter/useDateFilterConfigNarrowedToDimension.js";
|
|
20
21
|
import { DefaultDashboardFilterGroup } from "./DefaultDashboardFilterGroup.js";
|
|
21
|
-
import { isFilterBarAttributeFilter, isFilterBarFilterGroupItem, isFilterBarFilterPlaceholder, isFilterBarMeasureValueFilter, } from "./useFiltersWithAddedPlaceholder.js";
|
|
22
|
+
import { isFilterBarAttributeFilter, isFilterBarDateFilterWithDimension, isFilterBarFilterGroupItem, isFilterBarFilterPlaceholder, isFilterBarMeasureValueFilter, } from "./useFiltersWithAddedPlaceholder.js";
|
|
22
23
|
/**
|
|
23
24
|
* @alpha
|
|
24
25
|
*/
|
|
@@ -45,6 +46,7 @@ export function DefaultFilterBarItem(props) {
|
|
|
45
46
|
availableGranularities,
|
|
46
47
|
dateFilterOptions,
|
|
47
48
|
};
|
|
49
|
+
const dateFilterConfigNarrowedToDimension = useDateFilterConfigNarrowedToDimension(commonDateFilterComponentConfig, allDateDatasets, isFilterBarDateFilterWithDimension(item) ? item.filter.dateFilter.dataSet : undefined);
|
|
48
50
|
if (isFilterBarFilterPlaceholder(item)) {
|
|
49
51
|
const CreatingPlaceholderComponent = AttributeFilterComponentSet.creating.CreatingPlaceholderComponent;
|
|
50
52
|
return (_jsx(CreatingPlaceholderComponent, { onClose: closeAttributeSelection, onSelect: selectDraggableFilter, attributes: attributes, dateDatasets: allDateDatasets, measures: measures }, item.filterIndex));
|
|
@@ -117,7 +119,7 @@ export function DefaultFilterBarItem(props) {
|
|
|
117
119
|
}
|
|
118
120
|
const defaultDateFilterName = allDateDatasets.find((ds) => areObjRefsEqual(ds.dataSet.ref, filter.dateFilter.dataSet))?.dataSet?.title;
|
|
119
121
|
return (_jsx(DraggableDateFilter, { autoOpen: areObjRefsEqual(item.filter.dateFilter.dataSet, autoOpenFilter), filter: filter, workingFilter: isApplyAllAtOnceEnabledAndSet ? workingFilter : undefined, filterIndex: filterIndex, config: {
|
|
120
|
-
...
|
|
122
|
+
...dateFilterConfigNarrowedToDimension,
|
|
121
123
|
customFilterName: defaultDateFilterName,
|
|
122
124
|
}, readonly: dateFilterMode === DashboardDateFilterConfigModeValues.READONLY, FilterComponent: CustomDateFilterComponent, onDateFilterChanged: onDateFilterChanged, onDateFilterAdded: addDraggableFilterPlaceholder, onDateFilterClose: onCloseAttributeFilter }, objRefToString(item.filter.dateFilter.dataSet)));
|
|
123
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterViews.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterViews.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx"],"names":[],"mappings":"AAmHA,wBAAgB,WAAW,mDAkH1B"}
|
|
@@ -7,7 +7,7 @@ import { v4 as uuid } from "uuid";
|
|
|
7
7
|
import { UiButton, UiReturnFocusOnUnmount, useIdPrefixed, useMediaQuery, } from "@gooddata/sdk-ui-kit";
|
|
8
8
|
import { useDashboardDispatch, useDashboardSelector, } from "../../../../model/react/DashboardStoreProvider.js";
|
|
9
9
|
import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js";
|
|
10
|
-
import { selectIsApplyFiltersAllAtOnceEnabledAndSet, selectIsReadOnly, } from "../../../../model/store/config/configSelectors.js";
|
|
10
|
+
import { selectIsAiMode, selectIsApplyFiltersAllAtOnceEnabledAndSet, selectIsReadOnly, } from "../../../../model/store/config/configSelectors.js";
|
|
11
11
|
import { selectFilterViews } from "../../../../model/store/filterViews/filterViewsReducersSelectors.js";
|
|
12
12
|
import { selectDisableFilterViews, selectIsNewDashboard, } from "../../../../model/store/meta/metaSelectors.js";
|
|
13
13
|
import { selectCanCreateFilterView } from "../../../../model/store/permissions/permissionsSelectors.js";
|
|
@@ -68,6 +68,7 @@ export function FilterViews() {
|
|
|
68
68
|
const filterViews = useDashboardSelector(selectFilterViews);
|
|
69
69
|
const isFilterViewsEnabledForDashboard = !useDashboardSelector(selectDisableFilterViews);
|
|
70
70
|
const isNewDashboard = useDashboardSelector(selectIsNewDashboard);
|
|
71
|
+
const isAiMode = useDashboardSelector(selectIsAiMode);
|
|
71
72
|
const canCreateFilterView = useDashboardSelector(selectCanCreateFilterView);
|
|
72
73
|
const isMobile = useMediaQuery("mobileDevice");
|
|
73
74
|
const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
|
|
@@ -82,7 +83,11 @@ export function FilterViews() {
|
|
|
82
83
|
// The dropdown body must still be rendered so the body can be opened when user uses the menu.
|
|
83
84
|
// Also, the menu is not available for new dashboard as new filter view can be saved only for an existing
|
|
84
85
|
// dashboard with ref id.
|
|
85
|
-
const showDropdownButton = isFilterViewsEnabledForDashboard &&
|
|
86
|
+
const showDropdownButton = isFilterViewsEnabledForDashboard &&
|
|
87
|
+
isUserPermittedToSeeDropdown &&
|
|
88
|
+
!isNewDashboard &&
|
|
89
|
+
!isAiMode &&
|
|
90
|
+
!isMobile;
|
|
86
91
|
// generate unique anchor class name to open dropdown next to the correct button if app uses multiple
|
|
87
92
|
// dashboard components
|
|
88
93
|
const dropdownAnchorClassName = useMemo(() => `gd-filter-views__dropdown-anchor-${uuid()}`, []);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export declare function DashboardCanvasOverlayZIndex({ children }: {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
}): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null | undefined;
|
|
5
|
+
//# sourceMappingURL=DashboardCanvasOverlayZIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardCanvasOverlayZIndex.d.ts","sourceRoot":"","sources":["../../../../src/presentation/widget/dashboardLayout/DashboardCanvasOverlayZIndex.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,wBAAgB,4BAA4B,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2UAUjF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { OverlayZIndexContext, useContainingOverlayZIndex } from "@gooddata/sdk-ui-kit";
|
|
3
|
+
import { DASHBOARD_OVERLAYS_FILTER_Z_INDEX } from "../../constants/zIndex.js";
|
|
4
|
+
export function DashboardCanvasOverlayZIndex({ children }) {
|
|
5
|
+
const containingOverlayZIndex = useContainingOverlayZIndex();
|
|
6
|
+
if (containingOverlayZIndex !== undefined) {
|
|
7
|
+
return children;
|
|
8
|
+
}
|
|
9
|
+
return (_jsx(OverlayZIndexContext.Provider, { value: DASHBOARD_OVERLAYS_FILTER_Z_INDEX, children: children }));
|
|
10
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayout.d.ts","sourceRoot":"","sources":["../../../../src/presentation/widget/dashboardLayout/DashboardLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardLayout.d.ts","sourceRoot":"","sources":["../../../../src/presentation/widget/dashboardLayout/DashboardLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAQ1E"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js";
|
|
3
|
+
import { DashboardCanvasOverlayZIndex } from "./DashboardCanvasOverlayZIndex.js";
|
|
3
4
|
/**
|
|
4
5
|
* @internal
|
|
5
6
|
*/
|
|
6
7
|
export function DashboardLayout(props) {
|
|
7
8
|
const { LayoutComponent } = useDashboardComponentsContext();
|
|
8
|
-
return _jsx(LayoutComponent, { ...props });
|
|
9
|
+
return (_jsx(DashboardCanvasOverlayZIndex, { children: _jsx(LayoutComponent, { ...props }) }));
|
|
9
10
|
}
|
|
@@ -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;AAwBvE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
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;AAwBvE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAe7G;;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;AAmCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CA6MhF"}
|
|
@@ -22,7 +22,6 @@ import { InsightWidgetWarningPartialResult } from "../../../widget/warningPartia
|
|
|
22
22
|
import { DrillDialog } from "./DrillDialog.js";
|
|
23
23
|
import { DrillDialogInsight } from "./DrillDialogInsight.js";
|
|
24
24
|
import { getTitleWithBreadcrumbs } from "./getTitleWithBreadcrumbs.js";
|
|
25
|
-
import { useDrillDialogTooltipsOverride } from "./useDrillDialogTooltipsOverride.js";
|
|
26
25
|
// Header z-index start at 6000 so we need force all overlays z-indexes start at 6000 to be above header
|
|
27
26
|
const overlayController = OverlayController.getInstance(DASHBOARD_HEADER_OVERLAYS_Z_INDEX);
|
|
28
27
|
const overlayIgnoredClasses = [
|
|
@@ -54,7 +53,6 @@ const getInsightWidgetDescription = (descriptionConfig, widget, insight) => {
|
|
|
54
53
|
export function InsightDrillDialog(props) {
|
|
55
54
|
const { widget, locale, breadcrumbs, insight, enableDrillDescription, drillStep, returnFocusToInsight, onClose, onBackButtonClick, onDrillDown, onDrillStart, } = props;
|
|
56
55
|
const isMobileDevice = useMediaQuery("mobileDevice");
|
|
57
|
-
useDrillDialogTooltipsOverride();
|
|
58
56
|
const [isLoading, setIsLoading] = useState(false);
|
|
59
57
|
const executionsHandler = useWidgetExecutionsHandler(DRILL_MODAL_EXECUTION_PSEUDO_REF);
|
|
60
58
|
const { ErrorComponent, LoadingComponent } = useDashboardComponentsContext({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-dashboard",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.62.0-alpha.1",
|
|
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.
|
|
64
|
-
"@gooddata/sdk-backend-spi": "11.
|
|
65
|
-
"@gooddata/sdk-model": "11.
|
|
66
|
-
"@gooddata/sdk-ui": "11.
|
|
67
|
-
"@gooddata/sdk-ui-charts": "11.
|
|
68
|
-
"@gooddata/sdk-ui-ext": "11.
|
|
69
|
-
"@gooddata/sdk-ui-filters": "11.
|
|
70
|
-
"@gooddata/sdk-ui-geo": "11.
|
|
71
|
-
"@gooddata/sdk-ui-
|
|
72
|
-
"@gooddata/sdk-ui-
|
|
73
|
-
"@gooddata/sdk-ui-
|
|
74
|
-
"@gooddata/sdk-ui-theme-provider": "11.
|
|
75
|
-
"@gooddata/
|
|
76
|
-
"@gooddata/
|
|
63
|
+
"@gooddata/sdk-backend-base": "11.62.0-alpha.1",
|
|
64
|
+
"@gooddata/sdk-backend-spi": "11.62.0-alpha.1",
|
|
65
|
+
"@gooddata/sdk-model": "11.62.0-alpha.1",
|
|
66
|
+
"@gooddata/sdk-ui": "11.62.0-alpha.1",
|
|
67
|
+
"@gooddata/sdk-ui-charts": "11.62.0-alpha.1",
|
|
68
|
+
"@gooddata/sdk-ui-ext": "11.62.0-alpha.1",
|
|
69
|
+
"@gooddata/sdk-ui-filters": "11.62.0-alpha.1",
|
|
70
|
+
"@gooddata/sdk-ui-geo": "11.62.0-alpha.1",
|
|
71
|
+
"@gooddata/sdk-ui-pivot": "11.62.0-alpha.1",
|
|
72
|
+
"@gooddata/sdk-ui-semantic-search": "11.62.0-alpha.1",
|
|
73
|
+
"@gooddata/sdk-ui-kit": "11.62.0-alpha.1",
|
|
74
|
+
"@gooddata/sdk-ui-theme-provider": "11.62.0-alpha.1",
|
|
75
|
+
"@gooddata/util": "11.62.0-alpha.1",
|
|
76
|
+
"@gooddata/sdk-ui-vis-commons": "11.62.0-alpha.1"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@microsoft/api-documenter": "7.30.16",
|
|
@@ -115,12 +115,12 @@
|
|
|
115
115
|
"typescript": "7.0.2",
|
|
116
116
|
"vitest": "4.1.11",
|
|
117
117
|
"vitest-dom": "0.1.1",
|
|
118
|
-
"@gooddata/i18n-toolkit": "11.
|
|
119
|
-
"@gooddata/eslint-config": "11.
|
|
120
|
-
"@gooddata/
|
|
121
|
-
"@gooddata/
|
|
122
|
-
"@gooddata/reference-workspace": "11.
|
|
123
|
-
"@gooddata/stylelint-config": "11.
|
|
118
|
+
"@gooddata/i18n-toolkit": "11.62.0-alpha.1",
|
|
119
|
+
"@gooddata/eslint-config": "11.62.0-alpha.1",
|
|
120
|
+
"@gooddata/oxlint-config": "11.62.0-alpha.1",
|
|
121
|
+
"@gooddata/sdk-backend-mockingbird": "11.62.0-alpha.1",
|
|
122
|
+
"@gooddata/reference-workspace": "11.62.0-alpha.1",
|
|
123
|
+
"@gooddata/stylelint-config": "11.62.0-alpha.1"
|
|
124
124
|
},
|
|
125
125
|
"peerDependencies": {
|
|
126
126
|
"react": "^18.0.0 || ^19.0.0",
|