@gooddata/sdk-ui-ext 11.55.0-alpha.3 → 11.55.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 +8 -8
- package/esm/index.d.ts +4 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +3 -2
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.js +8 -5
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.d.ts +20 -5
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.js +143 -33
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.d.ts +19 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.js +146 -46
- package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.d.ts +34 -7
- package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.d.ts.map +1 -1
- package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.js +38 -7
- package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.d.ts.map +1 -1
- package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.js +9 -4
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.js +18 -18
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.d.ts +1 -2
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.js +3 -9
- package/esm/internal/index.d.ts +1 -0
- package/esm/internal/index.d.ts.map +1 -1
- package/esm/internal/index.js +1 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts +14 -2
- package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-US.localization-bundle.js +18 -6
- package/esm/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.d.ts.map +1 -1
- package/esm/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.js +2 -1
- package/esm/internal/utils/propertiesHelper.d.ts +33 -1
- package/esm/internal/utils/propertiesHelper.d.ts.map +1 -1
- package/esm/internal/utils/propertiesHelper.js +43 -1
- package/esm/locales.d.ts +11 -2
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +5 -2
- package/esm/sdk-ui-ext.d.ts +194 -4
- package/esm/share/ObjectShareDialog.d.ts +19 -0
- package/esm/share/ObjectShareDialog.d.ts.map +1 -1
- package/esm/share/ObjectShareDialog.js +8 -1
- package/esm/share/objectShareController.helpers.d.ts +8 -52
- package/esm/share/objectShareController.helpers.d.ts.map +1 -1
- package/esm/share/objectShareController.helpers.js +23 -0
- package/esm/share/objectShareController.types.d.ts +76 -3
- package/esm/share/objectShareController.types.d.ts.map +1 -1
- package/esm/share/useAccessList.d.ts +14 -3
- package/esm/share/useAccessList.d.ts.map +1 -1
- package/esm/share/useAccessList.js +26 -7
- package/esm/share/useApplyObjectPermissions.d.ts +13 -0
- package/esm/share/useApplyObjectPermissions.d.ts.map +1 -0
- package/esm/share/useApplyObjectPermissions.js +33 -0
- package/esm/share/useObjectShareController.d.ts.map +1 -1
- package/esm/share/useObjectShareController.js +20 -9
- package/esm/share/useObjectShareDialog.d.ts +12 -3
- package/esm/share/useObjectShareDialog.d.ts.map +1 -1
- package/esm/share/useObjectShareDialog.js +16 -3
- package/package.json +22 -23
- package/styles/css/main.css +38 -4
- package/styles/css/main.css.map +1 -1
- package/styles/internal/css/conditional_formatting.css +38 -4
- package/styles/internal/css/conditional_formatting.css.map +1 -1
- package/styles/internal/scss/conditional_formatting.scss +67 -18
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
|
-
import { insightProperties
|
|
3
|
-
import {
|
|
2
|
+
import { insightProperties } from "@gooddata/sdk-model";
|
|
3
|
+
import { getEffectiveConditionalFormatting, getPaginationFromProperties, getTextWrappingFromProperties, } from "../../../utils/propertiesHelper.js";
|
|
4
4
|
import { removeUseless } from "../../../utils/removeUseless.js";
|
|
5
5
|
import { createPivotTableNextConfig } from "../pivotTableNext/PluggablePivotTableNext.js";
|
|
6
6
|
const AG_GRID_TOKEN_PLACEHOLDER = {
|
|
@@ -24,10 +24,6 @@ export function pivotTableNextConfigPropMeta(config) {
|
|
|
24
24
|
const hasConditionalFormatting = typeof config === "object" && config !== null && "conditionalFormatting" in config;
|
|
25
25
|
return pivotTableNextConfigMeta(hasConditionalFormatting ? "PivotTableNextConfigWithConditionalFormatting" : "PivotTableNextConfig");
|
|
26
26
|
}
|
|
27
|
-
export function isPivotTableNext(insightDefinition, settings) {
|
|
28
|
-
const uri = insightVisualizationUrl(insightDefinition);
|
|
29
|
-
return !!settings?.enableNewPivotTable && uri === "local:table";
|
|
30
|
-
}
|
|
31
27
|
export function pivotTableNextConfigFromInsight(insight, ctx) {
|
|
32
28
|
const baseConfig = ctx?.settings && ctx.backend
|
|
33
29
|
? createPivotTableNextConfig({ separators: ctx.settings.separators }, "none", ctx.settings)
|
|
@@ -42,9 +38,7 @@ export function pivotTableNextConfigFromInsight(insight, ctx) {
|
|
|
42
38
|
grandTotalsPosition: controls?.grandTotalsPosition,
|
|
43
39
|
pagination: getPaginationFromProperties(properties),
|
|
44
40
|
textWrapping: getTextWrappingFromProperties(properties),
|
|
45
|
-
conditionalFormatting:
|
|
46
|
-
? getConditionalFormattingFromProperties(properties)
|
|
47
|
-
: undefined,
|
|
41
|
+
conditionalFormatting: getEffectiveConditionalFormatting(insight, ctx?.settings),
|
|
48
42
|
columnSizing: {
|
|
49
43
|
columnWidths: controls?.columnWidths,
|
|
50
44
|
defaultWidth: "autoresizeAll",
|
package/esm/internal/index.d.ts
CHANGED
|
@@ -25,4 +25,5 @@ export { FluidLayoutDescriptor, fluidLayoutDescriptor } from "./FluidLayoutDescr
|
|
|
25
25
|
export { EmbedInsightDialog, type IEmbedInsightDialogProps, } from "./components/dialogs/embedInsightDialog/EmbedInsightDialog.js";
|
|
26
26
|
export type { IInsightTitleProps, IInsightViewProps } from "./interfaces/InsightView.js";
|
|
27
27
|
export { type ITabsIds, type IUsePagedDropdownConfig, type IUsePagedDropdownResult, type InsightListSortBy, type InsightListSortDirection, useInsightPagedList, } from "./components/insightList/useInsightPagedList.js";
|
|
28
|
+
export { getEffectiveConditionalFormatting } from "./utils/propertiesHelper.js";
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/internal/index.ts"],"names":[],"mappings":"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"}
|
package/esm/internal/index.js
CHANGED
|
@@ -24,3 +24,4 @@ export { LabelFormatControl } from "./components/configurationControls/axis/Labe
|
|
|
24
24
|
export { FluidLayoutDescriptor, fluidLayoutDescriptor } from "./FluidLayoutDescriptor.js";
|
|
25
25
|
export { EmbedInsightDialog, } from "./components/dialogs/embedInsightDialog/EmbedInsightDialog.js";
|
|
26
26
|
export { useInsightPagedList, } from "./components/insightList/useInsightPagedList.js";
|
|
27
|
+
export { getEffectiveConditionalFormatting } from "./utils/propertiesHelper.js";
|
|
@@ -2599,7 +2599,7 @@ export declare const en_US: {
|
|
|
2599
2599
|
text: string;
|
|
2600
2600
|
crowdinContext: string;
|
|
2601
2601
|
};
|
|
2602
|
-
"properties.conditionalFormatting.
|
|
2602
|
+
"properties.conditionalFormatting.semanticToggleAriaLabel": {
|
|
2603
2603
|
text: string;
|
|
2604
2604
|
crowdinContext: string;
|
|
2605
2605
|
};
|
|
@@ -2611,7 +2611,19 @@ export declare const en_US: {
|
|
|
2611
2611
|
text: string;
|
|
2612
2612
|
crowdinContext: string;
|
|
2613
2613
|
};
|
|
2614
|
-
"properties.conditionalFormatting.dialog.
|
|
2614
|
+
"properties.conditionalFormatting.dialog.ruleTitle": {
|
|
2615
|
+
text: string;
|
|
2616
|
+
crowdinContext: string;
|
|
2617
|
+
};
|
|
2618
|
+
"properties.conditionalFormatting.dialog.useDefaultRule": {
|
|
2619
|
+
text: string;
|
|
2620
|
+
crowdinContext: string;
|
|
2621
|
+
};
|
|
2622
|
+
"properties.conditionalFormatting.dialog.useDefaultRuleInfo": {
|
|
2623
|
+
text: string;
|
|
2624
|
+
crowdinContext: string;
|
|
2625
|
+
};
|
|
2626
|
+
"properties.conditionalFormatting.dialog.ruleCannotBeDeleted": {
|
|
2615
2627
|
text: string;
|
|
2616
2628
|
crowdinContext: string;
|
|
2617
2629
|
};
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6vFjB,CAAC"}
|
|
@@ -2601,9 +2601,9 @@ export const en_US = {
|
|
|
2601
2601
|
"text": "Delete rule",
|
|
2602
2602
|
"crowdinContext": "Accessible label for the button that deletes a conditional-formatting rule."
|
|
2603
2603
|
},
|
|
2604
|
-
"properties.conditionalFormatting.
|
|
2605
|
-
"text": "
|
|
2606
|
-
"crowdinContext": "Accessible label
|
|
2604
|
+
"properties.conditionalFormatting.semanticToggleAriaLabel": {
|
|
2605
|
+
"text": "Turn formatting on/off for {title}",
|
|
2606
|
+
"crowdinContext": "Accessible label for the toggle that turns a semantic-layer-inherited conditional-formatting rule on or off for one target. {title} is the target's display name (a metric or attribute name), not translatable."
|
|
2607
2607
|
},
|
|
2608
2608
|
"properties.conditionalFormatting.dialog.addTitle": {
|
|
2609
2609
|
"text": "Add rule",
|
|
@@ -2613,9 +2613,21 @@ export const en_US = {
|
|
|
2613
2613
|
"text": "Edit rule",
|
|
2614
2614
|
"crowdinContext": "Headline of the dialog when editing an existing conditional-formatting rule."
|
|
2615
2615
|
},
|
|
2616
|
-
"properties.conditionalFormatting.dialog.
|
|
2617
|
-
"text": "
|
|
2618
|
-
"crowdinContext": "
|
|
2616
|
+
"properties.conditionalFormatting.dialog.ruleTitle": {
|
|
2617
|
+
"text": "Rule",
|
|
2618
|
+
"crowdinContext": "Generic headline of the conditional-formatting rule dialog for a target that has a semantic-layer default rule (the dialog lets the user switch between the default rule and their own override)."
|
|
2619
|
+
},
|
|
2620
|
+
"properties.conditionalFormatting.dialog.useDefaultRule": {
|
|
2621
|
+
"text": "Use default rule",
|
|
2622
|
+
"crowdinContext": "Checkbox label in the conditional-formatting rule dialog. When checked, the target uses the rule defined once in the semantic layer; unchecking it lets the user author their own rule for this table."
|
|
2623
|
+
},
|
|
2624
|
+
"properties.conditionalFormatting.dialog.useDefaultRuleInfo": {
|
|
2625
|
+
"text": "Use the default rule for this item. Turn off this option to override the default rule.",
|
|
2626
|
+
"crowdinContext": "Tooltip text explaining the 'Use default rule' checkbox in the conditional-formatting rule dialog."
|
|
2627
|
+
},
|
|
2628
|
+
"properties.conditionalFormatting.dialog.ruleCannotBeDeleted": {
|
|
2629
|
+
"text": "This rule cannot be deleted. Disable it in the rule list.",
|
|
2630
|
+
"crowdinContext": "Tooltip shown on the disabled delete button in the conditional-formatting rule dialog, when the rule currently comes from the semantic layer default (nothing has been authored yet to delete)."
|
|
2619
2631
|
},
|
|
2620
2632
|
"properties.conditionalFormatting.dialog.target": {
|
|
2621
2633
|
"text": "When",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insightViewConfig.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAiB,KAAK,OAAO,EAAiB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"insightViewConfig.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAiB,KAAK,OAAO,EAAiB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQxE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,CAAC,EAAE,SAAS,GACrB,YAAY,CAAC,UAAU,GAAG,YAAY,GAAG,oBAAoB,CAAC,GAAG,SAAS,CAkB5E;AAED,wBAAgB,oBAAoB,CAChC,GAAG,EAAE,qBAAqB,GAC3B,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAS/C"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { DefaultLocale, resolveLocale } from "@gooddata/sdk-ui";
|
|
3
3
|
import { chartConfigFromInsight } from "../../components/pluggableVisualizations/chartCodeGenUtils.js";
|
|
4
4
|
import { geoConfigForInsightViewComponent, isGeoChart, } from "../../components/pluggableVisualizations/geoChart/geoConfigCodeGenerator.js";
|
|
5
|
-
import {
|
|
5
|
+
import { pivotTableNextConfigForInsightViewComponent } from "../../components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.js";
|
|
6
|
+
import { isPivotTableNext } from "../propertiesHelper.js";
|
|
6
7
|
/**
|
|
7
8
|
* @internal
|
|
8
9
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type IInsightDefinition, type ISettings } from "@gooddata/sdk-model";
|
|
1
|
+
import { type IConditionalFormatting, type IInsightDefinition, type ISettings } from "@gooddata/sdk-model";
|
|
2
2
|
import { type ColumnHeadersPosition, type ColumnWidthItem, type GrandTotalsPosition, type MeasureGroupDimension } from "@gooddata/sdk-ui-pivot";
|
|
3
3
|
import { type IPagination, type ITextWrapping, type PivotTableNextConditionalFormattingConfig } from "@gooddata/sdk-ui-pivot/next";
|
|
4
4
|
import { type AxisType } from "../interfaces/AxisType.js";
|
|
@@ -27,6 +27,38 @@ export declare function getConditionalFormattingFromProperties(visualizationProp
|
|
|
27
27
|
* through this predicate so the enablement rule cannot drift between call sites.
|
|
28
28
|
*/
|
|
29
29
|
export declare function isConditionalFormattingEnabled(settings: ISettings | undefined): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Whether `insightDefinition` is (or would render as) the next-gen pivot table — the only
|
|
32
|
+
* visualization conditional formatting applies to. Distinct from {@link isConditionalFormattingEnabled}:
|
|
33
|
+
* that's a workspace-wide flag, this is a per-insight check (so a chart or geo insight never gets
|
|
34
|
+
* mistaken for a pivot table just because the flag happens to be on workspace-wide).
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* `enableNewPivotTable` defaults to enabled when absent, matching every other check of this flag
|
|
38
|
+
* (the pluggable visualization factory's own routing decision in `BaseVisualization.tsx`, the
|
|
39
|
+
* config panel, the embed dialog) — an unset flag must not make this predicate disagree with what
|
|
40
|
+
* actually gets rendered.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isPivotTableNext(insightDefinition: IInsightDefinition, settings: ISettings | undefined): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Every semantic-layer (inherited) conditional formatting gate — the engine's own inheritance and
|
|
45
|
+
* the panel's "From semantic layer" block — must go through this predicate, mirroring
|
|
46
|
+
* {@link isConditionalFormattingEnabled}. Deliberately independent of it: a workspace can inherit
|
|
47
|
+
* semantic-layer rules without exposing insight-level CF authoring, or vice versa. Pivot-table-next
|
|
48
|
+
* only, like every other CF check, so it also requires `enableNewPivotTable` (default enabled,
|
|
49
|
+
* matching the flag's convention everywhere else it's checked).
|
|
50
|
+
*/
|
|
51
|
+
export declare function isSemanticConditionalFormattingEnabled(settings: ISettings | undefined): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* The conditional formatting config that should currently apply to an insight: gated behind the
|
|
54
|
+
* feature flag and behind the insight actually being a next-gen pivot table (disabled/not-a-pivot-
|
|
55
|
+
* table means no config at all, so there is no UI to edit rules a viewer can't see take effect, and
|
|
56
|
+
* a chart/geo export never picks up stale CF left over from a since-changed visualization type),
|
|
57
|
+
* preferring a runtime override (e.g. InsightView's config prop) over the insight's own saved rules.
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
export declare function getEffectiveConditionalFormatting(insight: IInsightDefinition, settings: ISettings | undefined, configOverride?: IConditionalFormatting): IConditionalFormatting | undefined;
|
|
30
62
|
export declare function getPageSizeFromProperties(visualizationProperties: IVisualizationProperties): number | undefined;
|
|
31
63
|
export declare function getMeasureGroupDimensionFromProperties(visualizationProperties: IVisualizationProperties): MeasureGroupDimension;
|
|
32
64
|
export declare function getColumnHeadersPositionFromProperties(visualizationProperties: IVisualizationProperties): ColumnHeadersPosition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propertiesHelper.d.ts","sourceRoot":"","sources":["../../../src/internal/utils/propertiesHelper.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"propertiesHelper.d.ts","sourceRoot":"","sources":["../../../src/internal/utils/propertiesHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// (C) 2019-2026 GoodData Corporation
|
|
2
2
|
// eslint-disable-next-line no-restricted-imports
|
|
3
3
|
import { cloneDeep, get, has, isEmpty, set } from "lodash-es";
|
|
4
|
-
import { bucketsIsEmpty, insightBuckets } from "@gooddata/sdk-model";
|
|
4
|
+
import { bucketsIsEmpty, insightBuckets, insightProperties, insightVisualizationUrl, } from "@gooddata/sdk-model";
|
|
5
5
|
import { BucketNames } from "@gooddata/sdk-ui";
|
|
6
6
|
import { AXIS } from "../constants/axis.js";
|
|
7
7
|
import { PROPERTY_CONTROLS } from "../constants/properties.js";
|
|
@@ -197,6 +197,48 @@ export function getConditionalFormattingFromProperties(visualizationProperties)
|
|
|
197
197
|
export function isConditionalFormattingEnabled(settings) {
|
|
198
198
|
return settings?.enableConditionalFormatting ?? false;
|
|
199
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Whether `insightDefinition` is (or would render as) the next-gen pivot table — the only
|
|
202
|
+
* visualization conditional formatting applies to. Distinct from {@link isConditionalFormattingEnabled}:
|
|
203
|
+
* that's a workspace-wide flag, this is a per-insight check (so a chart or geo insight never gets
|
|
204
|
+
* mistaken for a pivot table just because the flag happens to be on workspace-wide).
|
|
205
|
+
*
|
|
206
|
+
* @remarks
|
|
207
|
+
* `enableNewPivotTable` defaults to enabled when absent, matching every other check of this flag
|
|
208
|
+
* (the pluggable visualization factory's own routing decision in `BaseVisualization.tsx`, the
|
|
209
|
+
* config panel, the embed dialog) — an unset flag must not make this predicate disagree with what
|
|
210
|
+
* actually gets rendered.
|
|
211
|
+
*/
|
|
212
|
+
export function isPivotTableNext(insightDefinition, settings) {
|
|
213
|
+
const uri = insightVisualizationUrl(insightDefinition);
|
|
214
|
+
return (settings?.enableNewPivotTable ?? true) && uri === "local:table";
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Every semantic-layer (inherited) conditional formatting gate — the engine's own inheritance and
|
|
218
|
+
* the panel's "From semantic layer" block — must go through this predicate, mirroring
|
|
219
|
+
* {@link isConditionalFormattingEnabled}. Deliberately independent of it: a workspace can inherit
|
|
220
|
+
* semantic-layer rules without exposing insight-level CF authoring, or vice versa. Pivot-table-next
|
|
221
|
+
* only, like every other CF check, so it also requires `enableNewPivotTable` (default enabled,
|
|
222
|
+
* matching the flag's convention everywhere else it's checked).
|
|
223
|
+
*/
|
|
224
|
+
export function isSemanticConditionalFormattingEnabled(settings) {
|
|
225
|
+
return ((settings?.enableSemanticConditionalFormatting ?? false) && (settings?.enableNewPivotTable ?? true));
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* The conditional formatting config that should currently apply to an insight: gated behind the
|
|
229
|
+
* feature flag and behind the insight actually being a next-gen pivot table (disabled/not-a-pivot-
|
|
230
|
+
* table means no config at all, so there is no UI to edit rules a viewer can't see take effect, and
|
|
231
|
+
* a chart/geo export never picks up stale CF left over from a since-changed visualization type),
|
|
232
|
+
* preferring a runtime override (e.g. InsightView's config prop) over the insight's own saved rules.
|
|
233
|
+
*
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
export function getEffectiveConditionalFormatting(insight, settings, configOverride) {
|
|
237
|
+
if (!isConditionalFormattingEnabled(settings) || !isPivotTableNext(insight, settings)) {
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
return configOverride ?? getConditionalFormattingFromProperties(insightProperties(insight));
|
|
241
|
+
}
|
|
200
242
|
export function getPageSizeFromProperties(visualizationProperties) {
|
|
201
243
|
const pageSize = visualizationProperties?.controls?.["pageSize"];
|
|
202
244
|
return typeof pageSize === "number" ? pageSize : undefined;
|
package/esm/locales.d.ts
CHANGED
|
@@ -1018,7 +1018,7 @@ export declare const conditionalFormattingMessages: {
|
|
|
1018
1018
|
ruleDelete: {
|
|
1019
1019
|
id: string;
|
|
1020
1020
|
};
|
|
1021
|
-
|
|
1021
|
+
semanticToggleAriaLabel: {
|
|
1022
1022
|
id: string;
|
|
1023
1023
|
};
|
|
1024
1024
|
dialogAddTitle: {
|
|
@@ -1027,7 +1027,16 @@ export declare const conditionalFormattingMessages: {
|
|
|
1027
1027
|
dialogEditTitle: {
|
|
1028
1028
|
id: string;
|
|
1029
1029
|
};
|
|
1030
|
-
|
|
1030
|
+
dialogRuleTitle: {
|
|
1031
|
+
id: string;
|
|
1032
|
+
};
|
|
1033
|
+
dialogUseDefaultRule: {
|
|
1034
|
+
id: string;
|
|
1035
|
+
};
|
|
1036
|
+
dialogUseDefaultRuleInfo: {
|
|
1037
|
+
id: string;
|
|
1038
|
+
};
|
|
1039
|
+
dialogRuleCannotBeDeleted: {
|
|
1031
1040
|
id: string;
|
|
1032
1041
|
};
|
|
1033
1042
|
dialogTarget: {
|
package/esm/locales.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA2EnD,CAAC;AAEH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAsBtD,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuQnB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH7B,CAAC;AAEH,eAAO,MAAM,6BAA6B
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA2EnD,CAAC;AAEH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAsBtD,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuQnB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH7B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCxC,CAAC;AAEH,eAAO,MAAM,qCAAqC,EAAE,MAAM,CAAC,6BAA6B,EAAE,iBAAiB,CAmBrG,CAAC;AAEP,wGAAsG;AACtG,eAAO,MAAM,yCAAyC,EAAE,OAAO,CAC3D,MAAM,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,CAS1D,CAAC"}
|
package/esm/locales.js
CHANGED
|
@@ -490,10 +490,13 @@ export const conditionalFormattingMessages = defineMessages({
|
|
|
490
490
|
ruleInvalidValue: { id: "properties.conditionalFormatting.rule.invalidValue" },
|
|
491
491
|
ruleEdit: { id: "properties.conditionalFormatting.rule.edit" },
|
|
492
492
|
ruleDelete: { id: "properties.conditionalFormatting.rule.delete" },
|
|
493
|
-
|
|
493
|
+
semanticToggleAriaLabel: { id: "properties.conditionalFormatting.semanticToggleAriaLabel" },
|
|
494
494
|
dialogAddTitle: { id: "properties.conditionalFormatting.dialog.addTitle" },
|
|
495
495
|
dialogEditTitle: { id: "properties.conditionalFormatting.dialog.editTitle" },
|
|
496
|
-
|
|
496
|
+
dialogRuleTitle: { id: "properties.conditionalFormatting.dialog.ruleTitle" },
|
|
497
|
+
dialogUseDefaultRule: { id: "properties.conditionalFormatting.dialog.useDefaultRule" },
|
|
498
|
+
dialogUseDefaultRuleInfo: { id: "properties.conditionalFormatting.dialog.useDefaultRuleInfo" },
|
|
499
|
+
dialogRuleCannotBeDeleted: { id: "properties.conditionalFormatting.dialog.ruleCannotBeDeleted" },
|
|
497
500
|
dialogTarget: { id: "properties.conditionalFormatting.dialog.target" },
|
|
498
501
|
dialogSelectTarget: { id: "properties.conditionalFormatting.dialog.selectTarget" },
|
|
499
502
|
dialogCondition: { id: "properties.conditionalFormatting.dialog.condition" },
|
package/esm/sdk-ui-ext.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ import { DateFilterGranularity } from '@gooddata/sdk-model';
|
|
|
21
21
|
import { Dispatch } from 'react';
|
|
22
22
|
import { EmbedType } from '@gooddata/sdk-ui-kit';
|
|
23
23
|
import { ExplicitDrill } from '@gooddata/sdk-ui';
|
|
24
|
-
import
|
|
24
|
+
import { GeneralAccessValue } from '@gooddata/sdk-ui-kit';
|
|
25
25
|
import { GoodDataSdkError } from '@gooddata/sdk-ui';
|
|
26
26
|
import { IAlertComparisonOperator } from '@gooddata/sdk-model';
|
|
27
27
|
import { IAlertRelativeArithmeticOperator } from '@gooddata/sdk-model';
|
|
@@ -31,6 +31,7 @@ import { IAutomationMetadataObject } from '@gooddata/sdk-model';
|
|
|
31
31
|
import { ICatalogAttributeHierarchy } from '@gooddata/sdk-model';
|
|
32
32
|
import { IChartConfig } from '@gooddata/sdk-ui-charts';
|
|
33
33
|
import { IColorPalette } from '@gooddata/sdk-model';
|
|
34
|
+
import { IConditionalFormatting } from '@gooddata/sdk-model';
|
|
34
35
|
import { IConditionalFormattingRule } from '@gooddata/sdk-ui-pivot/next';
|
|
35
36
|
import { IDashboardUrlBuilder } from '@gooddata/sdk-ui';
|
|
36
37
|
import { IDateFilterOptionsByType } from '@gooddata/sdk-ui-filters';
|
|
@@ -50,6 +51,7 @@ import { IntlShape } from 'react-intl';
|
|
|
50
51
|
import type { IObjectAccessList } from '@gooddata/sdk-model';
|
|
51
52
|
import type { IObjectPermissionsObject } from '@gooddata/sdk-backend-spi';
|
|
52
53
|
import { IPivotTableConfig } from '@gooddata/sdk-ui-pivot';
|
|
54
|
+
import { ISemanticConditionalFormatting } from '@gooddata/sdk-model';
|
|
53
55
|
import { ISeparators } from '@gooddata/sdk-model';
|
|
54
56
|
import { ISettings } from '@gooddata/sdk-model';
|
|
55
57
|
import { ITab } from '@gooddata/sdk-ui-kit';
|
|
@@ -276,7 +278,7 @@ export declare const COMPARISON_OPERATORS: {
|
|
|
276
278
|
/**
|
|
277
279
|
* @internal
|
|
278
280
|
*/
|
|
279
|
-
export declare function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOptions, separators, dateFilterOptions, dateSettings, alignTo,
|
|
281
|
+
export declare function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOptions, separators, dateFilterOptions, dateSettings, alignTo, fixedTarget, semanticByTarget, onDelete, onRevertToDefault, onSave, onClose }: IConditionalFormattingDialogProps): JSX.Element;
|
|
280
282
|
|
|
281
283
|
/**
|
|
282
284
|
* @internal
|
|
@@ -427,6 +429,17 @@ export declare const fluidLayoutDescriptor: FluidLayoutDescriptor;
|
|
|
427
429
|
*/
|
|
428
430
|
export declare const getComparisonOperatorTitle: (operator: IAlertComparisonOperator, intl: IntlShape) => string;
|
|
429
431
|
|
|
432
|
+
/**
|
|
433
|
+
* The conditional formatting config that should currently apply to an insight: gated behind the
|
|
434
|
+
* feature flag and behind the insight actually being a next-gen pivot table (disabled/not-a-pivot-
|
|
435
|
+
* table means no config at all, so there is no UI to edit rules a viewer can't see take effect, and
|
|
436
|
+
* a chart/geo export never picks up stale CF left over from a since-changed visualization type),
|
|
437
|
+
* preferring a runtime override (e.g. InsightView's config prop) over the insight's own saved rules.
|
|
438
|
+
*
|
|
439
|
+
* @internal
|
|
440
|
+
*/
|
|
441
|
+
export declare function getEffectiveConditionalFormatting(insight: IInsightDefinition, settings: ISettings | undefined, configOverride?: IConditionalFormatting): IConditionalFormatting | undefined;
|
|
442
|
+
|
|
430
443
|
/**
|
|
431
444
|
* @internal
|
|
432
445
|
*/
|
|
@@ -447,6 +460,43 @@ export declare function getInsightWithAppliedDrillDown(insight: IInsight, drillE
|
|
|
447
460
|
*/
|
|
448
461
|
export declare const getRelativeOperatorTitle: (operator: IAlertRelativeOperator, art: IAlertRelativeArithmeticOperator, intl: IntlShape) => string;
|
|
449
462
|
|
|
463
|
+
/**
|
|
464
|
+
* A transient edit overlaid on a fetched grantee row (keyed by grantee id in
|
|
465
|
+
* `mergeGrantees`). The pending-guard keeps at most one edit in flight per id.
|
|
466
|
+
* A pending edit that superseded an already-COMMITTED entry (an added row, an
|
|
467
|
+
* earlier level change) carries it as `settled`, because the fetched base no longer
|
|
468
|
+
* holds that row's last-settled state: failure restores `settled`, success drops it.
|
|
469
|
+
* With no `settled`, failure deletes the entry, reverting to the fetched row.
|
|
470
|
+
*
|
|
471
|
+
* @internal
|
|
472
|
+
*/
|
|
473
|
+
export declare type GranteeEdit = {
|
|
474
|
+
kind: "level";
|
|
475
|
+
level: ObjectSharePermissionLevel;
|
|
476
|
+
pending: boolean;
|
|
477
|
+
settled?: GranteeEdit;
|
|
478
|
+
} | {
|
|
479
|
+
kind: "added";
|
|
480
|
+
grantee: IObjectShareGrantee;
|
|
481
|
+
pending: boolean;
|
|
482
|
+
settled?: GranteeEdit;
|
|
483
|
+
} | {
|
|
484
|
+
kind: "removed";
|
|
485
|
+
pending: boolean;
|
|
486
|
+
settled?: GranteeEdit;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Pending marker only — the row renders exactly as it stands. For a write that
|
|
490
|
+
* locks the row without changing its access (a label-scope edit), so nothing has
|
|
491
|
+
* to invent a level: reusing the `level` overlay would record the DISPLAYED level
|
|
492
|
+
* as the direct grant, and that level is the effective one.
|
|
493
|
+
*/
|
|
494
|
+
| {
|
|
495
|
+
kind: "locked";
|
|
496
|
+
pending: boolean;
|
|
497
|
+
settled?: GranteeEdit;
|
|
498
|
+
};
|
|
499
|
+
|
|
450
500
|
/**
|
|
451
501
|
* @internal
|
|
452
502
|
*/
|
|
@@ -602,10 +652,25 @@ export declare interface IConditionalFormattingDialogProps {
|
|
|
602
652
|
dateSettings?: ICfDateSettings;
|
|
603
653
|
/** CSS selector of a small, stable element the popover anchors to. */
|
|
604
654
|
alignTo: string;
|
|
605
|
-
/** Renders the dialog non-interactively: no target picker, no editing, no Save button. */
|
|
606
|
-
readOnly?: boolean;
|
|
607
655
|
/** Renders a static "icon + title" header for the rule's target instead of the picker dropdown. */
|
|
608
656
|
fixedTarget?: boolean;
|
|
657
|
+
/**
|
|
658
|
+
* Semantic-layer rules by target localId. When the current target has an entry, the dialog
|
|
659
|
+
* offers the "Use default rule" checkbox switching between the inherited rule (locked) and an
|
|
660
|
+
* authored override (editable) — the whole map (not one resolved value) so an untargeted "Add
|
|
661
|
+
* rule" flow re-derives the right fallback if the user changes target mid-dialog.
|
|
662
|
+
*/
|
|
663
|
+
semanticByTarget?: Record<string, ISemanticConditionalFormatting>;
|
|
664
|
+
/** Deletes THIS specific authored rule (wired only when one exists) — the trash button. */
|
|
665
|
+
onDelete?: () => void;
|
|
666
|
+
/**
|
|
667
|
+
* Reverts to Inherited: clears every authored rule for `target` (a target can have several
|
|
668
|
+
* stacked custom rules, not just this one) AND this rule's own original id — needed together
|
|
669
|
+
* because a non-fixedTarget dialog lets the user retarget before saving, so the rule being
|
|
670
|
+
* edited may not (yet) be one of the rules actually stored against `target`. Distinct from
|
|
671
|
+
* `onDelete`: triggered only by Save while "Use default rule" is checked.
|
|
672
|
+
*/
|
|
673
|
+
onRevertToDefault?: (target: ConditionalFormattingTarget, ruleId: string) => void;
|
|
609
674
|
onSave: (rule: IConditionalFormattingRule) => void;
|
|
610
675
|
onClose: () => void;
|
|
611
676
|
}
|
|
@@ -747,6 +812,19 @@ export declare interface IGrantedDataSource {
|
|
|
747
812
|
accessSource?: DataSourceAccessSource;
|
|
748
813
|
}
|
|
749
814
|
|
|
815
|
+
/**
|
|
816
|
+
* Known identity facts of a grantee: real name/email only, never an id fallback.
|
|
817
|
+
* Undefined fields are unknown and may be backfilled.
|
|
818
|
+
*
|
|
819
|
+
* @internal
|
|
820
|
+
*/
|
|
821
|
+
export declare interface IGranteeIdentityFacts {
|
|
822
|
+
/** Real full name (users) / group name, when known. */
|
|
823
|
+
name?: string;
|
|
824
|
+
/** Real email, when known (users only). */
|
|
825
|
+
email?: string;
|
|
826
|
+
}
|
|
827
|
+
|
|
750
828
|
/**
|
|
751
829
|
* @internal
|
|
752
830
|
*/
|
|
@@ -1547,6 +1625,23 @@ export declare interface IObjectShareDialogProps {
|
|
|
1547
1625
|
* keep an inline access row in sync without refetching.
|
|
1548
1626
|
*/
|
|
1549
1627
|
onSummaryChange?: (summary: IObjectAccessSummary) => void;
|
|
1628
|
+
/**
|
|
1629
|
+
* Manage access for an object that does not exist yet. Nothing is written; the result
|
|
1630
|
+
* arrives through `onDraftChange`. Requires no `target`, and `labels` is ignored.
|
|
1631
|
+
*/
|
|
1632
|
+
draft?: boolean;
|
|
1633
|
+
/**
|
|
1634
|
+
* Fires with the final draft as the dialog closes, while `draft`. Required: the session
|
|
1635
|
+
* unmounts on close, so a draft nobody keeps is lost.
|
|
1636
|
+
*/
|
|
1637
|
+
onDraftChange?: (draft: IObjectShareDraft) => void;
|
|
1638
|
+
/** Draft to carry on from, when reopening. */
|
|
1639
|
+
initialDraft?: IObjectShareDraft;
|
|
1640
|
+
/**
|
|
1641
|
+
* What a draft's general access starts as; an untouched default is never written.
|
|
1642
|
+
* Defaults to RESTRICTED; pass WORKSPACE for a type the backend creates visible.
|
|
1643
|
+
*/
|
|
1644
|
+
initialDraftGeneralAccess?: GeneralAccessValue;
|
|
1550
1645
|
/**
|
|
1551
1646
|
* Labels (display forms) of the shared attribute, enabling the per-grantee
|
|
1552
1647
|
* label-scope picker. Omit for objects without labels (e.g. facts).
|
|
@@ -1568,6 +1663,67 @@ export declare interface IObjectShareDialogProps {
|
|
|
1568
1663
|
labelsError?: boolean;
|
|
1569
1664
|
}
|
|
1570
1665
|
|
|
1666
|
+
/**
|
|
1667
|
+
* Unsaved access for an object that does not exist yet.
|
|
1668
|
+
*
|
|
1669
|
+
* @internal
|
|
1670
|
+
*/
|
|
1671
|
+
export declare interface IObjectShareDraft {
|
|
1672
|
+
granteeEdits: Readonly<Record<string, GranteeEdit>>;
|
|
1673
|
+
ruleEdit: IRuleEdit | undefined;
|
|
1674
|
+
}
|
|
1675
|
+
|
|
1676
|
+
/**
|
|
1677
|
+
* Dialog row derived from a backend grant. `name`/`email` are real facts only;
|
|
1678
|
+
* display fallbacks are `granteeDisplayPair`'s concern.
|
|
1679
|
+
*
|
|
1680
|
+
* @internal
|
|
1681
|
+
*/
|
|
1682
|
+
export declare interface IObjectShareGrantee extends IGranteeIdentityFacts {
|
|
1683
|
+
/** Stable id used as the dialog row's React key. `user:<ref>` / `group:<ref>`. */
|
|
1684
|
+
id: string;
|
|
1685
|
+
kind: "user" | "group";
|
|
1686
|
+
granteeRef: ObjRef;
|
|
1687
|
+
/**
|
|
1688
|
+
* Whether this row is the signed-in user's own grant. Derived from the
|
|
1689
|
+
* profile, so it holds for rows of any origin (fetched or optimistic).
|
|
1690
|
+
*/
|
|
1691
|
+
isSelf?: boolean;
|
|
1692
|
+
/**
|
|
1693
|
+
* EFFECTIVE permission level shown on the row — the stronger of {@link IObjectShareGrantee.directLevel}
|
|
1694
|
+
* and {@link IObjectShareGrantee.inheritedLevel}, so a grantee who only inherits a level is not
|
|
1695
|
+
* understated as VIEW.
|
|
1696
|
+
*/
|
|
1697
|
+
level: ObjectSharePermissionLevel;
|
|
1698
|
+
/**
|
|
1699
|
+
* Permission level granted by THIS workspace, or undefined when the grantee's
|
|
1700
|
+
* access is inherited-only (a group, or a parent workspace in a hierarchy).
|
|
1701
|
+
* This — not {@link IObjectShareGrantee.level} — is what a re-grade writes and what decides whether
|
|
1702
|
+
* there is a grant here to remove: inherited access cannot be revoked from here.
|
|
1703
|
+
*/
|
|
1704
|
+
directLevel?: ObjectSharePermissionLevel;
|
|
1705
|
+
/**
|
|
1706
|
+
* Inherited permission to surface as a warning: set when inheritance carries the
|
|
1707
|
+
* grantee above their direct grant (including inherited-only, where the whole
|
|
1708
|
+
* displayed level is inherited). Undefined when the direct grant already covers
|
|
1709
|
+
* the effective permission. Drives the row's warning badge.
|
|
1710
|
+
*/
|
|
1711
|
+
effectivePermission?: ObjectSharePermissionLevel;
|
|
1712
|
+
/**
|
|
1713
|
+
* Strongest permission the grantee inherits (via a group, or a parent workspace),
|
|
1714
|
+
* regardless of the current direct level. Retained from the fetch so the
|
|
1715
|
+
* displayed level and badge can be recomposed locally when the direct level
|
|
1716
|
+
* changes (no refetch).
|
|
1717
|
+
*/
|
|
1718
|
+
inheritedLevel?: ObjectSharePermissionLevel;
|
|
1719
|
+
/**
|
|
1720
|
+
* Row-level in-flight state for optimistic updates: `"saving"` while a level
|
|
1721
|
+
* change or freshly-added grant is being committed, `"removing"` while a
|
|
1722
|
+
* removal is in flight. Undefined when the row reflects committed state.
|
|
1723
|
+
*/
|
|
1724
|
+
pending?: "saving" | "removing";
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1571
1727
|
/**
|
|
1572
1728
|
* A label (attribute display form) of the shared attribute. The share dialog
|
|
1573
1729
|
* scopes a grantee's access to a subset of these via per-label permission grants.
|
|
@@ -1593,6 +1749,21 @@ export declare interface IObjectShareLabel {
|
|
|
1593
1749
|
isDefault: boolean;
|
|
1594
1750
|
}
|
|
1595
1751
|
|
|
1752
|
+
/**
|
|
1753
|
+
* Transient edit of the all-workspace-users rule (general access + its level),
|
|
1754
|
+
* overlaid on the fetched rule state in the hook. Same lifecycle and `settled`
|
|
1755
|
+
* semantics as {@link GranteeEdit}, one edit in flight at a time.
|
|
1756
|
+
*
|
|
1757
|
+
* @internal
|
|
1758
|
+
*/
|
|
1759
|
+
export declare interface IRuleEdit {
|
|
1760
|
+
generalAccess: GeneralAccessValue;
|
|
1761
|
+
level: ObjectSharePermissionLevel;
|
|
1762
|
+
pending: boolean;
|
|
1763
|
+
/** The committed rule edit this pending one superseded; restored on failure. */
|
|
1764
|
+
settled?: IRuleEdit;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1596
1767
|
/**
|
|
1597
1768
|
* Type-guard testing whether the provided object is an instance of {@link IDrillDownDefinition}.
|
|
1598
1769
|
* @beta
|
|
@@ -1891,6 +2062,14 @@ export declare function NotificationsPanel(props: INotificationsPanelProps): JSX
|
|
|
1891
2062
|
*/
|
|
1892
2063
|
export declare function ObjectShareDialog(props: IObjectShareDialogProps): JSX.Element | null;
|
|
1893
2064
|
|
|
2065
|
+
/**
|
|
2066
|
+
* Permission level surfaced in the share dialog — the model's granular access
|
|
2067
|
+
* permission (VIEW / SHARE / EDIT), assignable from the permission menu.
|
|
2068
|
+
*
|
|
2069
|
+
* @internal
|
|
2070
|
+
*/
|
|
2071
|
+
export declare type ObjectSharePermissionLevel = AccessGranularPermission;
|
|
2072
|
+
|
|
1894
2073
|
/**
|
|
1895
2074
|
* @alpha
|
|
1896
2075
|
*/
|
|
@@ -1972,6 +2151,17 @@ export declare type TelemetryEvent = "multiple-users-deleted" | "multiple-groups
|
|
|
1972
2151
|
*/
|
|
1973
2152
|
export declare type TrackEventCallback = (event: TelemetryEvent) => void;
|
|
1974
2153
|
|
|
2154
|
+
/**
|
|
2155
|
+
* Writes a draft's access to an object that now exists.
|
|
2156
|
+
*
|
|
2157
|
+
* @remarks
|
|
2158
|
+
* One request, so it all lands or none does. True when it landed or asked for nothing,
|
|
2159
|
+
* false when it failed — nothing is shown to the user.
|
|
2160
|
+
*
|
|
2161
|
+
* @internal
|
|
2162
|
+
*/
|
|
2163
|
+
export declare function useApplyObjectPermissions(): (target: IObjectPermissionsObject, draft: IObjectShareDraft) => Promise<boolean>;
|
|
2164
|
+
|
|
1975
2165
|
/**
|
|
1976
2166
|
* The workspace date-filter preset catalog for date-condition value pickers — the same catalog the
|
|
1977
2167
|
* dashboard date filter consumes. Undefined while loading (the picker degrades to its static form);
|