@gooddata/sdk-ui-ext 11.52.0-alpha.6 → 11.52.0-alpha.7
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/dataLoaders/InsightDataLoader.d.ts +6 -0
- package/esm/dataLoaders/InsightDataLoader.d.ts.map +1 -1
- package/esm/dataLoaders/InsightDataLoader.js +4 -1
- package/esm/dataLoaders/index.d.ts +13 -0
- package/esm/dataLoaders/index.d.ts.map +1 -1
- package/esm/dataLoaders/index.js +14 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/insightView/InsightRenderer.d.ts +2 -5
- package/esm/insightView/InsightRenderer.d.ts.map +1 -1
- package/esm/insightView/InsightRenderer.js +1 -2
- package/esm/internal/components/pluggableVisualizations/mekko/PluggableMekko.d.ts +6 -1
- package/esm/internal/components/pluggableVisualizations/mekko/PluggableMekko.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/mekko/PluggableMekko.js +25 -4
- package/esm/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.js +0 -1
- package/esm/internal/translations/en-US.localization-bundle.d.ts +4 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-US.localization-bundle.js +4 -0
- package/esm/notificationsPanel/Notification/Notification.d.ts.map +1 -1
- package/esm/notificationsPanel/Notification/Notification.js +6 -3
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.d.ts +3 -3
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.d.ts.map +1 -1
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.js +4 -4
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts +9 -3
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts.map +1 -1
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.js +4 -4
- package/esm/sdk-ui-ext.d.ts +13 -0
- package/esm/share/ObjectShareDialog.js +22 -6
- package/esm/share/messages.d.ts +7 -0
- package/esm/share/messages.d.ts.map +1 -1
- package/esm/share/messages.js +5 -0
- package/esm/share/objectShareController.helpers.d.ts +117 -17
- package/esm/share/objectShareController.helpers.d.ts.map +1 -1
- package/esm/share/objectShareController.helpers.js +181 -44
- package/esm/share/objectShareController.types.d.ts +34 -10
- package/esm/share/objectShareController.types.d.ts.map +1 -1
- package/esm/share/useAccessList.d.ts +6 -0
- package/esm/share/useAccessList.d.ts.map +1 -1
- package/esm/share/useAccessList.js +26 -6
- package/esm/share/useLabelScope.d.ts +46 -1
- package/esm/share/useLabelScope.d.ts.map +1 -1
- package/esm/share/useLabelScope.js +98 -6
- package/esm/share/useObjectShareController.d.ts.map +1 -1
- package/esm/share/useObjectShareController.js +213 -45
- package/esm/share/useObjectShareDialog.d.ts +7 -0
- package/esm/share/useObjectShareDialog.d.ts.map +1 -1
- package/esm/share/useObjectShareDialog.js +22 -2
- package/package.json +21 -21
|
@@ -10,6 +10,12 @@ export interface IInsightDataLoader {
|
|
|
10
10
|
* @param ref - the ref of the insight to obtain
|
|
11
11
|
*/
|
|
12
12
|
getInsight(backend: IAnalyticalBackend, ref: ObjRef): Promise<IInsight>;
|
|
13
|
+
/**
|
|
14
|
+
* Removes the cached insight for the given ref, so that the next getInsight call
|
|
15
|
+
* fetches it from the backend again.
|
|
16
|
+
* @param ref - the ref of the insight to invalidate
|
|
17
|
+
*/
|
|
18
|
+
invalidateInsight(ref: ObjRef): void;
|
|
13
19
|
}
|
|
14
20
|
/**
|
|
15
21
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsightDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataLoaders/InsightDataLoader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InsightDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataLoaders/InsightDataLoader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAkB,MAAM,qBAAqB,CAAC;AAKjF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExE;;;;OAIG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAgCD;;GAEG;AACH,eAAO,MAAM,wBAAwB,6DAEpC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// (C) 2021-
|
|
1
|
+
// (C) 2021-2026 GoodData Corporation
|
|
2
2
|
import { LRUCache } from "lru-cache";
|
|
3
3
|
import { objRefToString } from "@gooddata/sdk-model";
|
|
4
4
|
import { INSIGHT_CACHE_SIZE } from "./constants.js";
|
|
@@ -25,6 +25,9 @@ class InsightDataLoader {
|
|
|
25
25
|
}
|
|
26
26
|
return insight;
|
|
27
27
|
}
|
|
28
|
+
invalidateInsight(ref) {
|
|
29
|
+
this.insightCache.delete(objRefToString(ref));
|
|
30
|
+
}
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* @internal
|
|
@@ -1,7 +1,20 @@
|
|
|
1
|
+
import { type ObjRef } from "@gooddata/sdk-model";
|
|
1
2
|
/**
|
|
2
3
|
* Clears all the caches used by the InsightView components.
|
|
3
4
|
*
|
|
4
5
|
* @public
|
|
5
6
|
*/
|
|
6
7
|
export declare function clearInsightViewCaches(): void;
|
|
8
|
+
/**
|
|
9
|
+
* Clears the cached definition of a single insight used by the InsightView components.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* Use this after an insight has been edited, so that the next render fetches the new
|
|
13
|
+
* definition. To clear every cache at once, use {@link clearInsightViewCaches}.
|
|
14
|
+
*
|
|
15
|
+
* @param workspace - the workspace the insight belongs to
|
|
16
|
+
* @param ref - the ref of the insight whose cached definition should be dropped
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare function clearInsightViewCacheForInsight(workspace: string, ref: ObjRef): void;
|
|
7
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dataLoaders/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dataLoaders/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAOlD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAO7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpF"}
|
package/esm/dataLoaders/index.js
CHANGED
|
@@ -15,3 +15,17 @@ export function clearInsightViewCaches() {
|
|
|
15
15
|
];
|
|
16
16
|
relevantFactories.forEach((factory) => factory.reset());
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Clears the cached definition of a single insight used by the InsightView components.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Use this after an insight has been edited, so that the next render fetches the new
|
|
23
|
+
* definition. To clear every cache at once, use {@link clearInsightViewCaches}.
|
|
24
|
+
*
|
|
25
|
+
* @param workspace - the workspace the insight belongs to
|
|
26
|
+
* @param ref - the ref of the insight whose cached definition should be dropped
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export function clearInsightViewCacheForInsight(workspace, ref) {
|
|
30
|
+
insightDataLoaderFactory.forWorkspace(workspace).invalidateInsight(ref);
|
|
31
|
+
}
|
package/esm/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { type IInsight, type IInsightDefinition, type ISettings } from "@gooddat
|
|
|
13
13
|
import { type IDrillEvent } from "@gooddata/sdk-ui";
|
|
14
14
|
export type { ChartInlineVisualizationType } from "@gooddata/sdk-ui-charts";
|
|
15
15
|
import { DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX, DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT, EmbedInsightDialog, EmptyAfmSdkError, FluidLayoutDescriptor, type IDrillDownDefinition, type IEmbedInsightDialogProps, type IFluidLayoutDescriptor, type IInsightTitleProps, type IInsightViewProps, type ILayoutDescriptor, INSIGHT_WIDGET_SIZE_INFO_DEFAULT, INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT, type ISizeInfo, type ISizeInfoDefault, type IVisualizationDefaultSizeInfo, type IVisualizationMeta, type IVisualizationSizeInfo, KPI_WIDGET_SIZE_INFO_DEFAULT, type LayoutType, MIN_VISUALIZATION_WIDTH, PluggableVisualizationErrorCodes, type PluggableVisualizationErrorType, RICH_TEXT_WIDGET_SIZE_INFO_DEFAULT, RICH_TEXT_WIDGET_SIZE_INFO_NEW_DEFAULT, VISUALIZATION_SWITCHER_WIDGET_SIZE_INFO_DEFAULT, VISUALIZATION_SWITCHER_WIDGET_SIZE_INFO_NEW_DEFAULT, WIDGET_DROPZONE_SIZE_INFO_DEFAULT, addIntersectionFiltersToInsight, fluidLayoutDescriptor, isDrillDownDefinition, isEmptyAfm, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo } from "./internal/index.js";
|
|
16
|
-
export { clearInsightViewCaches } from "./dataLoaders/index.js";
|
|
16
|
+
export { clearInsightViewCaches, clearInsightViewCacheForInsight } from "./dataLoaders/index.js";
|
|
17
17
|
export { InsightView } from "./insightView/InsightView.js";
|
|
18
18
|
export { InsightError, type IInsightErrorProps } from "./insightView/InsightError.js";
|
|
19
19
|
export { InsightRenderer, type IInsightRendererProps } from "./insightView/InsightRenderer.js";
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,YAAY,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACH,sCAAsC,EACtC,yCAAyC,EACzC,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EAErB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,gCAAgC,EAChC,oCAAoC,EACpC,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,UAAU,EACf,uBAAuB,EACvB,gCAAgC,EAChC,KAAK,+BAA+B,EACpC,kCAAkC,EAClC,sCAAsC,EACtC,+CAA+C,EAC/C,mDAAmD,EACnD,iCAAiC,EACjC,+BAA+B,EAC/B,qBAAqB,EACrB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,8BAA8B,EACjC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2007-2026 GoodData Corporation
|
|
2
2
|
import { DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX, DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT, EmbedInsightDialog, EmptyAfmSdkError, FluidLayoutDescriptor, FullVisualizationCatalog, INSIGHT_WIDGET_SIZE_INFO_DEFAULT, INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT, KPI_WIDGET_SIZE_INFO_DEFAULT, MIN_VISUALIZATION_WIDTH, PluggableVisualizationErrorCodes, RICH_TEXT_WIDGET_SIZE_INFO_DEFAULT, RICH_TEXT_WIDGET_SIZE_INFO_NEW_DEFAULT, VISUALIZATION_SWITCHER_WIDGET_SIZE_INFO_DEFAULT, VISUALIZATION_SWITCHER_WIDGET_SIZE_INFO_NEW_DEFAULT, WIDGET_DROPZONE_SIZE_INFO_DEFAULT, addIntersectionFiltersToInsight, fluidLayoutDescriptor, isDrillDownDefinition, isEmptyAfm, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo, } from "./internal/index.js";
|
|
3
|
-
export { clearInsightViewCaches } from "./dataLoaders/index.js";
|
|
3
|
+
export { clearInsightViewCaches, clearInsightViewCacheForInsight } from "./dataLoaders/index.js";
|
|
4
4
|
export { InsightView } from "./insightView/InsightView.js";
|
|
5
5
|
export { InsightError } from "./insightView/InsightError.js";
|
|
6
6
|
export { InsightRenderer } from "./insightView/InsightRenderer.js";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type WrappedComponentProps } from "react-intl";
|
|
2
1
|
import { type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
|
|
3
2
|
import { type IColorPalette, type IInsightDefinition, type IInsightWidget, type ITheme, type IWorkspacePermissions } from "@gooddata/sdk-model";
|
|
4
3
|
import { type ILocale, type ITranslations, type OnError } from "@gooddata/sdk-ui";
|
|
@@ -21,12 +20,10 @@ export interface IInsightRendererProps extends Omit<IInsightViewProps, "insight"
|
|
|
21
20
|
*/
|
|
22
21
|
widget?: IInsightWidget;
|
|
23
22
|
}
|
|
24
|
-
type InsightRendererCoreProps = IInsightRendererProps &
|
|
23
|
+
type InsightRendererCoreProps = IInsightRendererProps & {
|
|
25
24
|
messages: ITranslations;
|
|
26
25
|
};
|
|
27
|
-
export declare const IntlInsightRenderer: import("react").
|
|
28
|
-
WrappedComponent: import("react").ComponentType<Omit<InsightRendererCoreProps, "theme" | "themeIsLoading" | "themeStatus">>;
|
|
29
|
-
};
|
|
26
|
+
export declare const IntlInsightRenderer: import("react").ComponentType<Omit<InsightRendererCoreProps, "theme" | "themeIsLoading" | "themeStatus">>;
|
|
30
27
|
/**
|
|
31
28
|
* Renders insight passed as a parameter.
|
|
32
29
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsightRenderer.d.ts","sourceRoot":"","sources":["../../src/insightView/InsightRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InsightRenderer.d.ts","sourceRoot":"","sources":["../../src/insightView/InsightRenderer.tsx"],"names":[],"mappings":"AAYA,OAAO,EAGH,KAAK,sBAAsB,EAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAM7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKH,KAAK,OAAO,EACZ,KAAK,aAAa,EAGlB,KAAK,OAAO,EAMf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAGH,KAAK,iBAAiB,EAKzB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAC/C,iBAAiB,EACjB,SAAS,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,CACjE;IACG,OAAO,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC7C,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,KAAK,wBAAwB,GAAG,qBAAqB,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC;AAuVpF,eAAO,MAAM,mBAAmB,2GAA+C,CAAC;AAwBhF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,qBAAqB,kDAuC3D"}
|
|
@@ -3,7 +3,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { memo, useCallback, useEffect, useRef, useState } from "react";
|
|
4
4
|
import { isEqual } from "lodash-es";
|
|
5
5
|
import { createRoot } from "react-dom/client";
|
|
6
|
-
import { injectIntl } from "react-intl";
|
|
7
6
|
import { v4 as uuidv4 } from "uuid";
|
|
8
7
|
import { ExecutionFactoryUpgradingToExecByReference, ExecutionFactoryWithFixedFilters, } from "@gooddata/sdk-backend-base";
|
|
9
8
|
import { insightProperties, insightSetProperties, insightTitle, insightVisualizationType, insightVisualizationUrl, } from "@gooddata/sdk-model";
|
|
@@ -254,7 +253,7 @@ const InsightRendererCore = memo(function InsightRendererCore(props) {
|
|
|
254
253
|
// e.g. visualization being rendered multiple times, etc.
|
|
255
254
|
_jsx("div", { className: "visualization-uri-root", id: elementId, ref: containerRef, style: visualizationUriRootStyle }));
|
|
256
255
|
});
|
|
257
|
-
export const IntlInsightRenderer =
|
|
256
|
+
export const IntlInsightRenderer = withTheme(withContexts(InsightRendererCore));
|
|
258
257
|
/**
|
|
259
258
|
* Updated callback (callback with a different reference) is not properly propagated to the "visualization" instance
|
|
260
259
|
* (because it only takes the callbacks provided on the first render)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { type IExecutionFactory } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
import { type IInsightDefinition } from "@gooddata/sdk-model";
|
|
3
|
+
import { type IChartConfig } from "@gooddata/sdk-ui-charts";
|
|
1
4
|
import { type ISortConfig } from "../../../interfaces/SortConfig.js";
|
|
2
|
-
import { type IExtendedReferencePoint, type IReferencePoint, type IVisConstruct } from "../../../interfaces/Visualization.js";
|
|
5
|
+
import { type IExtendedReferencePoint, type IReferencePoint, type IVisConstruct, type IVisProps, type IVisualizationProperties } from "../../../interfaces/Visualization.js";
|
|
3
6
|
import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js";
|
|
4
7
|
/**
|
|
5
8
|
* PluggableMekko
|
|
@@ -28,6 +31,8 @@ import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js";
|
|
|
28
31
|
*/
|
|
29
32
|
export declare class PluggableMekko extends PluggableBaseChart {
|
|
30
33
|
constructor(props: IVisConstruct);
|
|
34
|
+
getExecution(options: IVisProps, insight: IInsightDefinition, executionFactory: IExecutionFactory): import("@gooddata/sdk-backend-spi").IPreparedExecution;
|
|
35
|
+
protected buildVisualizationConfig(options: IVisProps, supportedControls?: IVisualizationProperties): IChartConfig;
|
|
31
36
|
getExtendedReferencePoint(referencePoint: IReferencePoint): Promise<IExtendedReferencePoint>;
|
|
32
37
|
getSortConfig(referencePoint: IReferencePoint): Promise<ISortConfig>;
|
|
33
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluggableMekko.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/pluggableVisualizations/mekko/PluggableMekko.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluggableMekko.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/pluggableVisualizations/mekko/PluggableMekko.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACH,KAAK,kBAAkB,EAO1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,EAAE,KAAK,WAAW,EAA0B,MAAM,mCAAmC,CAAC;AAC7F,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,wBAAwB,EAChC,MAAM,sCAAsC,CAAC;AAU9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAoBxE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IAClD,YAAY,KAAK,EAAE,aAAa,EAK/B;IAEe,YAAY,CACxB,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,kBAAkB,EAC3B,gBAAgB,EAAE,iBAAiB,0DActC;IAGD,UAAmB,wBAAwB,CACvC,OAAO,EAAE,SAAS,EAClB,iBAAiB,CAAC,EAAE,wBAAwB,GAC7C,YAAY,CAMd;IAEe,yBAAyB,CACrC,cAAc,EAAE,eAAe,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAyBlC;IAEe,aAAa,CAAC,cAAc,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA4CnF;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2026 GoodData Corporation
|
|
2
2
|
import { cloneDeep, isEmpty, set } from "lodash-es";
|
|
3
|
-
import { newAttributeSort } from "@gooddata/sdk-model";
|
|
3
|
+
import { bucketIsEmpty, insightBucket, insightSorts, isMeasureSort, newAttributeSort, } from "@gooddata/sdk-model";
|
|
4
4
|
import { BucketNames, VisualizationTypes } from "@gooddata/sdk-ui";
|
|
5
5
|
import { BUCKETS } from "../../../constants/bucket.js";
|
|
6
6
|
import { MEKKO_SUPPORTED_PROPERTIES } from "../../../constants/supportedProperties.js";
|
|
@@ -56,6 +56,28 @@ export class PluggableMekko extends PluggableBaseChart {
|
|
|
56
56
|
this.supportedPropertiesList = MEKKO_SUPPORTED_PROPERTIES;
|
|
57
57
|
this.initializeProperties(props.visualizationProperties);
|
|
58
58
|
}
|
|
59
|
+
getExecution(options, insight, executionFactory) {
|
|
60
|
+
const execution = super.getExecution(options, insight, executionFactory);
|
|
61
|
+
const stackBucket = insightBucket(insight, BucketNames.STACK);
|
|
62
|
+
const isStacked = stackBucket && !bucketIsEmpty(stackBucket);
|
|
63
|
+
if (!isStacked) {
|
|
64
|
+
return execution;
|
|
65
|
+
}
|
|
66
|
+
// the stacked execution cannot express a measure sort of the columns — it applies
|
|
67
|
+
// client-side via config.sortBy (sortMekkoColumnsByMeasure in sdk-ui-charts)
|
|
68
|
+
const executionSorts = execution.definition.sortBy.filter((sort) => !isMeasureSort(sort));
|
|
69
|
+
return executionSorts.length === execution.definition.sortBy.length
|
|
70
|
+
? execution
|
|
71
|
+
: execution.withSorting(...executionSorts);
|
|
72
|
+
}
|
|
73
|
+
// config.sortBy feeds the client-side column ordering (measure sorts stay out of the execution)
|
|
74
|
+
buildVisualizationConfig(options, supportedControls) {
|
|
75
|
+
const sortBy = insightSorts(this.currentInsight) ?? [];
|
|
76
|
+
return {
|
|
77
|
+
...super.buildVisualizationConfig(options, supportedControls),
|
|
78
|
+
...(sortBy.length ? { sortBy } : {}),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
59
81
|
getExtendedReferencePoint(referencePoint) {
|
|
60
82
|
const clonedReferencePoint = cloneDeep(referencePoint);
|
|
61
83
|
const uiConfig = cloneDeep(DEFAULT_MEKKO_UICONFIG);
|
|
@@ -93,9 +115,8 @@ export class PluggableMekko extends PluggableBaseChart {
|
|
|
93
115
|
? []
|
|
94
116
|
: [
|
|
95
117
|
newAvailableSortsGroup(viewBy[0].localIdentifier,
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
isEmpty(stackBy) ? measures.map((m) => m.localIdentifier) : [], true,
|
|
118
|
+
// when stacked these apply client-side — see getExecution above
|
|
119
|
+
measures.map((m) => m.localIdentifier), true,
|
|
99
120
|
// area sort (by the stacked total) only makes sense with stacked segments
|
|
100
121
|
!isEmpty(stackBy)),
|
|
101
122
|
];
|
package/esm/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluggablePivotTable.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EACH,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,SAAS,EAWjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAe,KAAK,wBAAwB,EAAsB,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAEH,KAAK,eAAe,EAIpB,KAAK,iBAAiB,EAGzB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,wBAAwB,EAGhC,MAAM,sCAAsC,CAAC;AA0B9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAwBtF,eAAO,MAAM,mBAAmB,4CAM/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,4CAe5B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,mBAAoB,SAAQ,8BAA8B;IACnE,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,mBAAmB,CAAuB;IAElD,YAAY,KAAK,EAAE,aAAa,EAa/B;IAEM,OAAO,IAAI,IAAI,CAErB;IAEM,yBAAyB,CAC5B,cAAc,EAAE,eAAe,EAC/B,sBAAsB,CAAC,EAAE,eAAe,GACzC,OAAO,CAAC,uBAAuB,CAAC,CAqIlC;IAEe,8BAA8B,CAC1C,mBAAmB,EAAE,QAAQ,EAC7B,gBAAgB,EAAE,iBAAiB,EACnC,0BAA0B,EAAE,OAAO,GACpC,QAAQ,CAWV;IAEM,YAAY,CACf,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,kBAAkB,EAC3B,gBAAgB,EAAE,iBAAiB,0DAUtC;IAED,SAAS,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,wBAAwB,GAAG,IAAI,CAWtF;IAED,OAAO,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"PluggablePivotTable.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EACH,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,SAAS,EAWjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAe,KAAK,wBAAwB,EAAsB,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAEH,KAAK,eAAe,EAIpB,KAAK,iBAAiB,EAGzB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,wBAAwB,EAGhC,MAAM,sCAAsC,CAAC;AA0B9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAwBtF,eAAO,MAAM,mBAAmB,4CAM/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,4CAe5B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,mBAAoB,SAAQ,8BAA8B;IACnE,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,mBAAmB,CAAuB;IAElD,YAAY,KAAK,EAAE,aAAa,EAa/B;IAEM,OAAO,IAAI,IAAI,CAErB;IAEM,yBAAyB,CAC5B,cAAc,EAAE,eAAe,EAC/B,sBAAsB,CAAC,EAAE,eAAe,GACzC,OAAO,CAAC,uBAAuB,CAAC,CAqIlC;IAEe,8BAA8B,CAC1C,mBAAmB,EAAE,QAAQ,EAC7B,gBAAgB,EAAE,iBAAiB,EACnC,0BAA0B,EAAE,OAAO,GACpC,QAAQ,CAWV;IAEM,YAAY,CACf,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,kBAAkB,EAC3B,gBAAgB,EAAE,iBAAiB,0DAUtC;IAED,SAAS,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,wBAAwB,GAAG,IAAI,CAWtF;IAED,OAAO,CAAC,yBAAyB,CAc/B;IAEF,UAAmB,wBAAwB,CACvC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,kBAAkB,EAC3B,qBAAqB,EAAE,GAAG,GAC3B,IAAI,CASN;IAED,SAAS,CAAC,mBAAmB,CACzB,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,kBAAkB,EAC3B,gBAAgB,EAAE,iBAAiB,GACpC,IAAI,CA0FN;IAED,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAuCxF;IAED,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,CAAC,EAAE,GAAG,GAAG,UAAU,EAAE,CAElG;IAED,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;CAmBzB;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,wBAAwB,EACrC,QAAQ,EAAE,SAAS,EACnB,YAAY,EAAE,oBAAoB,EAClC,YAAY,CAAC,EAAE,eAAe,EAAE,GACjC,iBAAiB,CAsDnB"}
|
|
@@ -2515,6 +2515,10 @@ export declare const en_US: {
|
|
|
2515
2515
|
text: string;
|
|
2516
2516
|
crowdinContext: string;
|
|
2517
2517
|
};
|
|
2518
|
+
"objectShare.granteeRemove.inherited": {
|
|
2519
|
+
text: string;
|
|
2520
|
+
crowdinContext: string;
|
|
2521
|
+
};
|
|
2518
2522
|
"objectShare.grantee.you": {
|
|
2519
2523
|
text: string;
|
|
2520
2524
|
crowdinContext: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/internal/translations/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6tFjB,CAAC"}
|
|
@@ -2517,6 +2517,10 @@ export const en_US = {
|
|
|
2517
2517
|
"text": "This permission is granted from a parent workspace and cannot be lowered here.",
|
|
2518
2518
|
"crowdinContext": "Tooltip on permission options in the all-workspace-members permission menu that are disabled because a parent workspace already grants a higher workspace-wide level, so picking a lower level here could not take effect."
|
|
2519
2519
|
},
|
|
2520
|
+
"objectShare.granteeRemove.inherited": {
|
|
2521
|
+
"text": "This access is inherited from a group or a parent workspace and cannot be removed here.",
|
|
2522
|
+
"crowdinContext": "Tooltip on the disabled Remove access action in a grantee row's permission menu, shown when the grantee has no permission granted in this workspace, so there is nothing here to remove."
|
|
2523
|
+
},
|
|
2520
2524
|
"objectShare.grantee.you": {
|
|
2521
2525
|
"text": "{name} (you)",
|
|
2522
2526
|
"crowdinContext": "Display name of the signed-in user's own row in the share dialog grantee list. {name} is the user's full name."
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/Notification/Notification.tsx"],"names":[],"mappings":"AAOA,OAAO,EAEH,KAAK,kBAAkB,EAGvB,KAAK,qBAAqB,EAC7B,MAAM,qBAAqB,CAAC;AAoB7B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IACzD,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,kBAAkB,GAAG,qBAAqB,KAAK,IAAI,CAAC;IACzF,uBAAuB,EAAE,MAAM,IAAI,CAAC;CACvC;AA4BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EACzB,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EAC1B,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"Notification.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/Notification/Notification.tsx"],"names":[],"mappings":"AAOA,OAAO,EAEH,KAAK,kBAAkB,EAGvB,KAAK,qBAAqB,EAC7B,MAAM,qBAAqB,CAAC;AAoB7B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IACzD,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,kBAAkB,GAAG,qBAAqB,KAAK,IAAI,CAAC;IACzF,uBAAuB,EAAE,MAAM,IAAI,CAAC;CACvC;AA4BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EACzB,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EAC1B,EAAE,mBAAmB,2CA8HrB"}
|
|
@@ -32,8 +32,11 @@ export function Notification({ notification, markNotificationAsRead, onNotificat
|
|
|
32
32
|
const intl = useIntl();
|
|
33
33
|
const { addWarning } = useToastMessage();
|
|
34
34
|
const notificationTitle = getNotificationTitle(notification);
|
|
35
|
-
const
|
|
36
|
-
|
|
35
|
+
const filterItems = [
|
|
36
|
+
...(notification.details.data.filters ?? []).map(({ title, filter }) => ({ title, value: filter })),
|
|
37
|
+
...(notification.details.data.parameters ?? []),
|
|
38
|
+
];
|
|
39
|
+
const hasFiltersOrParameters = filterItems.length > 0;
|
|
37
40
|
const isAlertNotification = notification.notificationType === "alertNotification";
|
|
38
41
|
const isScheduleNotification = notification.notificationType === "scheduleNotification";
|
|
39
42
|
const isSliced = isAlertNotification && !!notification.details.data.alert.attribute;
|
|
@@ -51,7 +54,7 @@ export function Notification({ notification, markNotificationAsRead, onNotificat
|
|
|
51
54
|
const isExpired = fileExpiresAt != null && new Date(fileExpiresAt) < new Date();
|
|
52
55
|
const { isError, errorTitle, errorMessage, traceId } = getNotificationErrorInfo(notification, exports);
|
|
53
56
|
const actions = compact([
|
|
54
|
-
|
|
57
|
+
hasFiltersOrParameters && isAlertNotification && _jsx(NotificationFiltersDetail, { items: filterItems }),
|
|
55
58
|
hasTriggers && isSliced && _jsx(NotificationTriggerDetail, { notification: notification }),
|
|
56
59
|
hasExports && _jsx(FileLink, { notification: notification }),
|
|
57
60
|
hasExports && fileExpiresAt && _jsx(FileExpiration, { fileExpiresAt: fileExpiresAt, isExpired: isExpired }),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type AlertItem } from "./NotificationFiltersDetailDialog.js";
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
*/
|
|
5
5
|
export interface INotificationFiltersDetailProps {
|
|
6
|
-
|
|
6
|
+
items: AlertItem[];
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* @internal
|
|
10
10
|
*/
|
|
11
|
-
export declare function NotificationFiltersDetail({
|
|
11
|
+
export declare function NotificationFiltersDetail({ items }: INotificationFiltersDetailProps): import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
//# sourceMappingURL=NotificationFiltersDetail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationFiltersDetail.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NotificationFiltersDetail.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,SAAS,EAAmC,MAAM,sCAAsC,CAAC;AAUvG;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC5C,KAAK,EAAE,SAAS,EAAE,CAAC;CACtB;AAQD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,KAAK,EAAE,EAAE,+BAA+B,2CAyCnF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// (C) 2024-
|
|
2
|
+
// (C) 2024-2026 GoodData Corporation
|
|
3
3
|
import { useRef, useState } from "react";
|
|
4
4
|
import { defineMessages, useIntl } from "react-intl";
|
|
5
5
|
import { Overlay, UiButton, alignConfigToAlignPoint } from "@gooddata/sdk-ui-kit";
|
|
@@ -19,16 +19,16 @@ const messages = defineMessages({
|
|
|
19
19
|
/**
|
|
20
20
|
* @internal
|
|
21
21
|
*/
|
|
22
|
-
export function NotificationFiltersDetail({
|
|
22
|
+
export function NotificationFiltersDetail({ items }) {
|
|
23
23
|
const [isFiltersDialogOpen, setIsFiltersDialogOpen] = useState(false);
|
|
24
24
|
const intl = useIntl();
|
|
25
25
|
const ref = useRef(null);
|
|
26
26
|
const closeFiltersDialog = () => setIsFiltersDialogOpen(false);
|
|
27
27
|
const toggleFiltersDialog = () => setIsFiltersDialogOpen((x) => !x);
|
|
28
|
-
return (_jsxs(_Fragment, { children: [
|
|
28
|
+
return (_jsxs(_Fragment, { children: [items.length > 0 ? (_jsx(UiButton, { ref: ref, onClick: (e) => {
|
|
29
29
|
e.stopPropagation();
|
|
30
30
|
toggleFiltersDialog();
|
|
31
31
|
}, onKeyDown: (e) => {
|
|
32
32
|
e.stopPropagation();
|
|
33
|
-
}, variant: "tertiary", size: "small", label: intl.formatMessage(messages.buttonLabel, { count:
|
|
33
|
+
}, variant: "tertiary", size: "small", label: intl.formatMessage(messages.buttonLabel, { count: items.length }) })) : null, isFiltersDialogOpen ? (_jsx(Overlay, { isModal: false, alignTo: ref.current, alignPoints: ALIGN_POINTS, closeOnEscape: true, closeOnOutsideClick: true, closeOnParentScroll: true, closeOnMouseDrag: false, onClose: closeFiltersDialog, children: _jsx(NotificationFiltersDetailDialog, { items: items, onClose: closeFiltersDialog }) })) : null] }));
|
|
34
34
|
}
|
package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export type AlertItem = {
|
|
5
|
+
title?: string;
|
|
6
|
+
value: string;
|
|
7
|
+
};
|
|
2
8
|
/**
|
|
3
9
|
* @internal
|
|
4
10
|
*/
|
|
5
11
|
export interface INotificationFiltersDetailDialogProps {
|
|
6
|
-
|
|
12
|
+
items: AlertItem[];
|
|
7
13
|
onClose: () => void;
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
16
|
* @internal
|
|
11
17
|
*/
|
|
12
|
-
export declare function NotificationFiltersDetailDialog({
|
|
18
|
+
export declare function NotificationFiltersDetailDialog({ items, onClose }: INotificationFiltersDetailDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
13
19
|
//# sourceMappingURL=NotificationFiltersDetailDialog.d.ts.map
|
package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationFiltersDetailDialog.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NotificationFiltersDetailDialog.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.tsx"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qCAAqC;IAClD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,qCAAqC,2CAmBxG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// (C) 2024-
|
|
2
|
+
// (C) 2024-2026 GoodData Corporation
|
|
3
3
|
import { defineMessages, useIntl } from "react-intl";
|
|
4
4
|
import { bem } from "../bem.js";
|
|
5
5
|
import { DetailsDialog } from "../components/DetailsDialog.js";
|
|
@@ -12,9 +12,9 @@ const messages = defineMessages({
|
|
|
12
12
|
/**
|
|
13
13
|
* @internal
|
|
14
14
|
*/
|
|
15
|
-
export function NotificationFiltersDetailDialog({
|
|
15
|
+
export function NotificationFiltersDetailDialog({ items, onClose }) {
|
|
16
16
|
const intl = useIntl();
|
|
17
|
-
return (_jsx(DetailsDialog, { title: `${intl.formatMessage(messages.title)} (${
|
|
18
|
-
_jsx("div", { className: e("label"), children: title }), _jsx("div", { className: e("values"), children:
|
|
17
|
+
return (_jsx(DetailsDialog, { title: `${intl.formatMessage(messages.title)} (${items.length})`, content: _jsx("div", { className: b(), children: items.map(({ title, value }, idx) => (_jsxs("div", { className: e("item"), children: [
|
|
18
|
+
_jsx("div", { className: e("label"), children: title }), _jsx("div", { className: e("values"), children: value })
|
|
19
19
|
] }, idx))) }), onClose: onClose }));
|
|
20
20
|
}
|
package/esm/sdk-ui-ext.d.ts
CHANGED
|
@@ -231,6 +231,19 @@ export declare type AutomationsType = Extract<AutomationType, "alert" | "schedul
|
|
|
231
231
|
|
|
232
232
|
export { ChartInlineVisualizationType }
|
|
233
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Clears the cached definition of a single insight used by the InsightView components.
|
|
236
|
+
*
|
|
237
|
+
* @remarks
|
|
238
|
+
* Use this after an insight has been edited, so that the next render fetches the new
|
|
239
|
+
* definition. To clear every cache at once, use {@link clearInsightViewCaches}.
|
|
240
|
+
*
|
|
241
|
+
* @param workspace - the workspace the insight belongs to
|
|
242
|
+
* @param ref - the ref of the insight whose cached definition should be dropped
|
|
243
|
+
* @public
|
|
244
|
+
*/
|
|
245
|
+
export declare function clearInsightViewCacheForInsight(workspace: string, ref: ObjRef): void;
|
|
246
|
+
|
|
234
247
|
/**
|
|
235
248
|
* Clears all the caches used by the InsightView components.
|
|
236
249
|
*
|
|
@@ -40,7 +40,7 @@ export function ObjectShareDialog(props) {
|
|
|
40
40
|
/** The dialog session — mounted only while open, so its state cannot outlive a close. */
|
|
41
41
|
function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChange, labels, labelsLoading, labelsError, }) {
|
|
42
42
|
const intl = useIntl();
|
|
43
|
-
const { state, actions, isShareViewOpen, isAddGranteeOpen, isGeneralAccessConfirmOpen, isSelfRestrictConfirmOpen, isMutable, isLoading, workspaceDisabledLevels, rowDisabledLevels, onClose: closeDialog, onRowPermissionChange, onRowRemove, onSelfRestrictCancel, onSelfRestrictConfirm, } = useObjectShareDialog({
|
|
43
|
+
const { state, actions, isShareViewOpen, isAddGranteeOpen, isGeneralAccessConfirmOpen, isSelfRestrictConfirmOpen, isMutable, isLoading, workspaceDisabledLevels, rowDisabledLevels, isRowRemoveDisabled, rowRemoveDisabledTooltip, onClose: closeDialog, onRowPermissionChange, onRowRemove, onSelfRestrictCancel, onSelfRestrictConfirm, } = useObjectShareDialog({
|
|
44
44
|
target,
|
|
45
45
|
onClose,
|
|
46
46
|
onSummaryChange,
|
|
@@ -55,10 +55,23 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
|
|
|
55
55
|
kind: l.isPrimary ? "primary" : undefined,
|
|
56
56
|
locked: l.isPrimary,
|
|
57
57
|
}));
|
|
58
|
+
// Per row: a label the grantee only inherits is locked too. It is in their scope
|
|
59
|
+
// (so it shows checked, as the granting workspace shows it) but this workspace
|
|
60
|
+
// holds no grant on it to revoke — the same rule that disables Remove access for a
|
|
61
|
+
// grantee whose object access is inherited-only.
|
|
62
|
+
const rowLabelItems = (granteeId) => {
|
|
63
|
+
const inherited = state.inheritedLabelIdsByGrantee[granteeId];
|
|
64
|
+
if (!inherited?.length) {
|
|
65
|
+
return labelItems;
|
|
66
|
+
}
|
|
67
|
+
return labelItems.map((item) => item.locked || !inherited.includes(item.id) ? item : { ...item, locked: true });
|
|
68
|
+
};
|
|
58
69
|
const toGranteeRow = (g) => {
|
|
59
70
|
const display = granteeDisplayPair(g);
|
|
60
|
-
//
|
|
61
|
-
//
|
|
71
|
+
// Row policy — levels the caller may not pick (their own sole grant, or a
|
|
72
|
+
// level an inherited grant already exceeds) and whether there is a grant in
|
|
73
|
+
// this workspace to remove — is decided in the hook, with the matching
|
|
74
|
+
// tooltips; this only renders it.
|
|
62
75
|
const disabledLevels = rowDisabledLevels(g);
|
|
63
76
|
return {
|
|
64
77
|
id: g.id,
|
|
@@ -68,9 +81,9 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
|
|
|
68
81
|
: display.name,
|
|
69
82
|
email: display.email,
|
|
70
83
|
isPending: g.pending !== undefined,
|
|
71
|
-
controls: (_jsx(UiGranteeRowControls, { labels:
|
|
84
|
+
controls: (_jsx(UiGranteeRowControls, { labels: rowLabelItems(g.id), selectedLabelIds: state.selectedLabelIdsByGrantee[g.id] ?? state.labels.map((l) => l.id), permissionLevel: g.level, effectivePermission: g.effectivePermission, disabledLevels: disabledLevels, disabledTooltip: disabledLevels
|
|
72
85
|
? intl.formatMessage(objectShareMessages.selfRestrictWarning)
|
|
73
|
-
: undefined,
|
|
86
|
+
: undefined, isRemoveDisabled: isRowRemoveDisabled(g), removeDisabledTooltip: rowRemoveDisabledTooltip,
|
|
74
87
|
// Disabled while the row's own write is saving, while mutations are
|
|
75
88
|
// gated (unresolved label scope would orphan real per-label grants),
|
|
76
89
|
// and while a sole row's self identity is unknown.
|
|
@@ -125,7 +138,10 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
|
|
|
125
138
|
// On a failed load the empty grantee list + RESTRICTED radio are a
|
|
126
139
|
// placeholder, not the real policy — show why instead of letting it
|
|
127
140
|
// read as "no one has access".
|
|
128
|
-
error: state.status === "error" ? intl.formatMessage(objectShareMessages.loadError) : undefined }), _jsx(UiAddGranteeDialog, { isOpen: isAddGranteeOpen, objectTitle: objectTitle, loadOptions: actions.loadOptions, selectedGrantees: state.pendingGrantees, onSelectedGranteesChange: actions.setPendingGrantees,
|
|
141
|
+
error: state.status === "error" ? intl.formatMessage(objectShareMessages.loadError) : undefined }), _jsx(UiAddGranteeDialog, { isOpen: isAddGranteeOpen, objectTitle: objectTitle, loadOptions: actions.loadOptions, selectedGrantees: state.pendingGrantees, onSelectedGranteesChange: actions.setPendingGrantees,
|
|
142
|
+
// Same checklist the grantee rows use, so a label scope can be narrowed
|
|
143
|
+
// while adding instead of only after the grant landed.
|
|
144
|
+
labels: labelItems, onBack: actions.closeAddGrantee, onClose: closeDialog, onCancel: actions.closeAddGrantee, onShare: () => {
|
|
129
145
|
void actions.confirmAddGrantees();
|
|
130
146
|
} }), _jsx(UiConfirmDialog, { isOpen: isGeneralAccessConfirmOpen, title: intl.formatMessage(state.pendingGeneralAccess === "RESTRICTED"
|
|
131
147
|
? objectShareMessages.confirmRestrictTitle
|
package/esm/share/messages.d.ts
CHANGED
|
@@ -40,6 +40,13 @@ export declare const objectShareMessages: {
|
|
|
40
40
|
workspaceLevelInherited: {
|
|
41
41
|
id: string;
|
|
42
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* Disabled-action tooltip on a grantee row's Remove access, for a grantee whose
|
|
45
|
+
* access is inherited only — there is no grant in this workspace to revoke.
|
|
46
|
+
*/
|
|
47
|
+
granteeRemoveInherited: {
|
|
48
|
+
id: string;
|
|
49
|
+
};
|
|
43
50
|
granteeYou: {
|
|
44
51
|
id: string;
|
|
45
52
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/share/messages.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;IAO5B;;;;OAIG;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWL,CAAC"}
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/share/messages.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;IAO5B;;;;OAIG;;;;IAEH;;;OAGG;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWL,CAAC"}
|
package/esm/share/messages.js
CHANGED
|
@@ -26,6 +26,11 @@ export const objectShareMessages = defineMessages({
|
|
|
26
26
|
* below an inherited workspace-wide grant, which they could never lower.
|
|
27
27
|
*/
|
|
28
28
|
workspaceLevelInherited: { id: "objectShare.workspaceLevel.inherited" },
|
|
29
|
+
/**
|
|
30
|
+
* Disabled-action tooltip on a grantee row's Remove access, for a grantee whose
|
|
31
|
+
* access is inherited only — there is no grant in this workspace to revoke.
|
|
32
|
+
*/
|
|
33
|
+
granteeRemoveInherited: { id: "objectShare.granteeRemove.inherited" },
|
|
29
34
|
granteeYou: { id: "objectShare.grantee.you" },
|
|
30
35
|
adminTagLabel: { id: "objectShare.adminTag.label" },
|
|
31
36
|
adminTagTooltip: { id: "objectShare.adminTag.tooltip" },
|