@gooddata/sdk-ui-dashboard 11.68.0-alpha.2 → 11.68.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 +3 -3
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/automation/index.d.ts.map +1 -1
- package/esm/_staging/automation/index.js +4 -3
- package/esm/_staging/dashboard/flexibleLayout/facade/item.d.ts.map +1 -1
- package/esm/_staging/dashboard/flexibleLayout/facade/item.js +2 -2
- package/esm/_staging/dashboard/flexibleLayout/facade/section.d.ts.map +1 -1
- package/esm/_staging/dashboard/flexibleLayout/facade/section.js +4 -4
- package/esm/_staging/dateFilterConfig/validation.d.ts.map +1 -1
- package/esm/_staging/dateFilterConfig/validation.js +3 -2
- package/esm/_staging/drills/drillingUtils.d.ts.map +1 -1
- package/esm/_staging/drills/drillingUtils.js +2 -2
- package/esm/_staging/objectUtils/setOrDelete.d.ts.map +1 -1
- package/esm/_staging/objectUtils/setOrDelete.js +3 -3
- package/esm/_staging/sharedHooks/useEventToastMessage.d.ts.map +1 -1
- package/esm/_staging/sharedHooks/useEventToastMessage.js +3 -3
- package/esm/kdaDialog/components/bars/AttributeBar.d.ts.map +1 -1
- package/esm/kdaDialog/components/bars/AttributeBar.js +11 -6
- package/esm/kdaDialog/composition/AddFilterButton.d.ts +3 -1
- package/esm/kdaDialog/composition/AddFilterButton.d.ts.map +1 -1
- package/esm/kdaDialog/composition/AddFilterButton.js +4 -4
- package/esm/kdaDialog/composition/FiltersBar.d.ts.map +1 -1
- package/esm/kdaDialog/composition/FiltersBar.js +23 -1
- package/esm/kdaDialog/composition/KeyDriversFooter.d.ts.map +1 -1
- package/esm/kdaDialog/composition/KeyDriversFooter.js +8 -5
- package/esm/model/commandHandlers/common/drillRevalidationUtils.d.ts.map +1 -1
- package/esm/model/commandHandlers/common/drillRevalidationUtils.js +3 -3
- package/esm/model/commandHandlers/common/validateDrills.d.ts.map +1 -1
- package/esm/model/commandHandlers/common/validateDrills.js +2 -2
- package/esm/model/commandHandlers/dashboard/changeSharingHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/changeSharingHandler.js +2 -2
- package/esm/model/commandHandlers/dashboard/common/filterViews.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/filterViews.js +6 -5
- package/esm/model/commandHandlers/dashboard/common/stateInitializers.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/stateInitializers.js +3 -2
- package/esm/model/commandHandlers/dashboard/saveDashboardHandler.js +1 -1
- package/esm/model/commandHandlers/drill/common/filterValuesResolver.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/common/filterValuesResolver.js +2 -2
- package/esm/model/commandHandlers/drill/crossFilteringHandler.js +2 -2
- package/esm/model/commandHandlers/drill/drillToDashboardHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/drillToDashboardHandler.js +4 -3
- package/esm/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.js +2 -2
- package/esm/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.js +2 -2
- package/esm/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.js +2 -2
- package/esm/model/commandHandlers/filterContext/common.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/common.js +4 -4
- package/esm/model/commandHandlers/layout/addLayoutSectionHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/addLayoutSectionHandler.js +2 -2
- package/esm/model/commandHandlers/layout/addSectionItemsHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/addSectionItemsHandler.js +3 -3
- package/esm/model/commandHandlers/layout/removeLayoutSectionHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/removeLayoutSectionHandler.js +2 -2
- package/esm/model/commandHandlers/layout/replaceSectionItemHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/replaceSectionItemHandler.js +3 -3
- package/esm/model/commandHandlers/layout/validation/itemValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/validation/itemValidation.js +2 -2
- package/esm/model/commandHandlers/layout/validation/layoutValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/layout/validation/layoutValidation.js +6 -6
- package/esm/model/commandHandlers/parameters/changeParameterValuesHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/parameters/changeParameterValuesHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/validation/filterValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/validation/filterValidation.js +6 -5
- package/esm/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/validation/insightDrillDefinitionUtils.js +5 -6
- package/esm/model/events/base.js +3 -3
- package/esm/model/events/dashboard.d.ts +11 -4
- package/esm/model/events/dashboard.d.ts.map +1 -1
- package/esm/model/events/util.d.ts.map +1 -1
- package/esm/model/events/util.js +3 -3
- package/esm/model/react/useWidgetFilters.d.ts.map +1 -1
- package/esm/model/react/useWidgetFilters.js +2 -2
- package/esm/model/store/catalog/catalogSelectors.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogSelectors.js +7 -6
- package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
- package/esm/model/store/meta/metaSelectors.js +12 -12
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.d.ts.map +1 -1
- package/esm/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.js +3 -3
- package/esm/model/store/tabs/filterContext/filterContextSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/filterContext/filterContextSelectors.js +10 -9
- package/esm/model/store/tabs/layout/layoutSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/layout/layoutSelectors.js +3 -2
- package/esm/model/store/tabs/parameters/parametersSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/parameters/parametersSelectors.js +3 -2
- package/esm/model/types/dateFilterTypes.d.ts.map +1 -1
- package/esm/model/types/dateFilterTypes.js +3 -3
- package/esm/model/types/layoutTypes.d.ts.map +1 -1
- package/esm/model/types/layoutTypes.js +6 -5
- package/esm/model/types/widgetTypes.d.ts.map +1 -1
- package/esm/model/types/widgetTypes.js +2 -2
- package/esm/model/utils/filterResolver.d.ts.map +1 -1
- package/esm/model/utils/filterResolver.js +2 -2
- package/esm/plugins/customizationApis/fluidLayoutCustomizer.d.ts.map +1 -1
- package/esm/plugins/customizationApis/fluidLayoutCustomizer.js +4 -3
- package/esm/presentation/automations/alerting/state/useAlertFormValidation.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/state/useAlertFormValidation.js +2 -2
- package/esm/presentation/automations/alerting/utils/transformation.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/utils/transformation.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelectRenderer.js +2 -2
- package/esm/presentation/automations/shared/automationFilters/utils.d.ts.map +1 -1
- package/esm/presentation/automations/shared/automationFilters/utils.js +6 -6
- package/esm/presentation/automations/shared/utils/automationUtils.d.ts.map +1 -1
- package/esm/presentation/automations/shared/utils/automationUtils.js +4 -3
- package/esm/presentation/dashboard/defaultDashboardThemeModifier.d.ts.map +1 -1
- package/esm/presentation/dashboard/defaultDashboardThemeModifier.js +4 -3
- package/esm/presentation/dashboard/types.d.ts +2 -0
- package/esm/presentation/dashboard/types.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/useDialogData.js +2 -2
- package/esm/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/ParameterDetail.js +3 -3
- package/esm/presentation/drill/types.d.ts.map +1 -1
- package/esm/presentation/drill/types.js +10 -9
- package/esm/presentation/drill/utils/drillDownUtils.d.ts.map +1 -1
- package/esm/presentation/drill/utils/drillDownUtils.js +3 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributeListItem.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributeListItem.js +2 -3
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.js +3 -3
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.js +2 -2
- package/esm/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js +2 -2
- package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/hooks/useResetFiltersButton.js +3 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.js +2 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.js +3 -3
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.js +2 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.js +2 -2
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.js +3 -2
- package/esm/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.js +2 -2
- package/esm/presentation/widget/common/configuration/utils.d.ts.map +1 -1
- package/esm/presentation/widget/common/configuration/utils.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/useDashboardInsightDrills.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/Insight/useDashboardInsightDrills.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogInsightDrills.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogInsightDrills.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.js +3 -2
- package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.js +5 -5
- package/esm/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useDrillConfigIncompleteItems.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/useDrillConfigIncompleteItems.js +3 -3
- package/esm/presentation/widget/richText/RestrictedReferencesDialog.js +1 -1
- package/esm/sdk-ui-dashboard.d.ts +13 -4
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +5 -5
- package/esm/widgets/placeholders/types.js +4 -4
- package/package.json +23 -23
- package/styles/css/configurationPanel.css +0 -6
- package/styles/css/configurationPanel.css.map +1 -1
- package/styles/css/filterBar.css +0 -20
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/main.css +2 -27
- package/styles/css/main.css.map +1 -1
- package/styles/scss/configurationPanel.scss +0 -8
- package/styles/scss/filterBar.scss +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDependentDateFiltersConfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDependentDateFiltersConfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,yBAAyB,EAE9B,KAAK,oBAAoB,EAE5B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AAOtG,wBAAgB,oCAAoC,CAChD,mBAAmB,EAAE,oBAAoB,EAAE,EAC3C,aAAa,EAAE,yBAAyB,EACxC,gBAAgB,CAAC,EAAE,oBAAoB;;;yCA6B7B,6BAA6B,cACvB,OAAO,gBACL,OAAO;;;;EAmG5B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useMemo, useState } from "react";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
3
|
import { invariant } from "ts-invariant";
|
|
5
4
|
import { generateDateFilterLocalIdentifier } from "@gooddata/sdk-backend-base";
|
|
6
5
|
import { isUriRef, } from "@gooddata/sdk-model";
|
|
6
|
+
import { _isEqual } from "@gooddata/util";
|
|
7
7
|
import { setAttributeFilterDependentDateFilters } from "../../../../../../model/commands/filters.js";
|
|
8
8
|
import { useDispatchDashboardCommand } from "../../../../../../model/react/useDispatchDashboardCommand.js";
|
|
9
9
|
import { useDependentCommonDateFilterConfigurationState, useDependentDateFilterConfigurationState, } from "./useDependentDateFilterConfigurationState.js";
|
|
@@ -38,7 +38,7 @@ export function useDependentDateFiltersConfiguration(neighborDateFilters, curren
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
const onDependentDateFiltersConfigurationChanged = useMemo(() => {
|
|
41
|
-
return !
|
|
41
|
+
return !_isEqual(dependentDateFilters, originalState);
|
|
42
42
|
}, [dependentDateFilters, originalState]);
|
|
43
43
|
const onConfigurationClose = useCallback(() => {
|
|
44
44
|
setDependentDateFilters(originalState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLimitingItemsConfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useLimitingItemsConfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQlF,eAAO,MAAM,6BAA6B,kBAAmB,yBAAyB;;;mCAoBhC,MAAM,EAAE;;;CAqB7D,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useMemo, useState } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { _isEqual } from "@gooddata/util";
|
|
4
4
|
import { setAttributeFilterLimitingItems } from "../../../../../../model/commands/dashboard.js";
|
|
5
5
|
import { useDashboardSelector } from "../../../../../../model/react/DashboardStoreProvider.js";
|
|
6
6
|
import { useDashboardCommandProcessing } from "../../../../../../model/react/useDashboardCommandProcessing.js";
|
|
@@ -15,12 +15,12 @@ export const useLimitingItemsConfiguration = (currentFilter) => {
|
|
|
15
15
|
const currentFilterLocalId = currentFilterConfig?.localIdentifier || currentFilter?.attributeFilter.localIdentifier;
|
|
16
16
|
const originalLimitingItems = useMemo(() => currentFilter.attributeFilter.validateElementsBy ?? [], [currentFilter]);
|
|
17
17
|
const [limitingItems, setLimitingItems] = useState(originalLimitingItems ?? []);
|
|
18
|
-
const limitingItemsChanged = !
|
|
18
|
+
const limitingItemsChanged = !_isEqual(originalLimitingItems, limitingItems);
|
|
19
19
|
const onLimitingItemsUpdate = useCallback((value) => {
|
|
20
20
|
setLimitingItems(value);
|
|
21
21
|
}, []);
|
|
22
22
|
const onLimitingItemsChange = useCallback(() => {
|
|
23
|
-
if (!
|
|
23
|
+
if (!_isEqual(originalLimitingItems, limitingItems)) {
|
|
24
24
|
changeAttributeFilterLimitingItems(currentFilterLocalId, limitingItems);
|
|
25
25
|
}
|
|
26
26
|
}, [currentFilterLocalId, originalLimitingItems, changeAttributeFilterLimitingItems, limitingItems]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useParentsConfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useParentsConfiguration.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAE9B,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,uDAAuD,CAAC;AAIjH,wBAAgB,uBAAuB,CACnC,eAAe,EAAE,4BAA4B,EAAE,EAC/C,aAAa,EAAE,yBAAyB;;;sCAkBnB,MAAM,cACX,OAAO,kBACH,MAAM,EAAE,GAAG,SAAS;oDAuBe,MAAM,qBAAqB,MAAM;;;EAsE3F"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useMemo, useState } from "react";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
3
|
import { invariant } from "ts-invariant";
|
|
5
4
|
import { useBackend } from "@gooddata/sdk-ui";
|
|
5
|
+
import { _isEqual } from "@gooddata/util";
|
|
6
6
|
import { setAttributeFilterParents } from "../../../../../../model/commands/filters.js";
|
|
7
7
|
import { useDispatchDashboardCommand } from "../../../../../../model/react/useDispatchDashboardCommand.js";
|
|
8
8
|
import { useOriginalConfigurationState } from "./useOriginalConfigurationState.js";
|
|
@@ -41,7 +41,7 @@ export function useParentsConfiguration(neighborFilters, currentFilter) {
|
|
|
41
41
|
setParents(changedParentItems);
|
|
42
42
|
}
|
|
43
43
|
const configurationChanged = useMemo(() => {
|
|
44
|
-
return !
|
|
44
|
+
return !_isEqual(parents, originalState);
|
|
45
45
|
}, [parents, originalState]);
|
|
46
46
|
const onParentFiltersChange = useCallback(() => {
|
|
47
47
|
// dispatch the command only if the configuration changed
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2021-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useMemo } from "react";
|
|
4
|
-
import { isEmpty } from "lodash-es";
|
|
5
4
|
import { useIntl } from "react-intl";
|
|
6
5
|
import { DashboardAttributeFilterConfigModeValues, dashboardAttributeFilterItemFilterElementsBy, dashboardAttributeFilterItemFilterElementsByDate, dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, getSelectedElementsCount, isAllDashboardMeasureValueFilter, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardMatchAttributeFilter, isDashboardMeasureValueFilter, } from "@gooddata/sdk-model";
|
|
7
6
|
import { AttributeFilterDependencyTooltip, FilterGroup, useDeepEqualRefStablizer, } from "@gooddata/sdk-ui-filters";
|
|
7
|
+
import { _isEmpty } from "@gooddata/util";
|
|
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";
|
|
@@ -134,7 +134,7 @@ export function DefaultDashboardFilterGroup(props) {
|
|
|
134
134
|
}
|
|
135
135
|
const filterElementsBy = dashboardAttributeFilterItemFilterElementsBy(filter.filter);
|
|
136
136
|
const filterElementsByDate = dashboardAttributeFilterItemFilterElementsByDate(filter.filter);
|
|
137
|
-
const isDependent = !
|
|
137
|
+
const isDependent = !_isEmpty(filterElementsBy) || !_isEmpty(filterElementsByDate);
|
|
138
138
|
return [localId, isDependent];
|
|
139
139
|
}));
|
|
140
140
|
}, [itemFilters]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResetFiltersButton.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/hooks/useResetFiltersButton.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useResetFiltersButton.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/hooks/useResetFiltersButton.ts"],"names":[],"mappings":"AAsLA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAO;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,aAAa,CAAC;IACjC,YAAY,EAAE,MAAM,IAAI,CAAC;CAoK5B,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// (C) 2023-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useMemo } from "react";
|
|
3
|
-
import { difference,
|
|
3
|
+
import { difference, partition } from "lodash-es";
|
|
4
4
|
import { generateDateFilterLocalIdentifier } from "@gooddata/sdk-backend-base";
|
|
5
5
|
import { dashboardAttributeFilterItemLocalIdentifier, dashboardFilterLocalIdentifier, isDashboardAttributeFilterItem, isDashboardCommonDateFilter, isDashboardDateFilter, isDashboardMeasureValueFilter, isNoopAllTimeDashboardDateFilter, newAllTimeDashboardDateFilter, } from "@gooddata/sdk-model";
|
|
6
6
|
import { useToastMessage } from "@gooddata/sdk-ui-kit";
|
|
7
|
+
import { _isEqual } from "@gooddata/util";
|
|
7
8
|
import { messages } from "../../../../locales.js";
|
|
8
9
|
import { changeFilterContextSelectionByParams, removeAttributeFilters, resetFilterContextWorkingSelection, } from "../../../../model/commands/filters.js";
|
|
9
10
|
import { changeParameterValues } from "../../../../model/commands/parameters.js";
|
|
@@ -91,7 +92,7 @@ const computeResetEligibility = (isEditMode, normalizedCurrentFilters, normalize
|
|
|
91
92
|
if (isEditMode) {
|
|
92
93
|
return { canResetFilters: false, canResetWorkingContext: false, canResetParameters: false };
|
|
93
94
|
}
|
|
94
|
-
const filtersChanged = !
|
|
95
|
+
const filtersChanged = !_isEqual(normalizedCurrentFilters, normalizedOriginalFilters);
|
|
95
96
|
const hasCrossFilterAddedFilters = newlyAddedFiltersCount > 0;
|
|
96
97
|
// If the cross filter add some filters, we should allow the reset
|
|
97
98
|
return {
|
package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayout.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardLayout.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,OAAO,CAAC;AAoBxE,OAAO,EACH,KAAK,2BAA2B,EAInC,MAAM,iBAAiB,CAAC;AAMzB;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,EACrC,MAAM,EACN,gBAA0C,EAC1C,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,UAAmB,EACnB,WAAW,GACd,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAAG,YAAY,CA6HrD"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
// (C) 2007-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useMemo, useRef } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
|
-
import {
|
|
5
|
+
import { _isEqual } from "@gooddata/util";
|
|
6
6
|
import { DashboardLayoutFacade } from "../../../_staging/dashboard/flexibleLayout/facade/layout.js";
|
|
7
7
|
import { getItemIndex, serializeLayoutSectionPath } from "../../../_staging/layout/coordinates.js";
|
|
8
8
|
import { layoutTransformer } from "../../../_staging/slideshow/layoutTransformer.js";
|
|
@@ -46,7 +46,7 @@ export function DashboardLayout({ layout, sectionKeyGetter = defaultSectionKeyGe
|
|
|
46
46
|
return layoutRef?.current ? layoutRef.current.getBoundingClientRect() : emptyDOMRect;
|
|
47
47
|
}, []);
|
|
48
48
|
const widgetRendererWrapped = useCallback((renderProps) => {
|
|
49
|
-
const isResizedByLayoutSizingStrategy = resizedItemPositions.some((position) =>
|
|
49
|
+
const isResizedByLayoutSizingStrategy = resizedItemPositions.some((position) => _isEqual(position, [
|
|
50
50
|
renderProps.item.section().index().sectionIndex,
|
|
51
51
|
getItemIndex(renderProps.item.index()),
|
|
52
52
|
]));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2019-2026 GoodData Corporation
|
|
3
3
|
import { useMemo, useState } from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
import { determineWidthForScreen } from "../../../_staging/layout/sizing.js";
|
|
6
6
|
import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js";
|
|
7
7
|
import { useSectionDescriptionExportData } from "../../export/useExportData.js";
|
|
@@ -20,11 +20,11 @@ export function DashboardLayoutExportSectionHeaderRenderer(props) {
|
|
|
20
20
|
const [error, setError] = useState(false);
|
|
21
21
|
const exportData = useSectionDescriptionExportData(props.exportData, loading, error);
|
|
22
22
|
//remove empty section headers; avoid in nested containers as this would delete the first child in some cases
|
|
23
|
-
if (
|
|
23
|
+
if (_isEmpty(sectionHeader) && !section.index()?.parent) {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
26
|
return (_jsx(DashboardLayoutItemViewRenderer, { DefaultItemRenderer: DashboardLayoutItemViewRenderer, item: emptyItem,
|
|
27
27
|
// header is always at the top, this information is not usable by it but required by
|
|
28
28
|
// the shared interface with widget
|
|
29
|
-
rowIndex: -1, children:
|
|
29
|
+
rowIndex: -1, children: _isEmpty(sectionHeader) ? null : (_jsx(DashboardLayoutViewSectionHeader, { section: section, exportData: exportData, onLoadingChanged: (loading) => setLoading(loading.isLoading), onError: (error) => setError(!!error) })) }));
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayoutSection.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardLayoutSection.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAG5E,OAAO,EAEH,KAAK,6BAA6B,EACrC,MAAM,iEAAiE,CAAC;AAGzE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS1E,OAAO,EACH,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAC1C,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACtC,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,4BAA4B,CAAC,OAAO;IACjD,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE,gCAAgC,CAAC,OAAO,CAAC,CAAC;IAC7D,eAAe,CAAC,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC3D,qBAAqB,CAAC,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACvE,aAAa,CAAC,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACrD,cAAc,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxD,eAAe,CAAC,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC3D,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,gCAAgC,CAAC;IACxD,gBAAgB,EAAE,eAAe,GAAG,SAAS,CAAC;CACjD;AA2BD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,EAC5C,OAAO,EACP,eAAwC,EACxC,qBAA6C,EAC7C,aAAoC,EACpC,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,GACnB,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAAG,YAAY,CAwGtD"}
|
package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2007-2026 GoodData Corporation
|
|
3
3
|
import { useMemo } from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
import { getLayoutConfiguration } from "../../../_staging/dashboard/flexibleLayout/layoutConfiguration.js";
|
|
6
6
|
import { getItemIndex, serializeLayoutItemPath } from "../../../_staging/layout/coordinates.js";
|
|
7
7
|
import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js";
|
|
@@ -25,7 +25,7 @@ const defaultItemKeyGetter = ({ item }) => serializeLayoutItemPath(item.index())
|
|
|
25
25
|
*/
|
|
26
26
|
function hasVisibleSectionHeader(section) {
|
|
27
27
|
const { sections } = getLayoutConfiguration(section.layout().raw());
|
|
28
|
-
return sections.areHeadersEnabled && (!
|
|
28
|
+
return sections.areHeadersEnabled && (!_isEmpty(section.title()) || !_isEmpty(section.description()));
|
|
29
29
|
}
|
|
30
30
|
export function DashboardLayoutSection({ section, sectionRenderer = defaultSectionRenderer, sectionHeaderRenderer = defaultHeaderRenderer, itemKeyGetter = defaultItemKeyGetter, gridRowRenderer, itemRenderer, widgetRenderer, getLayoutDimensions, renderMode, parentLayoutItemSize, parentLayoutPath, }) {
|
|
31
31
|
const showBorders = parentLayoutPath === undefined || parentLayoutPath.length === 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardLayoutViewSectionHeaderRenderer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DashboardLayoutViewSectionHeaderRenderer.d.ts","sourceRoot":"","sources":["../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIvE,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,iEAAiE,CAAC;AAQrH,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,MAAM,WAAW,kCAAkC;IAC/C,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,gCAAgC,CAAC,EAC7C,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,OAAO,GACV,EAAE,kCAAkC,kDAoDpC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2019-2026 GoodData Corporation
|
|
3
3
|
import cx from "classnames";
|
|
4
|
-
import { isEmpty } from "lodash-es";
|
|
5
4
|
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
import { _isEmpty } from "@gooddata/util";
|
|
6
6
|
import { getLayoutConfiguration } from "../../../_staging/dashboard/flexibleLayout/layoutConfiguration.js";
|
|
7
7
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
8
8
|
import { selectEnableSnapshotExportAccessibility, selectIsExport, } from "../../../model/store/config/configSelectors.js";
|
|
@@ -16,7 +16,7 @@ export function DashboardLayoutViewSectionHeader({ section, exportData, onLoadin
|
|
|
16
16
|
const useAccessibilityExportClasses = isSnapshotAccessibilityEnabled && isExport;
|
|
17
17
|
const title = section.title();
|
|
18
18
|
const description = section.description();
|
|
19
|
-
if (!sections.areHeadersEnabled || (
|
|
19
|
+
if (!sections.areHeadersEnabled || (_isEmpty(title) && _isEmpty(description))) {
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
22
|
const isNestedLayout = section.layout().path() !== undefined;
|
package/esm/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sizing.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,gCAAgC,EACrC,KAAK,QAAQ,EAEb,KAAK,SAAS,EACd,KAAK,UAAU,EAMlB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"sizing.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/utils/sizing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAK3C,OAAO,EACH,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,gCAAgC,EACrC,KAAK,QAAQ,EAEb,KAAK,SAAS,EACd,KAAK,UAAU,EAMlB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAGrH,OAAO,EACH,KAAK,uBAAuB,EAS/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAW5D;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EACnD,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,EACjC,gBAAgB,EAAE,gCAAgC,GAAG,SAAS,EAC9D,gBAAgB,EAAE,eAAe,GAAG,SAAS,GAC9C,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAgB,+BAA+B,CAAC,OAAO,EACnD,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACtC,gBAAgB,EAAE,gCAAgC,GAAG,SAAS,EAC9D,gBAAgB,EAAE,eAAe,GAAG,SAAS,GAC9C,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;AAmJnC;;;;;GAKG;AACH,KAAK,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,kBAC3B,gBAAgB,CAAC,OAAO,CAAC,iBAC1B,gBAAgB,CAAC,OAAO,CAAC,aAC7B,YAAY,EAAE,gCACP,eAAe,GAAG,SAAS,KAC9C,YAAY,EAiCd,CAAC;AAYF;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC9B,aAAa,CAAC,WAAW,CAAC,CAU5B;AAED,eAAO,MAAM,6CAA6C,SAChD,oBAAoB,UAClB,UAAU,KACnB,MAOF,CAAC;AAEF,wBAAgB,kCAAkC,CAC9C,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,EACrC,MAAM,EAAE,UAAU,GACnB,MAAM,CAyBR;AAED,wBAAgB,wCAAwC,CACpD,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,oBAAoB,EAChC,aAAa,CAAC,EAAE,uBAAuB,GACxC,MAAM,CAGR;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAC/C,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAClC,gBAAgB,CAAC,OAAO,CAAC,CAgB3B;AAiBD;;GAEG;AACH,wBAAgB,iCAAiC,CAC7C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,uBAAuB,EACtC,QAAQ,EAAE,SAAS,GACpB;IACC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAYA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
|
-
import { clamp,
|
|
2
|
+
import { clamp, round } from "lodash-es";
|
|
3
3
|
import { invariant } from "ts-invariant";
|
|
4
4
|
import { insightVisualizationType, isDashboardLayout, isInsightWidget, isWidget, isWidgetDefinition, } from "@gooddata/sdk-model";
|
|
5
5
|
import { fluidLayoutDescriptor } from "@gooddata/sdk-ui-ext";
|
|
6
|
+
import { _isEqual } from "@gooddata/util";
|
|
6
7
|
import { DashboardLayoutBuilder } from "../../../../_staging/dashboard/flexibleLayout/builder/layout.js";
|
|
7
8
|
import { DASHBOARD_LAYOUT_GRID_COLUMNS_COUNT } from "../../../../_staging/dashboard/flexibleLayout/config.js";
|
|
8
9
|
import { DashboardLayoutFacade } from "../../../../_staging/dashboard/flexibleLayout/facade/layout.js";
|
|
@@ -135,7 +136,7 @@ export const getResizedItemPositions = (originalLayout, resizedLayout, positions
|
|
|
135
136
|
if (isDashboardLayout(originalContent) && isDashboardLayout(updatedContent)) {
|
|
136
137
|
return getResizedItemPositions(originalContent, updatedContent, positions, item.index());
|
|
137
138
|
}
|
|
138
|
-
if (!
|
|
139
|
+
if (!_isEqual(originalColumn.size(), item.size()) &&
|
|
139
140
|
(isWidget(updatedContent) || isWidgetDefinition(updatedContent))) {
|
|
140
141
|
acc.push([item.section().index().sectionIndex, getItemIndex(item.index())]);
|
|
141
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeightResizerHotspot.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HeightResizerHotspot.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAgB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAInG,OAAO,EACH,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EACrC,MAAM,oEAAoE,CAAC;AAQ5E,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAS5E,OAAO,EAAE,KAAK,uBAAuB,EAAsB,MAAM,wCAAwC,CAAC;AAU1G,MAAM,MAAM,yBAAyB,GAAG;IACpC,OAAO,EAAE,6BAA6B,CAAC,uBAAuB,CAAC,CAAC;IAChE,KAAK,EAAE,0BAA0B,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC7D,mBAAmB,EAAE,MAAM,OAAO,CAAC;CACtC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,yBAAyB,kDA+HtG;AAED,wBAAgB,YAAY,CACxB,KAAK,EAAE,0BAA0B,CAAC,uBAAuB,CAAC,EAAE,EAC5D,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC/B,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,SAAS,YAWtB;AAED,wBAAgB,cAAc,CAC1B,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACjB,MAAM,CAKR"}
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
// (C) 2021-2026 GoodData Corporation
|
|
3
3
|
import { useEffect, useMemo, useState } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
|
-
import { isEmpty, isEqual } from "lodash-es";
|
|
6
5
|
import { INSIGHT_WIDGET_SIZE_INFO_DEFAULT, fluidLayoutDescriptor } from "@gooddata/sdk-ui-ext";
|
|
6
|
+
import { _isEmpty, _isEqual } from "@gooddata/util";
|
|
7
7
|
import { getItemIndex } from "../../../../_staging/layout/coordinates.js";
|
|
8
8
|
import { calculateWidgetMinHeight, determineWidthForScreen, getMaxHeight, getMinHeight, } from "../../../../_staging/layout/sizing.js";
|
|
9
9
|
import { resizeNestedLayoutItemsHeight } from "../../../../model/commands/layout.js";
|
|
@@ -69,7 +69,7 @@ export function HeightResizerHotspot({ section, items, getLayoutDimensions }) {
|
|
|
69
69
|
}, [isDragging]);
|
|
70
70
|
const areWidgetsResizing = resizeDirection !== "none";
|
|
71
71
|
const isColumnResizing = resizeDirection === "width";
|
|
72
|
-
const isOtherRowResizing = !
|
|
72
|
+
const isOtherRowResizing = !_isEmpty(resizeItemIdentifiers) && !_isEqual(resizeItemIdentifiers, widgetIdentifiers);
|
|
73
73
|
const [isResizerVisible, setResizerVisibility] = useState(false);
|
|
74
74
|
const onMouseEnter = () => setResizerVisibility(true);
|
|
75
75
|
const onMouseLeave = () => setResizerVisibility(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/widget/common/configuration/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/widget/common/configuration/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAEvB,KAAK,MAAM,EAMd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,kBAAkB,EAG1B,MAAM,sBAAsB,CAAC;AAK9B,eAAO,MAAM,OAAO,KAAK,CAAC;AAG1B,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,wBAAgB,uBAAuB,CACnC,mBAAmB,EAAE,SAAS,mBAAmB,EAAE,EACnD,mBAAmB,EAAE,mBAAmB,GAAG,SAAS,EACpD,yBAAyB,EAAE,OAAO,GAAG,SAAS,GAC/C,mBAAmB,GAAG,SAAS,CAQjC;AAUD,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAGrF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,wBAAwB,EAAE,EAAE,WAAW,EAAE,MAAM,wCAEpG;AAED,wBAAgB,wBAAwB,CACpC,eAAe,EAAE,SAAS,mBAAmB,EAAE,EAC/C,mBAAmB,CAAC,EAAE,SAAS,mBAAmB,EAAE,GACrD,SAAS,mBAAmB,EAAE,CAUhC;AAED,wBAAgB,kCAAkC,CAC9C,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,EAC1B,SAAS,UAAQ,UASpB;AAED,wBAAgB,2BAA2B,CACvC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAU,GAC/C,MAAM,CAWR;AAUD,wBAAgB,0BAA0B,CACtC,mBAAmB,EAAE,SAAS,mBAAmB,EAAE,EACnD,sBAAsB,EAAE,mBAAmB,GAAG,SAAS,EACvD,oBAAoB,EAAE,mBAAmB,GAAG,SAAS,EACrD,qBAAqB,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,EACjE,8BAA8B,UAAQ,GACvC,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,CAqBvC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
|
-
import { isEmpty } from "lodash-es";
|
|
3
2
|
import { areObjRefsEqual, insightMeasures, isDateFilter, isSimpleMeasure, measureFilters, } from "@gooddata/sdk-model";
|
|
4
3
|
import { sortDateDatasets, unrelatedHeader, } from "@gooddata/sdk-ui-kit";
|
|
4
|
+
import { _isEmpty } from "@gooddata/util";
|
|
5
5
|
const DATE_DROPDOWN_BODY_MARGIN = 6;
|
|
6
6
|
const UNRELATED_HEIGHT = 37;
|
|
7
7
|
export const PADDING = 10;
|
|
@@ -23,7 +23,7 @@ function isDateFiltered(measure) {
|
|
|
23
23
|
}
|
|
24
24
|
export function getDateOptionsDisabledForInsight(insight) {
|
|
25
25
|
const measures = insightMeasures(insight);
|
|
26
|
-
return
|
|
26
|
+
return _isEmpty(measures) ? false : measures.every(isDateFiltered);
|
|
27
27
|
}
|
|
28
28
|
export function removeDateFromTitle(title) {
|
|
29
29
|
return title.trim().replace(/^Date \((.*)\)$/, "$1");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDashboardInsightDrills.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/Insight/useDashboardInsightDrills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDashboardInsightDrills.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/Insight/useDashboardInsightDrills.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,SAAS,EAEjB,MAAM,kBAAkB,CAAC;AAiB1B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC5C,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,6CAInC,+BAA+B;;uBASnB,SAAS,KAAG,IAAI;sBAyBb,WAAW;CAoC5B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2020-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useMemo, useState } from "react";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
3
|
import { DataViewFacade, isSomeHeaderPredicateMatched, } from "@gooddata/sdk-ui";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { addDrillTargets } from "../../../../../model/commands/drillTargets.js";
|
|
6
6
|
import { useDashboardDispatch, useDashboardSelector, } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
7
7
|
import { selectAccessibleDashboardsLoaded } from "../../../../../model/store/accessibleDashboards/accessibleDashboardsSelectors.js";
|
|
@@ -21,7 +21,7 @@ export const useDashboardInsightDrills = ({ widget, insight, onDrill: onDrillFn,
|
|
|
21
21
|
const [isLoadingDrillTargets, setIsLoadingDrillTargets] = useState(true);
|
|
22
22
|
const onPushData = useCallback((data) => {
|
|
23
23
|
const targets = data?.availableDrillTargets;
|
|
24
|
-
if (targets && !
|
|
24
|
+
if (targets && !_isEqual(drillTargets?.availableDrillTargets, targets)) {
|
|
25
25
|
dispatch(addDrillTargets(widget.ref, targets));
|
|
26
26
|
}
|
|
27
27
|
if ("availableDrillTargets" in data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrillDialogInsightDrills.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogInsightDrills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDrillDialogInsightDrills.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogInsightDrills.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAGH,KAAK,WAAW,EAChB,KAAK,SAAS,EAEjB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC5C,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,6CAIrC,+BAA+B;;uBAUnB,SAAS,KAAG,IAAI;sBA8Bb,WAAW;CA6B5B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2020-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useState } from "react";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
3
|
import { DataViewFacade, isSomeHeaderPredicateMatched, } from "@gooddata/sdk-ui";
|
|
4
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
5
|
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
6
6
|
import { selectEnableDrillToUrlByDefault } from "../../../../../model/store/config/configSelectors.js";
|
|
7
7
|
import { selectDrillableItemsByAvailableDrillTargets, selectImplicitDrillsByAvailableDrillTargets, } from "../../../../../model/store/widgetDrills/widgetDrillSelectors.js";
|
|
@@ -16,7 +16,7 @@ export const useDrillDialogInsightDrills = ({ widget, insight, onDrill: onDrillF
|
|
|
16
16
|
const disableDrillIntoURL = insight.insight.properties["controls"]?.disableDrillIntoURL ?? !enableDrillToUrlByDefault;
|
|
17
17
|
const onPushData = useCallback((data) => {
|
|
18
18
|
const targets = sanitizeAvailableDrillTargets(data?.availableDrillTargets, !disableDrillDownOnInsight, !disableDrillIntoURL);
|
|
19
|
-
if (targets && !
|
|
19
|
+
if (targets && !_isEqual(drillTargets, data.availableDrillTargets)) {
|
|
20
20
|
setDrillTargets(targets);
|
|
21
21
|
}
|
|
22
22
|
}, [disableDrillDownOnInsight, disableDrillIntoURL, drillTargets]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrillDialogSyncInsightProperties.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,QAAQ,EAA2C,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useDrillDialogSyncInsightProperties.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/useDrillDialogSyncInsightProperties.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,QAAQ,EAA2C,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBzE,MAAM,WAAW,0CAA0C;IACvD,OAAO,EAAE,QAAQ,CAAC;IAClB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mCAAmC,CAAC,EAChD,OAAO,EACP,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,eAAe,GAClB,EAAE,0CAA0C;;2BAmB9B,SAAS;EAmBvB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { mergeWith } from "lodash-es";
|
|
4
4
|
import { insightProperties, insightSetProperties } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEqual } from "@gooddata/util";
|
|
5
6
|
function mergeVisualizationProperties(current, incoming) {
|
|
6
7
|
return mergeWith({}, current ?? {}, incoming, (currentValue, incomingValue) => {
|
|
7
8
|
/**
|
|
@@ -45,7 +46,7 @@ export function useDrillDialogSyncInsightProperties({ insight, drillStepInsightI
|
|
|
45
46
|
if (data.properties) {
|
|
46
47
|
setPushedProperties((current) => {
|
|
47
48
|
const mergedProperties = mergeVisualizationProperties(current, data.properties);
|
|
48
|
-
return
|
|
49
|
+
return _isEqual(mergedProperties, current) ? current : mergedProperties;
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
pushData?.(data);
|
package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrillFiltersConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDrillFiltersConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAGH,KAAK,sBAAsB,EAU9B,MAAM,qBAAqB,CAAC;AAoB7B,OAAO,EAEH,KAAK,gBAAgB,EAErB,KAAK,sCAAsC,EAI9C,MAAM,4BAA4B,CAAC;AAQpC,OAAO,EAAE,KAAK,yBAAyB,EAAsC,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAGpF,UAAU,4BAA4B;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,iBAAiB,EAAE,CACf,KAAK,EAAE,sBAAsB,GAAG,sCAAsC,EACtE,WAAW,EAAE,gBAAgB,KAC5B,IAAI,CAAC;CACb;AAED,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,4BAA4B;;;;;;;;;;;sCAiS3E,4BAA4B;EAiG/C"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2020-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useMemo } from "react";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
3
|
import { useIntl } from "react-intl";
|
|
5
4
|
import { areObjRefsEqual, bucketsAttributes, insightBuckets, insightFilters, insightMeasures, isDashboardMeasureValueFilter, measureFilters, measureLocalId, } from "@gooddata/sdk-model";
|
|
5
|
+
import { _isEqual } from "@gooddata/util";
|
|
6
6
|
import { isSourceInsightFilterObjRefEqual } from "../../../../../_staging/drills/drillingUtils.js";
|
|
7
7
|
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
8
8
|
import { selectAllCatalogDisplayFormsMap, selectCatalogDateDatasets, selectCatalogMeasures, } from "../../../../../model/store/catalog/catalogSelectors.js";
|
|
@@ -222,10 +222,10 @@ export function useDrillFiltersConfig({ item, onUpdateDrillItem }) {
|
|
|
222
222
|
...selection,
|
|
223
223
|
};
|
|
224
224
|
const targetDrill = widgetDrills.find((d) => d.localIdentifier === item.localIdentifier);
|
|
225
|
-
const isIntersectionAttributesChanged = !
|
|
226
|
-
const isSourceInsightFiltersChanged = !
|
|
227
|
-
const isIgnoredDashboardFiltersChanged = !
|
|
228
|
-
const isSourceMeasureFiltersChanged = !
|
|
225
|
+
const isIntersectionAttributesChanged = !_isEqual(currentSelection.drillIntersectionIgnoredAttributes, drillIntersectionIgnoredAttributes);
|
|
226
|
+
const isSourceInsightFiltersChanged = !_isEqual(currentSelection.includedSourceInsightFiltersObjRefs, includedSourceInsightFiltersObjRefs);
|
|
227
|
+
const isIgnoredDashboardFiltersChanged = !_isEqual(currentSelection.ignoredDashboardFilters, ignoredDashboardFilters);
|
|
228
|
+
const isSourceMeasureFiltersChanged = !_isEqual(currentSelection.includedSourceMeasureFiltersObjRefs, includedSourceMeasureFiltersObjRefs);
|
|
229
229
|
const isExtendedFilterSelectionChanged = isSourceInsightFiltersChanged ||
|
|
230
230
|
isIgnoredDashboardFiltersChanged ||
|
|
231
231
|
isSourceMeasureFiltersChanged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrillTargetAttributeHierarchyItem.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DrillTargetAttributeHierarchyItem.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,0BAA0B,EAC/B,KAAK,8BAA8B,EAItC,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,KAAK,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAMrF,UAAU,8BAA8B;IACpC,MAAM,EAAE,kCAAkC,CAAC;IAC3C,QAAQ,EAAE,CAAC,UAAU,EAAE,0BAA0B,GAAG,8BAA8B,KAAK,IAAI,CAAC;IAC5F,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,wBAAgB,iCAAiC,CAAC,EAC9C,MAAM,EACN,QAAQ,EACR,mBAAmB,GACtB,EAAE,8BAA8B,2CAiEhC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2023-2026 GoodData Corporation
|
|
3
|
-
import { isEmpty } from "lodash-es";
|
|
4
3
|
import { areObjRefsEqual, getHierarchyAttributes, isCatalogAttributeHierarchy, } from "@gooddata/sdk-model";
|
|
5
4
|
import { AttributeHierarchyDialog } from "@gooddata/sdk-ui-ext";
|
|
5
|
+
import { _isEmpty } from "@gooddata/util";
|
|
6
6
|
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
7
7
|
import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js";
|
|
8
8
|
import { selectAllCatalogAttributeHierarchies } from "../../../../../model/store/catalog/catalogSelectors.js";
|
|
@@ -18,7 +18,7 @@ export function DrillTargetAttributeHierarchyItem({ config, onSelect, onDeleteIn
|
|
|
18
18
|
const attributesRef = getHierarchyAttributes(hierarchy);
|
|
19
19
|
return attributesRef.some((ref) => areObjRefsEqual(ref, attributeDescriptor?.attributeHeader.formOf.ref));
|
|
20
20
|
});
|
|
21
|
-
const shouldShowEmptyMessage =
|
|
21
|
+
const shouldShowEmptyMessage = _isEmpty(existInHierarchies) && !config.complete;
|
|
22
22
|
const onOpenDialog = (item) => {
|
|
23
23
|
if (!item || isCatalogAttributeHierarchy(item)) {
|
|
24
24
|
onOpenAttributeHierarchyDialog(item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrillConfigIncompleteItems.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useDrillConfigIncompleteItems.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useDrillConfigIncompleteItems.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useDrillConfigIncompleteItems.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI/E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,KAAK,gBAAgB,EAAiC,MAAM,4BAA4B,CAAC;AAElG,eAAO,MAAM,uBAAuB,cAAmC,CAAC;AAexE;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,sBAAsB,EAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAAW,wBAAwB;;6BA+F5C,gBAAgB;yBA3DvB,gBAAgB;iCAVhB,gBAAgB;gCAwBT,gBAAgB;mCAWf,yBAAyB,aAAa,MAAM;CAqDlE,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// (C) 2019-
|
|
1
|
+
// (C) 2019-2026 GoodData Corporation
|
|
2
2
|
import { useCallback, useEffect, useState } from "react";
|
|
3
|
-
import { isEqual } from "lodash-es";
|
|
4
3
|
import { v4 as uuidv4 } from "uuid";
|
|
5
4
|
import { usePrevious } from "@gooddata/sdk-ui";
|
|
5
|
+
import { _isEqual } from "@gooddata/util";
|
|
6
6
|
import { isAvailableDrillTargetMeasure } from "../../../../drill/types.js";
|
|
7
7
|
export const generateLocalIdentifier = () => uuidv4().replace(/-/g, "");
|
|
8
8
|
const addOrUpdateDrillConfigItem = (drillConfigItems, newItem) => {
|
|
@@ -26,7 +26,7 @@ export const useIncompleteItems = (props) => {
|
|
|
26
26
|
const prevWidgetDrills = usePrevious(widgetDrills);
|
|
27
27
|
useEffect(() => {
|
|
28
28
|
//when widgetDrills changed remove all complete widget items
|
|
29
|
-
if (!
|
|
29
|
+
if (!_isEqual(widgetDrills, prevWidgetDrills)) {
|
|
30
30
|
const incompleteItemsUpdated = incompleteItems.filter((incompleteItem) => !incompleteItem.complete);
|
|
31
31
|
if (incompleteItemsUpdated.length !== incompleteItems.length) {
|
|
32
32
|
updateIncompleteItems(incompleteItemsUpdated);
|
|
@@ -37,5 +37,5 @@ export function RestrictedReferencesDialog({ value, onSanitized, onCancel, }) {
|
|
|
37
37
|
const onConfirm = useCallback(() => {
|
|
38
38
|
onSanitized(replaceReferences(value, restrictedReferences, RESTRICTED_REFERENCE_REPLACEMENT));
|
|
39
39
|
}, [value, restrictedReferences, onSanitized]);
|
|
40
|
-
return (_jsx("span", { className: "gd-restricted-references-dialog-wrapper", onClick: (event) => event.stopPropagation(), children: _jsxs(UiModalDialog, { variant: "confirmation", isOpen: true, width: 440, initialFocus: cancelButtonRef, dataTestId: "rich-text-sanitize-references-dialog", accessibilityConfig: { role: "alertdialog" }, onClose: onCancel, children: [_jsx(UiDialogHeader, { title: intl.formatMessage({ id: "richText.restrictedReferences.dialog.header" }),
|
|
40
|
+
return (_jsx("span", { className: "gd-restricted-references-dialog-wrapper", onClick: (event) => event.stopPropagation(), children: _jsxs(UiModalDialog, { variant: "confirmation", isOpen: true, width: 440, size: "large", initialFocus: cancelButtonRef, dataTestId: "rich-text-sanitize-references-dialog", accessibilityConfig: { role: "alertdialog" }, onClose: onCancel, children: [_jsx(UiDialogHeader, { title: intl.formatMessage({ id: "richText.restrictedReferences.dialog.header" }), onClose: onCancel }), _jsx(UiDialogBody, { children: intl.formatMessage({ id: "richText.restrictedReferences.dialog.message" }) }), _jsxs(UiDialogFooter, { children: [_jsx(UiButton, { ref: cancelButtonRef, label: intl.formatMessage({ id: "cancel" }), variant: "secondary", size: "medium", onClick: onCancel }), _jsx(UiButton, { label: intl.formatMessage({ id: "richText.restrictedReferences.dialog.submit" }), variant: "danger", size: "medium", onClick: onConfirm })] })] }) }));
|
|
41
41
|
}
|
|
@@ -4103,16 +4103,23 @@ export declare type DashboardSavedPayload = {
|
|
|
4103
4103
|
*/
|
|
4104
4104
|
readonly newDashboard: boolean;
|
|
4105
4105
|
/**
|
|
4106
|
-
* Identifier of the dashboard definition before it was persisted. This is present when
|
|
4107
|
-
* dashboard draft was saved and can differ from the identifier of dashboard
|
|
4106
|
+
* Identifier of the dashboard definition before it was persisted. This is present when a
|
|
4107
|
+
* dashboard draft was saved and can differ from the identifier of `dashboard`.
|
|
4108
4108
|
*
|
|
4109
|
-
* @
|
|
4109
|
+
* @remarks
|
|
4110
|
+
* Use this identifier to associate a Copilot proposal with `dashboard.identifier` after saving.
|
|
4111
|
+
*
|
|
4112
|
+
* @alpha
|
|
4110
4113
|
*/
|
|
4111
4114
|
readonly originalDashboardId?: string;
|
|
4112
4115
|
/**
|
|
4113
4116
|
* Draft insights persisted as part of the dashboard save.
|
|
4114
4117
|
*
|
|
4115
|
-
* @
|
|
4118
|
+
* @remarks
|
|
4119
|
+
* Each mapping associates an original draft insight identifier with the saved insight identifier.
|
|
4120
|
+
* Only insights created by this save are included. Empty when none were created.
|
|
4121
|
+
*
|
|
4122
|
+
* @alpha
|
|
4116
4123
|
*/
|
|
4117
4124
|
readonly savedInsights?: ReadonlyArray<{
|
|
4118
4125
|
readonly originalInsightId: string;
|
|
@@ -10201,6 +10208,8 @@ export declare interface IDashboardBaseProps {
|
|
|
10201
10208
|
* identifier - this is same as using `idRef(objectIdentifier)`.
|
|
10202
10209
|
*
|
|
10203
10210
|
* If you do not specify dashboard to render, a new default empty dashboard will be rendered.
|
|
10211
|
+
* To render an AI-proposed draft, supply the dashboard by value and set `config.references`.
|
|
10212
|
+
* Use `config.initialRenderMode: "edit"` to allow saving it.
|
|
10204
10213
|
*/
|
|
10205
10214
|
dashboard?: string | ObjRef | IDashboard;
|
|
10206
10215
|
/**
|
package/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|