@gooddata/sdk-ui-dashboard 11.37.0-alpha.2 → 11.37.0-alpha.3
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.js +1 -1
- package/esm/presentation/filterBar/attributeFilter/types.d.ts +4 -1
- package/esm/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js +54 -14
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarItem.js +1 -1
- package/esm/presentation/filterBar/filterBar/filterGroupUtils.js +4 -1
- package/esm/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.js +5 -4
- package/esm/presentation/filterBar/measureValueFilter/types.d.ts +14 -0
- package/esm/sdk-ui-dashboard.d.ts +16 -0
- package/package.json +20 -20
package/esm/__version.d.ts
CHANGED
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.37.0-alpha.
|
|
3
|
+
export const LIB_VERSION = "11.37.0-alpha.3";
|
|
4
4
|
export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
|
|
5
5
|
export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type ComponentType, type ReactNode, type RefObject } from "react";
|
|
2
|
-
import { type DashboardAttributeFilterItem, type ICatalogAttribute, type ICatalogDateDataset, type ICatalogMeasure, type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type DashboardAttributeFilterItem, type ICatalogAttribute, type ICatalogDateDataset, type ICatalogMeasure, type IDashboardMeasureValueFilter, type MeasureValueFilterCondition, type ObjRef } from "@gooddata/sdk-model";
|
|
3
3
|
import type { IAttributeFilterButtonProps } from "@gooddata/sdk-ui-filters";
|
|
4
4
|
import { type IDropdownListNoDataRenderProps, type OverlayPositionType } from "@gooddata/sdk-ui-kit";
|
|
5
5
|
import { type IDashboardAttributeFilterParentItem } from "../../../model/types/attributeFilterTypes.js";
|
|
6
6
|
import { type IDashboardDependentDateFilter } from "../../../model/types/dateFilterTypes.js";
|
|
7
7
|
import type { IFilterBarFilterGroupItem } from "../filterBar/useFiltersWithAddedPlaceholder.js";
|
|
8
8
|
import { type DashboardFilterSelectionType } from "../filterSelectionTypes.js";
|
|
9
|
+
import type { CustomDashboardMeasureValueFilterComponent } from "../measureValueFilter/types.js";
|
|
9
10
|
import { type IAddAttributeFilterButtonProps } from "./addAttributeFilter/AddAttributeFilterButton.js";
|
|
10
11
|
/**
|
|
11
12
|
* @public
|
|
@@ -112,7 +113,9 @@ export type CustomDashboardAttributeFilterComponent = ComponentType<IDashboardAt
|
|
|
112
113
|
export interface IDashboardFilterGroupProps {
|
|
113
114
|
groupItem: IFilterBarFilterGroupItem;
|
|
114
115
|
onAttributeFilterChanged: (filter: DashboardAttributeFilterItem) => void;
|
|
116
|
+
onMeasureValueFilterChanged?: (filter: IDashboardMeasureValueFilter, conditions: MeasureValueFilterCondition[] | undefined, isWorkingSelectionChange?: boolean) => void;
|
|
115
117
|
DashboardAttributeFilterComponent?: CustomDashboardAttributeFilterComponent;
|
|
118
|
+
DashboardMeasureValueFilterComponent?: CustomDashboardMeasureValueFilterComponent;
|
|
116
119
|
}
|
|
117
120
|
/**
|
|
118
121
|
* @public
|
|
@@ -3,45 +3,65 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useCallback, useMemo } from "react";
|
|
4
4
|
import { isEmpty } from "lodash-es";
|
|
5
5
|
import { useIntl } from "react-intl";
|
|
6
|
-
import { DashboardAttributeFilterConfigModeValues, dashboardAttributeFilterItemFilterElementsBy, dashboardAttributeFilterItemFilterElementsByDate, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, getSelectedElementsCount, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardMatchAttributeFilter, } from "@gooddata/sdk-model";
|
|
6
|
+
import { DashboardAttributeFilterConfigModeValues, dashboardAttributeFilterItemFilterElementsBy, dashboardAttributeFilterItemFilterElementsByDate, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, getSelectedElementsCount, isAllDashboardMeasureValueFilter, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
|
|
7
7
|
import { AttributeFilterDependencyTooltip, FilterGroup, useDeepEqualRefStablizer, } from "@gooddata/sdk-ui-filters";
|
|
8
8
|
import { convertDashboardAttributeFilterElementsUrisToValues } from "../../../_staging/dashboard/legacyFilterConvertors.js";
|
|
9
9
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
10
10
|
import { selectBackendCapabilities, selectSupportsElementUris, } from "../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
11
11
|
import { selectEnableArbitraryFilterKD, selectEnableMatchFilterKD, selectIsApplyFiltersAllAtOnceEnabledAndSet, } from "../../../model/store/config/configSelectors.js";
|
|
12
12
|
import { selectAttributeFilterConfigsDisplayAsLabelMap, selectEffectiveAttributeFiltersModeMap, } from "../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
|
|
13
|
+
import { selectEffectiveMeasureValueFiltersModeMap } from "../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js";
|
|
14
|
+
import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js";
|
|
13
15
|
import { DefaultDashboardAttributeFilter } from "../attributeFilter/DefaultDashboardAttributeFilter.js";
|
|
14
|
-
import {
|
|
16
|
+
import { DefaultDashboardMeasureValueFilter } from "../measureValueFilter/DefaultDashboardMeasureValueFilter.js";
|
|
17
|
+
import { isFilterBarAttributeFilter, isFilterBarMeasureValueFilter, } from "./useFiltersWithAddedPlaceholder.js";
|
|
15
18
|
/**
|
|
16
19
|
* @alpha
|
|
17
20
|
*/
|
|
18
21
|
export function DefaultDashboardFilterGroup(props) {
|
|
19
|
-
const { groupItem, onAttributeFilterChanged, DashboardAttributeFilterComponent: CustomDashboardAttributeFilterComponent, } = props;
|
|
22
|
+
const { groupItem, onAttributeFilterChanged, onMeasureValueFilterChanged, DashboardAttributeFilterComponent: CustomDashboardAttributeFilterComponent, DashboardMeasureValueFilterComponent: CustomDashboardMeasureValueFilterComponent, } = props;
|
|
20
23
|
const intl = useIntl();
|
|
24
|
+
const { DashboardMeasureValueFilterComponentProvider } = useDashboardComponentsContext();
|
|
21
25
|
const supportElementUris = useDashboardSelector(selectSupportsElementUris);
|
|
22
26
|
const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
|
|
23
27
|
const capabilities = useDashboardSelector(selectBackendCapabilities);
|
|
24
28
|
const attributeFiltersDisplayAsLabelMap = useDashboardSelector(selectAttributeFilterConfigsDisplayAsLabelMap);
|
|
25
29
|
const attributeFiltersModeMap = useDashboardSelector(selectEffectiveAttributeFiltersModeMap);
|
|
30
|
+
const measureValueFiltersModeMap = useDashboardSelector(selectEffectiveMeasureValueFiltersModeMap);
|
|
26
31
|
const enableArbitraryFilter = useDashboardSelector(selectEnableArbitraryFilterKD);
|
|
27
32
|
const enableMatchFilter = useDashboardSelector(selectEnableMatchFilterKD);
|
|
28
33
|
const getFilterIdentifier = useCallback((filter) => {
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
if (isFilterBarAttributeFilter(filter)) {
|
|
35
|
+
return dashboardAttributeFilterItemLocalIdentifier(filter.filter);
|
|
36
|
+
}
|
|
37
|
+
return dashboardFilterLocalIdentifier(filter.filter);
|
|
31
38
|
}, []);
|
|
32
|
-
const
|
|
33
|
-
if (
|
|
34
|
-
return
|
|
39
|
+
const isFilterActive = useCallback((filter) => {
|
|
40
|
+
if (isFilterBarMeasureValueFilter(filter)) {
|
|
41
|
+
return !isAllDashboardMeasureValueFilter(filter.filter);
|
|
42
|
+
}
|
|
43
|
+
const dashboardFilter = filter.filter;
|
|
44
|
+
if (isDashboardAttributeFilter(dashboardFilter)) {
|
|
45
|
+
return getSelectedElementsCount(dashboardFilter) > 0;
|
|
35
46
|
}
|
|
36
|
-
if (isDashboardArbitraryAttributeFilter(
|
|
37
|
-
return
|
|
47
|
+
if (isDashboardArbitraryAttributeFilter(dashboardFilter)) {
|
|
48
|
+
return dashboardFilter.arbitraryAttributeFilter.values.length > 0;
|
|
38
49
|
}
|
|
39
|
-
if (isDashboardMatchAttributeFilter(
|
|
40
|
-
return
|
|
50
|
+
if (isDashboardMatchAttributeFilter(dashboardFilter)) {
|
|
51
|
+
return dashboardFilter.matchAttributeFilter.literal.length > 0;
|
|
41
52
|
}
|
|
42
53
|
return true;
|
|
43
54
|
}, []);
|
|
44
|
-
const renderFilter = useCallback((filter, AttributeFilterComponent) => {
|
|
55
|
+
const renderFilter = useCallback((filter, AttributeFilterComponent, MeasureValueFilterComponent) => {
|
|
56
|
+
if (isFilterBarMeasureValueFilter(filter)) {
|
|
57
|
+
const localId = dashboardFilterLocalIdentifier(filter.filter);
|
|
58
|
+
const measureValueFilterMode = measureValueFiltersModeMap.get(localId) ??
|
|
59
|
+
DashboardAttributeFilterConfigModeValues.ACTIVE;
|
|
60
|
+
const DashboardMeasureValueFilterComponent = CustomDashboardMeasureValueFilterComponent ??
|
|
61
|
+
DashboardMeasureValueFilterComponentProvider(filter.filter) ??
|
|
62
|
+
DefaultDashboardMeasureValueFilter;
|
|
63
|
+
return (_jsx(DashboardMeasureValueFilterComponent, { filter: filter.filter, filterIndex: filter.filterIndex, readonly: measureValueFilterMode === DashboardAttributeFilterConfigModeValues.READONLY, onMeasureValueFilterChanged: onMeasureValueFilterChanged, MeasureValueFilterComponent: MeasureValueFilterComponent, passDropdownButton: false }));
|
|
64
|
+
}
|
|
45
65
|
const localId = dashboardAttributeFilterItemLocalIdentifier(filter.filter);
|
|
46
66
|
const displayAsLabel = attributeFiltersDisplayAsLabelMap.get(localId);
|
|
47
67
|
const attributeFilterMode = attributeFiltersModeMap.get(localId);
|
|
@@ -53,10 +73,17 @@ export function DefaultDashboardFilterGroup(props) {
|
|
|
53
73
|
attributeFiltersDisplayAsLabelMap,
|
|
54
74
|
attributeFiltersModeMap,
|
|
55
75
|
CustomDashboardAttributeFilterComponent,
|
|
76
|
+
CustomDashboardMeasureValueFilterComponent,
|
|
77
|
+
DashboardMeasureValueFilterComponentProvider,
|
|
78
|
+
measureValueFiltersModeMap,
|
|
79
|
+
onMeasureValueFilterChanged,
|
|
56
80
|
]);
|
|
57
81
|
const itemFilters = useMemo(() => {
|
|
58
82
|
return groupItem.filters
|
|
59
83
|
.map((filter) => {
|
|
84
|
+
if (isFilterBarMeasureValueFilter(filter)) {
|
|
85
|
+
return filter;
|
|
86
|
+
}
|
|
60
87
|
if (!isFilterBarAttributeFilter(filter)) {
|
|
61
88
|
return undefined;
|
|
62
89
|
}
|
|
@@ -74,6 +101,14 @@ export function DefaultDashboardFilterGroup(props) {
|
|
|
74
101
|
})
|
|
75
102
|
.filter((filter) => filter !== undefined)
|
|
76
103
|
.filter((filter) => {
|
|
104
|
+
if (isDashboardMeasureValueFilter(filter.filter)) {
|
|
105
|
+
if (!onMeasureValueFilterChanged) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const localId = dashboardFilterLocalIdentifier(filter.filter);
|
|
109
|
+
return (measureValueFiltersModeMap.get(localId) !==
|
|
110
|
+
DashboardAttributeFilterConfigModeValues.HIDDEN);
|
|
111
|
+
}
|
|
77
112
|
const localId = dashboardAttributeFilterItemLocalIdentifier(filter.filter);
|
|
78
113
|
return (attributeFiltersModeMap.get(localId) !== DashboardAttributeFilterConfigModeValues.HIDDEN);
|
|
79
114
|
})
|
|
@@ -91,11 +126,16 @@ export function DefaultDashboardFilterGroup(props) {
|
|
|
91
126
|
groupItem.filters,
|
|
92
127
|
supportElementUris,
|
|
93
128
|
attributeFiltersModeMap,
|
|
129
|
+
measureValueFiltersModeMap,
|
|
94
130
|
enableArbitraryFilter,
|
|
95
131
|
enableMatchFilter,
|
|
132
|
+
onMeasureValueFilterChanged,
|
|
96
133
|
]);
|
|
97
134
|
const filterDependenciesByLocalIdUnstable = useMemo(() => {
|
|
98
135
|
return new Map(itemFilters.map((filter) => {
|
|
136
|
+
if (isFilterBarMeasureValueFilter(filter)) {
|
|
137
|
+
return [dashboardFilterLocalIdentifier(filter.filter), false];
|
|
138
|
+
}
|
|
99
139
|
const localId = dashboardAttributeFilterItemLocalIdentifier(filter.filter);
|
|
100
140
|
// Match filter type has no parent filter dependencies by design
|
|
101
141
|
if (isDashboardMatchAttributeFilter(filter.filter)) {
|
|
@@ -125,5 +165,5 @@ export function DefaultDashboardFilterGroup(props) {
|
|
|
125
165
|
});
|
|
126
166
|
return (_jsx(AttributeFilterDependencyTooltip, { tooltipContent: filterDependencyIconTooltip, ariaLabel: filterDependencyIconAriaLabel }));
|
|
127
167
|
}, [capabilities.supportsKeepingDependentFiltersSelection, filterDependenciesByLocalId, intl]);
|
|
128
|
-
return (_jsx(FilterGroup, { title: groupItem.groupConfig.title, filters: itemFilters, getFilterIdentifier: getFilterIdentifier,
|
|
168
|
+
return (_jsx(FilterGroup, { title: groupItem.groupConfig.title, filters: itemFilters, getFilterIdentifier: getFilterIdentifier, isFilterActive: isFilterActive, renderFilter: renderFilter, getTitleExtension: getTitleExtension }));
|
|
129
169
|
}
|
|
@@ -52,7 +52,7 @@ export function DefaultFilterBarItem(props) {
|
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
54
|
const CustomFilterGroupComponent = DashboardFilterGroupComponentProvider?.(item.groupConfig) ?? DefaultDashboardFilterGroup;
|
|
55
|
-
return (_jsx(CustomFilterGroupComponent, { groupItem: item, onAttributeFilterChanged: onAttributeFilterChanged }));
|
|
55
|
+
return (_jsx(CustomFilterGroupComponent, { groupItem: item, onAttributeFilterChanged: onAttributeFilterChanged, onMeasureValueFilterChanged: onMeasureValueFilterChanged }));
|
|
56
56
|
}
|
|
57
57
|
if (isFilterBarAttributeFilter(item)) {
|
|
58
58
|
const { filter, filterIndex, workingFilter } = item;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
|
-
import { dashboardAttributeFilterItemLocalIdentifier, isDashboardAttributeFilterItem, isDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
2
|
+
import { dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, isDashboardAttributeFilterItem, isDashboardDateFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
|
|
3
3
|
import { isFilterBarFilterGroupItem, isFilterBarFilterPlaceholder, } from "./useFiltersWithAddedPlaceholder.js";
|
|
4
4
|
function findGroupForFilter(item, filterGroupsConfig) {
|
|
5
5
|
return filterGroupsConfig?.groups.find((group) => group.filters.some((filter) => {
|
|
@@ -9,6 +9,9 @@ function findGroupForFilter(item, filterGroupsConfig) {
|
|
|
9
9
|
if (isDashboardDateFilter(item)) {
|
|
10
10
|
return filter.filterLocalIdentifier === item.dateFilter.localIdentifier;
|
|
11
11
|
}
|
|
12
|
+
if (isDashboardMeasureValueFilter(item)) {
|
|
13
|
+
return filter.filterLocalIdentifier === dashboardFilterLocalIdentifier(item);
|
|
14
|
+
}
|
|
12
15
|
return false;
|
|
13
16
|
}));
|
|
14
17
|
}
|
|
@@ -36,7 +36,7 @@ function MeasureValueFilterVisibilityIcon({ visibilityIcon, disabled, }) {
|
|
|
36
36
|
* @alpha
|
|
37
37
|
*/
|
|
38
38
|
export function DefaultDashboardMeasureValueFilter(props) {
|
|
39
|
-
const { filter, readonly, autoOpen, onMeasureValueFilterChanged, onMeasureValueFilterClose } = props;
|
|
39
|
+
const { filter, readonly, autoOpen, onMeasureValueFilterChanged, onMeasureValueFilterClose, MeasureValueFilterComponent: CustomMeasureValueFilterComponent, passDropdownButton = true, } = props;
|
|
40
40
|
const intl = useIntl();
|
|
41
41
|
const isEditMode = useDashboardSelector(selectIsInEditMode);
|
|
42
42
|
const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
|
|
@@ -146,8 +146,8 @@ export function DefaultDashboardMeasureValueFilter(props) {
|
|
|
146
146
|
}, []);
|
|
147
147
|
const BodyComponent = isConfigurationOpen ? ConfigurationBodyComponent : undefined;
|
|
148
148
|
const DropdownButtonComponent = useMemo(() => {
|
|
149
|
-
function DashboardMeasureValueFilterDropdownButton({ isActive, buttonTitle, onClick, }) {
|
|
150
|
-
return (_jsx(UiControlButton, { title: buttonTitle, titleClassName: "s-mvf-button-title", subtitle: _jsx("span", { className: "gd-measure-value-filter-dropdown-button-selected-items__next s-mvf-button-subtitle", children: conditionLabel }), titleExtension: _jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly }), isOpen: isActive, isDraggable: isEditMode, disabled: readonly, disabledTooltip: readonly ? intl.formatMessage({ id: "filters.locked.filter.tooltip" }) : undefined, onClick: onClick, className: cx("gd-mvf-dashboard-filter-button__next", "s-dashboard-mvf-button", {
|
|
149
|
+
function DashboardMeasureValueFilterDropdownButton({ isActive, buttonTitle, buttonSubtitle, buttonTitleExtension, disabled, onClick, }) {
|
|
150
|
+
return (_jsx(UiControlButton, { title: buttonTitle, titleClassName: "s-mvf-button-title", subtitle: _jsx("span", { className: "gd-measure-value-filter-dropdown-button-selected-items__next s-mvf-button-subtitle", children: buttonSubtitle ?? conditionLabel }), titleExtension: buttonTitleExtension ?? (_jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly })), isOpen: isActive, isDraggable: isEditMode, disabled: disabled ?? readonly, disabledTooltip: readonly ? intl.formatMessage({ id: "filters.locked.filter.tooltip" }) : undefined, onClick: onClick, className: cx("gd-mvf-dashboard-filter-button__next", "s-dashboard-mvf-button", {
|
|
151
151
|
"gd-is-active": isActive,
|
|
152
152
|
"gd-is-draggable": isEditMode,
|
|
153
153
|
disabled: readonly,
|
|
@@ -155,5 +155,6 @@ export function DefaultDashboardMeasureValueFilter(props) {
|
|
|
155
155
|
}
|
|
156
156
|
return DashboardMeasureValueFilterDropdownButton;
|
|
157
157
|
}, [conditionLabel, intl, isEditMode, readonly, visibilityIcon]);
|
|
158
|
-
|
|
158
|
+
const MeasureValueFilterComponent = CustomMeasureValueFilterComponent ?? MeasureValueFilter;
|
|
159
|
+
return (_jsx(MeasureValueFilterComponent, { ...getSharedDashboardMvfProps(mvfData), onApply: handleApply, buttonSubtitle: conditionLabel, buttonTitleExtension: _jsx(MeasureValueFilterVisibilityIcon, { visibilityIcon: visibilityIcon, disabled: readonly }), buttonDisabled: readonly, onChange: isApplyAllAtOnceEnabledAndSet ? handleChange : undefined, withoutApply: isApplyAllAtOnceEnabledAndSet, BodyComponent: BodyComponent, DropdownActionsComponent: DropdownActionsComponent, DropdownButtonComponent: passDropdownButton ? DropdownButtonComponent : undefined, onCancel: handleClose, autoOpen: autoOpen }));
|
|
159
160
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ComponentType } from "react";
|
|
2
2
|
import { type IDashboardMeasureValueFilter, type MeasureValueFilterCondition } from "@gooddata/sdk-model";
|
|
3
|
+
import { type IMeasureValueFilterProps } from "@gooddata/sdk-ui-filters";
|
|
3
4
|
/**
|
|
4
5
|
* @alpha
|
|
5
6
|
*/
|
|
@@ -39,6 +40,19 @@ export interface IDashboardMeasureValueFilterProps {
|
|
|
39
40
|
* undefined, the active tab's state is used.
|
|
40
41
|
*/
|
|
41
42
|
tabId?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Optional custom measure value filter component to change or extend the default rendered one.
|
|
45
|
+
*
|
|
46
|
+
* @alpha
|
|
47
|
+
*/
|
|
48
|
+
MeasureValueFilterComponent?: ComponentType<IMeasureValueFilterProps>;
|
|
49
|
+
/**
|
|
50
|
+
* Controls whether the internal dashboard dropdown button should be passed to the SDK component.
|
|
51
|
+
* When false, the SDK component can inject its own button, for example when rendered in a filter group.
|
|
52
|
+
*
|
|
53
|
+
* @alpha
|
|
54
|
+
*/
|
|
55
|
+
passDropdownButton?: boolean;
|
|
42
56
|
}
|
|
43
57
|
/**
|
|
44
58
|
* @alpha
|
|
@@ -154,6 +154,7 @@ import { IMeasure } from '@gooddata/sdk-model';
|
|
|
154
154
|
import { IMeasureDescriptor } from '@gooddata/sdk-model';
|
|
155
155
|
import { IMeasureMetadataObject } from '@gooddata/sdk-model';
|
|
156
156
|
import { IMeasureValueFilter } from '@gooddata/sdk-model';
|
|
157
|
+
import { IMeasureValueFilterProps } from '@gooddata/sdk-ui-filters';
|
|
157
158
|
import { INegativeAttributeFilter } from '@gooddata/sdk-model';
|
|
158
159
|
import { INotificationChannelIdentifier } from '@gooddata/sdk-model';
|
|
159
160
|
import { INotificationChannelMetadataObject } from '@gooddata/sdk-model';
|
|
@@ -9071,7 +9072,9 @@ export declare interface IDashboardFilterContextWorkingSelectionApplied extends
|
|
|
9071
9072
|
export declare interface IDashboardFilterGroupProps {
|
|
9072
9073
|
groupItem: IFilterBarFilterGroupItem;
|
|
9073
9074
|
onAttributeFilterChanged: (filter: DashboardAttributeFilterItem) => void;
|
|
9075
|
+
onMeasureValueFilterChanged?: (filter: IDashboardMeasureValueFilter, conditions: MeasureValueFilterCondition[] | undefined, isWorkingSelectionChange?: boolean) => void;
|
|
9074
9076
|
DashboardAttributeFilterComponent?: CustomDashboardAttributeFilterComponent;
|
|
9077
|
+
DashboardMeasureValueFilterComponent?: CustomDashboardMeasureValueFilterComponent;
|
|
9075
9078
|
}
|
|
9076
9079
|
|
|
9077
9080
|
/**
|
|
@@ -10927,6 +10930,19 @@ export declare interface IDashboardMeasureValueFilterProps {
|
|
|
10927
10930
|
* undefined, the active tab's state is used.
|
|
10928
10931
|
*/
|
|
10929
10932
|
tabId?: string;
|
|
10933
|
+
/**
|
|
10934
|
+
* Optional custom measure value filter component to change or extend the default rendered one.
|
|
10935
|
+
*
|
|
10936
|
+
* @alpha
|
|
10937
|
+
*/
|
|
10938
|
+
MeasureValueFilterComponent?: ComponentType<IMeasureValueFilterProps>;
|
|
10939
|
+
/**
|
|
10940
|
+
* Controls whether the internal dashboard dropdown button should be passed to the SDK component.
|
|
10941
|
+
* When false, the SDK component can inject its own button, for example when rendered in a filter group.
|
|
10942
|
+
*
|
|
10943
|
+
* @alpha
|
|
10944
|
+
*/
|
|
10945
|
+
passDropdownButton?: boolean;
|
|
10930
10946
|
}
|
|
10931
10947
|
|
|
10932
10948
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-dashboard",
|
|
3
|
-
"version": "11.37.0-alpha.
|
|
3
|
+
"version": "11.37.0-alpha.3",
|
|
4
4
|
"description": "GoodData SDK - Dashboard Component",
|
|
5
5
|
"license": "LicenseRef-LICENSE",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -60,19 +60,19 @@
|
|
|
60
60
|
"ts-invariant": "0.10.3",
|
|
61
61
|
"tslib": "2.8.1",
|
|
62
62
|
"uuid": "11.1.0",
|
|
63
|
-
"@gooddata/sdk-backend-base": "11.37.0-alpha.
|
|
64
|
-
"@gooddata/sdk-backend-spi": "11.37.0-alpha.
|
|
65
|
-
"@gooddata/sdk-
|
|
66
|
-
"@gooddata/sdk-ui
|
|
67
|
-
"@gooddata/sdk-ui-
|
|
68
|
-
"@gooddata/sdk-
|
|
69
|
-
"@gooddata/sdk-ui-filters": "11.37.0-alpha.
|
|
70
|
-
"@gooddata/sdk-ui-
|
|
71
|
-
"@gooddata/sdk-ui-
|
|
72
|
-
"@gooddata/sdk-ui-
|
|
73
|
-
"@gooddata/sdk-ui-
|
|
74
|
-
"@gooddata/
|
|
75
|
-
"@gooddata/
|
|
63
|
+
"@gooddata/sdk-backend-base": "11.37.0-alpha.3",
|
|
64
|
+
"@gooddata/sdk-backend-spi": "11.37.0-alpha.3",
|
|
65
|
+
"@gooddata/sdk-model": "11.37.0-alpha.3",
|
|
66
|
+
"@gooddata/sdk-ui": "11.37.0-alpha.3",
|
|
67
|
+
"@gooddata/sdk-ui-charts": "11.37.0-alpha.3",
|
|
68
|
+
"@gooddata/sdk-ui-ext": "11.37.0-alpha.3",
|
|
69
|
+
"@gooddata/sdk-ui-filters": "11.37.0-alpha.3",
|
|
70
|
+
"@gooddata/sdk-ui-geo": "11.37.0-alpha.3",
|
|
71
|
+
"@gooddata/sdk-ui-kit": "11.37.0-alpha.3",
|
|
72
|
+
"@gooddata/sdk-ui-pivot": "11.37.0-alpha.3",
|
|
73
|
+
"@gooddata/sdk-ui-theme-provider": "11.37.0-alpha.3",
|
|
74
|
+
"@gooddata/sdk-ui-vis-commons": "11.37.0-alpha.3",
|
|
75
|
+
"@gooddata/util": "11.37.0-alpha.3"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@microsoft/api-documenter": "^7.17.0",
|
|
@@ -118,12 +118,12 @@
|
|
|
118
118
|
"typescript": "5.9.3",
|
|
119
119
|
"vitest": "4.1.0",
|
|
120
120
|
"vitest-dom": "0.1.1",
|
|
121
|
-
"@gooddata/eslint-config": "11.37.0-alpha.
|
|
122
|
-
"@gooddata/i18n-toolkit": "11.37.0-alpha.
|
|
123
|
-
"@gooddata/oxlint-config": "11.37.0-alpha.
|
|
124
|
-
"@gooddata/reference-workspace": "11.37.0-alpha.
|
|
125
|
-
"@gooddata/
|
|
126
|
-
"@gooddata/
|
|
121
|
+
"@gooddata/eslint-config": "11.37.0-alpha.3",
|
|
122
|
+
"@gooddata/i18n-toolkit": "11.37.0-alpha.3",
|
|
123
|
+
"@gooddata/oxlint-config": "11.37.0-alpha.3",
|
|
124
|
+
"@gooddata/reference-workspace": "11.37.0-alpha.3",
|
|
125
|
+
"@gooddata/sdk-backend-mockingbird": "11.37.0-alpha.3",
|
|
126
|
+
"@gooddata/stylelint-config": "11.37.0-alpha.3"
|
|
127
127
|
},
|
|
128
128
|
"peerDependencies": {
|
|
129
129
|
"react": "^18.0.0 || ^19.0.0",
|