@gooddata/sdk-ui-catalog 11.55.0-alpha.3 → 11.55.0-alpha.5

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 (120) hide show
  1. package/esm/asCode/descriptor.d.ts +2 -1
  2. package/esm/asCode/descriptor.d.ts.map +1 -1
  3. package/esm/asCode/useMutationPort.d.ts.map +1 -1
  4. package/esm/asCode/useMutationPort.js +3 -1
  5. package/esm/asCodeRegistry.js +2 -2
  6. package/esm/catalogDetail/CatalogDetailActionBar.d.ts.map +1 -1
  7. package/esm/catalogDetail/CatalogDetailContent.d.ts.map +1 -1
  8. package/esm/catalogDetail/CatalogDetailContent.js +6 -4
  9. package/esm/catalogDetail/hooks/useCatalogItemLoad.d.ts.map +1 -1
  10. package/esm/catalogDetail/hooks/useCatalogItemLoad.js +13 -5
  11. package/esm/catalogDetail/hooks/useCatalogItemUpdate.d.ts.map +1 -1
  12. package/esm/catalogDetail/hooks/useCatalogItemUpdate.js +17 -3
  13. package/esm/catalogDetail/share/guards.d.ts +0 -7
  14. package/esm/catalogDetail/share/guards.d.ts.map +1 -1
  15. package/esm/catalogDetail/share/guards.js +0 -14
  16. package/esm/catalogItem/converter.d.ts.map +1 -1
  17. package/esm/catalogItem/converter.js +1 -0
  18. package/esm/catalogItem/permission.d.ts +9 -2
  19. package/esm/catalogItem/permission.d.ts.map +1 -1
  20. package/esm/catalogItem/permission.js +26 -2
  21. package/esm/catalogItem/query.d.ts +2 -2
  22. package/esm/catalogItem/query.d.ts.map +1 -1
  23. package/esm/catalogItem/query.js +7 -4
  24. package/esm/catalogItem/types.d.ts +5 -1
  25. package/esm/catalogItem/types.d.ts.map +1 -1
  26. package/esm/catalogItem/useCatalogEndpoints.d.ts.map +1 -1
  27. package/esm/catalogItem/useCatalogEndpoints.js +5 -1
  28. package/esm/header/CreateObjectButton.d.ts.map +1 -1
  29. package/esm/header/CreateObjectButton.js +6 -2
  30. package/esm/insight/insightDescriptor.d.ts.map +1 -1
  31. package/esm/insight/insightDescriptor.js +8 -2
  32. package/esm/localization/bundles/de-DE.localization-bundle.d.ts +2 -0
  33. package/esm/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  34. package/esm/localization/bundles/de-DE.localization-bundle.js +4 -2
  35. package/esm/localization/bundles/en-AU.localization-bundle.d.ts +2 -0
  36. package/esm/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  37. package/esm/localization/bundles/en-AU.localization-bundle.js +4 -2
  38. package/esm/localization/bundles/en-GB.localization-bundle.d.ts +2 -0
  39. package/esm/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  40. package/esm/localization/bundles/en-GB.localization-bundle.js +4 -2
  41. package/esm/localization/bundles/es-419.localization-bundle.d.ts +2 -0
  42. package/esm/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  43. package/esm/localization/bundles/es-419.localization-bundle.js +4 -2
  44. package/esm/localization/bundles/es-ES.localization-bundle.d.ts +2 -0
  45. package/esm/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  46. package/esm/localization/bundles/es-ES.localization-bundle.js +4 -2
  47. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +2 -0
  48. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  49. package/esm/localization/bundles/fi-FI.localization-bundle.js +4 -2
  50. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +2 -0
  51. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  52. package/esm/localization/bundles/fr-CA.localization-bundle.js +4 -2
  53. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +2 -0
  54. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  55. package/esm/localization/bundles/fr-FR.localization-bundle.js +4 -2
  56. package/esm/localization/bundles/id-ID.localization-bundle.d.ts +2 -0
  57. package/esm/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  58. package/esm/localization/bundles/id-ID.localization-bundle.js +4 -2
  59. package/esm/localization/bundles/it-IT.localization-bundle.d.ts +2 -0
  60. package/esm/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  61. package/esm/localization/bundles/it-IT.localization-bundle.js +4 -2
  62. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +2 -0
  63. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  64. package/esm/localization/bundles/ja-JP.localization-bundle.js +4 -2
  65. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +2 -0
  66. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  67. package/esm/localization/bundles/ko-KR.localization-bundle.js +4 -2
  68. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +2 -0
  69. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  70. package/esm/localization/bundles/nl-NL.localization-bundle.js +4 -2
  71. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +2 -0
  72. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  73. package/esm/localization/bundles/pl-PL.localization-bundle.js +4 -2
  74. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +2 -0
  75. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  76. package/esm/localization/bundles/pt-BR.localization-bundle.js +4 -2
  77. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +2 -0
  78. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  79. package/esm/localization/bundles/pt-PT.localization-bundle.js +4 -2
  80. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +2 -0
  81. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  82. package/esm/localization/bundles/ru-RU.localization-bundle.js +4 -2
  83. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +2 -0
  84. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  85. package/esm/localization/bundles/sl-SI.localization-bundle.js +4 -2
  86. package/esm/localization/bundles/th-TH.localization-bundle.d.ts +2 -0
  87. package/esm/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  88. package/esm/localization/bundles/th-TH.localization-bundle.js +4 -2
  89. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +2 -0
  90. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  91. package/esm/localization/bundles/tr-TR.localization-bundle.js +4 -2
  92. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +2 -0
  93. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  94. package/esm/localization/bundles/uk-UA.localization-bundle.js +4 -2
  95. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +2 -0
  96. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  97. package/esm/localization/bundles/vi-VN.localization-bundle.js +4 -2
  98. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +2 -0
  99. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  100. package/esm/localization/bundles/zh-HK.localization-bundle.js +4 -2
  101. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +2 -0
  102. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  103. package/esm/localization/bundles/zh-Hans.localization-bundle.js +4 -2
  104. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +2 -0
  105. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  106. package/esm/localization/bundles/zh-Hant.localization-bundle.js +4 -2
  107. package/esm/metric/gate.d.ts +2 -0
  108. package/esm/metric/gate.d.ts.map +1 -1
  109. package/esm/metric/gate.js +9 -0
  110. package/esm/metric/metricDescriptor.d.ts.map +1 -1
  111. package/esm/metric/metricDescriptor.js +2 -1
  112. package/esm/metric/metricMutationPort.d.ts +2 -2
  113. package/esm/metric/metricMutationPort.d.ts.map +1 -1
  114. package/esm/metric/metricMutationPort.js +5 -2
  115. package/esm/sdk-ui-catalog.d.ts +3 -0
  116. package/esm/tabs/useRecommendedItems.d.ts.map +1 -1
  117. package/esm/tabs/useRecommendedItems.js +6 -4
  118. package/package.json +18 -19
  119. package/styles/css/detail.css.map +1 -1
  120. package/styles/css/main.css.map +1 -1
@@ -1,5 +1,6 @@
1
1
  import type { MessageDescriptor } from "react-intl";
2
2
  import type { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
3
+ import type { ISettings } from "@gooddata/sdk-model";
3
4
  import type { YamlCompletionSource } from "@gooddata/sdk-ui-kit";
4
5
  import type { ICatalogItem, ICatalogItemRef } from "../catalogItem/types.js";
5
6
  import type { ObjectTypes } from "../objectType/constants.js";
@@ -138,7 +139,7 @@ export interface IAsCodeDescriptor<TDef = unknown, TItem extends ICatalogItem =
138
139
  useIsItemEditable?(item: TItem): boolean;
139
140
  /** Extra requirement for creation, ANDed with the feature flag and manage permission. */
140
141
  useCreateGate?(): boolean;
141
- createMutationPort(backend: IAnalyticalBackend, workspace: string): IAsCodeMutationPort<TDef, TItem>;
142
+ createMutationPort(backend: IAnalyticalBackend, workspace: string, settings: ISettings | undefined): IAsCodeMutationPort<TDef, TItem>;
142
143
  emptyDefinition(defaultTitle: string): TDef;
143
144
  seed: AsCodeSeed<TDef, TItem>;
144
145
  referenceCounted?: AsCodeReferenceCount<TItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/asCode/descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/asCode/descriptor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMutationPort.d.ts","sourceRoot":"","sources":["../../src/asCode/useMutationPort.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,mBAAmB,CAIlF"}
1
+ {"version":3,"file":"useMutationPort.d.ts","sourceRoot":"","sources":["../../src/asCode/useMutationPort.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,mBAAmB,CAQlF"}
@@ -1,9 +1,11 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { useBackendStrict, useWorkspaceStrict } from "@gooddata/sdk-ui";
4
+ import { useFeatureFlags } from "../permission/PermissionsContext.js";
4
5
  /** @internal */
5
6
  export function useMutationPort(descriptor) {
6
7
  const backend = useBackendStrict();
7
8
  const workspace = useWorkspaceStrict();
8
- return useMemo(() => descriptor.createMutationPort(backend, workspace), [backend, descriptor, workspace]);
9
+ const settings = useFeatureFlags();
10
+ return useMemo(() => descriptor.createMutationPort(backend, workspace, settings), [backend, descriptor, workspace, settings]);
9
11
  }
@@ -32,8 +32,8 @@ export function useIsAsCodeTypeEditable(descriptor) {
32
32
  function useIsAsCodeTypeCreatable(descriptor) {
33
33
  const isTypeEditable = useIsAsCodeTypeEditable(descriptor);
34
34
  const canManageProject = useWorkspacePermission("canManageProject");
35
- const createGate = descriptor.useCreateGate?.() ?? true;
36
- return isTypeEditable && canManageProject && createGate;
35
+ const createGate = descriptor.useCreateGate?.() ?? canManageProject;
36
+ return isTypeEditable && createGate;
37
37
  }
38
38
  /** @internal */
39
39
  export function useCreatableObjectTypes() {
@@ -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,2CA8E9B"}
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 +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,2CAkN5B"}
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"}
@@ -6,7 +6,7 @@ import { useIntl } from "react-intl";
6
6
  import {} from "@gooddata/sdk-model";
7
7
  import { useLocalStorage } from "@gooddata/sdk-ui";
8
8
  import { UiSkeleton, UiTabs } from "@gooddata/sdk-ui-kit";
9
- import { canEditCatalogItem } from "../catalogItem/permission.js";
9
+ import { canEditCatalogItem, canShareCatalogItem } from "../catalogItem/permission.js";
10
10
  import {} from "../catalogItem/types.js";
11
11
  import { useIsCertificationAllowed } from "../certification/gate.js";
12
12
  import { useIsLineageEnabled } from "../lineage/gate.js";
@@ -25,7 +25,7 @@ import { useCatalogItemUpdate } from "./hooks/useCatalogItemUpdate.js";
25
25
  import { CatalogItemAccessRow } from "./share/CatalogItemAccessRow.js";
26
26
  import { CatalogItemShareDialog } from "./share/CatalogItemShareDialog.js";
27
27
  import { CatalogItemShareProvider } from "./share/CatalogItemShareProvider.js";
28
- import { isShareableCatalogItem, isSharingEnabledForItem, toShareTarget } from "./share/guards.js";
28
+ import { isShareableCatalogItem, toShareTarget } from "./share/guards.js";
29
29
  import { useShareableLabels } from "./share/useShareableLabels.js";
30
30
  const Tabs = {
31
31
  METADATA: "metadata",
@@ -48,9 +48,11 @@ export function CatalogDetailContent({ objectId, objectType, objectDefinition, o
48
48
  onDelete: onCatalogItemDelete,
49
49
  onError: onCatalogItemUpdateError,
50
50
  });
51
- const canEdit = canEditCatalogItem(permissions, item);
51
+ const canEdit = canEditCatalogItem(permissions, item, settings);
52
52
  const enableColumnLevelPermissions = Boolean(settings?.enableColumnLevelPermissions);
53
- const shareableItem = item && isShareableCatalogItem(item) && isSharingEnabledForItem(item, settings) ? item : undefined;
53
+ const shareableItem = item && isShareableCatalogItem(item) && canShareCatalogItem(permissions, item, settings)
54
+ ? item
55
+ : undefined;
54
56
  const shareTarget = useMemo(() => (shareableItem ? toShareTarget(shareableItem) : undefined), [shareableItem]);
55
57
  // Labels of the shared attribute drive both the header info row and the per-grantee
56
58
  // label-scope picker; fetched once here and passed to the share provider.
@@ -1 +1 @@
1
- {"version":3,"file":"useCatalogItemLoad.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemLoad.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAChC,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;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,mBAAmB,GAAG;IACjG,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB,CAmDA"}
1
+ {"version":3,"file":"useCatalogItemLoad.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemLoad.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,MAAM,WAAW,mBAAmB;IAChC,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;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,mBAAmB,GAAG;IACjG,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB,CAuDA"}
@@ -1,15 +1,17 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { convertError, isNotFound, useBackendStrict, useCancelablePromise, useWorkspaceStrict, } from "@gooddata/sdk-ui";
3
3
  import { convertAttributeToCatalogItem, convertComputedAttributeToCatalogItem, convertDashboardToCatalogItem, convertDataSetToCatalogItem, convertFactToCatalogItem, convertInsightToCatalogItem, convertMeasureToCatalogItem, convertParameterToCatalogItem, } from "../../catalogItem/converter.js";
4
- import { isCatalogItemLoaded } from "../../catalogItem/guards.js";
4
+ import { isCatalogItemLoaded, isCatalogItemMeasure } from "../../catalogItem/guards.js";
5
5
  import {} from "../../catalogItem/types.js";
6
6
  import {} from "../../objectType/types.js";
7
+ import { useFeatureFlag } from "../../permission/PermissionsContext.js";
7
8
  export function useCatalogItemLoad({ objectDefinition, objectId, objectType }) {
8
9
  const id = objectId ?? objectDefinition?.identifier;
9
10
  const type = objectType ?? objectDefinition?.type;
10
- const filled = isCatalogItemLoaded(objectDefinition);
11
11
  const backend = useBackendStrict();
12
12
  const workspace = useWorkspaceStrict();
13
+ const loadPermissions = useFeatureFlag("enableMetricPermissions");
14
+ const filled = isCatalogItemLoaded(objectDefinition) && !awaitsPermissions(objectDefinition, loadPermissions);
13
15
  const { status, error, result } = useCancelablePromise({
14
16
  promise: () => {
15
17
  // Object id and type are required
@@ -23,12 +25,12 @@ export function useCatalogItemLoad({ objectDefinition, objectId, objectType }) {
23
25
  // A 404 must reach CatalogDetailStatus as a NotFoundSdkError so isNotFound() shows
24
26
  // the not-found page; convertError maps it. Other errors are rethrown untouched so
25
27
  // their original status/message survives in the generic error description.
26
- return loadObjectDefinition(backend.workspace(workspace), id, type).catch((e) => {
28
+ return loadObjectDefinition(backend.workspace(workspace), id, type, loadPermissions).catch((e) => {
27
29
  const converted = convertError(e);
28
30
  throw isNotFound(converted) ? converted : e;
29
31
  });
30
32
  },
31
- }, [backend, workspace, id, type, filled]);
33
+ }, [backend, workspace, id, type, filled, loadPermissions]);
32
34
  // Object id is required
33
35
  if (!id) {
34
36
  return {
@@ -49,7 +51,12 @@ export function useCatalogItemLoad({ objectDefinition, objectId, objectType }) {
49
51
  item: result,
50
52
  };
51
53
  }
52
- async function loadObjectDefinition(workspace, id, type) {
54
+ // A metric handed over by a producer that cannot return permissions (a semantic-search hit) has to
55
+ // be fetched for them, or its own EDIT and SHARE would read as absent.
56
+ function awaitsPermissions(item, loadPermissions) {
57
+ return loadPermissions && isCatalogItemMeasure(item) && item.permissions === undefined;
58
+ }
59
+ async function loadObjectDefinition(workspace, id, type, loadPermissions) {
53
60
  switch (type) {
54
61
  case "attribute":
55
62
  return workspace
@@ -97,6 +104,7 @@ async function loadObjectDefinition(workspace, id, type) {
97
104
  identifier: id,
98
105
  }, {
99
106
  loadUserData: true,
107
+ ...(loadPermissions ? { loadPermissions: true } : {}),
100
108
  })
101
109
  .then(convertMeasureToCatalogItem);
102
110
  case "parameter":
@@ -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;;;;;;;;;;;;;;;;;;;EAwSvB"}
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;;;;;;;;;;;;;;;;;;;EAySvB"}
@@ -38,9 +38,10 @@ export function useCatalogItemUpdate({ currentUser, objectId, objectType, object
38
38
  }, [mounted, onError, onUpdate]);
39
39
  /** Sync local state with an item mutation persisted outside this hook; does not re-persist. */
40
40
  const applyItemUpdate = useCallback((updated) => {
41
- setItem(updated);
42
- onUpdate?.(updated);
43
- }, [onUpdate]);
41
+ const next = keepMeasurePermissions(item, updated);
42
+ setItem(next);
43
+ onUpdate?.(next);
44
+ }, [item, onUpdate]);
44
45
  /** Sync local state with an item deletion persisted outside this hook; does not re-persist. */
45
46
  const applyItemDelete = useCallback((ref) => {
46
47
  setItem(null);
@@ -188,6 +189,19 @@ function updateItem(backend, workspace, user, item, disabled, updater, onUpdate,
188
189
  const persistFn = persist ?? ((nextItem) => updateCatalogItem(backend, workspace, nextItem));
189
190
  Promise.resolve(persistFn(newItem)).catch(onError);
190
191
  }
192
+ // The update endpoint cannot return permissions, and a save does not change them.
193
+ function keepMeasurePermissions(previous, updated) {
194
+ if (!previous || !isCatalogItemMeasure(previous) || !isCatalogItemMeasure(updated)) {
195
+ return updated;
196
+ }
197
+ if (previous.identifier !== updated.identifier) {
198
+ return updated;
199
+ }
200
+ if (updated.permissions || !previous.permissions) {
201
+ return updated;
202
+ }
203
+ return { ...updated, permissions: previous.permissions };
204
+ }
191
205
  function makeUpdatedItem(user, item, changes) {
192
206
  return {
193
207
  ...item,
@@ -1,5 +1,4 @@
1
1
  import type { IObjectPermissionsObject } from "@gooddata/sdk-backend-spi";
2
- import { type ISettings } from "@gooddata/sdk-model";
3
2
  import type { ICatalogItem } from "../../catalogItem/types.js";
4
3
  import type { ShareableCatalogItem } from "./types.js";
5
4
  /**
@@ -8,12 +7,6 @@ import type { ShareableCatalogItem } from "./types.js";
8
7
  * sharing an attribute.
9
8
  */
10
9
  export declare function isShareableCatalogItem(item: ICatalogItem): item is ShareableCatalogItem;
11
- /**
12
- * Tests whether sharing is enabled for the item: attributes and facts are gated by
13
- * the column-level-permissions flag, measures by the metric-permissions flag. The
14
- * two flags are independent — a workspace may enable either on its own.
15
- */
16
- export declare function isSharingEnabledForItem(item: ICatalogItem, settings: ISettings | undefined): boolean;
17
10
  /**
18
11
  * Build the backend target descriptor from a shareable catalog item. The kind
19
12
  * enum matches the catalog item's discriminator, so the mapping is direct.
@@ -1 +1 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/share/guards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,qBAAqB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,IAAI,oBAAoB,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAQpG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,wBAAwB,CAKlF"}
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/share/guards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAI1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,IAAI,oBAAoB,CAEvF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,wBAAwB,CAKlF"}
@@ -9,20 +9,6 @@ import { isCatalogItemAttribute, isCatalogItemFact, isCatalogItemMeasure } from
9
9
  export function isShareableCatalogItem(item) {
10
10
  return isCatalogItemAttribute(item) || isCatalogItemFact(item) || isCatalogItemMeasure(item);
11
11
  }
12
- /**
13
- * Tests whether sharing is enabled for the item: attributes and facts are gated by
14
- * the column-level-permissions flag, measures by the metric-permissions flag. The
15
- * two flags are independent — a workspace may enable either on its own.
16
- */
17
- export function isSharingEnabledForItem(item, settings) {
18
- if (isCatalogItemMeasure(item)) {
19
- return Boolean(settings?.enableMetricPermissions);
20
- }
21
- if (isCatalogItemAttribute(item) || isCatalogItemFact(item)) {
22
- return Boolean(settings?.enableColumnLevelPermissions);
23
- }
24
- return false;
25
- }
26
12
  /**
27
13
  * Build the backend target descriptor from a shareable catalog item. The kind
28
14
  * enum matches the catalog item's discriminator, so the mapping is direct.
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/catalogItem/converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACrC,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAC7B,KAAK,KAAK,EAUb,MAAM,qBAAqB,CAAC;AAK7B,OAAO,KAAK,EACR,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EAExB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,0BAA0B,CACtC,MAAM,EACA,QAAQ,GACR,gBAAgB,GAChB,sBAAsB,GACtB,wBAAwB,GACxB,gCAAgC,GAChC,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,SAAS,GAChB,YAAY,CA0Bd;AAED,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,UAAU,GAAG,gBAAgB,GACzC,qBAAqB,CAiBvB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,mBAAmB,CAkBtF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAsBhG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAgBpF;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAiBxG;AAED,wBAAgB,qCAAqC,CACjD,iBAAiB,EAAE,gCAAgC,GACpD,6BAA6B,CAgB/B;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAgBxG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAehG;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAW1D;AAcD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,+BAA+B,GAAG,YAAY,CAuBrG"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/catalogItem/converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACrC,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAC7B,KAAK,KAAK,EAUb,MAAM,qBAAqB,CAAC;AAK7B,OAAO,KAAK,EACR,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EAExB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,0BAA0B,CACtC,MAAM,EACA,QAAQ,GACR,gBAAgB,GAChB,sBAAsB,GACtB,wBAAwB,GACxB,gCAAgC,GAChC,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,SAAS,GAChB,YAAY,CA0Bd;AAED,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,UAAU,GAAG,gBAAgB,GACzC,qBAAqB,CAiBvB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,mBAAmB,CAkBtF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAuBhG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAgBpF;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAiBxG;AAED,wBAAgB,qCAAqC,CACjD,iBAAiB,EAAE,gCAAgC,GACpD,6BAA6B,CAgB/B;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAgBxG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAehG;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAW1D;AAcD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,+BAA+B,GAAG,YAAY,CAuBrG"}
@@ -81,6 +81,7 @@ export function convertMeasureToCatalogItem(measure) {
81
81
  updatedAt: updatedAt ? parseBackendDate(updatedAt) : null,
82
82
  isLocked: measure.isLocked ?? false,
83
83
  isEditable: true,
84
+ permissions: measure.permissions,
84
85
  isHidden: measure.isHidden,
85
86
  isHiddenFromKda: measure.isHiddenFromKda,
86
87
  format,
@@ -1,4 +1,11 @@
1
- import type { IWorkspacePermissions } from "@gooddata/sdk-model";
1
+ import { type ISettings, type IWorkspacePermissions } from "@gooddata/sdk-model";
2
2
  import type { ICatalogItem } from "./types.js";
3
- export declare function canEditCatalogItem(workspacePermissions?: IWorkspacePermissions, item?: ICatalogItem | null): boolean;
3
+ export declare function canEditCatalogItem(workspacePermissions?: IWorkspacePermissions, item?: ICatalogItem | null, settings?: ISettings): boolean;
4
+ /**
5
+ * Whether the user may share the item. Metrics are gated by the metric-permissions flag and then by
6
+ * their own SHARE, deliberately not derived from EDIT. Attributes and facts have no object-level
7
+ * permissions, so their column-level-permissions flag decides and the backend refuses the access
8
+ * list to anyone who may not manage them. The two flags are independent.
9
+ */
10
+ export declare function canShareCatalogItem(workspacePermissions?: IWorkspacePermissions, item?: ICatalogItem | null, settings?: ISettings): boolean;
4
11
  //# sourceMappingURL=permission.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/catalogItem/permission.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,WA8B1G"}
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/catalogItem/permission.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,SAAS,EACd,KAAK,qBAAqB,EAI7B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,kBAAkB,CAC9B,oBAAoB,CAAC,EAAE,qBAAqB,EAC5C,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,SAAS,WAwCvB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,oBAAoB,CAAC,EAAE,qBAAqB,EAC5C,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,SAAS,WAmBvB"}
@@ -1,5 +1,7 @@
1
- // (C) 2025 GoodData Corporation
2
- export function canEditCatalogItem(workspacePermissions, item) {
1
+ // (C) 2025-2026 GoodData Corporation
2
+ import { canEditMetric, canShareMetric, } from "@gooddata/sdk-model";
3
+ import { isCatalogItemAttribute, isCatalogItemFact, isCatalogItemMeasure } from "./guards.js";
4
+ export function canEditCatalogItem(workspacePermissions, item, settings) {
3
5
  // If the workspace permissions or the item is not provided, the user cannot update it.
4
6
  if (!workspacePermissions || !item) {
5
7
  return false;
@@ -17,6 +19,10 @@ export function canEditCatalogItem(workspacePermissions, item) {
17
19
  if (!item.isEditable) {
18
20
  return false;
19
21
  }
22
+ // A metric is edited through its own EDIT permission.
23
+ if (isCatalogItemMeasure(item)) {
24
+ return canEditMetric(item.permissions, workspacePermissions, Boolean(settings?.enableMetricPermissions));
25
+ }
20
26
  // If the user has WS.Analyze permission to create visualizations, they can update the item if it is a visualization
21
27
  // or a dashboard to which they have access.
22
28
  if (workspacePermissions.canCreateVisualization) {
@@ -25,3 +31,21 @@ export function canEditCatalogItem(workspacePermissions, item) {
25
31
  }
26
32
  return false;
27
33
  }
34
+ /**
35
+ * Whether the user may share the item. Metrics are gated by the metric-permissions flag and then by
36
+ * their own SHARE, deliberately not derived from EDIT. Attributes and facts have no object-level
37
+ * permissions, so their column-level-permissions flag decides and the backend refuses the access
38
+ * list to anyone who may not manage them. The two flags are independent.
39
+ */
40
+ export function canShareCatalogItem(workspacePermissions, item, settings) {
41
+ if (!workspacePermissions || !item) {
42
+ return false;
43
+ }
44
+ if (isCatalogItemMeasure(item)) {
45
+ return canShareMetric(item.permissions, workspacePermissions, Boolean(settings?.enableMetricPermissions));
46
+ }
47
+ if (isCatalogItemAttribute(item) || isCatalogItemFact(item)) {
48
+ return Boolean(settings?.enableColumnLevelPermissions);
49
+ }
50
+ return false;
51
+ }
@@ -3,7 +3,7 @@ import { type IMeasureMetadataObject, type IMeasureMetadataObjectDefinition, typ
3
3
  import type { ICatalogItem, ICatalogItemQueryOptions } from "./types.js";
4
4
  export declare function getDashboardsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IDashboardsQuery;
5
5
  export declare function getInsightsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IInsightsQuery;
6
- export declare function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IMeasuresQuery;
6
+ export declare function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize, loadPermissions }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IMeasuresQuery;
7
7
  export declare function getParametersQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IParametersQuery;
8
8
  export declare function getComputedAttributesQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IComputedAttributesQuery;
9
9
  export declare function getAttributesQuery({ backend, workspace, search, origin, id, excludeId, tags, excludeTags, isHidden, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IAttributesQuery;
@@ -15,7 +15,7 @@ export declare function updateParameterCatalogItem(backend: IAnalyticalBackend,
15
15
  id: string;
16
16
  }): Promise<import("@gooddata/sdk-model").IParameterMetadataObject>;
17
17
  export declare function deleteParameterCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<void>;
18
- export declare function createMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObjectDefinition): Promise<IMeasureMetadataObject>;
18
+ export declare function createMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObjectDefinition, loadPermissions?: boolean): Promise<IMeasureMetadataObject>;
19
19
  export declare function updateMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObject): Promise<IMeasureMetadataObject>;
20
20
  export declare function deleteMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<void>;
21
21
  export declare function getMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<IMeasureMetadataObject>;
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/catalogItem/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/catalogItem/query.ts"],"names":[],"mappings":"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"}
@@ -48,8 +48,8 @@ export function getInsightsQuery({ backend, workspace, search, origin, id, exclu
48
48
  })
49
49
  .withMethod("POST");
50
50
  }
51
- export function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize = PAGE_SIZE, }) {
52
- return backend
51
+ export function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize = PAGE_SIZE, loadPermissions = false, }) {
52
+ const query = backend
53
53
  .workspace(workspace)
54
54
  .measures()
55
55
  .getMeasuresQuery()
@@ -70,6 +70,9 @@ export function getMetricsQuery({ backend, workspace, search, origin, id, exclud
70
70
  certification,
71
71
  })
72
72
  .withMethod("POST");
73
+ // asked for only when needed, so a backend written against the previous SPI keeps working
74
+ // for as long as the feature is off
75
+ return loadPermissions ? query.withMetaInclude(["permissions"]) : query;
73
76
  }
74
77
  export function getParametersQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, pageSize = PAGE_SIZE, }) {
75
78
  return backend
@@ -312,8 +315,8 @@ function updateComputedAttributeCatalogItemMeta(backend, workspace, item) {
312
315
  tags: item.tags,
313
316
  });
314
317
  }
315
- export function createMeasureCatalogItem(backend, workspace, measure) {
316
- return backend.workspace(workspace).measures().createMeasure(measure);
318
+ export function createMeasureCatalogItem(backend, workspace, measure, loadPermissions = false) {
319
+ return backend.workspace(workspace).measures().createMeasure(measure, { loadPermissions });
317
320
  }
318
321
  export function updateMeasureCatalogItem(backend, workspace, measure) {
319
322
  return backend.workspace(workspace).measures().updateMeasure(measure);
@@ -1,5 +1,5 @@
1
1
  import type { AnalyticsCatalogGenerateDescriptionObjectType, IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
2
- import type { CertificationStatus, IDataSetMetadataObject, IParameterDefinition, IdentifierRef, MetricType, ObjectOrigin } from "@gooddata/sdk-model";
2
+ import type { AccessGranularPermission, CertificationStatus, IDataSetMetadataObject, IParameterDefinition, IdentifierRef, MetricType, ObjectOrigin } from "@gooddata/sdk-model";
3
3
  import { type AsyncStatus } from "../async/types.js";
4
4
  import type { ObjectType } from "../objectType/types.js";
5
5
  /**
@@ -68,6 +68,8 @@ export interface ICatalogItemMeasure extends ICatalogItemBase {
68
68
  isHiddenFromKda?: boolean;
69
69
  format?: string | null;
70
70
  metricType?: MetricType;
71
+ /** Object-level permissions, only when the query asked for them. Undefined otherwise. */
72
+ permissions?: AccessGranularPermission[];
71
73
  }
72
74
  /**
73
75
  * Catalog item for parameters.
@@ -142,6 +144,8 @@ export interface ICatalogItemQueryOptions {
142
144
  isHidden?: boolean;
143
145
  certification?: boolean;
144
146
  pageSize?: number;
147
+ /** Ask for each metric's object-level permissions, kept on ICatalogItemMeasure.permissions. */
148
+ loadPermissions?: boolean;
145
149
  }
146
150
  export interface ICatalogItemSemanticSearchOptions {
147
151
  queryOptions: ICatalogItemQueryOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalogItem/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalogItem/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCatalogEndpoints.d.ts","sourceRoot":"","sources":["../../src/catalogItem/useCatalogEndpoints.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAazD,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,8BAA8B,CAAC;AAErC,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,UAAU,YAAY,CAAC,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC;IACnD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,yBAAyB,GACxC,wBAAwB,CA4C1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AA2CrE,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,YAAY,EAAE,wBAAwB,EACtC,KAAK,EAAE,aAAa,GAAG,SAAS,GACjC,YAAY,EAAE,CAEhB;AAED,wBAAgB,qBAAqB,IAAI,UAAU,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,SAAS,GAAE,SAAS,gBAAgB,EAAc,GACnD,YAAY,EAAE,CAqBhB"}
1
+ {"version":3,"file":"useCatalogEndpoints.d.ts","sourceRoot":"","sources":["../../src/catalogItem/useCatalogEndpoints.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAazD,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,8BAA8B,CAAC;AAErC,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,UAAU,YAAY,CAAC,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC;IACnD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,yBAAyB,GACxC,wBAAwB,CAgD1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AA2CrE,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,YAAY,EAAE,wBAAwB,EACtC,KAAK,EAAE,aAAa,GAAG,SAAS,GACjC,YAAY,EAAE,CAEhB;AAED,wBAAgB,qBAAqB,IAAI,UAAU,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,SAAS,GAAE,SAAS,gBAAgB,EAAc,GACnD,YAAY,EAAE,CAqBhB"}
@@ -3,11 +3,13 @@ import { useMemo } from "react";
3
3
  import { COMPUTED_ATTRIBUTE_FEATURE_FLAG } from "../computedAttribute/gate.js";
4
4
  import { ObjectTypes } from "../objectType/constants.js";
5
5
  import {} from "../objectType/types.js";
6
- import { useFeatureFlags } from "../permission/PermissionsContext.js";
6
+ import { useFeatureFlag, useFeatureFlags } from "../permission/PermissionsContext.js";
7
7
  import { getAttributesQuery, getComputedAttributesQuery, getDashboardsQuery, getDateDatasetsQuery, getFactsQuery, getInsightsQuery, getMetricsQuery, getParametersQuery, } from "./query.js";
8
8
  export function useCatalogQueryOptions(feedOptions, filterInputs) {
9
9
  const { backend, workspace, id, pageSize } = feedOptions;
10
10
  const { search, origin, createdBy, tags, qualityIds, isHidden, certification } = filterInputs;
11
+ // the detail panel reuses the listed item, so its permissions have to come with the list
12
+ const loadPermissions = useFeatureFlag("enableMetricPermissions");
11
13
  return useMemo(() => {
12
14
  let includeIds = id;
13
15
  let excludeIds = undefined;
@@ -33,6 +35,7 @@ export function useCatalogQueryOptions(feedOptions, filterInputs) {
33
35
  isHidden,
34
36
  certification,
35
37
  pageSize,
38
+ loadPermissions,
36
39
  };
37
40
  }, [
38
41
  backend,
@@ -46,6 +49,7 @@ export function useCatalogQueryOptions(feedOptions, filterInputs) {
46
49
  qualityIds,
47
50
  isHidden,
48
51
  certification,
52
+ loadPermissions,
49
53
  ]);
50
54
  }
51
55
  const ENDPOINTS = [
@@ -1 +1 @@
1
- {"version":3,"file":"CreateObjectButton.d.ts","sourceRoot":"","sources":["../../src/header/CreateObjectButton.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AActE,KAAK,KAAK,GAAG;IACT,cAAc,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,2CAsG3D"}
1
+ {"version":3,"file":"CreateObjectButton.d.ts","sourceRoot":"","sources":["../../src/header/CreateObjectButton.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AActE,KAAK,KAAK,GAAG;IACT,cAAc,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,2CAyG3D"}
@@ -6,6 +6,7 @@ import { Dropdown, UiButton, UiIcon, UiMenu, } from "@gooddata/sdk-ui-kit";
6
6
  import { AsCodeCreateDialog } from "../asCode/AsCodeCreateDialog.js";
7
7
  import { getAsCodeDescriptor, useCreatableObjectTypes } from "../asCodeRegistry.js";
8
8
  import { useCatalogFeedActions } from "../catalogItem/CatalogFeedContext.js";
9
+ import { useCanCreateMetric } from "../metric/gate.js";
9
10
  import { ObjectTypes } from "../objectType/constants.js";
10
11
  import { getObjectTypeLabel } from "../objectType/labels.js";
11
12
  const icons = {
@@ -21,6 +22,7 @@ export function CreateObjectButton({ onCreateObject }) {
21
22
  const [openType, setOpenType] = useState(undefined);
22
23
  // Widened to the full create-menu vocabulary so redirect-only types can be membership-tested.
23
24
  const inCatalogTypes = useCreatableObjectTypes();
25
+ const canCreateMetric = useCanCreateMetric();
24
26
  const items = useMemo(() => {
25
27
  const externalLinkIcon = _jsx(MenuItemIcon, { type: "externalLink" });
26
28
  const interactiveItem = (type, redirects) => ({
@@ -37,11 +39,13 @@ export function CreateObjectButton({ onCreateObject }) {
37
39
  ...(inCatalogTypes.has(ObjectTypes.VISUALIZATION)
38
40
  ? []
39
41
  : [interactiveItem(ObjectTypes.VISUALIZATION, true)]),
40
- ...(inCatalogTypes.has(ObjectTypes.METRIC) ? [] : [interactiveItem(ObjectTypes.METRIC, true)]),
42
+ ...(!inCatalogTypes.has(ObjectTypes.METRIC) && canCreateMetric
43
+ ? [interactiveItem(ObjectTypes.METRIC, true)]
44
+ : []),
41
45
  { type: "separator" },
42
46
  ...[...inCatalogTypes].map((type) => interactiveItem(type, false)),
43
47
  ];
44
- }, [intl, inCatalogTypes]);
48
+ }, [intl, inCatalogTypes, canCreateMetric]);
45
49
  const handleSelect = useCallback((item, _event) => {
46
50
  if (inCatalogTypes.has(item.data)) {
47
51
  setOpenType(item.data);
@@ -1 +1 @@
1
- {"version":3,"file":"insightDescriptor.d.ts","sourceRoot":"","sources":["../../src/insight/insightDescriptor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA+CnE;;GAEG;AACH,eAAO,MAAM,uBAAuB,8FA6BlC,CAAC"}
1
+ {"version":3,"file":"insightDescriptor.d.ts","sourceRoot":"","sources":["../../src/insight/insightDescriptor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAwDnE;;GAEG;AACH,eAAO,MAAM,uBAAuB,8FA4BlC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  import { defineMessages } from "react-intl";
3
3
  import { defineAsCodeDescriptor } from "../asCode/descriptor.js";
4
4
  import { ObjectTypes } from "../objectType/constants.js";
5
+ import { useWorkspacePermission } from "../permission/PermissionsContext.js";
5
6
  import { VISUALIZATION_EDITOR_FEATURE_FLAG } from "./gate.js";
6
7
  import { useHasInsightCodecHost, useInsightCodec, useIsVisualizationTypeEditable, useRequestInsightCodec, } from "./insightCodecContext.js";
7
8
  import { createCopiedInsight } from "./insightCopy.js";
@@ -34,6 +35,12 @@ const actionMessages = defineMessages({
34
35
  function useIsInsightItemEditable(item) {
35
36
  return useIsVisualizationTypeEditable()(item.visualizationType);
36
37
  }
38
+ function useCanCreateVisualization() {
39
+ const canManageProject = useWorkspacePermission("canManageProject");
40
+ // Without a host-injected codec the editor can never resolve, so creation falls back to Analytical Designer.
41
+ const hasCodecHost = useHasInsightCodecHost();
42
+ return canManageProject && hasCodecHost;
43
+ }
37
44
  /**
38
45
  * @internal
39
46
  */
@@ -45,8 +52,7 @@ export const visualizationDescriptor = defineAsCodeDescriptor({
45
52
  useEditing: useInsightCodec,
46
53
  useRequestEditing: useRequestInsightCodec,
47
54
  useIsItemEditable: useIsInsightItemEditable,
48
- // Without a host-injected codec the editor can never resolve, so creation falls back to Analytical Designer.
49
- useCreateGate: useHasInsightCodecHost,
55
+ useCreateGate: useCanCreateVisualization,
50
56
  createMutationPort: createInsightMutationAdapter,
51
57
  emptyDefinition: (defaultTitle) => ({
52
58
  insight: {
@@ -174,6 +174,7 @@ export declare const de_DE: {
174
174
  "analyticsCatalog.parameter.dialog.submit.error": string;
175
175
  "analyticsCatalog.parameter.validation.empty": string;
176
176
  "analyticsCatalog.parameter.validation.invalidStructure": string;
177
+ "analyticsCatalog.parameter.validation.invalidType": string;
177
178
  "analyticsCatalog.parameter.validation.unsupportedType": string;
178
179
  "analyticsCatalog.parameter.validation.invalidDefaultValue": string;
179
180
  "analyticsCatalog.parameter.validation.invalidConstraints": string;
@@ -206,6 +207,7 @@ export declare const de_DE: {
206
207
  "analyticsCatalog.computedAttribute.validation.syntax": string;
207
208
  "analyticsCatalog.computedAttribute.validation.invalidStructure": string;
208
209
  "analyticsCatalog.computedAttribute.validation.missingMaql": string;
210
+ "analyticsCatalog.computedAttribute.validation.invalidType": string;
209
211
  "analyticsCatalog.computedAttribute.validation.invalidTags": string;
210
212
  "analyticsCatalog.computedAttribute.create.defaultTitle": string;
211
213
  "analyticsCatalog.computedAttribute.create.success": string;