@gooddata/sdk-ui-ext 11.61.0-alpha.2 → 11.61.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/NOTICE +20 -20
  2. package/esm/internal/components/configurationControls/colors/ColorsSection.d.ts.map +1 -1
  3. package/esm/internal/components/configurationControls/colors/ColorsSection.js +4 -9
  4. package/esm/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.d.ts.map +1 -1
  5. package/esm/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.js +6 -4
  6. package/esm/internal/components/configurationControls/colors/coloredItemsList/LineStyleDialog.d.ts.map +1 -1
  7. package/esm/internal/components/configurationControls/colors/coloredItemsList/LineStyleDialog.js +16 -11
  8. package/esm/internal/components/dialogs/userManagementDialogs/AddWorkspaceToSubjects.d.ts +1 -0
  9. package/esm/internal/components/dialogs/userManagementDialogs/AddWorkspaceToSubjects.d.ts.map +1 -1
  10. package/esm/internal/components/dialogs/userManagementDialogs/AddWorkspaceToSubjects.js +2 -2
  11. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts +1 -0
  12. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts.map +1 -1
  13. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.js +2 -2
  14. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts +1 -0
  15. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts.map +1 -1
  16. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.js +2 -2
  17. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.d.ts +2 -1
  18. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.d.ts.map +1 -1
  19. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.js +4 -4
  20. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.d.ts +2 -1
  21. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.d.ts.map +1 -1
  22. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.js +24 -24
  23. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.d.ts +3 -3
  24. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.d.ts.map +1 -1
  25. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.js +21 -15
  26. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/locales.d.ts +6 -0
  27. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/locales.d.ts.map +1 -1
  28. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/locales.js +4 -0
  29. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.d.ts.map +1 -1
  30. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.js +10 -3
  31. package/esm/internal/translations/de-DE.localization-bundle.d.ts +2 -1
  32. package/esm/internal/translations/de-DE.localization-bundle.d.ts.map +1 -1
  33. package/esm/internal/translations/de-DE.localization-bundle.js +2 -1
  34. package/esm/internal/translations/en-AU.localization-bundle.d.ts +2 -1
  35. package/esm/internal/translations/en-AU.localization-bundle.d.ts.map +1 -1
  36. package/esm/internal/translations/en-AU.localization-bundle.js +2 -1
  37. package/esm/internal/translations/en-GB.localization-bundle.d.ts +2 -1
  38. package/esm/internal/translations/en-GB.localization-bundle.d.ts.map +1 -1
  39. package/esm/internal/translations/en-GB.localization-bundle.js +2 -1
  40. package/esm/internal/translations/en-US.localization-bundle.d.ts +16 -0
  41. package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
  42. package/esm/internal/translations/en-US.localization-bundle.js +17 -1
  43. package/esm/internal/translations/es-419.localization-bundle.d.ts +2 -1
  44. package/esm/internal/translations/es-419.localization-bundle.d.ts.map +1 -1
  45. package/esm/internal/translations/es-419.localization-bundle.js +2 -1
  46. package/esm/internal/translations/es-ES.localization-bundle.d.ts +2 -1
  47. package/esm/internal/translations/es-ES.localization-bundle.d.ts.map +1 -1
  48. package/esm/internal/translations/es-ES.localization-bundle.js +2 -1
  49. package/esm/internal/translations/fi-FI.localization-bundle.d.ts +2 -1
  50. package/esm/internal/translations/fi-FI.localization-bundle.d.ts.map +1 -1
  51. package/esm/internal/translations/fi-FI.localization-bundle.js +2 -1
  52. package/esm/internal/translations/fr-CA.localization-bundle.d.ts +2 -1
  53. package/esm/internal/translations/fr-CA.localization-bundle.d.ts.map +1 -1
  54. package/esm/internal/translations/fr-CA.localization-bundle.js +2 -1
  55. package/esm/internal/translations/fr-FR.localization-bundle.d.ts +2 -1
  56. package/esm/internal/translations/fr-FR.localization-bundle.d.ts.map +1 -1
  57. package/esm/internal/translations/fr-FR.localization-bundle.js +2 -1
  58. package/esm/internal/translations/id-ID.localization-bundle.d.ts +2 -1
  59. package/esm/internal/translations/id-ID.localization-bundle.d.ts.map +1 -1
  60. package/esm/internal/translations/id-ID.localization-bundle.js +2 -1
  61. package/esm/internal/translations/it-IT.localization-bundle.d.ts +2 -1
  62. package/esm/internal/translations/it-IT.localization-bundle.d.ts.map +1 -1
  63. package/esm/internal/translations/it-IT.localization-bundle.js +3 -2
  64. package/esm/internal/translations/ja-JP.localization-bundle.d.ts +2 -1
  65. package/esm/internal/translations/ja-JP.localization-bundle.d.ts.map +1 -1
  66. package/esm/internal/translations/ja-JP.localization-bundle.js +2 -1
  67. package/esm/internal/translations/ko-KR.localization-bundle.d.ts +2 -1
  68. package/esm/internal/translations/ko-KR.localization-bundle.d.ts.map +1 -1
  69. package/esm/internal/translations/ko-KR.localization-bundle.js +2 -1
  70. package/esm/internal/translations/nl-NL.localization-bundle.d.ts +2 -1
  71. package/esm/internal/translations/nl-NL.localization-bundle.d.ts.map +1 -1
  72. package/esm/internal/translations/nl-NL.localization-bundle.js +2 -1
  73. package/esm/internal/translations/pl-PL.localization-bundle.d.ts +2 -1
  74. package/esm/internal/translations/pl-PL.localization-bundle.d.ts.map +1 -1
  75. package/esm/internal/translations/pl-PL.localization-bundle.js +2 -1
  76. package/esm/internal/translations/pt-BR.localization-bundle.d.ts +2 -1
  77. package/esm/internal/translations/pt-BR.localization-bundle.d.ts.map +1 -1
  78. package/esm/internal/translations/pt-BR.localization-bundle.js +2 -1
  79. package/esm/internal/translations/pt-PT.localization-bundle.d.ts +2 -1
  80. package/esm/internal/translations/pt-PT.localization-bundle.d.ts.map +1 -1
  81. package/esm/internal/translations/pt-PT.localization-bundle.js +2 -1
  82. package/esm/internal/translations/ru-RU.localization-bundle.d.ts +2 -1
  83. package/esm/internal/translations/ru-RU.localization-bundle.d.ts.map +1 -1
  84. package/esm/internal/translations/ru-RU.localization-bundle.js +2 -1
  85. package/esm/internal/translations/sl-SI.localization-bundle.d.ts +2 -1
  86. package/esm/internal/translations/sl-SI.localization-bundle.d.ts.map +1 -1
  87. package/esm/internal/translations/sl-SI.localization-bundle.js +2 -1
  88. package/esm/internal/translations/th-TH.localization-bundle.d.ts +2 -1
  89. package/esm/internal/translations/th-TH.localization-bundle.d.ts.map +1 -1
  90. package/esm/internal/translations/th-TH.localization-bundle.js +2 -1
  91. package/esm/internal/translations/tr-TR.localization-bundle.d.ts +2 -1
  92. package/esm/internal/translations/tr-TR.localization-bundle.d.ts.map +1 -1
  93. package/esm/internal/translations/tr-TR.localization-bundle.js +2 -1
  94. package/esm/internal/translations/uk-UA.localization-bundle.d.ts +2 -1
  95. package/esm/internal/translations/uk-UA.localization-bundle.d.ts.map +1 -1
  96. package/esm/internal/translations/uk-UA.localization-bundle.js +2 -1
  97. package/esm/internal/translations/vi-VN.localization-bundle.d.ts +2 -1
  98. package/esm/internal/translations/vi-VN.localization-bundle.d.ts.map +1 -1
  99. package/esm/internal/translations/vi-VN.localization-bundle.js +2 -1
  100. package/esm/internal/translations/zh-HK.localization-bundle.d.ts +2 -1
  101. package/esm/internal/translations/zh-HK.localization-bundle.d.ts.map +1 -1
  102. package/esm/internal/translations/zh-HK.localization-bundle.js +2 -1
  103. package/esm/internal/translations/zh-Hans.localization-bundle.d.ts +2 -1
  104. package/esm/internal/translations/zh-Hans.localization-bundle.d.ts.map +1 -1
  105. package/esm/internal/translations/zh-Hans.localization-bundle.js +2 -1
  106. package/esm/internal/translations/zh-Hant.localization-bundle.d.ts +2 -1
  107. package/esm/internal/translations/zh-Hant.localization-bundle.d.ts.map +1 -1
  108. package/esm/internal/translations/zh-Hant.localization-bundle.js +2 -1
  109. package/esm/internal/utils/colors.d.ts +1 -0
  110. package/esm/internal/utils/colors.d.ts.map +1 -1
  111. package/esm/internal/utils/colors.js +14 -7
  112. package/esm/sdk-ui-ext.d.ts +4 -1
  113. package/esm/share/ObjectShareDialog.js +10 -7
  114. package/esm/share/messages.d.ts +21 -2
  115. package/esm/share/messages.d.ts.map +1 -1
  116. package/esm/share/messages.js +13 -2
  117. package/esm/share/objectShareController.helpers.d.ts +2 -0
  118. package/esm/share/objectShareController.helpers.d.ts.map +1 -1
  119. package/esm/share/objectShareController.helpers.js +2 -0
  120. package/esm/share/objectShareController.types.d.ts +26 -13
  121. package/esm/share/objectShareController.types.d.ts.map +1 -1
  122. package/esm/share/useAccessList.d.ts +11 -0
  123. package/esm/share/useAccessList.d.ts.map +1 -1
  124. package/esm/share/useAccessList.js +18 -1
  125. package/esm/share/useObjectShareController.d.ts.map +1 -1
  126. package/esm/share/useObjectShareController.js +52 -21
  127. package/esm/share/useObjectShareDialog.d.ts +3 -1
  128. package/esm/share/useObjectShareDialog.d.ts.map +1 -1
  129. package/esm/share/useObjectShareDialog.js +44 -8
  130. package/package.json +21 -21
@@ -510,7 +510,8 @@ export const zh_Hant = {
510
510
  "automations.menu.ariaLabel": "行動 {title}",
511
511
  "automations.menu.edit.unavailable": "編輯操作不可用,沒有關聯的儀表板",
512
512
  "automations.menu.edit.restricted": "您無法編輯此自動化,因為您沒有權限存取其使用的部分物件。",
513
- "automations.restricted.tooltip": "您沒有權限存取此自動化使用的部分物件,因此無法開啟。",
513
+ "automations.restricted.tooltip.alert": "您無權存取此警報。請聯絡您的管理員申請存取權限。",
514
+ "automations.restricted.tooltip.schedule": "您無權存取此排程匯出。請聯絡您的管理員申請存取權限。",
514
515
  "automations.icon.tooltip.header.schedule": "匯出失敗",
515
516
  "automations.icon.tooltip.header.alert": "警報失敗",
516
517
  "automations.icon.tooltip.status": "地位",
@@ -5,6 +5,7 @@ import { type IColorConfiguration, type IColoredItem } from "../interfaces/Color
5
5
  import { type IVisualizationProperties } from "../interfaces/Visualization.js";
6
6
  export declare function getSearchedItems(inputItems: IColoredItem[], searchString: string): IColoredItem[];
7
7
  export declare function getMappingHeaderId(item: IMappingHeader): string | undefined;
8
+ export declare function getLineStyleMappingId(item: IMappingHeader | undefined): string | undefined;
8
9
  export declare function getColoredInputItems(colors: IColorConfiguration | undefined, lineStyleMapping?: ILineStyleMappingItem[], colorMapping?: IColorMappingItem[]): IColoredItem[];
9
10
  export declare function getProperties(properties: IVisualizationProperties, item: IMappingHeader, color: IColor): IVisualizationProperties;
10
11
  export declare function removeColorMappingFromProperties(properties: IVisualizationProperties, id: string): IVisualizationProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/internal/utils/colors.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,MAAM,EACX,KAAK,iBAAiB,EASzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAc,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAM/E,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE,CAQjG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAa3E;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,EAC1C,YAAY,CAAC,EAAE,iBAAiB,EAAE,GACnC,YAAY,EAAE,CA4ChB;AAuBD,wBAAgB,aAAa,CACzB,UAAU,EAAE,wBAAwB,EACpC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,GACd,wBAAwB,CAM1B;AAED,wBAAgB,gCAAgC,CAC5C,UAAU,EAAE,wBAAwB,EACpC,EAAE,EAAE,MAAM,GACX,wBAAwB,CAU1B;AAED,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,wBAAwB,EACpC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC7C,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAC9C,wBAAwB,CAO1B;AAED,wBAAgB,4CAA4C,CACxD,UAAU,EAAE,wBAAwB,GAAG,SAAS,EAChD,eAAe,EAAE,MAAM,EAAE,GAC1B,wBAAwB,GAAG,SAAS,CAoBtC;AAED,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,wBAAwB,EACpC,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACjD,wBAAwB,CAmE1B"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/internal/utils/colors.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,MAAM,EACX,KAAK,iBAAiB,EASzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AACpG,OAAO,EAAc,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAM/E,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE,CAQjG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAa3E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO1F;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,EAC1C,YAAY,CAAC,EAAE,iBAAiB,EAAE,GACnC,YAAY,EAAE,CA4ChB;AAuBD,wBAAgB,aAAa,CACzB,UAAU,EAAE,wBAAwB,EACpC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,GACd,wBAAwB,CAM1B;AAED,wBAAgB,gCAAgC,CAC5C,UAAU,EAAE,wBAAwB,EACpC,EAAE,EAAE,MAAM,GACX,wBAAwB,CAU1B;AAED,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,wBAAwB,EACpC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,EAC7C,SAAS,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAC9C,wBAAwB,CAO1B;AAED,wBAAgB,4CAA4C,CACxD,UAAU,EAAE,wBAAwB,GAAG,SAAS,EAChD,eAAe,EAAE,MAAM,EAAE,GAC1B,wBAAwB,GAAG,SAAS,CAoBtC;AAED,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,wBAAwB,EACpC,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,SAAS,GACjD,wBAAwB,CAiE1B"}
@@ -32,6 +32,15 @@ export function getMappingHeaderId(item) {
32
32
  }
33
33
  return undefined;
34
34
  }
35
+ export function getLineStyleMappingId(item) {
36
+ if (isMeasureDescriptor(item)) {
37
+ return getMeasureMappingIdentifier(item);
38
+ }
39
+ else if (isResultAttributeHeader(item)) {
40
+ return item.attributeHeaderItem.uri ?? undefined;
41
+ }
42
+ return undefined;
43
+ }
35
44
  export function getColoredInputItems(colors, lineStyleMapping, colorMapping) {
36
45
  let inputItems = [];
37
46
  if (colors?.colorAssignments) {
@@ -54,9 +63,9 @@ export function getColoredInputItems(colors, lineStyleMapping, colorMapping) {
54
63
  isCustomMapped,
55
64
  };
56
65
  }
57
- if (base && lineStyleMapping && isMeasureDescriptor(assignmentItem.headerItem)) {
58
- const localId = assignmentItem.headerItem.measureHeaderItem.localIdentifier;
59
- const styleEntry = lineStyleMapping.find((m) => m.id === localId);
66
+ const lineStyleMappingId = getLineStyleMappingId(assignmentItem.headerItem);
67
+ if (base && lineStyleMapping && lineStyleMappingId !== undefined) {
68
+ const styleEntry = lineStyleMapping.find((m) => m.id === lineStyleMappingId);
60
69
  if (styleEntry) {
61
70
  base = {
62
71
  ...base,
@@ -133,9 +142,7 @@ export function getValidProperties(properties, colorAssignments) {
133
142
  if (!hasColorMapping && !hasLineStyleMapping) {
134
143
  return properties;
135
144
  }
136
- const validMeasureLocalIds = new Set(colorAssignments
137
- ?.filter((a) => isMeasureDescriptor(a.headerItem))
138
- .map((a) => a.headerItem.measureHeaderItem.localIdentifier));
145
+ const validLineStyleMappingIds = new Set(colorAssignments?.map((a) => getLineStyleMappingId(a.headerItem)).filter((id) => id !== undefined));
139
146
  let updatedControls = { ...properties.controls };
140
147
  if (hasColorMapping) {
141
148
  const reducedColorMapping = (properties.controls?.["colorMapping"] ?? []).filter((mappingItem) => {
@@ -170,7 +177,7 @@ export function getValidProperties(properties, colorAssignments) {
170
177
  };
171
178
  }
172
179
  if (hasLineStyleMapping) {
173
- const reducedLineStyleMapping = (properties.controls?.["lineStyleMapping"] ?? []).filter((mappingItem) => validMeasureLocalIds.has(mappingItem.id));
180
+ const reducedLineStyleMapping = (properties.controls?.["lineStyleMapping"] ?? []).filter((mappingItem) => validLineStyleMappingIds.has(mappingItem.id));
174
181
  updatedControls = {
175
182
  ...updatedControls,
176
183
  lineStyleMapping: reducedLineStyleMapping.length ? reducedLineStyleMapping : null,
@@ -617,6 +617,7 @@ export declare interface IAddWorkspaceToSubjectsProps extends IWithTelemetryProp
617
617
  areMetricPermissionsEnabled?: boolean;
618
618
  isCreateVisualizationWorkspacePermissionEnabled?: boolean;
619
619
  areComputedAttributesEnabled?: boolean;
620
+ areVisualizationPermissionsEnabled?: boolean;
620
621
  }
621
622
 
622
623
  /**
@@ -1822,7 +1823,7 @@ export declare interface IObjectShareGrantee extends IGranteeIdentityFacts {
1822
1823
  /**
1823
1824
  * EFFECTIVE permission level shown on the row — the stronger of {@link IObjectShareGrantee.directLevel}
1824
1825
  * and {@link IObjectShareGrantee.inheritedLevel}, so a grantee who only inherits a level is not
1825
- * understated as VIEW.
1826
+ * understated as VIEW. EDIT on the row named by `roleLockedGranteeId`.
1826
1827
  */
1827
1828
  level: ObjectSharePermissionLevel;
1828
1829
  /**
@@ -2129,6 +2130,7 @@ export declare interface IUserEditDialogProps extends IWithTelemetryProps {
2129
2130
  areMetricPermissionsEnabled?: boolean;
2130
2131
  isCreateVisualizationWorkspacePermissionEnabled?: boolean;
2131
2132
  areComputedAttributesEnabled?: boolean;
2133
+ areVisualizationPermissionsEnabled?: boolean;
2132
2134
  selectedTab?: UserTabId;
2133
2135
  }
2134
2136
 
@@ -2146,6 +2148,7 @@ export declare interface IUserGroupEditDialogProps extends IWithTelemetryProps {
2146
2148
  areMetricPermissionsEnabled?: boolean;
2147
2149
  isCreateVisualizationWorkspacePermissionEnabled?: boolean;
2148
2150
  areComputedAttributesEnabled?: boolean;
2151
+ areVisualizationPermissionsEnabled?: boolean;
2149
2152
  }
2150
2153
 
2151
2154
  /**
@@ -3,7 +3,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
3
3
  import { useIntl } from "react-intl";
4
4
  import { invariant } from "ts-invariant";
5
5
  import { UiAddGranteeDialog, UiConfirmDialog, UiGranteeRowControls, UiObjectShareDialog, } from "@gooddata/sdk-ui-kit";
6
- import { objectShareMessages, objectShareTitleMessages } from "./messages.js";
6
+ import { objectShareMessages, objectShareRoleNoteMessages, objectShareTitleMessages } from "./messages.js";
7
7
  import { granteeDisplayPair } from "./objectShareController.helpers.js";
8
8
  import { useObjectShareDialog } from "./useObjectShareDialog.js";
9
9
  // The workspace row has no labels menu (see workspaceControls below), so its
@@ -44,7 +44,7 @@ export function ObjectShareDialog(props) {
44
44
  /** The dialog session — mounted only while open, so its state cannot outlive a close. */
45
45
  function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChange, labels, labelsLoading, labelsError, draft, onDraftChange, initialDraft, initialDraftGeneralAccess, }) {
46
46
  const intl = useIntl();
47
- const { state, actions, isShareViewOpen, isAddGranteeOpen, isGeneralAccessConfirmOpen, isSelfRestrictConfirmOpen, isMutable, isLoading, workspaceDisabledLevels, grantableDisabledLevels, grantLimitTooltip, rowDisabledLevels, rowDisabledLevelTooltips, isRowRemoveDisabled, isRowControlsLocked, rowRemoveDisabledTooltip, onClose: closeDialog, onRowPermissionChange, onRowRemove, onSelfRestrictCancel, onSelfRestrictConfirm, } = useObjectShareDialog({
47
+ const { state, actions, isShareViewOpen, isAddGranteeOpen, isGeneralAccessConfirmOpen, isSelfRestrictConfirmOpen, isMutable, isLoading, workspaceDisabledLevels, grantableDisabledLevels, grantLimitTooltip, rowDisabledLevels, rowDisabledLevelTooltips, isRowRemoveDisabled, isRowControlsLocked, rowRemoveDisabledTooltip, isRowAboveCaller, onClose: closeDialog, onRowPermissionChange, onRowRemove, onSelfRestrictCancel, onSelfRestrictConfirm, } = useObjectShareDialog({
48
48
  target,
49
49
  onClose,
50
50
  onSummaryChange,
@@ -89,14 +89,18 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
89
89
  : display.name,
90
90
  email: display.email,
91
91
  isPending: g.pending !== undefined,
92
- controls: (_jsx(UiGranteeRowControls, { labels: rowLabelItems(g.id), selectedLabelIds: state.selectedLabelIdsByGrantee[g.id] ?? state.labels.map((l) => l.id), permissionLevel: g.level, effectivePermission: g.effectivePermission, disabledLevels: disabledLevels,
92
+ controls: (_jsx(UiGranteeRowControls
93
+ // Label writes carry the grantee's level, which the server refuses above the caller's.
94
+ , {
95
+ // Label writes carry the grantee's level, which the server refuses above the caller's.
96
+ labels: isRowAboveCaller(g) ? [] : rowLabelItems(g.id), selectedLabelIds: state.selectedLabelIdsByGrantee[g.id] ?? state.labels.map((l) => l.id), permissionLevel: g.level, effectivePermission: g.effectivePermission, disabledLevels: disabledLevels,
93
97
  // Row-wide warning is the self row's; covered picks carry their own.
94
98
  disabledTooltip: state.selfManagedGranteeId === g.id
95
99
  ? intl.formatMessage(objectShareMessages.selfRestrictWarning)
96
100
  : undefined, disabledLevelTooltips: {
97
101
  ...grantLimitTooltips(grantableDisabledLevels, grantLimitTooltip),
98
102
  ...rowDisabledLevelTooltips(g),
99
- }, isRemoveDisabled: isRowRemoveDisabled(g), removeDisabledTooltip: rowRemoveDisabledTooltip,
103
+ }, isRemoveDisabled: isRowRemoveDisabled(g), removeDisabledTooltip: rowRemoveDisabledTooltip(g),
100
104
  // Disabled while the row's own write is saving, while mutations are
101
105
  // gated (unresolved label scope would orphan real per-label grants),
102
106
  // and while a sole row's self identity is unknown.
@@ -111,9 +115,8 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
111
115
  // stay generic, so they carry no kind of their own.
112
116
  const kind = target?.kind ?? "other";
113
117
  const dialogTitle = intl.formatMessage(objectShareTitleMessages[kind]);
114
- // A workspace manager's role-based access is explained by a note above the list
115
- // rather than by a synthesized grantee row, which read as an explicit grant.
116
- const note = state.showAdminAccessNote ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "gd-ui-kit-object-share-dialog__note-prefix", children: intl.formatMessage(objectShareMessages.adminNotePrefix) }), " ", intl.formatMessage(objectShareMessages.adminNote)] })) : undefined;
118
+ // A note, not a synthesized grantee row, which read as an explicit grant.
119
+ const note = state.roleAccess ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "gd-ui-kit-object-share-dialog__note-prefix", children: intl.formatMessage(objectShareMessages.roleNotePrefix) }), " ", intl.formatMessage(objectShareRoleNoteMessages[state.roleAccess])] })) : undefined;
117
120
  const emptyMessage = (_jsxs(_Fragment, { children: [_jsx("p", { children: intl.formatMessage(objectShareMessages.emptyGrantees) }), _jsx("p", { children: intl.formatMessage(objectShareMessages.emptyGranteesHint) })] }));
118
121
  return (_jsxs(_Fragment, { children: [_jsx(UiObjectShareDialog, { isOpen: isShareViewOpen, title: dialogTitle, onClose: closeDialog, note: note, grantees: rows, emptyMessage: emptyMessage, isLoading: isLoading, onAddClick: actions.openAddGrantee, isAddDisabled: !isMutable, generalAccess: state.generalAccess, onGeneralAccessChange: actions.requestGeneralAccessChange,
119
122
  // Inherited workspace access can't be revoked here.
@@ -47,6 +47,14 @@ export declare const objectShareMessages: {
47
47
  granteeRemoveInherited: {
48
48
  id: string;
49
49
  };
50
+ /** Tooltip on a user row whose grant is above the caller's level, so they can't change or remove it. */
51
+ granteeAboveCallerUser: {
52
+ id: string;
53
+ };
54
+ /** Tooltip on a group row whose grant is above the caller's level. */
55
+ granteeAboveCallerGroup: {
56
+ id: string;
57
+ };
50
58
  /** Disabled-level tooltip for picks an inherited grant already covers. */
51
59
  granteeLevelInheritedCovered: {
52
60
  id: string;
@@ -61,10 +69,10 @@ export declare const objectShareMessages: {
61
69
  granteeYou: {
62
70
  id: string;
63
71
  };
64
- adminNotePrefix: {
72
+ roleNotePrefix: {
65
73
  id: string;
66
74
  };
67
- adminNote: {
75
+ granteeCoveredByWorkspacePermission: {
68
76
  id: string;
69
77
  };
70
78
  emptyGrantees: {
@@ -92,6 +100,17 @@ export declare const objectShareMessages: {
92
100
  id: string;
93
101
  };
94
102
  };
103
+ /**
104
+ * @internal
105
+ */
106
+ export declare const objectShareRoleNoteMessages: {
107
+ workspaceManager: {
108
+ id: string;
109
+ };
110
+ visualizationManager: {
111
+ id: string;
112
+ };
113
+ };
95
114
  /**
96
115
  * The dialog heading, one whole sentence per shared object kind rather than one message
97
116
  * branching on the kind: a translator then sees short titles they can inflect freely,
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/share/messages.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;QACJ,EAAE;;;QACI,EAAE;;;QACF,EAAE;;;QACI,EAAE;;;QACrB,EAAE;;;QACE,EAAE;;IACvB;;;;OAIG;;QACoB,EAAE;;IACzB;;;OAGG;;QACwB,EAAE;;IAC7B;;;OAGG;;QACuB,EAAE;;IAC5B,0EAA0E;;QAC1C,EAAE;;IAClC;;;OAGG;;QACuB,EAAE;;;QACd,EAAE;;;QACG,EAAE;;;QACR,EAAE;;;QACE,EAAE;;;QACE,EAAE;;;QACF,EAAE;;;QACD,EAAE;;;QACK,EAAE;;;QACjB,EAAE;;;QACU,EAAE;;;QACf,EAAE;;CACjB,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;QACpB,EAAE;;;QACP,EAAE;;;QACD,EAAE;;;QACA,EAAE;;;QACQ,EAAE;;;QACZ,EAAE;;;QACJ,EAAE;;CACb,CAAC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/share/messages.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;QACJ,EAAE;;;QACI,EAAE;;;QACF,EAAE;;;QACI,EAAE;;;QACrB,EAAE;;;QACE,EAAE;;IACvB;;;;OAIG;;QACoB,EAAE;;IACzB;;;OAGG;;QACwB,EAAE;;IAC7B;;;OAGG;;QACuB,EAAE;;IAC5B,wGAAwG;;QAC9E,EAAE;;IAC5B,sEAAsE;;QAC3C,EAAE;;IAC7B,0EAA0E;;QAC1C,EAAE;;IAClC;;;OAGG;;QACuB,EAAE;;;QACd,EAAE;;;QACE,EAAE;;;QACmB,EAAE;;;QACxB,EAAE;;;QACE,EAAE;;;QACF,EAAE;;;QACD,EAAE;;;QACK,EAAE;;;QACjB,EAAE;;;QACU,EAAE;;;QACf,EAAE;;CACjB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B;;QAChB,EAAE;;;QACE,EAAE;;CAC5B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;QACpB,EAAE;;;QACP,EAAE;;;QACD,EAAE;;;QACA,EAAE;;;QACQ,EAAE;;;QACZ,EAAE;;;QACJ,EAAE;;CACb,CAAC"}
@@ -31,6 +31,10 @@ export const objectShareMessages = defineMessages({
31
31
  * access is inherited only — there is no grant in this workspace to revoke.
32
32
  */
33
33
  granteeRemoveInherited: { id: "objectShare.granteeRemove.inherited" },
34
+ /** Tooltip on a user row whose grant is above the caller's level, so they can't change or remove it. */
35
+ granteeAboveCallerUser: { id: "objectShare.grantee.aboveCaller.user" },
36
+ /** Tooltip on a group row whose grant is above the caller's level. */
37
+ granteeAboveCallerGroup: { id: "objectShare.grantee.aboveCaller.group" },
34
38
  /** Disabled-level tooltip for picks an inherited grant already covers. */
35
39
  granteeLevelInheritedCovered: { id: "objectShare.granteeLevel.inheritedCovered" },
36
40
  /**
@@ -39,8 +43,8 @@ export const objectShareMessages = defineMessages({
39
43
  */
40
44
  toastEscalationRefused: { id: "objectShare.toast.escalationRefused" },
41
45
  granteeYou: { id: "objectShare.grantee.you" },
42
- adminNotePrefix: { id: "objectShare.adminNote.prefix" },
43
- adminNote: { id: "objectShare.adminNote" },
46
+ roleNotePrefix: { id: "objectShare.adminNote.prefix" },
47
+ granteeCoveredByWorkspacePermission: { id: "objectShare.grantee.coveredByWorkspacePermission" },
44
48
  emptyGrantees: { id: "objectShare.emptyGrantees" },
45
49
  emptyGranteesHint: { id: "objectShare.emptyGrantees.hint" },
46
50
  toastGranteeAdded: { id: "objectShare.toast.granteeAdded" },
@@ -50,6 +54,13 @@ export const objectShareMessages = defineMessages({
50
54
  toastLabelScopePartial: { id: "objectShare.toast.labelScopePartial" },
51
55
  loadError: { id: "objectShare.loadError" },
52
56
  });
57
+ /**
58
+ * @internal
59
+ */
60
+ export const objectShareRoleNoteMessages = defineMessages({
61
+ workspaceManager: { id: "objectShare.adminNote" },
62
+ visualizationManager: { id: "objectShare.visualizationManagerNote" },
63
+ });
53
64
  /**
54
65
  * The dialog heading, one whole sentence per shared object kind rather than one message
55
66
  * branching on the kind: a translator then sees short titles they can inflect freely,
@@ -56,6 +56,8 @@ export declare function sortShareableLabels<T extends {
56
56
  }>(labels: readonly T[]): T[];
57
57
  /** Case-insensitive match of an assignee against the picker query (name, or email for users). */
58
58
  export declare function assigneeMatchesQuery(assignee: IAvailableAccessGrantee, query: string): boolean;
59
+ /** Every permission level, strongest first. */
60
+ export declare const ALL_LEVELS: readonly ObjectSharePermissionLevel[];
59
61
  /** The strongest permission level present, or undefined when none. */
60
62
  export declare function strongestLevel(permissions: readonly string[]): ObjectSharePermissionLevel | undefined;
61
63
  /** The row's directly-granted level — the strongest permission present, defaulting to VIEW. */
@@ -1 +1 @@
1
- {"version":3,"file":"objectShareController.helpers.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"objectShareController.helpers.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.helpers.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,8 @@ export function assigneeMatchesQuery(assignee, query) {
103
103
  }
104
104
  /** Permission levels from strongest to weakest; the row shows the strongest it holds. */
105
105
  const LEVELS_STRONGEST_FIRST = ["EDIT", "SHARE", "VIEW"];
106
+ /** Every permission level, strongest first. */
107
+ export const ALL_LEVELS = LEVELS_STRONGEST_FIRST;
106
108
  const LEVEL_RANK = { VIEW: 0, SHARE: 1, EDIT: 2 };
107
109
  /** The strongest permission level present, or undefined when none. */
108
110
  export function strongestLevel(permissions) {
@@ -49,7 +49,7 @@ export interface IObjectShareGrantee extends IGranteeIdentityFacts {
49
49
  /**
50
50
  * EFFECTIVE permission level shown on the row — the stronger of {@link IObjectShareGrantee.directLevel}
51
51
  * and {@link IObjectShareGrantee.inheritedLevel}, so a grantee who only inherits a level is not
52
- * understated as VIEW.
52
+ * understated as VIEW. EDIT on the row named by `roleLockedGranteeId`.
53
53
  */
54
54
  level: ObjectSharePermissionLevel;
55
55
  /**
@@ -80,6 +80,10 @@ export interface IObjectShareGrantee extends IGranteeIdentityFacts {
80
80
  */
81
81
  pending?: "saving" | "removing";
82
82
  }
83
+ /**
84
+ * @internal
85
+ */
86
+ export type ObjectShareRoleAccess = "workspaceManager" | "visualizationManager";
83
87
  /**
84
88
  * @internal
85
89
  */
@@ -93,8 +97,8 @@ export interface IObjectShareControllerState {
93
97
  * Id of the grantee row whose permission menu manages the signed-in user's OWN
94
98
  * access (the "restrict own access" design), whatever else is listed. Consumers
95
99
  * gate lowering behind a confirm and disable the levels above the row's own.
96
- * Undefined for a workspace manager (their access is not this grant) and while
97
- * their identity is unresolved, which `granteeControlsLocked` covers.
100
+ * Undefined for a workspace manager or with `roleLockedGranteeId` (their access is not this
101
+ * grant) and while their identity is unresolved, which `granteeControlsLocked` covers.
98
102
  */
99
103
  selfManagedGranteeId: string | undefined;
100
104
  /**
@@ -112,12 +116,17 @@ export interface IObjectShareControllerState {
112
116
  workspaceDisabledLevels: ObjectSharePermissionLevel[] | undefined;
113
117
  /**
114
118
  * Levels the caller cannot grant to anyone, because they hold less themselves —
115
- * the server refuses such a write. Proven from the caller's OWN grant row, so it
116
- * is undefined when they have no row (their access may come from a group, which
117
- * the list does not show) and whenever they may be a workspace manager, who has
118
- * no limit.
119
+ * the server refuses such a write. Taken from the backend's answer for the caller,
120
+ * which covers groups, parent workspaces and workspace permissions. Without that
121
+ * answer, proven from the caller's OWN grant row only, and undefined when they have
122
+ * no row or may be a workspace manager.
119
123
  */
120
124
  grantableDisabledLevels: ObjectSharePermissionLevel[] | undefined;
125
+ /**
126
+ * The strongest level the caller holds on the object, or undefined while unknown.
127
+ * The server refuses changing or removing a grant above it, so consumers lock such rows.
128
+ */
129
+ callerLevel: ObjectSharePermissionLevel | undefined;
121
130
  /**
122
131
  * Whether USER-row controls must stay disabled because no row can be told apart
123
132
  * from the caller's own grant yet (profile pending or silently failed) — mutating
@@ -127,13 +136,17 @@ export interface IObjectShareControllerState {
127
136
  */
128
137
  granteeControlsLocked: boolean;
129
138
  /**
130
- * Whether to tell the caller that they, as a workspace manager, have full access to
131
- * the object regardless of the grants listed. True only on a successfully FETCHED list
132
- * for a caller whose MANAGE permission is known to be granted: an unread permission must
133
- * not read as "is a manager". Never true while drafting — the caller will own what they
134
- * create, which needs no explaining.
139
+ * The workspace role that gives the caller access regardless of the grants listed, explained
140
+ * by a note: "workspaceManager" for MANAGE, "visualizationManager" for MANAGE_VISUALIZATIONS
141
+ * on a visualization the backend reports EDIT for. Set only on a successfully FETCHED list
142
+ * and a permission known to be granted, never while drafting.
143
+ */
144
+ roleAccess: ObjectShareRoleAccess | undefined;
145
+ /**
146
+ * Id of the caller's own row while a visualization manager role gives them EDIT: shown at
147
+ * EDIT, and nothing on it may change.
135
148
  */
136
- showAdminAccessNote: boolean;
149
+ roleLockedGranteeId: string | undefined;
137
150
  generalAccess: GeneralAccessValue;
138
151
  /**
139
152
  * Permission level of the all-workspace-members rule when general access is
@@ -1 +1 @@
1
- {"version":3,"file":"objectShareController.types.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"objectShareController.types.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.types.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,17 @@ export interface IAccessList {
27
27
  * the backend would allow. The Admin self row needs an explicit `true`.
28
28
  */
29
29
  isWorkspaceManager: boolean | undefined;
30
+ /**
31
+ * Whether the caller may edit and share every visualization of this workspace through the
32
+ * MANAGE_VISUALIZATIONS or MANAGE workspace permission, or **undefined** while pending or after it failed.
33
+ */
34
+ canManageVisualizations: boolean | undefined;
35
+ /**
36
+ * The strongest level the caller holds on the target, from every source the backend
37
+ * resolves (own grants, groups, parent workspaces, workspace permissions), or
38
+ * **undefined** without a target, while pending or after the read failed.
39
+ */
40
+ callerLevel: ObjectSharePermissionLevel | undefined;
30
41
  /**
31
42
  * Whether the profile resolved. Until then a sole grantee row can't be told apart
32
43
  * from the caller's own grant, so its `isSelf` is only an unresolved default.
@@ -1 +1 @@
1
- {"version":3,"file":"useAccessList.d.ts","sourceRoot":"","sources":["../../src/share/useAccessList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAccessList.d.ts","sourceRoot":"","sources":["../../src/share/useAccessList.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,wBAAwB,EAAiC,MAAM,2BAA2B,CAAC;AACzG,OAAO,EAEH,KAAK,sBAAsB,EAK9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAmB,MAAM,sBAAsB,CAAC;AAqB7G,OAAO,KAAK,EAER,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,0BAA0B,EAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,6EAA6E;IAC7E,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC;;;;;;;;;OASG;IACH,kBAAkB,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,uBAAuB,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C;;;;OAIG;IACH,WAAW,EAAE,0BAA0B,GAAG,SAAS,CAAC;IACpD;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B,8DAA8D;IAC9D,aAAa,EAAE,kBAAkB,CAAC;IAClC,kFAAkF;IAClF,cAAc,EAAE,0BAA0B,CAAC;IAC3C;;;OAGG;IACH,uBAAuB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAChE,wFAAwF;IACxF,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iFAAiF;IACjF,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC1C,qDAAqD;IACrD,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,mDAAmD;IACnD,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAExC,mFAAmF;IACnF,MAAM,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,EAAE,cAAc,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/F,6FAA6F;IAC7F,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEjE;;;;OAIG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACxD;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAC3E;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gFAAgF;IAChF,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtC,oFAAoF;IACpF,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;IAC1D,6DAA6D;IAC7D,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,8FAA8F;IAC9F,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,6DAA6D;IAC7D,KAAK,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,yBAAyB,CAAC,EAAE,kBAAkB,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CACzB,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,YAAY,GAAE,uBAA4B,GAC3C,WAAW,CA8Xb"}
@@ -6,7 +6,7 @@ import { convertError, useBackendStrict, useCancelablePromise, useWorkspaceStric
6
6
  import { useToastMessage } from "@gooddata/sdk-ui-kit";
7
7
  import { composeEffectiveWorkspaceAccess, deriveGeneralAccess, deriveInheritedWorkspaceLevel, deriveWorkspacePermissionLevel, } from "./accessSummary.js";
8
8
  import { objectShareMessages } from "./messages.js";
9
- import { assigneeIdentityFacts, assigneeMatchesQuery, granteeId, granteesFromAccessList, mergeGrantees, selfGranteeRef, userDisplayPair, userIdentityFacts, withDirectLevel, } from "./objectShareController.helpers.js";
9
+ import { assigneeIdentityFacts, assigneeMatchesQuery, granteeId, granteesFromAccessList, mergeGrantees, selfGranteeRef, strongestLevel, userDisplayPair, userIdentityFacts, withDirectLevel, } from "./objectShareController.helpers.js";
10
10
  /**
11
11
  * Owns the backend access list for ONE dialog session: the hook is mounted while
12
12
  * the dialog is open, for a single target that must not change while mounted
@@ -71,6 +71,20 @@ export function useAccessList(target, draftOptions = {}) {
71
71
  onError: () => { },
72
72
  }, [backend, workspace]);
73
73
  const isWorkspaceManager = workspacePermissions?.canManageProject;
74
+ const canManageVisualizations = workspacePermissions?.canManageVisualizations;
75
+ // Re-read after every write, since a change to the caller's own row, a group or the rule
76
+ // can change their level. The last answer stays in place while the next one loads, and is
77
+ // dropped if that read fails, so the policies fall back to the caller's own row.
78
+ const [callerRevision, setCallerRevision] = useState(0);
79
+ const [callerPermissions, setCallerPermissions] = useState();
80
+ useCancelablePromise({
81
+ promise: target
82
+ ? async () => backend.workspace(workspace).objectPermissions().getPermissionsForCurrentUser(target)
83
+ : undefined,
84
+ onSuccess: setCallerPermissions,
85
+ onError: () => setCallerPermissions(undefined),
86
+ }, [backend, fetchKey, callerRevision]);
87
+ const callerLevel = callerPermissions ? strongestLevel(callerPermissions) : undefined;
74
88
  const selfId = currentUser ? granteeId("user", selfGranteeRef(currentUser)) : undefined;
75
89
  // De-collapsed like every listing fact — on tiger the user id is often the email.
76
90
  const selfIdentity = useMemo(() => currentUser
@@ -135,6 +149,7 @@ export function useAccessList(target, draftOptions = {}) {
135
149
  .workspace(workspace)
136
150
  .objectPermissions()
137
151
  .manageObjectPermissions(target, mutate);
152
+ setCallerRevision((revision) => revision + 1);
138
153
  toast.addSuccess(successMessage);
139
154
  return true;
140
155
  }
@@ -284,6 +299,8 @@ export function useAccessList(target, draftOptions = {}) {
284
299
  grantees,
285
300
  selfIdentity,
286
301
  isWorkspaceManager,
302
+ canManageVisualizations,
303
+ callerLevel,
287
304
  selfIdentityResolved,
288
305
  generalAccess,
289
306
  workspaceLevel,
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectShareController.d.ts","sourceRoot":"","sources":["../../src/share/useObjectShareController.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAkB1E,OAAO,EACH,KAAK,sBAAsB,EAI3B,KAAK,sBAAsB,EAE9B,MAAM,kCAAkC,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,OAAO,CAAC,EAAE,sBAAsB,GACjC,sBAAsB,CA4yBxB"}
1
+ {"version":3,"file":"useObjectShareController.d.ts","sourceRoot":"","sources":["../../src/share/useObjectShareController.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAkB1E,OAAO,EACH,KAAK,sBAAsB,EAI3B,KAAK,sBAAsB,EAG9B,MAAM,kCAAkC,CAAC;AA8B1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACpC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,OAAO,CAAC,EAAE,sBAAsB,GACjC,sBAAsB,CA40BxB"}