@gooddata/sdk-ui-ext 11.55.0-alpha.2 → 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.
Files changed (68) hide show
  1. package/NOTICE +9 -9
  2. package/esm/index.d.ts +4 -2
  3. package/esm/index.d.ts.map +1 -1
  4. package/esm/index.js +3 -2
  5. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.d.ts.map +1 -1
  6. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionEditor.js +8 -5
  7. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.d.ts +20 -5
  8. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.d.ts.map +1 -1
  9. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.js +143 -33
  10. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.d.ts +19 -1
  11. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.d.ts.map +1 -1
  12. package/esm/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.js +146 -46
  13. package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.d.ts +34 -7
  14. package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.d.ts.map +1 -1
  15. package/esm/internal/components/configurationControls/conditionalFormatting/conditionalFormattingModel.js +38 -7
  16. package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.d.ts.map +1 -1
  17. package/esm/internal/components/configurationPanels/PivotTableConfigurationPanel.js +9 -4
  18. package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.d.ts.map +1 -1
  19. package/esm/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.js +18 -18
  20. package/esm/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.d.ts +1 -2
  21. package/esm/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.d.ts.map +1 -1
  22. package/esm/internal/components/pluggableVisualizations/pivotTableNext/pivotTableNextConfigFromInsight.js +3 -9
  23. package/esm/internal/index.d.ts +1 -0
  24. package/esm/internal/index.d.ts.map +1 -1
  25. package/esm/internal/index.js +1 -0
  26. package/esm/internal/translations/de-DE.localization-bundle.js +2 -2
  27. package/esm/internal/translations/en-US.localization-bundle.d.ts +14 -2
  28. package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
  29. package/esm/internal/translations/en-US.localization-bundle.js +18 -6
  30. package/esm/internal/translations/zh-HK.localization-bundle.js +40 -40
  31. package/esm/internal/translations/zh-Hant.localization-bundle.js +1 -1
  32. package/esm/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.d.ts.map +1 -1
  33. package/esm/internal/utils/embeddingInsightViewCodeGenerator/insightViewConfig.js +2 -1
  34. package/esm/internal/utils/propertiesHelper.d.ts +33 -1
  35. package/esm/internal/utils/propertiesHelper.d.ts.map +1 -1
  36. package/esm/internal/utils/propertiesHelper.js +43 -1
  37. package/esm/locales.d.ts +11 -2
  38. package/esm/locales.d.ts.map +1 -1
  39. package/esm/locales.js +5 -2
  40. package/esm/sdk-ui-ext.d.ts +194 -4
  41. package/esm/share/ObjectShareDialog.d.ts +19 -0
  42. package/esm/share/ObjectShareDialog.d.ts.map +1 -1
  43. package/esm/share/ObjectShareDialog.js +8 -1
  44. package/esm/share/objectShareController.helpers.d.ts +8 -52
  45. package/esm/share/objectShareController.helpers.d.ts.map +1 -1
  46. package/esm/share/objectShareController.helpers.js +23 -0
  47. package/esm/share/objectShareController.types.d.ts +76 -3
  48. package/esm/share/objectShareController.types.d.ts.map +1 -1
  49. package/esm/share/useAccessList.d.ts +14 -3
  50. package/esm/share/useAccessList.d.ts.map +1 -1
  51. package/esm/share/useAccessList.js +26 -7
  52. package/esm/share/useApplyObjectPermissions.d.ts +13 -0
  53. package/esm/share/useApplyObjectPermissions.d.ts.map +1 -0
  54. package/esm/share/useApplyObjectPermissions.js +33 -0
  55. package/esm/share/useObjectShareController.d.ts.map +1 -1
  56. package/esm/share/useObjectShareController.js +20 -9
  57. package/esm/share/useObjectShareDialog.d.ts +12 -3
  58. package/esm/share/useObjectShareDialog.d.ts.map +1 -1
  59. package/esm/share/useObjectShareDialog.js +16 -3
  60. package/package.json +23 -24
  61. package/styles/css/main.css +65 -4
  62. package/styles/css/main.css.map +1 -1
  63. package/styles/internal/css/conditional_formatting.css +38 -4
  64. package/styles/internal/css/conditional_formatting.css.map +1 -1
  65. package/styles/internal/css/insightPicker.css +27 -0
  66. package/styles/internal/css/insightPicker.css.map +1 -1
  67. package/styles/internal/scss/conditional_formatting.scss +67 -18
  68. package/styles/internal/scss/insightPicker.scss +41 -0
package/NOTICE CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
9
9
 
10
- Date generated: 2026-8-30
10
+ Date generated: 2026-9-1
11
11
 
12
- Revision ID: ddb9da987c2b38f109d24ae5d452deb8e2f28bd2
12
+ Revision ID: 3404f1a0d36039369213be192418b30d4f1226a6
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -518,7 +518,7 @@ No first party licenses found in gooddata-ui-sdk
518
518
  - open (7.4.2) [MIT]
519
519
  - ora (5.4.1) [MIT]
520
520
  - oxc-transform (0.147.0) [MIT]
521
- - oxfmt (0.52.0) [MIT, 0BSD]
521
+ - oxfmt (0.58.0) [MIT, 0BSD]
522
522
  - p-map (3.0.0) [MIT]
523
523
  - package-json-from-dist (1.0.1) [blueoak-1.0.0]
524
524
  - parent-module (1.0.1) [MIT]
@@ -10463,9 +10463,9 @@ Dependency Path: oxc-transform
10463
10463
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
10464
10464
 
10465
10465
  --------------------------------------------------------------------------------
10466
- Package Title: oxfmt (0.52.0)
10466
+ Package Title: oxfmt (0.58.0)
10467
10467
 
10468
- Package Locator: npm+oxfmt$0.52.0
10468
+ Package Locator: npm+oxfmt$0.58.0
10469
10469
 
10470
10470
  Package Depth: Direct
10471
10471
  --------------------------------------------------------------------------------
@@ -10535,7 +10535,7 @@ SOFTWARE.
10535
10535
  0BSD
10536
10536
  --------------------------------------------------------------------------------
10537
10537
  File matches:
10538
- - dist/plugin-C4twtOn4.js
10538
+ - dist/plugin-B4cguZ1l.js
10539
10539
  - Copyright (c) Microsoft Corporation.
10540
10540
  --------------------------------------------------------------------------------
10541
10541
 
@@ -10560,7 +10560,7 @@ MIT
10560
10560
  Authors: boshenc@gmail.com
10561
10561
  Package Manager: NPM
10562
10562
  Project URL: https://oxc.rs/docs/guide/usage/formatter
10563
- Package Download URL: https://registry.npmjs.org/oxfmt/-/oxfmt-0.52.0.tgz
10563
+ Package Download URL: https://registry.npmjs.org/oxfmt/-/oxfmt-0.58.0.tgz
10564
10564
  Dependency Path: oxfmt
10565
10565
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
10566
10566
 
@@ -35327,7 +35327,7 @@ MIT
35327
35327
 
35328
35328
  Authors: admin@simonboudrias.com
35329
35329
  Package Manager: NPM
35330
- Project URL: https://www.npmjs.com/package/run-async
35330
+ Project URL: https://github.com/SBoudrias/run-async#readme
35331
35331
  Package Download URL: https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz
35332
35332
  Dependency Path: inquirer > run-async
35333
35333
  File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
@@ -64321,4 +64321,4 @@ File Path(s): common/config/subspaces/sdk/pnpm-lock.yaml
64321
64321
  --------------------------------------------------------------------------------
64322
64322
  --------------------------------------------------------------------------------
64323
64323
 
64324
- Report Generated by FOSSA on 2026-8-30
64324
+ Report Generated by FOSSA on 2026-9-1
package/esm/index.d.ts CHANGED
@@ -12,7 +12,7 @@
12
12
  import { type IInsight, type IInsightDefinition, type ISettings } from "@gooddata/sdk-model";
13
13
  import { type IDrillEvent } from "@gooddata/sdk-ui";
14
14
  export type { ChartInlineVisualizationType } from "@gooddata/sdk-ui-charts";
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";
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, getEffectiveConditionalFormatting, isDrillDownDefinition, isEmptyAfm, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo } from "./internal/index.js";
16
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";
@@ -28,7 +28,7 @@ export type { IInsightPickerProps, IInsightPickerItem, IInsightPickerMenuAction,
28
28
  export type { IAutomationsProps, AutomationsType, AutomationsScope, AutomationsColumnName, ScheduleAutomationsColumnName, CommonAutomationsColumnName, AutomationColumnDefinition, AutomationColumnDefinitions, AutomationsFilterName, AutomationsFilterPreselectName, AutomationsFilterPreselectValue, AutomationsPreselectedFilters, AutomationsAvailableFilters, AutomationsOnLoad, IEditAutomation, } from "./automations/types.js";
29
29
  export { getComparisonOperatorTitle, getRelativeOperatorTitle } from "./automations/utils.js";
30
30
  export { COMPARISON_OPERATORS, RELATIVE_OPERATORS, ARITHMETIC_OPERATORS, AI_OPERATORS, AI_OPERATOR, } from "./automations/constants.js";
31
- export { type IDrillDownDefinition, type IVisualizationSizeInfo, type IVisualizationDefaultSizeInfo, type IVisualizationMeta, type ISizeInfo, type ISizeInfoDefault, type IFluidLayoutDescriptor, type ILayoutDescriptor, type LayoutType, type PluggableVisualizationErrorType, type IEmbedInsightDialogProps, isDrillDownDefinition, fluidLayoutDescriptor, FluidLayoutDescriptor, isEmptyAfm, EmptyAfmSdkError, PluggableVisualizationErrorCodes, addIntersectionFiltersToInsight, DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX, INSIGHT_WIDGET_SIZE_INFO_DEFAULT, INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT, KPI_WIDGET_SIZE_INFO_DEFAULT, WIDGET_DROPZONE_SIZE_INFO_DEFAULT, 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, DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT, MIN_VISUALIZATION_WIDTH, EmbedInsightDialog, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo, };
31
+ export { type IDrillDownDefinition, type IVisualizationSizeInfo, type IVisualizationDefaultSizeInfo, type IVisualizationMeta, type ISizeInfo, type ISizeInfoDefault, type IFluidLayoutDescriptor, type ILayoutDescriptor, type LayoutType, type PluggableVisualizationErrorType, type IEmbedInsightDialogProps, isDrillDownDefinition, fluidLayoutDescriptor, FluidLayoutDescriptor, isEmptyAfm, EmptyAfmSdkError, PluggableVisualizationErrorCodes, addIntersectionFiltersToInsight, DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX, INSIGHT_WIDGET_SIZE_INFO_DEFAULT, INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT, KPI_WIDGET_SIZE_INFO_DEFAULT, WIDGET_DROPZONE_SIZE_INFO_DEFAULT, 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, DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT, MIN_VISUALIZATION_WIDTH, EmbedInsightDialog, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo, getEffectiveConditionalFormatting, };
32
32
  /**
33
33
  * @internal
34
34
  */
@@ -80,6 +80,8 @@ export declare function provideCreateRoot(_fn: any): void;
80
80
  export { useInsightPagedList, type IUsePagedDropdownConfig, type IUsePagedDropdownResult, type ITabsIds, type InsightListSortBy, type InsightListSortDirection, } from "./internal/components/insightList/useInsightPagedList.js";
81
81
  export { ObjectShareDialog, type IObjectShareDialogProps } from "./share/ObjectShareDialog.js";
82
82
  export { sortShareableLabels } from "./share/objectShareController.helpers.js";
83
+ export type { GranteeEdit, IGranteeIdentityFacts, IObjectShareDraft, IObjectShareGrantee, IRuleEdit, ObjectSharePermissionLevel, } from "./share/objectShareController.types.js";
84
+ export { useApplyObjectPermissions } from "./share/useApplyObjectPermissions.js";
83
85
  export { accessListToSummary } from "./share/accessSummary.js";
84
86
  export { isPermissionsNotAvailable } from "./share/accessErrors.js";
85
87
  export type { IObjectAccessSummary, IObjectShareLabel } from "./share/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2007-2026 GoodData Corporation
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";
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, getEffectiveConditionalFormatting, isDrillDownDefinition, isEmptyAfm, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo, } from "./internal/index.js";
3
3
  export { clearInsightViewCaches, clearInsightViewCacheForInsight } from "./dataLoaders/index.js";
4
4
  export { InsightView } from "./insightView/InsightView.js";
5
5
  export { InsightError } from "./insightView/InsightError.js";
@@ -12,7 +12,7 @@ export { useCfDateFilterOptions } from "./internal/components/configurationContr
12
12
  export { getComparisonOperatorTitle, getRelativeOperatorTitle } from "./automations/utils.js";
13
13
  export { COMPARISON_OPERATORS, RELATIVE_OPERATORS, ARITHMETIC_OPERATORS, AI_OPERATORS, AI_OPERATOR, } from "./automations/constants.js";
14
14
  // exported for sdk-ui-dashboard
15
- export { isDrillDownDefinition, fluidLayoutDescriptor, FluidLayoutDescriptor, isEmptyAfm, EmptyAfmSdkError, PluggableVisualizationErrorCodes, addIntersectionFiltersToInsight, DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX, INSIGHT_WIDGET_SIZE_INFO_DEFAULT, INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT, KPI_WIDGET_SIZE_INFO_DEFAULT, WIDGET_DROPZONE_SIZE_INFO_DEFAULT, 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, DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT, MIN_VISUALIZATION_WIDTH, EmbedInsightDialog, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo, };
15
+ export { isDrillDownDefinition, fluidLayoutDescriptor, FluidLayoutDescriptor, isEmptyAfm, EmptyAfmSdkError, PluggableVisualizationErrorCodes, addIntersectionFiltersToInsight, DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX, INSIGHT_WIDGET_SIZE_INFO_DEFAULT, INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT, KPI_WIDGET_SIZE_INFO_DEFAULT, WIDGET_DROPZONE_SIZE_INFO_DEFAULT, 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, DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT, MIN_VISUALIZATION_WIDTH, EmbedInsightDialog, isSizeInfo, isSizeInfoDefault, isVisualizationDefaultSizeInfo, getEffectiveConditionalFormatting, };
16
16
  // below functions are exported only for sdk-ui-dashboard use to avoid exporting the whole FullVisualizationCatalog
17
17
  /**
18
18
  * @internal
@@ -73,5 +73,6 @@ export function provideCreateRoot(_fn) {
73
73
  export { useInsightPagedList, } from "./internal/components/insightList/useInsightPagedList.js";
74
74
  export { ObjectShareDialog } from "./share/ObjectShareDialog.js";
75
75
  export { sortShareableLabels } from "./share/objectShareController.helpers.js";
76
+ export { useApplyObjectPermissions } from "./share/useApplyObjectPermissions.js";
76
77
  export { accessListToSummary } from "./share/accessSummary.js";
77
78
  export { isPermissionsNotAvailable } from "./share/accessErrors.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionEditor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/configurationControls/conditionalFormatting/ConditionEditor.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAiBzE,OAAO,EACH,KAAK,2BAA2B,EAEhC,KAAK,+BAA+B,EAEvC,MAAM,6BAA6B,CAAC;AAarC,OAAO,EAGH,KAAK,WAAW,EAChB,KAAK,eAAe,EAavB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkYrD,MAAM,WAAW,qBAAqB;IAClC,SAAS,EAAE,+BAA+B,CAAC;IAC3C,IAAI,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,iBAAiB,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACxD,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,SAAS,EAAE,+BAA+B,KAAK,IAAI,CAAC;IAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,EAC5B,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,QAAgB,EAChB,QAAQ,EACR,QAAQ,EACX,EAAE,qBAAqB,2CA8FvB"}
1
+ {"version":3,"file":"ConditionEditor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/configurationControls/conditionalFormatting/ConditionEditor.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAiBzE,OAAO,EACH,KAAK,2BAA2B,EAEhC,KAAK,+BAA+B,EAEvC,MAAM,6BAA6B,CAAC;AAarC,OAAO,EAGH,KAAK,WAAW,EAChB,KAAK,eAAe,EAavB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAyYrD,MAAM,WAAW,qBAAqB;IAClC,SAAS,EAAE,+BAA+B,CAAC;IAC3C,IAAI,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,iBAAiB,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACxD,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,SAAS,EAAE,+BAA+B,KAAK,IAAI,CAAC;IAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,EAC5B,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,EACX,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,QAAgB,EAChB,QAAQ,EACR,QAAQ,EACX,EAAE,qBAAqB,2CA8FvB"}
@@ -108,9 +108,12 @@ function ConditionValueInput({ condition, editorKind, kind, isPercent, separator
108
108
  ] }));
109
109
  }
110
110
  // The ColorDropdown trigger swatch. ColorDropdown clones it with selectable-child props the swatch
111
- // ignores. No color renders a "none" slash rather than a misleading white.
111
+ // ignores. No color renders a "none" slash rather than a misleading white. The outer span fills and
112
+ // centers within ColorDropdown's own trigger wrapper (taller than the fixed-size chip); the inner
113
+ // `__box` is the actual visible 20x20 chip — see conditional_formatting.scss for why it's split this
114
+ // way instead of reaching into ColorDropdown's own (dynamically-classed) wrapper.
112
115
  function CfSwatch({ hex }) {
113
- return (_jsx("span", { className: `gd-cf-swatch${hex ? "" : " gd-cf-swatch--none"}`, style: hex ? { backgroundColor: hex } : undefined }));
116
+ return (_jsx("span", { className: "gd-cf-swatch", children: _jsx("span", { className: `gd-cf-swatch__box${hex ? "" : " gd-cf-swatch__box--none"}`, style: hex ? { backgroundColor: hex } : undefined }) }));
114
117
  }
115
118
  function CfColorPick({ hex, noneColorLabel, onChange }) {
116
119
  return (_jsx(ColorDropdown, { colorPalette: CF_COLOR_PALETTE, selectedColorItem: hexToColor(hex), onColorSelected: (color) => onChange(colorToHex(color)), onClear: () => onChange(undefined), noneColorAriaLabel: noneColorLabel, children: _jsx(CfSwatch, { hex: hex }) }));
@@ -127,9 +130,9 @@ function FormatEditor({ format, onChange }) {
127
130
  ...accessibilityConfig,
128
131
  ariaLabel: intl.formatMessage(conditionalFormattingMessages.dialogFormat),
129
132
  }, onClick: toggleDropdown })), renderBody: () => (_jsxs("div", { className: "gd-cf-format", children: [
130
- _jsx("span", { className: "gd-cf-format__label", children: intl.formatMessage(conditionalFormattingMessages.dialogTextColor) }), _jsx(CfColorPick, { hex: format.color, noneColorLabel: intl.formatMessage(conditionalFormattingMessages.dialogNoColor), onChange: (color) => onChange({ ...format, color }) }), _jsx("span", { className: "gd-cf-format__label", children: intl.formatMessage(conditionalFormattingMessages.dialogFillColor) }), _jsx(CfColorPick, { hex: format.backgroundColor, noneColorLabel: intl.formatMessage(conditionalFormattingMessages.dialogNoColor), onChange: (backgroundColor) => onChange({ ...format, backgroundColor }) }), _jsxs(UiButtonSegmentedControl, { children: [
131
- _jsx(UiButton, { size: "small", variant: "secondary", label: intl.formatMessage(conditionalFormattingMessages.dialogScopeCell), isSelected: format.scope === "cell", onClick: () => onChange({ ...format, scope: "cell" }) }), _jsx(UiButton, { size: "small", variant: "secondary", label: intl.formatMessage(conditionalFormattingMessages.dialogScopeRow), isSelected: format.scope === "row", onClick: () => onChange({ ...format, scope: "row" }) })
132
- ] })
133
+ _jsx("span", { className: "gd-cf-format__label", children: intl.formatMessage(conditionalFormattingMessages.dialogTextColor) }), _jsx(CfColorPick, { hex: format.color, noneColorLabel: intl.formatMessage(conditionalFormattingMessages.dialogNoColor), onChange: (color) => onChange({ ...format, color }) }), _jsx("span", { className: "gd-cf-format__label", children: intl.formatMessage(conditionalFormattingMessages.dialogFillColor) }), _jsx(CfColorPick, { hex: format.backgroundColor, noneColorLabel: intl.formatMessage(conditionalFormattingMessages.dialogNoColor), onChange: (backgroundColor) => onChange({ ...format, backgroundColor }) }), _jsx("div", { className: "gd-cf-scope-toggle", children: _jsxs(UiButtonSegmentedControl, { children: [
134
+ _jsx(UiButton, { size: "small", variant: "secondary", label: intl.formatMessage(conditionalFormattingMessages.dialogScopeCell), isSelected: format.scope === "cell", onClick: () => onChange({ ...format, scope: "cell" }) }), _jsx(UiButton, { size: "small", variant: "secondary", label: intl.formatMessage(conditionalFormattingMessages.dialogScopeRow), isSelected: format.scope === "row", onClick: () => onChange({ ...format, scope: "row" }) })
135
+ ] }) })
133
136
  ] })) }));
134
137
  }
135
138
  export function ConditionEditor({ condition, kind, isPercent, separators, suggestions, date, dateFilterOptions, dateSettings, removable, slot, readOnly = false, onChange, onRemove, }) {
@@ -1,6 +1,6 @@
1
- import { type ISeparators } from "@gooddata/sdk-model";
1
+ import { type ISemanticConditionalFormatting, type ISeparators } from "@gooddata/sdk-model";
2
2
  import { type IDateFilterOptionsByType } from "@gooddata/sdk-ui-filters";
3
- import { type IConditionalFormattingRule } from "@gooddata/sdk-ui-pivot/next";
3
+ import { type ConditionalFormattingTarget, type IConditionalFormattingRule } from "@gooddata/sdk-ui-pivot/next";
4
4
  import { type ICfDateSettings, type ITargetOption } from "./conditionalFormattingModel.js";
5
5
  /**
6
6
  * @internal
@@ -17,15 +17,30 @@ export interface IConditionalFormattingDialogProps {
17
17
  dateSettings?: ICfDateSettings;
18
18
  /** CSS selector of a small, stable element the popover anchors to. */
19
19
  alignTo: string;
20
- /** Renders the dialog non-interactively: no target picker, no editing, no Save button. */
21
- readOnly?: boolean;
22
20
  /** Renders a static "icon + title" header for the rule's target instead of the picker dropdown. */
23
21
  fixedTarget?: boolean;
22
+ /**
23
+ * Semantic-layer rules by target localId. When the current target has an entry, the dialog
24
+ * offers the "Use default rule" checkbox switching between the inherited rule (locked) and an
25
+ * authored override (editable) — the whole map (not one resolved value) so an untargeted "Add
26
+ * rule" flow re-derives the right fallback if the user changes target mid-dialog.
27
+ */
28
+ semanticByTarget?: Record<string, ISemanticConditionalFormatting>;
29
+ /** Deletes THIS specific authored rule (wired only when one exists) — the trash button. */
30
+ onDelete?: () => void;
31
+ /**
32
+ * Reverts to Inherited: clears every authored rule for `target` (a target can have several
33
+ * stacked custom rules, not just this one) AND this rule's own original id — needed together
34
+ * because a non-fixedTarget dialog lets the user retarget before saving, so the rule being
35
+ * edited may not (yet) be one of the rules actually stored against `target`. Distinct from
36
+ * `onDelete`: triggered only by Save while "Use default rule" is checked.
37
+ */
38
+ onRevertToDefault?: (target: ConditionalFormattingTarget, ruleId: string) => void;
24
39
  onSave: (rule: IConditionalFormattingRule) => void;
25
40
  onClose: () => void;
26
41
  }
27
42
  /**
28
43
  * @internal
29
44
  */
30
- export declare function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOptions, separators, dateFilterOptions, dateSettings, alignTo, readOnly, fixedTarget, onSave, onClose }: IConditionalFormattingDialogProps): import("react/jsx-runtime").JSX.Element;
45
+ export declare function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOptions, separators, dateFilterOptions, dateSettings, alignTo, fixedTarget, semanticByTarget, onDelete, onRevertToDefault, onSave, onClose }: IConditionalFormattingDialogProps): import("react/jsx-runtime").JSX.Element;
31
46
  //# sourceMappingURL=ConditionalFormattingDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionalFormattingDialog.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAEH,KAAK,0BAA0B,EAClC,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,aAAa,EAQrB,MAAM,iCAAiC,CAAC;AAWzC;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAC9C,IAAI,EAAE,0BAA0B,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,uFAAuF;IACvF,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,uFAAuF;IACvF,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mGAAmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,EACxC,IAAI,EAAE,WAAW,EACjB,KAAK,EACL,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,QAAgB,EAChB,WAAmB,EACnB,MAAM,EACN,OAAO,EACV,EAAE,iCAAiC,2CAmKnC"}
1
+ {"version":3,"file":"ConditionalFormattingDialog.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingDialog.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,8BAA8B,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EACH,KAAK,2BAA2B,EAEhC,KAAK,0BAA0B,EAClC,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,aAAa,EASrB,MAAM,iCAAiC,CAAC;AAiCzC;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAC9C,IAAI,EAAE,0BAA0B,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,uFAAuF;IACvF,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,uFAAuF;IACvF,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,mGAAmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IAClE,6FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,MAAM,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,EACxC,IAAI,EAAE,WAAW,EACjB,KAAK,EACL,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,WAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,MAAM,EACN,OAAO,EACV,EAAE,iCAAiC,2CA0SnC"}
@@ -4,10 +4,12 @@ import { useState } from "react";
4
4
  import cx from "classnames";
5
5
  import { isEqual } from "lodash-es";
6
6
  import { useIntl } from "react-intl";
7
- import { Button, Overlay } from "@gooddata/sdk-ui-kit";
7
+ import { v4 as uuid } from "uuid";
8
+ import { Button, Overlay, UiCheckbox, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit";
8
9
  import { conditionalFormattingMessages } from "../../../../locales.js";
10
+ import { DisabledBubbleMessage } from "../../DisabledBubbleMessage.js";
9
11
  import { CfSelect } from "./CfSelect.js";
10
- import { findTargetOption, isDateTarget, isRuleComplete, newCondition, ruleWithTarget, sanitizeRuleForEditing, targetIcon, } from "./conditionalFormattingModel.js";
12
+ import { findTargetOption, isDateTarget, isRuleComplete, newCondition, ruleWithTarget, sanitizeRuleForEditing, targetIcon, targetLocalId, } from "./conditionalFormattingModel.js";
11
13
  import { ConditionEditor } from "./ConditionEditor.js";
12
14
  import { ReorderList } from "./ReorderList.js";
13
15
  // The config panel sits on the right edge of the screen, so open the popover to the LEFT of the
@@ -16,31 +18,85 @@ const POPOVER_ALIGN_POINTS = [
16
18
  { align: "cl cr", offset: { x: -5, y: 0 } },
17
19
  { align: "cr cl", offset: { x: 5, y: 0 } },
18
20
  ];
21
+ // Small "?" info affordance next to the "Use default rule" checkbox. A real `<button>` anchor (not
22
+ // the older BubbleHoverTrigger/Bubble pair, which only wires mouse enter/leave and never forwards
23
+ // focus-related props to its span) so keyboard/screen-reader users can reach it via Tab too; the
24
+ // full text lives in the button's own aria-label, so the floating tooltip is purely visual.
25
+ function InfoTooltip({ text }) {
26
+ return (_jsx(UiTooltip, { anchor: _jsx("button", { type: "button", className: "gd-cf-dialog__use-default-info gd-icon-circle-question", "aria-label": text }), content: text, accessibilityHidden: true, triggerBy: ["hover", "focus"], arrowPlacement: "right" }));
27
+ }
19
28
  /**
20
29
  * @internal
21
30
  */
22
- export function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOptions, separators, dateFilterOptions, dateSettings, alignTo, readOnly = false, fixedTarget = false, onSave, onClose, }) {
31
+ export function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOptions, separators, dateFilterOptions, dateSettings, alignTo, fixedTarget = false, semanticByTarget, onDelete, onRevertToDefault, onSave, onClose, }) {
23
32
  const intl = useIntl();
24
- const initial = readOnly
25
- ? initialRule
26
- : sanitizeRuleForEditing(initialRule, isDateTarget(findTargetOption(targetOptions, initialRule.target)));
33
+ const initial = sanitizeRuleForEditing(initialRule, isDateTarget(findTargetOption(targetOptions, initialRule.target)));
27
34
  const [rule, setRule] = useState(initial);
28
- const updateCondition = (id, next) => setRule((current) => ({
29
- ...current,
30
- conditions: current.conditions.map((condition) => (condition.id === id ? next : condition)),
31
- }));
32
- const removeCondition = (id) => setRule((current) => ({
33
- ...current,
34
- conditions: current.conditions.filter((condition) => condition.id !== id),
35
- }));
36
- const addCondition = () => setRule((current) => ({
37
- ...current,
38
- conditions: [
39
- ...current.conditions,
40
- newCondition(isDateTarget(findTargetOption(targetOptions, current.target))),
41
- ],
42
- }));
43
- const reorderConditions = (conditions) => setRule((current) => ({ ...current, conditions }));
35
+ // The blank multi-target Add-Rule flow (isNew, no fixedTarget) must keep its target picker fully
36
+ // usable — starting "Use default rule" checked there just because targetOptions[0] happens to
37
+ // have a semantic entry would lock the very picker the user needs to choose a different target.
38
+ // Editing an EXISTING rule (isNew false) never starts locked regardless of fixedTarget, so this
39
+ // only needs to suppress the brand-new-blank-rule case specifically.
40
+ const activeSemantic = isNew && !fixedTarget ? undefined : semanticByTarget?.[targetLocalId(rule.target)];
41
+ // Only meaningful the first time the dialog opens: a target with no authored rule yet (isNew)
42
+ // and a semantic default to fall back to starts "on" (Inherited); retargeting mid-authoring
43
+ // never revisits this, matching `ruleWithTarget`'s existing "values reset, mode doesn't" behavior.
44
+ const [wantsDefault, setWantsDefault] = useState(() => isNew && activeSemantic !== undefined);
45
+ // A target's semantic default can disappear while this stays open and checked (the catalog
46
+ // object's rule was deleted elsewhere, or a data-view blip dropped the field) — the checkbox
47
+ // itself vanishes with it (rendered only when `activeSemantic` exists), which would otherwise
48
+ // leave fields silently locked with no visible way to unlock them, and Save would revert/delete
49
+ // against a default that no longer exists. Adjusting `wantsDefault` itself here (during render,
50
+ // not in an effect, so there's never a paint where the checkbox is still stale) rather than only
51
+ // deriving `usingDefault` as false makes the unlock permanent: if the default later reappears
52
+ // while the user has since edited the now-unlocked fields, it must not silently re-lock and
53
+ // discard that edit via Save's revert branch.
54
+ if (activeSemantic === undefined && wantsDefault) {
55
+ setWantsDefault(false);
56
+ }
57
+ const usingDefault = wantsDefault && activeSemantic !== undefined;
58
+ const locked = usingDefault;
59
+ // While using the default, always render the LIVE semantic conditions (never a stale draft);
60
+ // the user's own in-progress edits stay in `rule` untouched so unchecking restores them exactly.
61
+ const displayRule = usingDefault && activeSemantic ? { ...rule, conditions: activeSemantic.conditions } : rule;
62
+ // Tracks whether `rule.conditions` is still just a mirror of the semantic default (safe to
63
+ // silently resync/discard) versus genuinely the user's own content (an existing authored rule,
64
+ // or anything they've edited since) — which must never be clobbered by a later resync. NOT
65
+ // derivable from `isDirty` two lines below: `isDirty` is unconditionally true whenever `isNew`
66
+ // (nothing to compare against yet), but a fresh isNew dialog that opens already checked can be
67
+ // unchecked before any edit — `draftIsDefault` must still read true there (to reseed from the
68
+ // live default) while `isDirty` already reads true for an unrelated reason. `setConditions`
69
+ // below sets both together, so a future condition-mutator can't add itself while forgetting
70
+ // to flip this — the only way to touch `rule.conditions` here goes through it.
71
+ const [draftIsDefault, setDraftIsDefault] = useState(() => isNew);
72
+ const setConditions = (updater) => {
73
+ setDraftIsDefault(false);
74
+ setRule(updater);
75
+ };
76
+ const updateCondition = (id, next) => {
77
+ setConditions((current) => ({
78
+ ...current,
79
+ conditions: current.conditions.map((condition) => (condition.id === id ? next : condition)),
80
+ }));
81
+ };
82
+ const removeCondition = (id) => {
83
+ setConditions((current) => ({
84
+ ...current,
85
+ conditions: current.conditions.filter((condition) => condition.id !== id),
86
+ }));
87
+ };
88
+ const addCondition = () => {
89
+ setConditions((current) => ({
90
+ ...current,
91
+ conditions: [
92
+ ...current.conditions,
93
+ newCondition(isDateTarget(findTargetOption(targetOptions, current.target))),
94
+ ],
95
+ }));
96
+ };
97
+ const reorderConditions = (conditions) => {
98
+ setConditions((current) => ({ ...current, conditions }));
99
+ };
44
100
  const changeTarget = (value) => {
45
101
  const option = targetOptions.find((candidate) => candidate.value === value);
46
102
  if (!option) {
@@ -54,11 +110,23 @@ export function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOp
54
110
  const suggestions = selectedTarget?.elements ?? [];
55
111
  const complete = isRuleComplete(rule, selectedTarget?.date);
56
112
  const isDirty = isNew || !isEqual(rule, initial);
57
- const title = intl.formatMessage(readOnly
58
- ? conditionalFormattingMessages.dialogViewTitle
59
- : isNew
113
+ // A target with a semantic default reads as a plain "Rule" regardless of which side of the
114
+ // checkbox it's on — the Add/Edit split only applies to targets with no default to switch to.
115
+ const title = intl.formatMessage(activeSemantic === undefined
116
+ ? isNew
60
117
  ? conditionalFormattingMessages.dialogAddTitle
61
- : conditionalFormattingMessages.dialogEditTitle);
118
+ : conditionalFormattingMessages.dialogEditTitle
119
+ : conditionalFormattingMessages.dialogRuleTitle);
120
+ // Nothing authored yet to delete while still on the default — the disabled state points the
121
+ // user at the (separate) rule-list toggle instead, per the mock's tooltip. Also disabled whenever
122
+ // the caller hasn't actually given us a way to delete anything: `onDelete` is only real when the
123
+ // caller (Section today) found an authored rule for this dialog's synthetic-or-real id, so its
124
+ // absence must disable the button too, not just leave it clickable-but-inert.
125
+ const deleteDisabled = isNew || !onDelete;
126
+ // The blank multi-target Add-Rule flow (isNew, no fixedTarget) has nothing to show a delete
127
+ // affordance for at all — everywhere else (a semantic-fallback view, or an existing authored
128
+ // rule) shows one, disabled per `deleteDisabled` above when there's genuinely nothing to delete.
129
+ const showDelete = fixedTarget || !isNew;
62
130
  return (_jsx(Overlay, { alignTo: alignTo, alignPoints: POPOVER_ALIGN_POINTS, closeOnParentScroll: true, closeOnMouseDrag: true, onClose: onClose, children: _jsxs("div", { className: "gd-cf-dialog", "aria-label": title, children: [
63
131
  _jsxs("div", { className: "gd-cf-dialog__header", children: [
64
132
  _jsx("h3", { className: "gd-cf-dialog__title", children: title }), _jsx(Button, { className: "gd-button-link gd-button-icon-only gd-icon-cross", accessibilityConfig: {
@@ -67,15 +135,57 @@ export function ConditionalFormattingDialog({ rule: initialRule, isNew, targetOp
67
135
  ] }), _jsxs("div", { className: "gd-cf-dialog__body", children: [
68
136
  _jsx("span", { className: "gd-cf-dialog__label", children: intl.formatMessage(conditionalFormattingMessages.dialogTarget) }), singleTarget ? (_jsxs("div", { className: "gd-cf-dialog__static-target", children: [
69
137
  _jsx("span", { className: cx("gd-cf-type-icon", targetIcon(singleTarget.target.kind, isDateTarget(singleTarget))), "aria-hidden": "true" }), _jsx("span", { className: "gd-cf-dialog__static-target-title", children: singleTarget.title })
70
- ] })) : (_jsx("fieldset", { className: "gd-cf-dialog__target-picker", disabled: readOnly, children: _jsx(CfSelect, { value: selectedTarget?.value, items: targetOptions.map((option) => ({
138
+ ] })) : (_jsx("fieldset", { className: "gd-cf-dialog__target-picker", disabled: locked, children: _jsx(CfSelect, { value: selectedTarget?.value, items: targetOptions.map((option) => ({
71
139
  value: option.value,
72
140
  title: option.title,
73
141
  icon: targetIcon(option.target.kind, isDateTarget(option)),
74
- })), onSelect: changeTarget, placeholder: intl.formatMessage(conditionalFormattingMessages.dialogSelectTarget) }) })), _jsxs("fieldset", { disabled: readOnly, className: cx("gd-cf-dialog__editable", {
75
- "gd-cf-dialog__editable--readonly": readOnly,
76
- }), children: [_jsx(ReorderList, { items: rule.conditions, getKey: (condition) => condition.id, onReorder: reorderConditions, disabled: readOnly, renderItem: (condition, slot) => (_jsx(ConditionEditor, { condition: condition, kind: rule.target.kind, isPercent: isPercent, separators: separators, suggestions: suggestions, date: selectedTarget?.date, dateFilterOptions: dateFilterOptions, dateSettings: dateSettings, removable: rule.conditions.length > 1, slot: slot, readOnly: readOnly, onChange: (next) => updateCondition(condition.id, next), onRemove: () => removeCondition(condition.id) })) }), _jsx(Button, { className: "gd-button-secondary gd-cf-dialog__add-condition", iconLeft: "gd-icon-plus", value: intl.formatMessage(conditionalFormattingMessages.dialogAddCondition), onClick: addCondition })
77
- ] })
78
- ] }), _jsxs("div", { className: "gd-cf-dialog__footer", children: [
79
- _jsx(Button, { className: "gd-button-secondary", value: intl.formatMessage(conditionalFormattingMessages.dialogCancel), onClick: onClose }), readOnly ? null : (_jsx(Button, { className: "gd-button-action", value: intl.formatMessage(conditionalFormattingMessages.dialogSave), disabled: !complete || !isDirty, onClick: () => onSave(rule) }))] })
142
+ })), onSelect: changeTarget, placeholder: intl.formatMessage(conditionalFormattingMessages.dialogSelectTarget) }) })), activeSemantic ? (_jsxs("div", { className: "gd-cf-dialog__use-default", children: [
143
+ _jsx(UiCheckbox, { checked: usingDefault, onChange: (e) => {
144
+ const nextUseDefault = e.target.checked;
145
+ // Reseed from the live semantic value exactly at the moment of
146
+ // unchecking but only while the draft is still just a mirror of
147
+ // the default (draftIsDefault): an existing authored rule, or
148
+ // anything the user has actually edited, must never be clobbered.
149
+ // This still fixes the "fresher payload arrived while this stayed
150
+ // checked" case, since fields are locked (nothing to edit) for as
151
+ // long as it's checked, so draftIsDefault can't have gone false then.
152
+ if (!nextUseDefault && activeSemantic && draftIsDefault) {
153
+ // Sanitize like any other externally-authored rule: a
154
+ // semantic condition can carry an operator/value shape this
155
+ // editor doesn't support (e.g. from an AAC-authored default),
156
+ // which would otherwise dead-end with Save disabled.
157
+ setRule((current) => sanitizeRuleForEditing({ ...current, conditions: activeSemantic.conditions }, isDateTarget(selectedTarget)));
158
+ }
159
+ setWantsDefault(nextUseDefault);
160
+ }, label: intl.formatMessage(conditionalFormattingMessages.dialogUseDefaultRule) }), _jsx(InfoTooltip, { text: intl.formatMessage(conditionalFormattingMessages.dialogUseDefaultRuleInfo) })
161
+ ] })) : null, _jsxs("fieldset", { disabled: locked, className: cx("gd-cf-dialog__editable", {
162
+ "gd-cf-dialog__editable--readonly": locked,
163
+ }), children: [_jsx(ReorderList, { items: displayRule.conditions, getKey: (condition) => condition.id, onReorder: reorderConditions, disabled: locked, renderItem: (condition, slot) => (_jsx(ConditionEditor, { condition: condition, kind: rule.target.kind, isPercent: isPercent, separators: separators, suggestions: suggestions, date: selectedTarget?.date, dateFilterOptions: dateFilterOptions, dateSettings: dateSettings, removable: displayRule.conditions.length > 1, slot: slot, readOnly: locked, onChange: (next) => updateCondition(condition.id, next), onRemove: () => removeCondition(condition.id) })) }), locked ? null : (_jsx(Button, { className: "gd-button-secondary gd-cf-dialog__add-condition", iconLeft: "gd-icon-plus", value: intl.formatMessage(conditionalFormattingMessages.dialogAddCondition), onClick: addCondition }))] })
164
+ ] }), _jsxs("div", { className: "gd-cf-dialog__footer", children: [showDelete ? (_jsx(DisabledBubbleMessage, { className: "gd-cf-dialog__delete", showDisabledMessage: deleteDisabled, messageId: conditionalFormattingMessages.dialogRuleCannotBeDeleted.id, children: _jsx(UiIconButton, { icon: "trash", size: "small", variant: "tertiary", isDesctructive: true, isDisabled: deleteDisabled, label: intl.formatMessage(conditionalFormattingMessages.ruleDelete), onClick: () => {
165
+ onDelete?.();
166
+ onClose();
167
+ } }) })) : null, _jsx(Button, { className: "gd-button-secondary", value: intl.formatMessage(conditionalFormattingMessages.dialogCancel), onClick: onClose }), _jsx(Button, { className: "gd-button-action", value: intl.formatMessage(conditionalFormattingMessages.dialogSave), disabled: usingDefault ? false : !complete || !isDirty, onClick: () => {
168
+ if (usingDefault) {
169
+ // Revert (not delete-this-one): clears every rule already stored
170
+ // against the CURRENT target, plus this rule's own id — needed
171
+ // together because a retarget-then-revert (no fixedTarget) means
172
+ // the rule being edited may still sit under its OLD target in
173
+ // `rules`, not yet the one now selected in this draft. Gated on
174
+ // `isNew` alone, deliberately NOT on `deleteDisabled` — `onDelete` and
175
+ // `onRevertToDefault` are independent optional props, and tying revert
176
+ // eligibility to whether a delete callback happens to be provided
177
+ // would silently skip a valid revert for a caller that only wired one.
178
+ if (!isNew) {
179
+ onRevertToDefault?.(rule.target, rule.id);
180
+ }
181
+ onClose();
182
+ return;
183
+ }
184
+ // A dialog opened straight from a semantic row (`semanticRuleFor`) still
185
+ // carries that display-only synthetic id — give it a real one the instant
186
+ // it's actually persisted, exactly like every other freshly authored rule.
187
+ onSave(isNew ? { ...rule, id: uuid() } : rule);
188
+ } })
189
+ ] })
80
190
  ] }) }));
81
191
  }
@@ -14,6 +14,24 @@ export interface IConditionalFormattingSectionProps {
14
14
  separators?: ISeparators;
15
15
  isLoading?: boolean;
16
16
  pushData?: (data: unknown) => void;
17
+ /**
18
+ * Whether insight-level (authored) rules can apply at all — mirrors
19
+ * `isConditionalFormattingEnabled` in PluggablePivotTableNext.tsx. When `false`, the master
20
+ * toggle, "Add rule" button, and any authored rule list are hidden entirely: those controls edit
21
+ * `properties.controls.conditionalFormatting`, which the engine ignores while this is off, so
22
+ * showing them would let a user "author" formatting that silently never paints. The semantic
23
+ * block is unaffected — it has its own independent flag below. Defaults to `true` (existing
24
+ * behavior): most callers only ever render this section when insight-level CF is on.
25
+ */
26
+ enableConditionalFormatting?: boolean;
27
+ /**
28
+ * Mirrors the engine's own `enableSemanticConditionalFormatting` (set in
29
+ * PluggablePivotTableNext.tsx from the same setting, by design, today) — a distinct prop rather
30
+ * than an assumption baked into this component, so the "From semantic layer" block can't drift
31
+ * out of sync with what the table actually paints if semantic inheritance ever gets its own flag.
32
+ * Defaults to `false`: never show inherited rows the caller hasn't confirmed the engine will paint.
33
+ */
34
+ enableSemanticConditionalFormatting?: boolean;
17
35
  }
18
- export declare function ConditionalFormattingSection({ properties, propertiesMeta, insight, targetData, backend, workspace, dateSettings, separators, isLoading, pushData }: IConditionalFormattingSectionProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function ConditionalFormattingSection({ properties, propertiesMeta, insight, targetData, backend, workspace, dateSettings, separators, isLoading, pushData, enableConditionalFormatting, enableSemanticConditionalFormatting }: IConditionalFormattingSectionProps): import("react/jsx-runtime").JSX.Element;
19
37
  //# sourceMappingURL=ConditionalFormattingSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionalFormattingSection.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACH,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EACnB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAIrF,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,aAAa,EAWrB,MAAM,iCAAiC,CAAC;AAYzC,MAAM,WAAW,kCAAkC;IAC/C,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,yFAAyF;IACzF,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AA8GD,wBAAgB,4BAA4B,CAAC,EACzC,UAAU,EACV,cAAc,EACd,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACX,EAAE,kCAAkC,2CA+KpC"}
1
+ {"version":3,"file":"ConditionalFormattingSection.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/configurationControls/conditionalFormatting/ConditionalFormattingSection.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACH,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EACnB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAIrF,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,aAAa,EAcrB,MAAM,iCAAiC,CAAC;AAYzC,MAAM,WAAW,kCAAkC;IAC/C,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,yFAAyF;IACzF,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC;;;;;;;;OAQG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;OAMG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD;AAkJD,wBAAgB,4BAA4B,CAAC,EACzC,UAAU,EACV,cAAc,EACd,OAAO,EACP,UAAU,EACV,OAAO,EACP,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACR,2BAAkC,EAClC,mCAA2C,EAC9C,EAAE,kCAAkC,2CAkSpC"}