@gooddata/sdk-ui-ext 11.61.0-alpha.3 → 11.61.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.
- package/NOTICE +409 -550
- package/esm/internal/components/dialogs/userManagementDialogs/AddWorkspaceToSubjects.d.ts +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/AddWorkspaceToSubjects.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/AddWorkspaceToSubjects.js +2 -2
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.js +2 -2
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.js +2 -2
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.d.ts +2 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.js +4 -4
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.d.ts +2 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.js +24 -24
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.d.ts +3 -3
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.js +21 -15
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/locales.d.ts +6 -0
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/locales.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/locales.js +4 -0
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.js +10 -3
- package/esm/internal/components/pluggableVisualizations/chartCodeGenUtils.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/chartCodeGenUtils.js +1 -0
- package/esm/internal/translations/de-DE.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/de-DE.localization-bundle.js +6 -1
- package/esm/internal/translations/en-AU.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-AU.localization-bundle.js +6 -1
- package/esm/internal/translations/en-GB.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-GB.localization-bundle.js +6 -1
- package/esm/internal/translations/en-US.localization-bundle.d.ts +8 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-US.localization-bundle.js +9 -1
- package/esm/internal/translations/es-419.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-419.localization-bundle.js +6 -1
- package/esm/internal/translations/es-ES.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-ES.localization-bundle.js +6 -1
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fi-FI.localization-bundle.js +6 -1
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-CA.localization-bundle.js +6 -1
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-FR.localization-bundle.js +6 -1
- package/esm/internal/translations/id-ID.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/id-ID.localization-bundle.js +6 -1
- package/esm/internal/translations/it-IT.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/it-IT.localization-bundle.js +7 -2
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ja-JP.localization-bundle.js +6 -1
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ko-KR.localization-bundle.js +6 -1
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/nl-NL.localization-bundle.js +6 -1
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pl-PL.localization-bundle.js +6 -1
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-BR.localization-bundle.js +6 -1
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-PT.localization-bundle.js +6 -1
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ru-RU.localization-bundle.js +6 -1
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/sl-SI.localization-bundle.js +6 -1
- package/esm/internal/translations/th-TH.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/th-TH.localization-bundle.js +6 -1
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/tr-TR.localization-bundle.js +6 -1
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/uk-UA.localization-bundle.js +6 -1
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/vi-VN.localization-bundle.js +6 -1
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-HK.localization-bundle.js +6 -1
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hans.localization-bundle.js +6 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts +6 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.js +6 -1
- package/esm/sdk-ui-ext.d.ts +4 -1
- package/esm/share/ObjectShareDialog.js +3 -4
- package/esm/share/messages.d.ts +13 -2
- package/esm/share/messages.d.ts.map +1 -1
- package/esm/share/messages.js +9 -2
- package/esm/share/objectShareController.types.d.ts +17 -9
- package/esm/share/objectShareController.types.d.ts.map +1 -1
- package/esm/share/useAccessList.d.ts +5 -0
- package/esm/share/useAccessList.d.ts.map +1 -1
- package/esm/share/useAccessList.js +2 -0
- package/esm/share/useObjectShareController.d.ts.map +1 -1
- package/esm/share/useObjectShareController.js +40 -11
- package/esm/share/useObjectShareDialog.d.ts.map +1 -1
- package/esm/share/useObjectShareDialog.js +27 -15
- package/package.json +21 -21
|
@@ -27,6 +27,11 @@ 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;
|
|
30
35
|
/**
|
|
31
36
|
* The strongest level the caller holds on the target, from every source the backend
|
|
32
37
|
* resolves (own grants, groups, parent workspaces, workspace permissions), or
|
|
@@ -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":"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"}
|
|
@@ -71,6 +71,7 @@ export function useAccessList(target, draftOptions = {}) {
|
|
|
71
71
|
onError: () => { },
|
|
72
72
|
}, [backend, workspace]);
|
|
73
73
|
const isWorkspaceManager = workspacePermissions?.canManageProject;
|
|
74
|
+
const canManageVisualizations = workspacePermissions?.canManageVisualizations;
|
|
74
75
|
// Re-read after every write, since a change to the caller's own row, a group or the rule
|
|
75
76
|
// can change their level. The last answer stays in place while the next one loads, and is
|
|
76
77
|
// dropped if that read fails, so the policies fall back to the caller's own row.
|
|
@@ -298,6 +299,7 @@ export function useAccessList(target, draftOptions = {}) {
|
|
|
298
299
|
grantees,
|
|
299
300
|
selfIdentity,
|
|
300
301
|
isWorkspaceManager,
|
|
302
|
+
canManageVisualizations,
|
|
301
303
|
callerLevel,
|
|
302
304
|
selfIdentityResolved,
|
|
303
305
|
generalAccess,
|
|
@@ -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,
|
|
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"}
|
|
@@ -6,6 +6,19 @@ import { objectShareMessages } from "./messages.js";
|
|
|
6
6
|
import { EMPTY_IDS, NO_LABELS, changesEffectiveLevel, granularGranteeFor, levelsAbove, levelsBelow, mergeDisabledLevels, sortGrantees, toGranularGrantee, } from "./objectShareController.helpers.js";
|
|
7
7
|
import { useAccessList } from "./useAccessList.js";
|
|
8
8
|
import { useLabelScope } from "./useLabelScope.js";
|
|
9
|
+
function resolveRoleAccess({ loaded, isWorkspaceManager, canManageVisualizations, kind, callerLevel, }) {
|
|
10
|
+
if (!loaded) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
if (isWorkspaceManager) {
|
|
14
|
+
return "workspaceManager";
|
|
15
|
+
}
|
|
16
|
+
// The backend's EDIT is required too: inherited visualizations stay view-only for a holder.
|
|
17
|
+
if (canManageVisualizations && kind === "insight" && callerLevel === "EDIT") {
|
|
18
|
+
return "visualizationManager";
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
9
22
|
/**
|
|
10
23
|
* Manages the share-dialog state and backend I/O for ONE dialog session: the hook
|
|
11
24
|
* is mounted while the dialog is open, for a single target that must not change
|
|
@@ -35,7 +48,15 @@ export function useObjectShareController(target, options) {
|
|
|
35
48
|
const [subview, setSubview] = useState("main");
|
|
36
49
|
const [pendingGrantees, setPendingGrantees] = useState([]);
|
|
37
50
|
const [pendingGeneralAccess, setPendingGeneralAccess] = useState(undefined);
|
|
38
|
-
const { hasList, grantees, isWorkspaceManager, callerLevel, selfIdentityResolved, generalAccess, workspaceLevel, workspaceInheritedLevel, workspaceLevelSaving, summary, status, loadError, commit, loadOptions, applyGranteeAdd, applyGranteeLevel, applyGranteeLock, applyGranteeRemove, settleGranteeEdit, failGranteeEdit, applyRuleEdit, settleRuleEdit, failRuleEdit, draft: draftValue, } = useAccessList(target, { draft, initialDraft, initialDraftGeneralAccess });
|
|
51
|
+
const { hasList, grantees, isWorkspaceManager, canManageVisualizations, callerLevel, selfIdentityResolved, generalAccess, workspaceLevel, workspaceInheritedLevel, workspaceLevelSaving, summary, status, loadError, commit, loadOptions, applyGranteeAdd, applyGranteeLevel, applyGranteeLock, applyGranteeRemove, settleGranteeEdit, failGranteeEdit, applyRuleEdit, settleRuleEdit, failRuleEdit, draft: draftValue, } = useAccessList(target, { draft, initialDraft, initialDraftGeneralAccess });
|
|
52
|
+
const roleAccess = resolveRoleAccess({
|
|
53
|
+
loaded: !draft && status === "success",
|
|
54
|
+
isWorkspaceManager,
|
|
55
|
+
canManageVisualizations,
|
|
56
|
+
kind: target?.kind,
|
|
57
|
+
callerLevel,
|
|
58
|
+
});
|
|
59
|
+
const roleLockedGranteeId = roleAccess === "visualizationManager" ? grantees.find((g) => g.isSelf)?.id : undefined;
|
|
39
60
|
// Grantee ids the label-scope probe resolves against — a removing row is excluded
|
|
40
61
|
// so its scope is dropped, not re-seeded.
|
|
41
62
|
const committedGranteeIds = useMemo(() => {
|
|
@@ -218,7 +239,11 @@ export function useObjectShareController(target, options) {
|
|
|
218
239
|
// Also refused before the label scope resolves: the re-grade below would run
|
|
219
240
|
// over the assumed-all fallback and mint grants the grantee never held. The
|
|
220
241
|
// UI gates on the same fact (isMutable); the controller stays authoritative.
|
|
221
|
-
if (!grantee ||
|
|
242
|
+
if (!grantee ||
|
|
243
|
+
grantee.pending ||
|
|
244
|
+
!labelsResolved ||
|
|
245
|
+
granteeId === roleLockedGranteeId ||
|
|
246
|
+
!changesEffectiveLevel(grantee, level)) {
|
|
222
247
|
return;
|
|
223
248
|
}
|
|
224
249
|
applyGranteeLevel(granteeId, level);
|
|
@@ -278,6 +303,7 @@ export function useObjectShareController(target, options) {
|
|
|
278
303
|
applyGranteeLevel,
|
|
279
304
|
settleGranteeEdit,
|
|
280
305
|
failGranteeEdit,
|
|
306
|
+
roleLockedGranteeId,
|
|
281
307
|
]);
|
|
282
308
|
const removeGrantee = useCallback(async (granteeId) => {
|
|
283
309
|
const grantee = grantees.find((g) => g.id === granteeId);
|
|
@@ -288,7 +314,11 @@ export function useObjectShareController(target, options) {
|
|
|
288
314
|
// this keeps the controller — not the UI — authoritative. Same for an
|
|
289
315
|
// unresolved label scope: the revoke below would run over the assumed-all
|
|
290
316
|
// fallback and revoke (then compensate with) grants that never existed.
|
|
291
|
-
if (!grantee ||
|
|
317
|
+
if (!grantee ||
|
|
318
|
+
grantee.pending ||
|
|
319
|
+
!labelsResolved ||
|
|
320
|
+
grantee.directLevel === undefined ||
|
|
321
|
+
granteeId === roleLockedGranteeId) {
|
|
292
322
|
return;
|
|
293
323
|
}
|
|
294
324
|
// Mark the row removed but keep it visible (muted) until the write lands.
|
|
@@ -375,6 +405,7 @@ export function useObjectShareController(target, options) {
|
|
|
375
405
|
settleGranteeEdit,
|
|
376
406
|
failGranteeEdit,
|
|
377
407
|
setSelectedLabelIdsByGrantee,
|
|
408
|
+
roleLockedGranteeId,
|
|
378
409
|
]);
|
|
379
410
|
const changeGranteeLabels = useCallback(async (granteeId, requested) => {
|
|
380
411
|
const grantee = grantees.find((g) => g.id === granteeId);
|
|
@@ -607,7 +638,7 @@ export function useObjectShareController(target, options) {
|
|
|
607
638
|
// Sorted for display only; the overlay stays in write-through order, so
|
|
608
639
|
// add/rollback logic is unaffected. Memoized apart from the state assembly so
|
|
609
640
|
// the array identity changes only when the rows do, not on every state change.
|
|
610
|
-
const sortedGrantees = useMemo(() => sortGrantees(grantees), [grantees]);
|
|
641
|
+
const sortedGrantees = useMemo(() => sortGrantees(grantees).map((g) => g.id === roleLockedGranteeId ? { ...g, level: "EDIT", effectivePermission: undefined } : g), [grantees, roleLockedGranteeId]);
|
|
611
642
|
const state = useMemo(() => {
|
|
612
643
|
// Row policy is classified here, not in the dialog, so a consumer
|
|
613
644
|
// injecting this controller into its own UI gets the same classification.
|
|
@@ -615,7 +646,7 @@ export function useObjectShareController(target, options) {
|
|
|
615
646
|
// it special is that the access is THEIRS. A manager is exempt, their access
|
|
616
647
|
// comes from the role, so there is no ceiling to cap and no lockout to warn of.
|
|
617
648
|
const ownRow = grantees.find((g) => g.isSelf);
|
|
618
|
-
const selfRow = isWorkspaceManager ? undefined : ownRow;
|
|
649
|
+
const selfRow = isWorkspaceManager || roleLockedGranteeId ? undefined : ownRow;
|
|
619
650
|
const selfManagedGranteeId = selfRow?.id;
|
|
620
651
|
// The caller cannot grant above what they hold, and the server refuses such a write.
|
|
621
652
|
// The backend's own answer covers groups, parent workspaces and workspace permissions.
|
|
@@ -627,10 +658,6 @@ export function useObjectShareController(target, options) {
|
|
|
627
658
|
: undefined
|
|
628
659
|
: levelsAbove(callerLevel);
|
|
629
660
|
const granteeControlsLocked = !selfIdentityResolved && !isWorkspaceManager && grantees.some((g) => g.kind === "user");
|
|
630
|
-
// Policy in `IObjectShareControllerState.showAdminAccessNote`: role-based access is
|
|
631
|
-
// explained by a note, not a grantee row, so it does not depend on the caller having
|
|
632
|
-
// (or lacking) a row of their own.
|
|
633
|
-
const showAdminAccessNote = !draft && status === "success" && isWorkspaceManager === true;
|
|
634
661
|
return {
|
|
635
662
|
subview,
|
|
636
663
|
status,
|
|
@@ -645,7 +672,8 @@ export function useObjectShareController(target, options) {
|
|
|
645
672
|
grantableDisabledLevels,
|
|
646
673
|
callerLevel,
|
|
647
674
|
granteeControlsLocked,
|
|
648
|
-
|
|
675
|
+
roleAccess,
|
|
676
|
+
roleLockedGranteeId,
|
|
649
677
|
...effectiveWorkspace,
|
|
650
678
|
workspaceInheritedLevel: workspaceInheritedLevel,
|
|
651
679
|
workspaceLevelLocked: generalAccess !== "WORKSPACE" || workspaceInheritedLevel === "EDIT",
|
|
@@ -665,8 +693,9 @@ export function useObjectShareController(target, options) {
|
|
|
665
693
|
summary,
|
|
666
694
|
selfIdentityResolved,
|
|
667
695
|
isWorkspaceManager,
|
|
696
|
+
roleAccess,
|
|
697
|
+
roleLockedGranteeId,
|
|
668
698
|
callerLevel,
|
|
669
|
-
draft,
|
|
670
699
|
grantees,
|
|
671
700
|
sortedGrantees,
|
|
672
701
|
effectiveWorkspace,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObjectShareDialog.d.ts","sourceRoot":"","sources":["../../src/share/useObjectShareDialog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useObjectShareDialog.d.ts","sourceRoot":"","sources":["../../src/share/useObjectShareDialog.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,12 +100,29 @@ export function useObjectShareDialog({ target, onClose, onSummaryChange, draft,
|
|
|
100
100
|
const isRowAboveCaller = useCallback((grantee) => state.callerLevel !== undefined &&
|
|
101
101
|
grantee.directLevel !== undefined &&
|
|
102
102
|
levelsAbove(state.callerLevel).includes(grantee.directLevel), [state.callerLevel]);
|
|
103
|
+
const coveredByWorkspacePermissionTooltip = intl.formatMessage(objectShareMessages.granteeCoveredByWorkspacePermission);
|
|
103
104
|
const aboveCallerUserTooltip = intl.formatMessage(objectShareMessages.granteeAboveCallerUser);
|
|
104
105
|
const aboveCallerGroupTooltip = intl.formatMessage(objectShareMessages.granteeAboveCallerGroup);
|
|
105
|
-
const
|
|
106
|
-
const rowDisabledLevels = useCallback((grantee) => {
|
|
106
|
+
const rowLock = useCallback((grantee) => {
|
|
107
107
|
if (isRowAboveCaller(grantee)) {
|
|
108
|
-
|
|
108
|
+
const tooltip = grantee.kind === "group" ? aboveCallerGroupTooltip : aboveCallerUserTooltip;
|
|
109
|
+
return { levels: [...ALL_LEVELS], tooltip };
|
|
110
|
+
}
|
|
111
|
+
if (state.roleLockedGranteeId === grantee.id) {
|
|
112
|
+
return { levels: levelsBelow("EDIT"), tooltip: coveredByWorkspacePermissionTooltip };
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}, [
|
|
116
|
+
isRowAboveCaller,
|
|
117
|
+
state.roleLockedGranteeId,
|
|
118
|
+
aboveCallerUserTooltip,
|
|
119
|
+
aboveCallerGroupTooltip,
|
|
120
|
+
coveredByWorkspacePermissionTooltip,
|
|
121
|
+
]);
|
|
122
|
+
const rowDisabledLevels = useCallback((grantee) => {
|
|
123
|
+
const lock = rowLock(grantee);
|
|
124
|
+
if (lock) {
|
|
125
|
+
return lock.levels;
|
|
109
126
|
}
|
|
110
127
|
const self = state.selfManagedGranteeId === grantee.id ? (state.selfManagedDisabledLevels ?? []) : [];
|
|
111
128
|
// Self caps levels ABOVE the row and coverage disables those BELOW, so those
|
|
@@ -118,16 +135,11 @@ export function useObjectShareDialog({ target, onClose, onSummaryChange, draft,
|
|
|
118
135
|
]),
|
|
119
136
|
];
|
|
120
137
|
return merged.length > 0 ? merged : undefined;
|
|
121
|
-
}, [
|
|
122
|
-
isRowAboveCaller,
|
|
123
|
-
state.selfManagedGranteeId,
|
|
124
|
-
state.selfManagedDisabledLevels,
|
|
125
|
-
state.grantableDisabledLevels,
|
|
126
|
-
]);
|
|
138
|
+
}, [rowLock, state.selfManagedGranteeId, state.selfManagedDisabledLevels, state.grantableDisabledLevels]);
|
|
127
139
|
const rowDisabledLevelTooltips = useCallback((grantee) => {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return Object.fromEntries(
|
|
140
|
+
const lock = rowLock(grantee);
|
|
141
|
+
if (lock) {
|
|
142
|
+
return Object.fromEntries(lock.levels.map((level) => [level, lock.tooltip]));
|
|
131
143
|
}
|
|
132
144
|
const covered = inheritedCoveredLevels(grantee);
|
|
133
145
|
if (covered.length === 0) {
|
|
@@ -138,10 +150,10 @@ export function useObjectShareDialog({ target, onClose, onSummaryChange, draft,
|
|
|
138
150
|
map[level] = inheritedCoveredTooltip;
|
|
139
151
|
}
|
|
140
152
|
return map;
|
|
141
|
-
}, [
|
|
142
|
-
const isRowRemoveDisabled = useCallback((grantee) => grantee.directLevel === undefined ||
|
|
153
|
+
}, [rowLock, inheritedCoveredTooltip]);
|
|
154
|
+
const isRowRemoveDisabled = useCallback((grantee) => grantee.directLevel === undefined || rowLock(grantee) !== undefined, [rowLock]);
|
|
143
155
|
const removeInheritedTooltip = intl.formatMessage(objectShareMessages.granteeRemoveInherited);
|
|
144
|
-
const rowRemoveDisabledTooltip = useCallback((grantee) =>
|
|
156
|
+
const rowRemoveDisabledTooltip = useCallback((grantee) => rowLock(grantee)?.tooltip ?? removeInheritedTooltip, [rowLock, removeInheritedTooltip]);
|
|
145
157
|
const grantLimitTooltip = intl.formatMessage(objectShareMessages.toastEscalationRefused);
|
|
146
158
|
// Only USER rows can be the caller's own, so a group row stays usable while the
|
|
147
159
|
// profile is unresolved.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-ext",
|
|
3
|
-
"version": "11.61.0-alpha.
|
|
3
|
+
"version": "11.61.0-alpha.5",
|
|
4
4
|
"description": "GoodData.UI SDK - Extensions",
|
|
5
5
|
"license": "LicenseRef-LICENSE",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -63,20 +63,20 @@
|
|
|
63
63
|
"ts-invariant": "0.10.3",
|
|
64
64
|
"tslib": "2.8.1",
|
|
65
65
|
"uuid": "11.1.1",
|
|
66
|
-
"@gooddata/sdk-backend-base": "11.61.0-alpha.
|
|
67
|
-
"@gooddata/sdk-
|
|
68
|
-
"@gooddata/sdk-
|
|
69
|
-
"@gooddata/sdk-
|
|
70
|
-
"@gooddata/sdk-ui": "11.61.0-alpha.
|
|
71
|
-
"@gooddata/sdk-ui-charts": "11.61.0-alpha.
|
|
72
|
-
"@gooddata/sdk-ui-
|
|
73
|
-
"@gooddata/sdk-ui-
|
|
74
|
-
"@gooddata/sdk-ui-
|
|
75
|
-
"@gooddata/sdk-ui-
|
|
76
|
-
"@gooddata/sdk-ui-
|
|
77
|
-
"@gooddata/sdk-ui-
|
|
78
|
-
"@gooddata/
|
|
79
|
-
"@gooddata/
|
|
66
|
+
"@gooddata/sdk-backend-base": "11.61.0-alpha.5",
|
|
67
|
+
"@gooddata/sdk-model": "11.61.0-alpha.5",
|
|
68
|
+
"@gooddata/sdk-backend-spi": "11.61.0-alpha.5",
|
|
69
|
+
"@gooddata/sdk-embedding": "11.61.0-alpha.5",
|
|
70
|
+
"@gooddata/sdk-ui": "11.61.0-alpha.5",
|
|
71
|
+
"@gooddata/sdk-ui-charts": "11.61.0-alpha.5",
|
|
72
|
+
"@gooddata/sdk-ui-filters": "11.61.0-alpha.5",
|
|
73
|
+
"@gooddata/sdk-ui-kit": "11.61.0-alpha.5",
|
|
74
|
+
"@gooddata/sdk-ui-geo": "11.61.0-alpha.5",
|
|
75
|
+
"@gooddata/sdk-ui-pivot": "11.61.0-alpha.5",
|
|
76
|
+
"@gooddata/sdk-ui-semantic-search": "11.61.0-alpha.5",
|
|
77
|
+
"@gooddata/sdk-ui-theme-provider": "11.61.0-alpha.5",
|
|
78
|
+
"@gooddata/sdk-ui-vis-commons": "11.61.0-alpha.5",
|
|
79
|
+
"@gooddata/util": "11.61.0-alpha.5"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@microsoft/api-documenter": "7.30.16",
|
|
@@ -120,12 +120,12 @@
|
|
|
120
120
|
"typescript": "7.0.2",
|
|
121
121
|
"vitest": "4.1.11",
|
|
122
122
|
"vitest-dom": "0.1.1",
|
|
123
|
-
"@gooddata/
|
|
124
|
-
"@gooddata/
|
|
125
|
-
"@gooddata/oxlint-config": "11.61.0-alpha.
|
|
126
|
-
"@gooddata/
|
|
127
|
-
"@gooddata/
|
|
128
|
-
"@gooddata/
|
|
123
|
+
"@gooddata/i18n-toolkit": "11.61.0-alpha.5",
|
|
124
|
+
"@gooddata/eslint-config": "11.61.0-alpha.5",
|
|
125
|
+
"@gooddata/oxlint-config": "11.61.0-alpha.5",
|
|
126
|
+
"@gooddata/sdk-backend-mockingbird": "11.61.0-alpha.5",
|
|
127
|
+
"@gooddata/stylelint-config": "11.61.0-alpha.5",
|
|
128
|
+
"@gooddata/reference-workspace": "11.61.0-alpha.5"
|
|
129
129
|
},
|
|
130
130
|
"peerDependencies": {
|
|
131
131
|
"react": "^18.0.0 || ^19.0.0",
|