@gooddata/sdk-ui-ext 11.52.0-alpha.6 → 11.52.0
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/esm/dataLoaders/InsightDataLoader.d.ts +6 -0
- package/esm/dataLoaders/InsightDataLoader.d.ts.map +1 -1
- package/esm/dataLoaders/InsightDataLoader.js +4 -1
- package/esm/dataLoaders/index.d.ts +13 -0
- package/esm/dataLoaders/index.d.ts.map +1 -1
- package/esm/dataLoaders/index.js +14 -0
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/insightView/InsightRenderer.d.ts +2 -5
- package/esm/insightView/InsightRenderer.d.ts.map +1 -1
- package/esm/insightView/InsightRenderer.js +1 -2
- package/esm/internal/components/pluggableVisualizations/mekko/PluggableMekko.d.ts +6 -1
- package/esm/internal/components/pluggableVisualizations/mekko/PluggableMekko.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/mekko/PluggableMekko.js +25 -4
- package/esm/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.d.ts.map +1 -1
- package/esm/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.js +0 -1
- package/esm/internal/translations/de-DE.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/de-DE.localization-bundle.js +2 -0
- package/esm/internal/translations/en-AU.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-AU.localization-bundle.js +2 -0
- package/esm/internal/translations/en-GB.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-GB.localization-bundle.js +2 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts +4 -0
- package/esm/internal/translations/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/en-US.localization-bundle.js +4 -0
- package/esm/internal/translations/es-419.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-419.localization-bundle.js +2 -0
- package/esm/internal/translations/es-ES.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/es-ES.localization-bundle.js +2 -0
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fi-FI.localization-bundle.js +2 -0
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-CA.localization-bundle.js +2 -0
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/fr-FR.localization-bundle.js +2 -0
- package/esm/internal/translations/id-ID.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/id-ID.localization-bundle.js +2 -0
- package/esm/internal/translations/it-IT.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/it-IT.localization-bundle.js +2 -0
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ja-JP.localization-bundle.js +2 -0
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ko-KR.localization-bundle.js +2 -0
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/nl-NL.localization-bundle.js +2 -0
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pl-PL.localization-bundle.js +2 -0
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-BR.localization-bundle.js +2 -0
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/pt-PT.localization-bundle.js +2 -0
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/ru-RU.localization-bundle.js +2 -0
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/sl-SI.localization-bundle.js +2 -0
- package/esm/internal/translations/th-TH.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/th-TH.localization-bundle.js +2 -0
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/tr-TR.localization-bundle.js +2 -0
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/uk-UA.localization-bundle.js +2 -0
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/vi-VN.localization-bundle.js +2 -0
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-HK.localization-bundle.js +2 -0
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hans.localization-bundle.js +2 -0
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts +2 -0
- package/esm/internal/translations/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/internal/translations/zh-Hant.localization-bundle.js +2 -0
- package/esm/notificationsPanel/Notification/Notification.d.ts.map +1 -1
- package/esm/notificationsPanel/Notification/Notification.js +6 -3
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.d.ts +3 -3
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.d.ts.map +1 -1
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetail.js +4 -4
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts +9 -3
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts.map +1 -1
- package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.js +4 -4
- package/esm/sdk-ui-ext.d.ts +13 -0
- package/esm/share/ObjectShareDialog.js +22 -6
- package/esm/share/messages.d.ts +7 -0
- package/esm/share/messages.d.ts.map +1 -1
- package/esm/share/messages.js +5 -0
- package/esm/share/objectShareController.helpers.d.ts +117 -17
- package/esm/share/objectShareController.helpers.d.ts.map +1 -1
- package/esm/share/objectShareController.helpers.js +181 -44
- package/esm/share/objectShareController.types.d.ts +34 -10
- package/esm/share/objectShareController.types.d.ts.map +1 -1
- package/esm/share/useAccessList.d.ts +6 -0
- package/esm/share/useAccessList.d.ts.map +1 -1
- package/esm/share/useAccessList.js +26 -6
- package/esm/share/useLabelScope.d.ts +46 -1
- package/esm/share/useLabelScope.d.ts.map +1 -1
- package/esm/share/useLabelScope.js +98 -6
- package/esm/share/useObjectShareController.d.ts.map +1 -1
- package/esm/share/useObjectShareController.js +213 -45
- package/esm/share/useObjectShareDialog.d.ts +7 -0
- package/esm/share/useObjectShareDialog.d.ts.map +1 -1
- package/esm/share/useObjectShareDialog.js +22 -2
- package/package.json +21 -21
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// (C) 2024-
|
|
2
|
+
// (C) 2024-2026 GoodData Corporation
|
|
3
3
|
import { useRef, useState } from "react";
|
|
4
4
|
import { defineMessages, useIntl } from "react-intl";
|
|
5
5
|
import { Overlay, UiButton, alignConfigToAlignPoint } from "@gooddata/sdk-ui-kit";
|
|
@@ -19,16 +19,16 @@ const messages = defineMessages({
|
|
|
19
19
|
/**
|
|
20
20
|
* @internal
|
|
21
21
|
*/
|
|
22
|
-
export function NotificationFiltersDetail({
|
|
22
|
+
export function NotificationFiltersDetail({ items }) {
|
|
23
23
|
const [isFiltersDialogOpen, setIsFiltersDialogOpen] = useState(false);
|
|
24
24
|
const intl = useIntl();
|
|
25
25
|
const ref = useRef(null);
|
|
26
26
|
const closeFiltersDialog = () => setIsFiltersDialogOpen(false);
|
|
27
27
|
const toggleFiltersDialog = () => setIsFiltersDialogOpen((x) => !x);
|
|
28
|
-
return (_jsxs(_Fragment, { children: [
|
|
28
|
+
return (_jsxs(_Fragment, { children: [items.length > 0 ? (_jsx(UiButton, { ref: ref, onClick: (e) => {
|
|
29
29
|
e.stopPropagation();
|
|
30
30
|
toggleFiltersDialog();
|
|
31
31
|
}, onKeyDown: (e) => {
|
|
32
32
|
e.stopPropagation();
|
|
33
|
-
}, variant: "tertiary", size: "small", label: intl.formatMessage(messages.buttonLabel, { count:
|
|
33
|
+
}, variant: "tertiary", size: "small", label: intl.formatMessage(messages.buttonLabel, { count: items.length }) })) : null, isFiltersDialogOpen ? (_jsx(Overlay, { isModal: false, alignTo: ref.current, alignPoints: ALIGN_POINTS, closeOnEscape: true, closeOnOutsideClick: true, closeOnParentScroll: true, closeOnMouseDrag: false, onClose: closeFiltersDialog, children: _jsx(NotificationFiltersDetailDialog, { items: items, onClose: closeFiltersDialog }) })) : null] }));
|
|
34
34
|
}
|
package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export type AlertItem = {
|
|
5
|
+
title?: string;
|
|
6
|
+
value: string;
|
|
7
|
+
};
|
|
2
8
|
/**
|
|
3
9
|
* @internal
|
|
4
10
|
*/
|
|
5
11
|
export interface INotificationFiltersDetailDialogProps {
|
|
6
|
-
|
|
12
|
+
items: AlertItem[];
|
|
7
13
|
onClose: () => void;
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
16
|
* @internal
|
|
11
17
|
*/
|
|
12
|
-
export declare function NotificationFiltersDetailDialog({
|
|
18
|
+
export declare function NotificationFiltersDetailDialog({ items, onClose }: INotificationFiltersDetailDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
13
19
|
//# sourceMappingURL=NotificationFiltersDetailDialog.d.ts.map
|
package/esm/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationFiltersDetailDialog.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NotificationFiltersDetailDialog.d.ts","sourceRoot":"","sources":["../../../src/notificationsPanel/NotificationFiltersDetail/NotificationFiltersDetailDialog.tsx"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qCAAqC;IAClD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,qCAAqC,2CAmBxG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// (C) 2024-
|
|
2
|
+
// (C) 2024-2026 GoodData Corporation
|
|
3
3
|
import { defineMessages, useIntl } from "react-intl";
|
|
4
4
|
import { bem } from "../bem.js";
|
|
5
5
|
import { DetailsDialog } from "../components/DetailsDialog.js";
|
|
@@ -12,9 +12,9 @@ const messages = defineMessages({
|
|
|
12
12
|
/**
|
|
13
13
|
* @internal
|
|
14
14
|
*/
|
|
15
|
-
export function NotificationFiltersDetailDialog({
|
|
15
|
+
export function NotificationFiltersDetailDialog({ items, onClose }) {
|
|
16
16
|
const intl = useIntl();
|
|
17
|
-
return (_jsx(DetailsDialog, { title: `${intl.formatMessage(messages.title)} (${
|
|
18
|
-
_jsx("div", { className: e("label"), children: title }), _jsx("div", { className: e("values"), children:
|
|
17
|
+
return (_jsx(DetailsDialog, { title: `${intl.formatMessage(messages.title)} (${items.length})`, content: _jsx("div", { className: b(), children: items.map(({ title, value }, idx) => (_jsxs("div", { className: e("item"), children: [
|
|
18
|
+
_jsx("div", { className: e("label"), children: title }), _jsx("div", { className: e("values"), children: value })
|
|
19
19
|
] }, idx))) }), onClose: onClose }));
|
|
20
20
|
}
|
package/esm/sdk-ui-ext.d.ts
CHANGED
|
@@ -231,6 +231,19 @@ export declare type AutomationsType = Extract<AutomationType, "alert" | "schedul
|
|
|
231
231
|
|
|
232
232
|
export { ChartInlineVisualizationType }
|
|
233
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Clears the cached definition of a single insight used by the InsightView components.
|
|
236
|
+
*
|
|
237
|
+
* @remarks
|
|
238
|
+
* Use this after an insight has been edited, so that the next render fetches the new
|
|
239
|
+
* definition. To clear every cache at once, use {@link clearInsightViewCaches}.
|
|
240
|
+
*
|
|
241
|
+
* @param workspace - the workspace the insight belongs to
|
|
242
|
+
* @param ref - the ref of the insight whose cached definition should be dropped
|
|
243
|
+
* @public
|
|
244
|
+
*/
|
|
245
|
+
export declare function clearInsightViewCacheForInsight(workspace: string, ref: ObjRef): void;
|
|
246
|
+
|
|
234
247
|
/**
|
|
235
248
|
* Clears all the caches used by the InsightView components.
|
|
236
249
|
*
|
|
@@ -40,7 +40,7 @@ export function ObjectShareDialog(props) {
|
|
|
40
40
|
/** The dialog session — mounted only while open, so its state cannot outlive a close. */
|
|
41
41
|
function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChange, labels, labelsLoading, labelsError, }) {
|
|
42
42
|
const intl = useIntl();
|
|
43
|
-
const { state, actions, isShareViewOpen, isAddGranteeOpen, isGeneralAccessConfirmOpen, isSelfRestrictConfirmOpen, isMutable, isLoading, workspaceDisabledLevels, rowDisabledLevels, onClose: closeDialog, onRowPermissionChange, onRowRemove, onSelfRestrictCancel, onSelfRestrictConfirm, } = useObjectShareDialog({
|
|
43
|
+
const { state, actions, isShareViewOpen, isAddGranteeOpen, isGeneralAccessConfirmOpen, isSelfRestrictConfirmOpen, isMutable, isLoading, workspaceDisabledLevels, rowDisabledLevels, isRowRemoveDisabled, rowRemoveDisabledTooltip, onClose: closeDialog, onRowPermissionChange, onRowRemove, onSelfRestrictCancel, onSelfRestrictConfirm, } = useObjectShareDialog({
|
|
44
44
|
target,
|
|
45
45
|
onClose,
|
|
46
46
|
onSummaryChange,
|
|
@@ -55,10 +55,23 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
|
|
|
55
55
|
kind: l.isPrimary ? "primary" : undefined,
|
|
56
56
|
locked: l.isPrimary,
|
|
57
57
|
}));
|
|
58
|
+
// Per row: a label the grantee only inherits is locked too. It is in their scope
|
|
59
|
+
// (so it shows checked, as the granting workspace shows it) but this workspace
|
|
60
|
+
// holds no grant on it to revoke — the same rule that disables Remove access for a
|
|
61
|
+
// grantee whose object access is inherited-only.
|
|
62
|
+
const rowLabelItems = (granteeId) => {
|
|
63
|
+
const inherited = state.inheritedLabelIdsByGrantee[granteeId];
|
|
64
|
+
if (!inherited?.length) {
|
|
65
|
+
return labelItems;
|
|
66
|
+
}
|
|
67
|
+
return labelItems.map((item) => item.locked || !inherited.includes(item.id) ? item : { ...item, locked: true });
|
|
68
|
+
};
|
|
58
69
|
const toGranteeRow = (g) => {
|
|
59
70
|
const display = granteeDisplayPair(g);
|
|
60
|
-
//
|
|
61
|
-
//
|
|
71
|
+
// Row policy — levels the caller may not pick (their own sole grant, or a
|
|
72
|
+
// level an inherited grant already exceeds) and whether there is a grant in
|
|
73
|
+
// this workspace to remove — is decided in the hook, with the matching
|
|
74
|
+
// tooltips; this only renders it.
|
|
62
75
|
const disabledLevels = rowDisabledLevels(g);
|
|
63
76
|
return {
|
|
64
77
|
id: g.id,
|
|
@@ -68,9 +81,9 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
|
|
|
68
81
|
: display.name,
|
|
69
82
|
email: display.email,
|
|
70
83
|
isPending: g.pending !== undefined,
|
|
71
|
-
controls: (_jsx(UiGranteeRowControls, { labels:
|
|
84
|
+
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, disabledTooltip: disabledLevels
|
|
72
85
|
? intl.formatMessage(objectShareMessages.selfRestrictWarning)
|
|
73
|
-
: undefined,
|
|
86
|
+
: undefined, isRemoveDisabled: isRowRemoveDisabled(g), removeDisabledTooltip: rowRemoveDisabledTooltip,
|
|
74
87
|
// Disabled while the row's own write is saving, while mutations are
|
|
75
88
|
// gated (unresolved label scope would orphan real per-label grants),
|
|
76
89
|
// and while a sole row's self identity is unknown.
|
|
@@ -125,7 +138,10 @@ function ObjectShareDialogSession({ target, objectTitle, onClose, onSummaryChang
|
|
|
125
138
|
// On a failed load the empty grantee list + RESTRICTED radio are a
|
|
126
139
|
// placeholder, not the real policy — show why instead of letting it
|
|
127
140
|
// read as "no one has access".
|
|
128
|
-
error: state.status === "error" ? intl.formatMessage(objectShareMessages.loadError) : undefined }), _jsx(UiAddGranteeDialog, { isOpen: isAddGranteeOpen, objectTitle: objectTitle, loadOptions: actions.loadOptions, selectedGrantees: state.pendingGrantees, onSelectedGranteesChange: actions.setPendingGrantees,
|
|
141
|
+
error: state.status === "error" ? intl.formatMessage(objectShareMessages.loadError) : undefined }), _jsx(UiAddGranteeDialog, { isOpen: isAddGranteeOpen, objectTitle: objectTitle, loadOptions: actions.loadOptions, selectedGrantees: state.pendingGrantees, onSelectedGranteesChange: actions.setPendingGrantees,
|
|
142
|
+
// Same checklist the grantee rows use, so a label scope can be narrowed
|
|
143
|
+
// while adding instead of only after the grant landed.
|
|
144
|
+
labels: labelItems, onBack: actions.closeAddGrantee, onClose: closeDialog, onCancel: actions.closeAddGrantee, onShare: () => {
|
|
129
145
|
void actions.confirmAddGrantees();
|
|
130
146
|
} }), _jsx(UiConfirmDialog, { isOpen: isGeneralAccessConfirmOpen, title: intl.formatMessage(state.pendingGeneralAccess === "RESTRICTED"
|
|
131
147
|
? objectShareMessages.confirmRestrictTitle
|
package/esm/share/messages.d.ts
CHANGED
|
@@ -40,6 +40,13 @@ export declare const objectShareMessages: {
|
|
|
40
40
|
workspaceLevelInherited: {
|
|
41
41
|
id: string;
|
|
42
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* Disabled-action tooltip on a grantee row's Remove access, for a grantee whose
|
|
45
|
+
* access is inherited only — there is no grant in this workspace to revoke.
|
|
46
|
+
*/
|
|
47
|
+
granteeRemoveInherited: {
|
|
48
|
+
id: string;
|
|
49
|
+
};
|
|
43
50
|
granteeYou: {
|
|
44
51
|
id: string;
|
|
45
52
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/share/messages.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;IAO5B;;;;OAIG;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWL,CAAC"}
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/share/messages.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;IAO5B;;;;OAIG;;;;IAEH;;;OAGG;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWL,CAAC"}
|
package/esm/share/messages.js
CHANGED
|
@@ -26,6 +26,11 @@ export const objectShareMessages = defineMessages({
|
|
|
26
26
|
* below an inherited workspace-wide grant, which they could never lower.
|
|
27
27
|
*/
|
|
28
28
|
workspaceLevelInherited: { id: "objectShare.workspaceLevel.inherited" },
|
|
29
|
+
/**
|
|
30
|
+
* Disabled-action tooltip on a grantee row's Remove access, for a grantee whose
|
|
31
|
+
* access is inherited only — there is no grant in this workspace to revoke.
|
|
32
|
+
*/
|
|
33
|
+
granteeRemoveInherited: { id: "objectShare.granteeRemove.inherited" },
|
|
29
34
|
granteeYou: { id: "objectShare.grantee.you" },
|
|
30
35
|
adminTagLabel: { id: "objectShare.adminTag.label" },
|
|
31
36
|
adminTagTooltip: { id: "objectShare.adminTag.tooltip" },
|
|
@@ -58,13 +58,57 @@ export declare function directLevel(permissions: readonly string[]): ObjectShare
|
|
|
58
58
|
export declare function levelsAbove(level: ObjectSharePermissionLevel | undefined): ObjectSharePermissionLevel[];
|
|
59
59
|
/** Levels strictly below the given one, e.g. for disabling levels an inherited grant already exceeds. */
|
|
60
60
|
export declare function levelsBelow(level: ObjectSharePermissionLevel): ObjectSharePermissionLevel[];
|
|
61
|
+
/** The stronger of two levels; undefined only when both are. */
|
|
62
|
+
export declare function maxLevel(a: ObjectSharePermissionLevel | undefined, b: ObjectSharePermissionLevel | undefined): ObjectSharePermissionLevel | undefined;
|
|
61
63
|
/**
|
|
62
|
-
* The
|
|
63
|
-
* grant already covers it. Set
|
|
64
|
-
* a
|
|
65
|
-
*
|
|
64
|
+
* The inherited permission to surface as a warning, or undefined when the direct
|
|
65
|
+
* grant already covers it. Set when the grantee *inherits* a level (via a group or
|
|
66
|
+
* a parent workspace) that the direct grant does not reach — including the
|
|
67
|
+
* inherited-only case (`direct` undefined), where the whole displayed level comes
|
|
68
|
+
* from inheritance.
|
|
66
69
|
*/
|
|
67
|
-
export declare function effectivePermissionAbove(direct: ObjectSharePermissionLevel, inheritedLevel: ObjectSharePermissionLevel | undefined): ObjectSharePermissionLevel | undefined;
|
|
70
|
+
export declare function effectivePermissionAbove(direct: ObjectSharePermissionLevel | undefined, inheritedLevel: ObjectSharePermissionLevel | undefined): ObjectSharePermissionLevel | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Whether picking `level` for this grantee would change the level they EFFECTIVELY hold.
|
|
73
|
+
*
|
|
74
|
+
* The permission menu shows the effective level, so a pick is only meaningful if it moves
|
|
75
|
+
* that: under an inherited EDIT, picking SHARE or VIEW cannot lower anything, it would just
|
|
76
|
+
* rewrite the grant made here where nobody can see it. Conversely a direct EDIT under an
|
|
77
|
+
* inherited SHARE CAN be lowered to VIEW, because the effective level then drops to SHARE.
|
|
78
|
+
*
|
|
79
|
+
* The single source of this rule. Everything that reacts to a pick must agree: the
|
|
80
|
+
* controller refuses a pick that changes nothing, so any confirm staged for one would ask
|
|
81
|
+
* the user to approve a change that then silently does not happen.
|
|
82
|
+
*
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
export declare function changesEffectiveLevel(grantee: Pick<IObjectShareGrantee, "level" | "inheritedLevel">, level: ObjectSharePermissionLevel): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Whether revoking this grantee's direct grant would change the level they EFFECTIVELY
|
|
88
|
+
* hold. False when inheritance alone already covers the displayed level: the revoke still
|
|
89
|
+
* removes the local grant, but restricts nothing the grantee can do — so no
|
|
90
|
+
* "Restrict your access?" confirm may be staged for it ({@link changesEffectiveLevel}'s
|
|
91
|
+
* rule, applied to removal).
|
|
92
|
+
*
|
|
93
|
+
* @internal
|
|
94
|
+
*/
|
|
95
|
+
export declare function removalChangesEffectiveLevel(grantee: Pick<IObjectShareGrantee, "level" | "inheritedLevel">): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* The row fields to apply when THIS workspace's direct grant moves to `direct`:
|
|
98
|
+
* the displayed level recomposes against whatever is inherited, so a re-grade below
|
|
99
|
+
* an inherited level cannot make the row understate the grantee's real access.
|
|
100
|
+
*
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
export declare function withDirectLevel(grantee: IObjectShareGrantee, direct: ObjectSharePermissionLevel): IObjectShareGrantee;
|
|
104
|
+
/**
|
|
105
|
+
* The row a grantee falls back to once their direct grant is revoked but inherited
|
|
106
|
+
* access remains — the row survives the removal as inherited-only rather than
|
|
107
|
+
* disappearing and reappearing on the next load.
|
|
108
|
+
*
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
export declare function withoutDirectGrant(grantee: IObjectShareGrantee, inheritedLevel: ObjectSharePermissionLevel): IObjectShareGrantee;
|
|
68
112
|
export declare function granteesFromAccessList(list: IObjectAccessList | undefined): IObjectShareGrantee[];
|
|
69
113
|
/**
|
|
70
114
|
* A transient edit overlaid on a fetched grantee row (keyed by grantee id in
|
|
@@ -90,6 +134,17 @@ export type GranteeEdit = {
|
|
|
90
134
|
kind: "removed";
|
|
91
135
|
pending: boolean;
|
|
92
136
|
settled?: GranteeEdit;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Pending marker only — the row renders exactly as it stands. For a write that
|
|
140
|
+
* locks the row without changing its access (a label-scope edit), so nothing has
|
|
141
|
+
* to invent a level: reusing the `level` overlay would record the DISPLAYED level
|
|
142
|
+
* as the direct grant, and that level is the effective one.
|
|
143
|
+
*/
|
|
144
|
+
| {
|
|
145
|
+
kind: "locked";
|
|
146
|
+
pending: boolean;
|
|
147
|
+
settled?: GranteeEdit;
|
|
93
148
|
};
|
|
94
149
|
/**
|
|
95
150
|
* Transient edit of the all-workspace-users rule (general access + its level),
|
|
@@ -118,12 +173,18 @@ export declare function toGranularGrantee(kind: "user" | "group", granteeRef: Ob
|
|
|
118
173
|
/**
|
|
119
174
|
* The principal a label-scope reconcile applies to: a named user/group, or the
|
|
120
175
|
* implicit all-workspace-users rule (general access).
|
|
176
|
+
*
|
|
177
|
+
* `level` is the permission a label GRANT carries, so a label mirrors the level
|
|
178
|
+
* held on the object rather than always landing on VIEW. Defaults to VIEW when
|
|
179
|
+
* omitted; irrelevant for revokes, which write an empty permission set.
|
|
121
180
|
*/
|
|
122
|
-
export type LabelScopePrincipal = {
|
|
181
|
+
export type LabelScopePrincipal = ({
|
|
123
182
|
kind: "user" | "group";
|
|
124
183
|
granteeRef: ObjRef;
|
|
125
184
|
} | {
|
|
126
185
|
allWorkspaceUsers: true;
|
|
186
|
+
}) & {
|
|
187
|
+
level?: ObjectSharePermissionLevel;
|
|
127
188
|
};
|
|
128
189
|
export declare function granularGranteeFor(principal: LabelScopePrincipal, level: ObjectSharePermissionLevel | "none"): IGranularAccessGrantee;
|
|
129
190
|
/**
|
|
@@ -139,12 +200,42 @@ export declare function buildLabelMutations(principal: LabelScopePrincipal, desi
|
|
|
139
200
|
grantee: IGranularAccessGrantee;
|
|
140
201
|
}>;
|
|
141
202
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
203
|
+
* Pure: the per-label writes that re-grade `principal`'s EXISTING label scope to
|
|
204
|
+
* `principal.level`. Unlike {@link buildLabelMutations} this is not a set diff —
|
|
205
|
+
* the scope is unchanged and every in-scope label is rewritten — so it is what a
|
|
206
|
+
* permission-level change on the object needs to keep its labels in step. `labels` is
|
|
207
|
+
* the permissionable set, so every write targets a label that can take a grant.
|
|
208
|
+
*
|
|
209
|
+
* The primary label is deliberately EXCLUDED. Its access is implicit — {@link
|
|
210
|
+
* buildLabelMutations} never grants or revokes it — so a grant written here would be
|
|
211
|
+
* one nothing can take away: a later removal diffs the primary as unchanged and leaves
|
|
212
|
+
* the grantee holding the primary label after their object access is gone.
|
|
213
|
+
*/
|
|
214
|
+
export declare function buildLabelRegrades(principals: LabelScopePrincipal[], scopeLabelIds: ReadonlySet<string>, labels: IObjectShareLabel[]): Array<{
|
|
215
|
+
id: string;
|
|
216
|
+
ref: ObjRef;
|
|
217
|
+
grantees: IGranularAccessGrantee[];
|
|
218
|
+
}>;
|
|
219
|
+
/**
|
|
220
|
+
* One principal's label-scope move. Held per principal because grantees added in
|
|
221
|
+
* a single step each pick their own scope, so one desired set can't stand for the
|
|
222
|
+
* whole batch.
|
|
223
|
+
*
|
|
224
|
+
* @internal
|
|
146
225
|
*/
|
|
147
|
-
export
|
|
226
|
+
export interface ILabelScopeChange {
|
|
227
|
+
principal: LabelScopePrincipal;
|
|
228
|
+
desiredLabelIds: ReadonlySet<string>;
|
|
229
|
+
currentLabelIds: ReadonlySet<string>;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Multi-principal variant of {@link buildLabelMutations}, each principal moving its
|
|
233
|
+
* own scope: groups the per-label writes so each label is one write carrying every
|
|
234
|
+
* principal that changes on it. Keys on `label.id`, not the raw `ObjRef` — a Map
|
|
235
|
+
* keyed on ObjRef would key on object identity and fail to merge
|
|
236
|
+
* equal-but-distinct refs.
|
|
237
|
+
*/
|
|
238
|
+
export declare function buildLabelMutationsForScopes(changes: readonly ILabelScopeChange[], labels: IObjectShareLabel[]): Array<{
|
|
148
239
|
id: string;
|
|
149
240
|
ref: ObjRef;
|
|
150
241
|
grantees: IGranularAccessGrantee[];
|
|
@@ -154,11 +245,20 @@ export declare const NO_LABELS: IObjectShareLabel[];
|
|
|
154
245
|
/** Shared empty id-set for "no labels in scope" diffs. */
|
|
155
246
|
export declare const EMPTY_IDS: ReadonlySet<string>;
|
|
156
247
|
/**
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
248
|
+
* Where `granteeId`'s access to this object comes from, or `undefined` when they hold it
|
|
249
|
+
* at all. The two flags are INDEPENDENT: a grantee can hold a grant made here *and*
|
|
250
|
+
* inherit one from a group or a parent workspace, and both facts matter — `direct` says
|
|
251
|
+
* there is something here to revoke, `inherited` says access survives revoking it.
|
|
252
|
+
* Collapsing them to a single winner is what made a dual-granted label read as
|
|
253
|
+
* inaccessible once its local grant was revoked.
|
|
254
|
+
*
|
|
255
|
+
* Inspects the raw grants rather than `granteesFromAccessList`, which normalizes every
|
|
256
|
+
* listed user/group to a VIEW level even when it carries no permissions — so a
|
|
257
|
+
* revoked-but-still-listed entry would otherwise read as granted, mis-scoping a per-label
|
|
258
|
+
* checkbox to a label the grantee can't actually access.
|
|
162
259
|
*/
|
|
163
|
-
export declare function
|
|
260
|
+
export declare function granteeGrantIn(list: IObjectAccessList, id: string): {
|
|
261
|
+
direct: boolean;
|
|
262
|
+
inherited: boolean;
|
|
263
|
+
} | undefined;
|
|
164
264
|
//# sourceMappingURL=objectShareController.helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectShareController.helpers.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAId,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EACR,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,0BAA0B,EAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,qBAAqB,CAKvB;AAED,kHAAkH;AAClH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGvF;AAED,oHAAkH;AAClH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,qBAAqB,CAI9F;AAED,gGAA0F;AAC1F,wBAAgB,eAAe,CAC3B,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAQlC;AAED,wGAAsG;AACtG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAMjG;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAY5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAQ7F;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM9F;AAOD,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,0BAA0B,GAAG,SAAS,CAErG;AAED,iGAA+F;AAC/F,wBAAgB,WAAW,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAAG,0BAA0B,EAAE,CAEvG;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,KAAK,EAAE,0BAA0B,GAAG,0BAA0B,EAAE,CAE3F;AAED
|
|
1
|
+
{"version":3,"file":"objectShareController.helpers.d.ts","sourceRoot":"","sources":["../../src/share/objectShareController.helpers.ts"],"names":[],"mappings":"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"}
|