@gooddata/sdk-ui-catalog 11.56.0-alpha.1 → 11.56.0-alpha.2

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 (88) hide show
  1. package/esm/asCode/AsCodeDetailActions.d.ts +1 -1
  2. package/esm/asCode/AsCodeDetailActions.d.ts.map +1 -1
  3. package/esm/asCode/AsCodeEditorBody.d.ts +1 -1
  4. package/esm/asCode/AsCodeEditorBody.d.ts.map +1 -1
  5. package/esm/asCode/asCodeEditorBody.test.utils.d.ts +1 -1
  6. package/esm/asCode/asCodeEditorBody.test.utils.d.ts.map +1 -1
  7. package/esm/automation/testIds.d.ts +3 -2
  8. package/esm/automation/testIds.d.ts.map +1 -1
  9. package/esm/automation/testIds.js +3 -2
  10. package/esm/catalog/Catalog.d.ts +1 -1
  11. package/esm/catalog/Catalog.d.ts.map +1 -1
  12. package/esm/catalogDetail/CatalogDetailActionBar.d.ts +1 -1
  13. package/esm/catalogDetail/CatalogDetailActionBar.d.ts.map +1 -1
  14. package/esm/catalogDetail/CatalogDetailActions.d.ts +1 -1
  15. package/esm/catalogDetail/CatalogDetailActions.d.ts.map +1 -1
  16. package/esm/catalogDetail/CatalogDetailConditionalFormatting.d.ts +12 -0
  17. package/esm/catalogDetail/CatalogDetailConditionalFormatting.d.ts.map +1 -0
  18. package/esm/catalogDetail/CatalogDetailConditionalFormatting.js +52 -0
  19. package/esm/catalogDetail/CatalogDetailContent.d.ts +1 -1
  20. package/esm/catalogDetail/CatalogDetailContent.d.ts.map +1 -1
  21. package/esm/catalogDetail/CatalogDetailContent.js +3 -1
  22. package/esm/catalogDetail/CatalogDetailContentRow.d.ts +2 -1
  23. package/esm/catalogDetail/CatalogDetailContentRow.d.ts.map +1 -1
  24. package/esm/catalogDetail/CatalogDetailContentRow.js +7 -2
  25. package/esm/catalogDetail/CatalogDetailHeader.d.ts +1 -1
  26. package/esm/catalogDetail/CatalogDetailHeader.d.ts.map +1 -1
  27. package/esm/catalogDetail/CatalogDetailTabMetadata.d.ts +5 -4
  28. package/esm/catalogDetail/CatalogDetailTabMetadata.d.ts.map +1 -1
  29. package/esm/catalogDetail/CatalogDetailTabMetadata.js +6 -3
  30. package/esm/catalogDetail/CatalogDetailTabQuality.d.ts +1 -1
  31. package/esm/catalogDetail/CatalogDetailTabQuality.d.ts.map +1 -1
  32. package/esm/catalogDetail/hooks/useCatalogItemUpdate.d.ts +4 -3
  33. package/esm/catalogDetail/hooks/useCatalogItemUpdate.d.ts.map +1 -1
  34. package/esm/catalogDetail/hooks/useCatalogItemUpdate.js +26 -1
  35. package/esm/catalogDetail/share/CatalogDetailAccessRow.d.ts +6 -7
  36. package/esm/catalogDetail/share/CatalogDetailAccessRow.d.ts.map +1 -1
  37. package/esm/catalogDetail/share/CatalogDetailAccessRow.js +15 -17
  38. package/esm/catalogDetail/share/CatalogItemAccessRow.js +3 -4
  39. package/esm/catalogDetail/share/CatalogItemShareProvider.d.ts +1 -1
  40. package/esm/catalogDetail/share/CatalogItemShareProvider.d.ts.map +1 -1
  41. package/esm/catalogDetail/share/CatalogItemShareProvider.js +10 -2
  42. package/esm/catalogDetail/share/messages.d.ts +1 -1
  43. package/esm/catalogDetail/share/messages.d.ts.map +1 -1
  44. package/esm/catalogDetail/share/messages.js +1 -1
  45. package/esm/catalogItem/converter.d.ts.map +1 -1
  46. package/esm/catalogItem/converter.js +1 -0
  47. package/esm/catalogItem/query.d.ts +10 -9
  48. package/esm/catalogItem/query.d.ts.map +1 -1
  49. package/esm/catalogItem/query.js +13 -0
  50. package/esm/catalogItem/types.d.ts +6 -1
  51. package/esm/catalogItem/types.d.ts.map +1 -1
  52. package/esm/catalogItem/useCatalogItemSemanticSearch.d.ts +1 -1
  53. package/esm/catalogItem/useCatalogItemSemanticSearch.d.ts.map +1 -1
  54. package/esm/insight/insightCodecContext.d.ts +1 -1
  55. package/esm/insight/insightCodecContext.d.ts.map +1 -1
  56. package/esm/localization/bundles/en-US.localization-bundle.d.ts +583 -567
  57. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  58. package/esm/localization/bundles/en-US.localization-bundle.js +23 -7
  59. package/esm/main/Main.d.ts +3 -3
  60. package/esm/main/Main.d.ts.map +1 -1
  61. package/esm/main/Main.js +0 -1
  62. package/esm/main/hooks/useCatalogItemOpen.d.ts +1 -1
  63. package/esm/main/hooks/useCatalogItemOpen.d.ts.map +1 -1
  64. package/esm/objectType/ObjectTypeSelect.d.ts +1 -1
  65. package/esm/objectType/ObjectTypeSelect.d.ts.map +1 -1
  66. package/esm/permission/TestPermissionsProvider.d.ts +1 -1
  67. package/esm/permission/TestPermissionsProvider.d.ts.map +1 -1
  68. package/esm/quality/QualityScoreCardAction.d.ts +1 -1
  69. package/esm/quality/QualityScoreCardAction.d.ts.map +1 -1
  70. package/esm/sdk-ui-catalog.d.ts +7 -1
  71. package/esm/table/Table.d.ts +1 -1
  72. package/esm/table/Table.d.ts.map +1 -1
  73. package/esm/tabs/CatalogItemCard.d.ts +2 -2
  74. package/esm/tabs/CatalogItemCard.d.ts.map +1 -1
  75. package/esm/tabs/CatalogItemCard.js +1 -1
  76. package/esm/tabs/CatalogItemCardGrid.d.ts +2 -2
  77. package/esm/tabs/CatalogItemCardGrid.d.ts.map +1 -1
  78. package/esm/tabs/CatalogTabPanel.d.ts +2 -2
  79. package/esm/tabs/CatalogTabPanel.d.ts.map +1 -1
  80. package/esm/tabs/CatalogTabs.d.ts +2 -2
  81. package/esm/tabs/CatalogTabs.d.ts.map +1 -1
  82. package/package.json +18 -18
  83. package/styles/css/detail.css +14 -16
  84. package/styles/css/detail.css.map +1 -1
  85. package/styles/css/main.css +439 -17
  86. package/styles/css/main.css.map +1 -1
  87. package/styles/scss/detail.scss +16 -18
  88. package/styles/scss/main.scss +1 -0
@@ -14,5 +14,5 @@ export interface IAsCodeDetailActionsProps {
14
14
  onCatalogItemDelete?: (ref: ICatalogItemRef) => void;
15
15
  }
16
16
  /** @internal */
17
- export declare function AsCodeDetailActions({ descriptor, item, onOpen, canShare, onShare, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete }: IAsCodeDetailActionsProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function AsCodeDetailActions({ descriptor, item, onOpen, canShare, onShare, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, }: IAsCodeDetailActionsProps): import("react/jsx-runtime").JSX.Element;
18
18
  //# sourceMappingURL=AsCodeDetailActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsCodeDetailActions.d.ts","sourceRoot":"","sources":["../../src/asCode/AsCodeDetailActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,UAAU,EAAkC,MAAM,OAAO,CAAC;AAU5F,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAUzD,gBAAgB;AAChB,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CACxD;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACtB,EAAE,yBAAyB,2CAgG3B"}
1
+ {"version":3,"file":"AsCodeDetailActions.d.ts","sourceRoot":"","sources":["../../src/asCode/AsCodeDetailActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,UAAU,EAAkC,MAAM,OAAO,CAAC;AAU5F,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAUzD,gBAAgB;AAChB,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CACxD;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACtB,EAAE,yBAAyB,2CAgG3B"}
@@ -18,6 +18,6 @@ type Props = {
18
18
  * reports. The dialog reads the current value from `onChange` and never drives the value back in,
19
19
  * which the local state here preserves.
20
20
  */
21
- export declare function AsCodeEditorBody({ initialValue, onChange, disabled, completionSource, syntaxErrorMessage, label }: Props): import("react/jsx-runtime").JSX.Element;
21
+ export declare function AsCodeEditorBody({ initialValue, onChange, disabled, completionSource, syntaxErrorMessage, label, }: Props): import("react/jsx-runtime").JSX.Element;
22
22
  export {};
23
23
  //# sourceMappingURL=AsCodeEditorBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsCodeEditorBody.d.ts","sourceRoot":"","sources":["../../src/asCode/AsCodeEditorBody.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjF,KAAK,KAAK,GAAG;IACT,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,EACR,EAAE,KAAK,2CAsBP"}
1
+ {"version":3,"file":"AsCodeEditorBody.d.ts","sourceRoot":"","sources":["../../src/asCode/AsCodeEditorBody.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAkB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjF,KAAK,KAAK,GAAG;IACT,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,GACR,EAAE,KAAK,2CAsBP"}
@@ -13,7 +13,7 @@
13
13
  * Local state seeded from `initialValue` mirrors the real body: the dialog reads the current value
14
14
  * from `onChange` and never drives it back in.
15
15
  */
16
- export declare function AsCodeEditorBody({ initialValue, onChange, disabled }: {
16
+ export declare function AsCodeEditorBody({ initialValue, onChange, disabled, }: {
17
17
  initialValue: string;
18
18
  onChange: (value: string) => void;
19
19
  disabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"asCodeEditorBody.test.utils.d.ts","sourceRoot":"","sources":["../../src/asCode/asCodeEditorBody.test.utils.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,YAAY,EACZ,QAAQ,EACR,QAAQ,EACX,EAAE;IACC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;CACrB,2CAcA"}
1
+ {"version":3,"file":"asCodeEditorBody.test.utils.d.ts","sourceRoot":"","sources":["../../src/asCode/asCodeEditorBody.test.utils.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,YAAY,EACZ,QAAQ,EACR,QAAQ,GACX,EAAE;IACC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;CACrB,2CAcA"}
@@ -14,8 +14,9 @@ export declare const catalogDetailActionDuplicate = "analytics-catalog-detail-ac
14
14
  export declare const catalogDetailActionDelete = "analytics-catalog-detail-actions/delete";
15
15
  export declare const catalogDetailActionShare = "analytics-catalog-detail-actions/share";
16
16
  export declare const catalogDetailAccessRow = "analytics-catalog-detail-access-row";
17
- export declare const catalogDetailAccessRowState = "analytics-catalog-detail-access-row/state";
18
- export declare const catalogDetailAccessRowSharedLink = "analytics-catalog-detail-access-row/shared-link";
17
+ export declare const catalogDetailAccessRowWorkspace = "analytics-catalog-detail-access-row/workspace";
18
+ export declare const catalogDetailAccessRowShared = "analytics-catalog-detail-access-row/shared";
19
+ export declare const catalogDetailAccessRowPrivate = "analytics-catalog-detail-access-row/private";
19
20
  export declare const catalogDetailLabels = "analytics-catalog-detail-labels";
20
21
  export declare const catalogDetailLabelsTrigger = "analytics-catalog-detail-labels/trigger";
21
22
  export declare const catalogDetailLabelsList = "analytics-catalog-detail-labels/list";
@@ -1 +1 @@
1
- {"version":3,"file":"testIds.d.ts","sourceRoot":"","sources":["../../src/automation/testIds.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,sBAAsB,CAAC;AAC3C,eAAO,MAAM,UAAU,kCAA2B,CAAC;AACnD,eAAO,MAAM,MAAM,6BAAsB,CAAC;AAC1C,eAAO,MAAM,eAAe,wCAAyB,CAAC;AACtD,eAAO,MAAM,YAAY,oCAAqB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,wCAAyB,CAAC;AACvD,eAAO,MAAM,mBAAmB,2CAA4B,CAAC;AAC7D,eAAO,MAAM,aAAa,qCAAsB,CAAC;AACjD,eAAO,MAAM,UAAU,kCAAmB,CAAC;AAC3C,eAAO,MAAM,WAAW,mCAAoB,CAAC;AAC7C,eAAO,MAAM,aAAa,6BAAsB,CAAC;AACjD,eAAO,MAAM,2BAA2B,6CAAqC,CAAC;AAC9E,eAAO,MAAM,4BAA4B,+CAAuC,CAAC;AACjF,eAAO,MAAM,yBAAyB,4CAAoC,CAAC;AAC3E,eAAO,MAAM,wBAAwB,2CAAmC,CAAC;AACzE,eAAO,MAAM,sBAAsB,wCAAgC,CAAC;AACpE,eAAO,MAAM,2BAA2B,8CAAsC,CAAC;AAC/E,eAAO,MAAM,gCAAgC,oDAA4C,CAAC;AAC1F,eAAO,MAAM,mBAAmB,oCAA4B,CAAC;AAC7D,eAAO,MAAM,0BAA0B,4CAAoC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,yCAAiC,CAAC"}
1
+ {"version":3,"file":"testIds.d.ts","sourceRoot":"","sources":["../../src/automation/testIds.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,sBAAsB,CAAC;AAC3C,eAAO,MAAM,UAAU,kCAA2B,CAAC;AACnD,eAAO,MAAM,MAAM,6BAAsB,CAAC;AAC1C,eAAO,MAAM,eAAe,wCAAyB,CAAC;AACtD,eAAO,MAAM,YAAY,oCAAqB,CAAC;AAC/C,eAAO,MAAM,gBAAgB,wCAAyB,CAAC;AACvD,eAAO,MAAM,mBAAmB,2CAA4B,CAAC;AAC7D,eAAO,MAAM,aAAa,qCAAsB,CAAC;AACjD,eAAO,MAAM,UAAU,kCAAmB,CAAC;AAC3C,eAAO,MAAM,WAAW,mCAAoB,CAAC;AAC7C,eAAO,MAAM,aAAa,6BAAsB,CAAC;AACjD,eAAO,MAAM,2BAA2B,6CAAqC,CAAC;AAC9E,eAAO,MAAM,4BAA4B,+CAAuC,CAAC;AACjF,eAAO,MAAM,yBAAyB,4CAAoC,CAAC;AAC3E,eAAO,MAAM,wBAAwB,2CAAmC,CAAC;AACzE,eAAO,MAAM,sBAAsB,wCAAgC,CAAC;AACpE,eAAO,MAAM,+BAA+B,kDAA0C,CAAC;AACvF,eAAO,MAAM,4BAA4B,+CAAuC,CAAC;AACjF,eAAO,MAAM,6BAA6B,gDAAwC,CAAC;AACnF,eAAO,MAAM,mBAAmB,oCAA4B,CAAC;AAC7D,eAAO,MAAM,0BAA0B,4CAAoC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,yCAAiC,CAAC"}
@@ -18,8 +18,9 @@ export const catalogDetailActionDuplicate = `${catalogDetail}-actions/duplicate`
18
18
  export const catalogDetailActionDelete = `${catalogDetail}-actions/delete`;
19
19
  export const catalogDetailActionShare = `${catalogDetail}-actions/share`;
20
20
  export const catalogDetailAccessRow = `${catalogDetail}-access-row`;
21
- export const catalogDetailAccessRowState = `${catalogDetail}-access-row/state`;
22
- export const catalogDetailAccessRowSharedLink = `${catalogDetail}-access-row/shared-link`;
21
+ export const catalogDetailAccessRowWorkspace = `${catalogDetail}-access-row/workspace`;
22
+ export const catalogDetailAccessRowShared = `${catalogDetail}-access-row/shared`;
23
+ export const catalogDetailAccessRowPrivate = `${catalogDetail}-access-row/private`;
23
24
  export const catalogDetailLabels = `${catalogDetail}-labels`;
24
25
  export const catalogDetailLabelsTrigger = `${catalogDetail}-labels/trigger`;
25
26
  export const catalogDetailLabelsList = `${catalogDetail}-labels/list`;
@@ -13,6 +13,6 @@ type Props = {
13
13
  onCatalogDetailClosed?: () => void;
14
14
  onCreateObject?: (objectType: CatalogCreateObjectType) => void;
15
15
  };
16
- export declare function Catalog({ openCatalogItemRef, backend, workspace, onCatalogItemOpenClick, onCatalogItemNavigation, onCatalogDetailOpened, onCatalogDetailClosed, onCreateObject }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export declare function Catalog({ openCatalogItemRef, backend, workspace, onCatalogItemOpenClick, onCatalogItemNavigation, onCatalogDetailOpened, onCatalogDetailClosed, onCreateObject, }: Props): import("react/jsx-runtime").JSX.Element;
17
17
  export {};
18
18
  //# sourceMappingURL=Catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/Catalog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAUtE,KAAK,KAAK,GAAG;IACT,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnF,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/E,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACpB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACjB,EAAE,KAAK,2CA4DP"}
1
+ {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/Catalog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAUtE,KAAK,KAAK,GAAG;IACT,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnF,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/E,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACpB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACjB,EAAE,KAAK,2CA4DP"}
@@ -14,5 +14,5 @@ export type ICatalogDetailActionBarProps = {
14
14
  /**
15
15
  * Detail action bar: optional leading actions, a primary Edit button, and an item actions menu.
16
16
  */
17
- export declare function CatalogDetailActionBar({ item, workspaceId, actionGroups, leadingActions, onEditClick, onActionsMenuSelect }: ICatalogDetailActionBarProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function CatalogDetailActionBar({ item, workspaceId, actionGroups, leadingActions, onEditClick, onActionsMenuSelect, }: ICatalogDetailActionBarProps): import("react/jsx-runtime").JSX.Element;
18
18
  //# sourceMappingURL=CatalogDetailActionBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailActionBar.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActionBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAOrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAUzE,MAAM,MAAM,4BAA4B,GAAG;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,YAAY,EAAE,oBAAoB,EAAE,EAAE,CAAC;IACvC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;CACtF,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,EACtB,EAAE,4BAA4B,2CA4E9B"}
1
+ {"version":3,"file":"CatalogDetailActionBar.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActionBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAOrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAUzE,MAAM,MAAM,4BAA4B,GAAG;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,YAAY,EAAE,oBAAoB,EAAE,EAAE,CAAC;IACvC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;CACtF,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,GACtB,EAAE,4BAA4B,2CA4E9B"}
@@ -18,5 +18,5 @@ export interface ICatalogDetailActionsProps {
18
18
  * {@link AsCodeDetailActions}; every other type gets the Open (+ Share) fallback.
19
19
  * @internal
20
20
  */
21
- export declare function CatalogDetailActions({ item, canEdit, onOpen, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete }: ICatalogDetailActionsProps): import("react/jsx-runtime").JSX.Element | null;
21
+ export declare function CatalogDetailActions({ item, canEdit, onOpen, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, }: ICatalogDetailActionsProps): import("react/jsx-runtime").JSX.Element | null;
22
22
  //# sourceMappingURL=CatalogDetailActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailActions.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AASxC,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CACxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACtB,EAAE,0BAA0B,kDAgD5B"}
1
+ {"version":3,"file":"CatalogDetailActions.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AASxC,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CACxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACtB,EAAE,0BAA0B,kDAgD5B"}
@@ -0,0 +1,12 @@
1
+ import { type ISemanticConditionalFormatting, type ISeparators } from "@gooddata/sdk-model";
2
+ export interface ICatalogDetailConditionalFormattingProps {
3
+ identifier: string;
4
+ title: string;
5
+ format?: string | null;
6
+ conditionalFormatting?: ISemanticConditionalFormatting;
7
+ canEdit: boolean;
8
+ onConditionalFormattingChange: (conditionalFormatting: ISemanticConditionalFormatting | undefined) => void;
9
+ separators?: ISeparators;
10
+ }
11
+ export declare function CatalogDetailConditionalFormatting({ identifier, title, format, conditionalFormatting, canEdit, onConditionalFormattingChange, separators, }: ICatalogDetailConditionalFormattingProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=CatalogDetailConditionalFormatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogDetailConditionalFormatting.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailConditionalFormatting.tsx"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,8BAA8B,EACnC,KAAK,WAAW,EAEnB,MAAM,qBAAqB,CAAC;AAkB7B,MAAM,WAAW,wCAAwC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qBAAqB,CAAC,EAAE,8BAA8B,CAAC;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B,EAAE,CAC3B,qBAAqB,EAAE,8BAA8B,GAAG,SAAS,KAChE,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED,wBAAgB,kCAAkC,CAAC,EAC/C,UAAU,EACV,KAAK,EACL,MAAM,EACN,qBAAqB,EACrB,OAAO,EACP,6BAA6B,EAC7B,UAAU,GACb,EAAE,wCAAwC,2CAqF1C"}
@@ -0,0 +1,52 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { useState } from "react";
4
+ import cx from "classnames";
5
+ import { FormattedMessage, defineMessages, useIntl } from "react-intl";
6
+ import { isSemanticConditionalFormattingEnabled, } from "@gooddata/sdk-model";
7
+ import { ConditionalFormattingDialog, isPercentFormat, newRule, semanticRuleFor, } from "@gooddata/sdk-ui-ext";
8
+ import { UiButton } from "@gooddata/sdk-ui-kit";
9
+ import { CatalogDetailContentRow } from "./CatalogDetailContentRow.js";
10
+ const messages = defineMessages({
11
+ toggleAriaLabel: { id: "analyticsCatalog.conditionalFormatting.toggleAriaLabel" },
12
+ edit: { id: "analyticsCatalog.conditionalFormatting.edit" },
13
+ add: { id: "analyticsCatalog.conditionalFormatting.add" },
14
+ });
15
+ export function CatalogDetailConditionalFormatting({ identifier, title, format, conditionalFormatting, canEdit, onConditionalFormattingChange, separators, }) {
16
+ const intl = useIntl();
17
+ const [isOpen, setIsOpen] = useState(false);
18
+ const targetOption = {
19
+ value: `measure:${identifier}`,
20
+ title,
21
+ target: { kind: "measure", measureIdentifier: identifier },
22
+ isPercent: isPercentFormat(format ?? undefined),
23
+ };
24
+ // A stored value with no conditions counts as no rule.
25
+ const authored = conditionalFormatting?.conditions.length ? conditionalFormatting : undefined;
26
+ const isEnabled = authored !== undefined && isSemanticConditionalFormattingEnabled(authored);
27
+ const rule = authored ? semanticRuleFor(targetOption, authored) : newRule(targetOption);
28
+ return (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.conditionalFormatting" }), content: _jsxs(_Fragment, { children: [authored ? (_jsxs("label", { className: "input-checkbox-toggle s-cf-catalog-toggle-label", children: [_jsx("input", { type: "checkbox", checked: isEnabled, disabled: !canEdit, "aria-label": intl.formatMessage(messages.toggleAriaLabel, { title }), onChange: (event) => {
29
+ onConditionalFormattingChange({
30
+ ...authored,
31
+ enabled: event.target.checked,
32
+ });
33
+ }, className: cx("s-checkbox-toggle", canEdit ? "s-enabled" : "s-disabled") }), _jsx("span", { className: "input-label-text" })] })) : null, _jsx(UiButton, { dataTestId: "cf-catalog-open", size: "small", variant: "tertiary", iconBefore: authored ? undefined : "plus", label: intl.formatMessage(authored ? messages.edit : messages.add), isDisabled: !canEdit, onClick: () => setIsOpen(true) }), _jsx("span", { className: "s-cf-catalog-popover-anchor" }), isOpen ? (_jsx(ConditionalFormattingDialog, { rule: rule, isNew: !authored, fixedTarget: true, targetOptions: [targetOption], separators: separators, alignTo: ".s-cf-catalog-popover-anchor", onDelete: authored
34
+ ? () => {
35
+ onConditionalFormattingChange(undefined);
36
+ setIsOpen(false);
37
+ }
38
+ : undefined, onSubmit: (intent) => {
39
+ // "inherited" needs the semanticByTarget fallback, which this usage never passes.
40
+ if (intent.mode !== "custom") {
41
+ return;
42
+ }
43
+ onConditionalFormattingChange({
44
+ ...(conditionalFormatting?.version
45
+ ? { version: conditionalFormatting.version }
46
+ : {}),
47
+ conditions: intent.rule.conditions,
48
+ // A new rule takes effect immediately; an edit keeps the row's toggle state.
49
+ enabled: authored ? isEnabled : true,
50
+ });
51
+ }, onClose: () => setIsOpen(false) })) : null] }) }));
52
+ }
@@ -50,5 +50,5 @@ export interface ICatalogDetailContentProps {
50
50
  /**
51
51
  * @internal
52
52
  */
53
- export declare function CatalogDetailContent({ objectId, objectType, objectDefinition, onOpenClick, onTagClick, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, onCatalogItemUpdateError, onCatalogItemNavigation }: ICatalogDetailContentProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare function CatalogDetailContent({ objectId, objectType, objectDefinition, onOpenClick, onTagClick, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, onCatalogItemUpdateError, onCatalogItemNavigation, }: ICatalogDetailContentProps): import("react/jsx-runtime").JSX.Element;
54
54
  //# sourceMappingURL=CatalogDetailContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailContent.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailContent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAgC,MAAM,OAAO,CAAC;AAUtE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkBzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EAC1B,EAAE,0BAA0B,2CAoN5B"}
1
+ {"version":3,"file":"CatalogDetailContent.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailContent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAgC,MAAM,OAAO,CAAC;AAUtE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkBzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GAC1B,EAAE,0BAA0B,2CAwN5B"}
@@ -39,7 +39,7 @@ const Tabs = {
39
39
  export function CatalogDetailContent({ objectId, objectType, objectDefinition, onOpenClick, onTagClick, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, onCatalogItemUpdateError, onCatalogItemNavigation, }) {
40
40
  const intl = useIntl();
41
41
  const { result: { user: currentUser, permissions, settings } = {} } = usePermissionsState();
42
- const { item, status, error, updateItemTitle, updateItemDescription, updateItemTags, updateItemIsHidden, updateItemIsHiddenFromKda, updateItemMetricType, updateItemFormat, updateItemCertification, applyItemUpdate, applyItemDelete, } = useCatalogItemUpdate({
42
+ const { item, status, error, updateItemTitle, updateItemDescription, updateItemTags, updateItemIsHidden, updateItemIsHiddenFromKda, updateItemMetricType, updateItemFormat, updateItemConditionalFormatting, updateItemCertification, applyItemUpdate, applyItemDelete, } = useCatalogItemUpdate({
43
43
  currentUser,
44
44
  objectId,
45
45
  objectType,
@@ -130,6 +130,8 @@ export function CatalogDetailContent({ objectId, objectType, objectDefinition, o
130
130
  updateItemMetricType(metricType);
131
131
  }, onFormatChange: (format) => {
132
132
  updateItemFormat(format);
133
+ }, onConditionalFormattingChange: (conditionalFormatting) => {
134
+ updateItemConditionalFormatting(conditionalFormatting);
133
135
  }, separators: separators, currencyFormatOverride: enableMetricFormatOverrides ? currencyFormatOverride : undefined, enableMetricFormatOverrides: enableMetricFormatOverrides, accessRow: _jsx(CatalogItemAccessRow, {}) })), selectedTabId === Tabs.CERTIFICATION && isCertificationVisible ? (_jsx(CatalogDetailTabCertification, { item: item, canEdit: canEdit, onCertificationChange: (certification) => {
134
136
  updateItemCertification(certification);
135
137
  } })) : null, selectedTabId === Tabs.QUALITY &&
@@ -2,6 +2,7 @@ import type { ReactNode } from "react";
2
2
  export interface ICatalogDetailContentRowProps {
3
3
  title: ReactNode;
4
4
  content?: ReactNode;
5
+ alignTop?: boolean;
5
6
  }
6
- export declare function CatalogDetailContentRow({ title, content }: ICatalogDetailContentRowProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export declare function CatalogDetailContentRow({ title, content, alignTop }: ICatalogDetailContentRowProps): import("react/jsx-runtime").JSX.Element | null;
7
8
  //# sourceMappingURL=CatalogDetailContentRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailContentRow.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailContentRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,6BAA6B;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,6BAA6B,kDAcxF"}
1
+ {"version":3,"file":"CatalogDetailContentRow.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailContentRow.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,6BAA6B;IAC1C,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,6BAA6B,kDAalG"}
@@ -1,7 +1,12 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function CatalogDetailContentRow({ title, content }) {
2
+ // (C) 2025-2026 GoodData Corporation
3
+ import cx from "classnames";
4
+ export function CatalogDetailContentRow({ title, content, alignTop }) {
3
5
  if (!content) {
4
6
  return null;
5
7
  }
6
- return (_jsxs(_Fragment, { children: [_jsx("dt", { className: "gd-analytics-catalog-detail__tab-content__cell gd-analytics-catalog-detail__title-cell", children: title }), _jsx("dd", { className: "gd-analytics-catalog-detail__tab-content__cell gd-analytics-catalog-detail__detail-cell", children: content })] }));
8
+ const cell = cx("gd-analytics-catalog-detail__tab-content__cell", {
9
+ "gd-analytics-catalog-detail__tab-content__cell--align-top": alignTop,
10
+ });
11
+ return (_jsxs(_Fragment, { children: [_jsx("dt", { className: cx(cell, "gd-analytics-catalog-detail__title-cell"), children: title }), _jsx("dd", { className: cx(cell, "gd-analytics-catalog-detail__detail-cell"), children: content })] }));
7
12
  }
@@ -25,6 +25,6 @@ interface IProps {
25
25
  */
26
26
  showInfoRow?: boolean;
27
27
  }
28
- export declare function CatalogDetailHeader({ item, canEdit, actions, updateItemTitle, updateItemDescription, isDescriptionGenerationEnabled, headerRef, labels, labelsLoading, showInfoRow }: IProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function CatalogDetailHeader({ item, canEdit, actions, updateItemTitle, updateItemDescription, isDescriptionGenerationEnabled, headerRef, labels, labelsLoading, showInfoRow, }: IProps): import("react/jsx-runtime").JSX.Element;
29
29
  export {};
30
30
  //# sourceMappingURL=CatalogDetailHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailHeader.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAIpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAU9D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAS5D,MAAM,WAAW,uBAAuB;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,UAAU,MAAM;IACZ,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,8BAA8B,EAAE,OAAO,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;IACrD,mGAAmG;IACnG,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,4FAA4F;IAC5F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,OAAO,EACP,eAAe,EACf,qBAAqB,EACrB,8BAA8B,EAC9B,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,EACd,EAAE,MAAM,2CAqMR"}
1
+ {"version":3,"file":"CatalogDetailHeader.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAA+B,MAAM,OAAO,CAAC;AAIpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAU9D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAS5D,MAAM,WAAW,uBAAuB;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,UAAU,MAAM;IACZ,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,8BAA8B,EAAE,OAAO,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;IACrD,mGAAmG;IACnG,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,4FAA4F;IAC5F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,OAAO,EACP,eAAe,EACf,qBAAqB,EACrB,8BAA8B,EAC9B,SAAS,EACT,MAAM,EACN,aAAa,EACb,WAAW,GACd,EAAE,MAAM,2CAqMR"}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import type { ISeparators, MetricType } from "@gooddata/sdk-model";
2
+ import type { ISemanticConditionalFormatting, ISeparators, MetricType } from "@gooddata/sdk-model";
3
3
  import { type IUiTagDef } from "@gooddata/sdk-ui-kit";
4
4
  import { type ICatalogItem } from "../catalogItem/types.js";
5
5
  type Props = {
@@ -12,12 +12,13 @@ type Props = {
12
12
  onIsHiddenFromKdaChange: (isHiddenFromKda: boolean) => void;
13
13
  onMetricTypeChange?: (metricType: MetricType | undefined) => void;
14
14
  onFormatChange?: (format: string | null) => void;
15
+ onConditionalFormattingChange?: (conditionalFormatting: ISemanticConditionalFormatting | undefined) => void;
15
16
  separators?: ISeparators;
16
17
  currencyFormatOverride?: string | null;
17
18
  enableMetricFormatOverrides?: boolean;
18
19
  /**
19
- * Inline access row rendered at the top of the list. Self-contained (reads the
20
- * share context); undefined / nothing rendered when sharing is unavailable.
20
+ * Inline access row, rendered last before Tags. Self-contained (reads the share
21
+ * context); undefined / nothing rendered when sharing is unavailable.
21
22
  */
22
23
  accessRow?: ReactNode;
23
24
  /**
@@ -26,6 +27,6 @@ type Props = {
26
27
  */
27
28
  showDatasetRow?: boolean;
28
29
  };
29
- export declare function CatalogDetailTabMetadata({ item, canEdit, onTagClick, onTagAdd, onTagRemove, onIsHiddenChange, onIsHiddenFromKdaChange, onMetricTypeChange, onFormatChange, separators, currencyFormatOverride, enableMetricFormatOverrides, accessRow, showDatasetRow }: Props): import("react/jsx-runtime").JSX.Element;
30
+ export declare function CatalogDetailTabMetadata({ item, canEdit, onTagClick, onTagAdd, onTagRemove, onIsHiddenChange, onIsHiddenFromKdaChange, onMetricTypeChange, onFormatChange, onConditionalFormattingChange, separators, currencyFormatOverride, enableMetricFormatOverrides, accessRow, showDatasetRow, }: Props): import("react/jsx-runtime").JSX.Element;
30
31
  export {};
31
32
  //# sourceMappingURL=CatalogDetailTabMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailTabMetadata.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailTabMetadata.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,sBAAsB,CAAC;AASjF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,KAAK,KAAK,GAAG;IACT,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uBAAuB,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACrC,IAAI,EACJ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,SAAS,EACT,cAAc,EACjB,EAAE,KAAK,2CAiJP"}
1
+ {"version":3,"file":"CatalogDetailTabMetadata.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailTabMetadata.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,8BAA8B,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,KAAK,SAAS,EAA6B,MAAM,sBAAsB,CAAC;AASjF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAS5D,KAAK,KAAK,GAAG;IACT,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uBAAuB,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,6BAA6B,CAAC,EAAE,CAC5B,qBAAqB,EAAE,8BAA8B,GAAG,SAAS,KAChE,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACrC,IAAI,EACJ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,6BAA6B,EAC7B,UAAU,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,SAAS,EACT,cAAc,GACjB,EAAE,KAAK,2CA6JP"}
@@ -5,17 +5,20 @@ import { FormattedMessage, useIntl } from "react-intl";
5
5
  import { UiDate, UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit";
6
6
  import { isCatalogItemAttribute, isCatalogItemDataSet, isCatalogItemFact, isCatalogItemHidable, isCatalogItemMeasure, } from "../catalogItem/guards.js";
7
7
  import {} from "../catalogItem/types.js";
8
+ import { useFeatureFlag } from "../permission/PermissionsContext.js";
9
+ import { CatalogDetailConditionalFormatting } from "./CatalogDetailConditionalFormatting.js";
8
10
  import { CatalogDetailContentRow } from "./CatalogDetailContentRow.js";
9
11
  import { CatalogDetailGranularities } from "./CatalogDetailGranularities.js";
10
12
  import { CatalogDetailMetricSettings } from "./CatalogDetailMetricSettings.js";
11
13
  import { CatalogDetailTags } from "./CatalogDetailTags.js";
12
- export function CatalogDetailTabMetadata({ item, canEdit, onTagClick, onTagAdd, onTagRemove, onIsHiddenChange, onIsHiddenFromKdaChange, onMetricTypeChange, onFormatChange, separators, currencyFormatOverride, enableMetricFormatOverrides, accessRow, showDatasetRow, }) {
14
+ export function CatalogDetailTabMetadata({ item, canEdit, onTagClick, onTagAdd, onTagRemove, onIsHiddenChange, onIsHiddenFromKdaChange, onMetricTypeChange, onFormatChange, onConditionalFormattingChange, separators, currencyFormatOverride, enableMetricFormatOverrides, accessRow, showDatasetRow, }) {
15
+ const enableSemanticConditionalFormatting = useFeatureFlag("enableSemanticConditionalFormatting");
13
16
  const intl = useIntl();
14
17
  const isMeasure = isCatalogItemMeasure(item);
15
18
  const isDataSet = isCatalogItemDataSet(item);
16
19
  const granularities = isDataSet ? (item.dataSet.attributes ?? []) : [];
17
20
  const datasetTitle = isCatalogItemAttribute(item) || isCatalogItemFact(item) ? item.dataSet?.title : undefined;
18
- return (_jsxs("dl", { className: "gd-analytics-catalog-detail__tab-content", children: [accessRow, showDatasetRow && datasetTitle ? (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.dataSet" }), content: datasetTitle })) : null, isDataSet && granularities.length > 0 ? (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.granularities" }), content: _jsx(CatalogDetailGranularities, { granularities: granularities }) })) : null, _jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.createdBy" }), content: item.createdBy ?? undefined }), _jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.createdAt" }), content: item.createdAt ? _jsx(UiDate, { date: item.createdAt, locale: intl.locale }) : undefined }), item.createdBy === item.updatedBy && !item.updatedBy ? null : (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.updatedBy" }), content: item.updatedBy ?? undefined })), item.createdAt?.getTime() === item.updatedAt?.getTime() ? null : (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.updatedAt" }), content: item.updatedAt ? _jsx(UiDate, { date: item.updatedAt, locale: intl.locale }) : undefined })), isCatalogItemHidable(item) ? (_jsx(CatalogDetailContentRow, { title: _jsxs(_Fragment, { children: [_jsx(FormattedMessage, { id: "analyticsCatalog.column.title.isHidden" }), _jsx(UiTooltip, { anchor: _jsx(UiIcon, { type: "question", size: 12, color: "complementary-6" }), content: _jsx(FormattedMessage, { id: "analyticsCatalog.column.isHidden.field.tooltip" }), arrowPlacement: "left", optimalPlacement: true, offset: 10, width: 280, triggerBy: ["hover", "click"] })] }), content: _jsxs("label", { className: "input-checkbox-toggle", children: [_jsx("input", { type: "checkbox", checked: item.isHidden !== true, disabled: !canEdit, "aria-label": intl.formatMessage({
21
+ return (_jsxs("dl", { className: "gd-analytics-catalog-detail__tab-content", children: [showDatasetRow && datasetTitle ? (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.dataSet" }), content: datasetTitle })) : null, isDataSet && granularities.length > 0 ? (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.granularities" }), content: _jsx(CatalogDetailGranularities, { granularities: granularities }) })) : null, _jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.createdBy" }), content: item.createdBy ?? undefined }), _jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.createdAt" }), content: item.createdAt ? _jsx(UiDate, { date: item.createdAt, locale: intl.locale }) : undefined }), item.createdBy === item.updatedBy && !item.updatedBy ? null : (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.updatedBy" }), content: item.updatedBy ?? undefined })), item.createdAt?.getTime() === item.updatedAt?.getTime() ? null : (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.updatedAt" }), content: item.updatedAt ? _jsx(UiDate, { date: item.updatedAt, locale: intl.locale }) : undefined })), isCatalogItemHidable(item) ? (_jsx(CatalogDetailContentRow, { title: _jsxs(_Fragment, { children: [_jsx(FormattedMessage, { id: "analyticsCatalog.column.title.isHidden" }), _jsx(UiTooltip, { anchor: _jsx(UiIcon, { type: "question", size: 12, color: "complementary-6" }), content: _jsx(FormattedMessage, { id: "analyticsCatalog.column.isHidden.field.tooltip" }), arrowPlacement: "left", optimalPlacement: true, offset: 10, width: 280, triggerBy: ["hover", "click"] })] }), content: _jsxs("label", { className: "input-checkbox-toggle", children: [_jsx("input", { type: "checkbox", checked: item.isHidden !== true, disabled: !canEdit, "aria-label": intl.formatMessage({
19
22
  id: "analyticsCatalog.column.title.isHidden",
20
23
  }), onChange: (event) => {
21
24
  onIsHiddenChange(!event.target.checked);
@@ -23,5 +26,5 @@ export function CatalogDetailTabMetadata({ item, canEdit, onTagClick, onTagAdd,
23
26
  id: "analyticsCatalog.column.title.isHiddenFromKda",
24
27
  }), onChange: (event) => {
25
28
  onIsHiddenFromKdaChange(!event.target.checked);
26
- }, className: cx("s-checkbox-toggle", canEdit ? "s-enabled" : "s-disabled") }), _jsx("span", { className: "input-label-text" })] }) })) : null, isMeasure && enableMetricFormatOverrides ? (_jsx(CatalogDetailMetricSettings, { metricType: item.metricType, format: item.format, canEdit: canEdit, separators: separators, currencyFormatOverride: currencyFormatOverride, onMetricTypeChange: onMetricTypeChange, onFormatChange: onFormatChange, enableMetricFormatOverrides: enableMetricFormatOverrides })) : null, _jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.tags" }), content: _jsx(CatalogDetailTags, { tags: item.tags, canEdit: canEdit, onTagClick: onTagClick, onTagAdd: onTagAdd, onTagRemove: onTagRemove }) })] }));
29
+ }, className: cx("s-checkbox-toggle", canEdit ? "s-enabled" : "s-disabled") }), _jsx("span", { className: "input-label-text" })] }) })) : null, isMeasure && enableMetricFormatOverrides ? (_jsx(CatalogDetailMetricSettings, { metricType: item.metricType, format: item.format, canEdit: canEdit, separators: separators, currencyFormatOverride: currencyFormatOverride, onMetricTypeChange: onMetricTypeChange, onFormatChange: onFormatChange, enableMetricFormatOverrides: enableMetricFormatOverrides })) : null, isMeasure && enableSemanticConditionalFormatting && onConditionalFormattingChange ? (_jsx(CatalogDetailConditionalFormatting, { identifier: item.identifier, title: item.title, format: item.format, conditionalFormatting: item.conditionalFormatting, canEdit: canEdit, onConditionalFormattingChange: onConditionalFormattingChange, separators: separators })) : null, accessRow, _jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { id: "analyticsCatalog.column.title.tags" }), content: _jsx(CatalogDetailTags, { tags: item.tags, canEdit: canEdit, onTagClick: onTagClick, onTagAdd: onTagAdd, onTagRemove: onTagRemove }) })] }));
27
30
  }
@@ -8,6 +8,6 @@ type Props = {
8
8
  onEditClick?: (attributeName: SemanticQualityIssueAttributeName) => void;
9
9
  onCatalogItemNavigation?: (event: MouseEvent, ref: ICatalogItemRef) => void;
10
10
  };
11
- export declare function CatalogDetailTabQuality({ item, issues, canEdit, onEditClick, onCatalogItemNavigation }: Props): import("react/jsx-runtime").JSX.Element;
11
+ export declare function CatalogDetailTabQuality({ item, issues, canEdit, onEditClick, onCatalogItemNavigation, }: Props): import("react/jsx-runtime").JSX.Element;
12
12
  export {};
13
13
  //# sourceMappingURL=CatalogDetailTabQuality.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailTabQuality.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailTabQuality.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAGzG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF,KAAK,KAAK,GAAG;IACT,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,iCAAiC,KAAK,IAAI,CAAC;IACzE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CAC/E,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACpC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,uBAAuB,EAC1B,EAAE,KAAK,2CAsBP"}
1
+ {"version":3,"file":"CatalogDetailTabQuality.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailTabQuality.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAGzG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF,KAAK,KAAK,GAAG;IACT,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,iCAAiC,KAAK,IAAI,CAAC;IACzE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CAC/E,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EACpC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,uBAAuB,GAC1B,EAAE,KAAK,2CAsBP"}
@@ -1,5 +1,5 @@
1
- import type { IUser, MetricType } from "@gooddata/sdk-model";
2
- import { type ICatalogItem, type ICatalogItemRef } from "../../catalogItem/types.js";
1
+ import { type IUser, type MetricType } from "@gooddata/sdk-model";
2
+ import { type ICatalogItem, type ICatalogItemMeasure, type ICatalogItemRef } from "../../catalogItem/types.js";
3
3
  import { type ObjectType } from "../../objectType/types.js";
4
4
  export interface IUseCatalogItemUpdate {
5
5
  currentUser: IUser | null | undefined;
@@ -10,7 +10,7 @@ export interface IUseCatalogItemUpdate {
10
10
  onDelete?: (ref: ICatalogItemRef) => void;
11
11
  onError?: (error: Error) => void;
12
12
  }
13
- export declare function useCatalogItemUpdate({ currentUser, objectId, objectType, objectDefinition, onUpdate, onDelete, onError }: IUseCatalogItemUpdate): {
13
+ export declare function useCatalogItemUpdate({ currentUser, objectId, objectType, objectDefinition, onUpdate, onDelete, onError, }: IUseCatalogItemUpdate): {
14
14
  item: ICatalogItem | null | undefined;
15
15
  status: "error" | "loading" | "pending" | "success";
16
16
  error: Error | undefined;
@@ -21,6 +21,7 @@ export declare function useCatalogItemUpdate({ currentUser, objectId, objectType
21
21
  updateItemIsHiddenFromKda: (isHiddenFromKda: boolean) => void;
22
22
  updateItemMetricType: (metricType: MetricType | undefined) => void;
23
23
  updateItemFormat: (format: string | null) => void;
24
+ updateItemConditionalFormatting: (conditionalFormatting: ICatalogItemMeasure["conditionalFormatting"]) => void;
24
25
  updateItemCertification: (certification: ICatalogItem["certification"]) => void;
25
26
  applyItemUpdate: (updated: ICatalogItem) => void;
26
27
  applyItemDelete: (ref: ICatalogItemRef) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useCatalogItemUpdate.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemUpdate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM7D,OAAO,EACH,KAAK,YAAY,EAEjB,KAAK,eAAe,EACvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpC;AAID,wBAAgB,oBAAoB,CAAC,EACjC,WAAW,EACX,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,OAAO,EACV,EAAE,qBAAqB;;;;6BA4DR,MAAM;yCAsBA,MAAM;2BAsBb,MAAM,EAAE;mCAsBJ,OAAO;iDA0BA,OAAO;uCA8BZ,UAAU,GAAG,SAAS;+BA2B1B,MAAM,GAAG,IAAI;6CA+BN,YAAY,CAAC,eAAe,CAAC;+BAtMnC,YAAY;2BAUhB,eAAe;EAqP5B"}
1
+ {"version":3,"file":"useCatalogItemUpdate.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemUpdate.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUlE,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpC;AAID,wBAAgB,oBAAoB,CAAC,EACjC,WAAW,EACX,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,OAAO,GACV,EAAE,qBAAqB;;;;6BA4DR,MAAM;yCAsBA,MAAM;2BAsBb,MAAM,EAAE;mCAsBJ,OAAO;iDA0BA,OAAO;uCA8BZ,UAAU,GAAG,SAAS;+BA2B1B,MAAM,GAAG,IAAI;6DA+BE,mBAAmB,CAAC,uBAAuB,CAAC;6CAwCpD,YAAY,CAAC,eAAe,CAAC;+BA9OnC,YAAY;2BAUhB,eAAe;EA8R5B"}
@@ -1,10 +1,11 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useCallback, useEffect, useState } from "react";
3
3
  import { isEqual } from "lodash-es";
4
+ import {} from "@gooddata/sdk-model";
4
5
  import { useBackendStrict, useWorkspaceStrict } from "@gooddata/sdk-ui";
5
6
  import { getDisplayName } from "../../catalogItem/converter.js";
6
7
  import { isCatalogItemHidable, isCatalogItemLoaded, isCatalogItemMeasure } from "../../catalogItem/guards.js";
7
- import { updateCatalogItem, updateCatalogItemCertification } from "../../catalogItem/query.js";
8
+ import { persistMeasureConditionalFormatting, updateCatalogItem, updateCatalogItemCertification, } from "../../catalogItem/query.js";
8
9
  import {} from "../../catalogItem/types.js";
9
10
  import { useMounted } from "../../hooks/useMounted.js";
10
11
  import {} from "../../objectType/types.js";
@@ -130,6 +131,29 @@ export function useCatalogItemUpdate({ currentUser, objectId, objectType, object
130
131
  revertItemUpdate(err, item);
131
132
  }, persistMeasureChanges);
132
133
  }, [backend, currentUser, item, onUpdate, persistMeasureChanges, revertItemUpdate, status, workspace]);
134
+ const persistMeasureConditionalFormattingChanges = useCallback((nextItem) => persistMeasureConditionalFormatting(backend, workspace, nextItem), [backend, workspace]);
135
+ const updateItemConditionalFormatting = useCallback((conditionalFormatting) => {
136
+ if (!isCatalogItemMeasure(item)) {
137
+ return;
138
+ }
139
+ updateItem(backend, workspace, currentUser, item, status !== "success", () => ({
140
+ conditionalFormatting,
141
+ }), (newItem) => {
142
+ setItem(newItem);
143
+ onUpdate?.(newItem);
144
+ }, (err) => {
145
+ revertItemUpdate(err, item);
146
+ }, persistMeasureConditionalFormattingChanges);
147
+ }, [
148
+ backend,
149
+ currentUser,
150
+ item,
151
+ onUpdate,
152
+ persistMeasureConditionalFormattingChanges,
153
+ revertItemUpdate,
154
+ status,
155
+ workspace,
156
+ ]);
133
157
  const persistCertificationChanges = useCallback((newItem) => updateCatalogItemCertification(backend, workspace, newItem), [backend, workspace]);
134
158
  const updateItemCertification = useCallback((certification) => {
135
159
  updateItem(backend, workspace, currentUser, item, status !== "success", () => ({
@@ -171,6 +195,7 @@ export function useCatalogItemUpdate({ currentUser, objectId, objectType, object
171
195
  updateItemIsHiddenFromKda,
172
196
  updateItemMetricType,
173
197
  updateItemFormat,
198
+ updateItemConditionalFormatting,
174
199
  updateItemCertification,
175
200
  applyItemUpdate,
176
201
  applyItemDelete,
@@ -1,19 +1,18 @@
1
- import type { IObjectAccessSummary } from "@gooddata/sdk-ui-ext";
1
+ import { type IObjectAccessSummary } from "@gooddata/sdk-ui-ext";
2
2
  /**
3
3
  * @internal
4
4
  */
5
5
  export interface ICatalogDetailAccessRowProps {
6
6
  summary: IObjectAccessSummary;
7
- onOpen: () => void;
8
7
  }
9
8
  /**
10
- * Inline metadata row showing the current access state. Composed of two chips:
9
+ * Static description of who can reach the object, for the metadata grid. Workspace-wide
10
+ * access and named grantees are independent, so both lines can show at once; neither one
11
+ * showing means nobody but the caller has access.
11
12
  *
12
- * - State chip: lock (restricted) or earth (workspace-wide), with text describing
13
- * the permission level.
14
- * - Grantee count chip: users icon + "Shared with N" link that opens the dialog.
13
+ * Read-only by design — the header's Share button is the way in to editing access.
15
14
  *
16
15
  * @internal
17
16
  */
18
- export declare function CatalogDetailAccessRow({ summary, onOpen }: ICatalogDetailAccessRowProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function CatalogDetailAccessRow({ summary }: ICatalogDetailAccessRowProps): import("react/jsx-runtime").JSX.Element;
19
18
  //# sourceMappingURL=CatalogDetailAccessRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailAccessRow.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/share/CatalogDetailAccessRow.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAYjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AASD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,4BAA4B,2CA8CvF"}
1
+ {"version":3,"file":"CatalogDetailAccessRow.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/share/CatalogDetailAccessRow.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,oBAAoB,EAA4B,MAAM,sBAAsB,CAAC;AAa3F;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,oBAAoB,CAAC;CACjC;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,OAAO,EAAE,EAAE,4BAA4B,2CAgC/E"}
@@ -1,31 +1,29 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // (C) 2026 GoodData Corporation
3
- import { FormattedMessage, useIntl } from "react-intl";
2
+ import { FormattedMessage } from "react-intl";
3
+ import { summaryOtherGranteeCount } from "@gooddata/sdk-ui-ext";
4
4
  import { UiIcon } from "@gooddata/sdk-ui-kit";
5
- import { catalogDetailAccessRow, catalogDetailAccessRowSharedLink, catalogDetailAccessRowState, } from "../../automation/testIds.js";
5
+ import { catalogDetailAccessRow, catalogDetailAccessRowPrivate, catalogDetailAccessRowShared, catalogDetailAccessRowWorkspace, } from "../../automation/testIds.js";
6
6
  import { CatalogDetailContentRow } from "../CatalogDetailContentRow.js";
7
7
  import { shareMessages } from "./messages.js";
8
- // Chip copy for each workspace-wide access level.
9
- const WORKSPACE_ACCESS_ROW_MESSAGE = {
8
+ const WORKSPACE_MESSAGE = {
10
9
  EDIT: shareMessages.accessRowWorkspaceEdit,
11
10
  SHARE: shareMessages.accessRowWorkspaceShare,
12
11
  VIEW: shareMessages.accessRowWorkspaceView,
13
12
  };
13
+ function AccessLine({ icon, testId, children }) {
14
+ return (_jsxs("li", { className: "gd-analytics-catalog-detail__access-row__line", "data-testid": testId, children: [_jsx("span", { className: "gd-analytics-catalog-detail__access-row__icon", children: _jsx(UiIcon, { type: icon, size: 14, color: "complementary-7" }) }), _jsx("span", { children: children })] }));
15
+ }
14
16
  /**
15
- * Inline metadata row showing the current access state. Composed of two chips:
17
+ * Static description of who can reach the object, for the metadata grid. Workspace-wide
18
+ * access and named grantees are independent, so both lines can show at once; neither one
19
+ * showing means nobody but the caller has access.
16
20
  *
17
- * - State chip: lock (restricted) or earth (workspace-wide), with text describing
18
- * the permission level.
19
- * - Grantee count chip: users icon + "Shared with N" link that opens the dialog.
21
+ * Read-only by design — the header's Share button is the way in to editing access.
20
22
  *
21
23
  * @internal
22
24
  */
23
- export function CatalogDetailAccessRow({ summary, onOpen }) {
24
- const intl = useIntl();
25
- const { generalAccess, workspaceLevel, granteeCount } = summary;
26
- const stateText = intl.formatMessage(generalAccess === "RESTRICTED"
27
- ? shareMessages.accessRowRestricted
28
- : WORKSPACE_ACCESS_ROW_MESSAGE[workspaceLevel]);
29
- const stateIcon = generalAccess === "RESTRICTED" ? "lock" : "building";
30
- return (_jsx(CatalogDetailContentRow, { title: _jsx(FormattedMessage, { ...shareMessages.accessRowLabel }), content: _jsxs("div", { className: "gd-analytics-catalog-detail__access-row", "data-testid": catalogDetailAccessRow, children: [_jsxs("span", { className: "gd-analytics-catalog-detail__access-row__chip", "data-testid": catalogDetailAccessRowState, children: [_jsx("span", { className: "gd-analytics-catalog-detail__access-row__chip-icon", children: _jsx(UiIcon, { type: stateIcon, size: 14, color: "complementary-7" }) }), _jsx("span", { children: stateText })] }), _jsxs("button", { type: "button", className: "gd-analytics-catalog-detail__access-row__chip gd-analytics-catalog-detail__access-row__shared-link", onClick: onOpen, "data-testid": catalogDetailAccessRowSharedLink, children: [_jsx("span", { className: "gd-analytics-catalog-detail__access-row__chip-icon", children: _jsx(UiIcon, { type: "users", size: 14, color: "complementary-7" }) }), _jsx("span", { children: _jsx(FormattedMessage, { ...shareMessages.accessRowSharedWith, values: { count: granteeCount } }) })] })] }) }));
25
+ export function CatalogDetailAccessRow({ summary }) {
26
+ const isWorkspaceWide = summary.generalAccess === "WORKSPACE";
27
+ const otherGrantees = summaryOtherGranteeCount(summary);
28
+ return (_jsx(CatalogDetailContentRow, { alignTop: true, title: _jsx(FormattedMessage, { ...shareMessages.accessRowLabel }), content: _jsxs("ul", { className: "gd-analytics-catalog-detail__access-row", "data-testid": catalogDetailAccessRow, children: [isWorkspaceWide ? (_jsx(AccessLine, { icon: "building", testId: catalogDetailAccessRowWorkspace, children: _jsx(FormattedMessage, { ...WORKSPACE_MESSAGE[summary.workspaceLevel] }) })) : null, otherGrantees > 0 ? (_jsx(AccessLine, { icon: "users", testId: catalogDetailAccessRowShared, children: _jsx(FormattedMessage, { ...shareMessages.accessRowSharedWith, values: { count: otherGrantees } }) })) : null, !isWorkspaceWide && otherGrantees === 0 ? (_jsx(AccessLine, { icon: "invisible", testId: catalogDetailAccessRowPrivate, children: _jsx(FormattedMessage, { ...shareMessages.accessRowPrivate }) })) : null] }) }));
31
29
  }