synapse-react-client 4.0.5 → 4.0.7
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/dist/SWC.index.d.ts +2 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +47 -41
- package/dist/SWC.index.js.map +1 -1
- package/dist/assets/DefaultColorfulPortalCardBackground.svg +50 -12
- package/dist/assets/DefaultColorfulPortalCardBackground.svg.js +4 -4
- package/dist/assets/DefaultColorfulPortalCardBackground.svg.js.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js +3 -4
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +2 -3
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.css +1 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.d.ts +8 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.d.ts.map +1 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js +21 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss +32 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss.js +14 -0
- package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss.js.map +1 -0
- package/dist/components/ColoredBulletListItem/index.d.ts +5 -0
- package/dist/components/ColoredBulletListItem/index.d.ts.map +1 -0
- package/dist/components/ColoredBulletListItem/index.js +6 -0
- package/dist/components/ColoredBulletListItem/index.js.map +1 -0
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +3 -4
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.d.ts +2 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.d.ts.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js +122 -43
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.d.ts +7 -0
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.d.ts.map +1 -0
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js +132 -0
- package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -0
- package/dist/components/DataGrid/DataGrid.d.ts +2 -0
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGrid.js +69 -67
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.d.ts +4 -0
- package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.js +47 -37
- package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +2 -3
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +209 -162
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +2 -3
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
- package/dist/components/DataGrid/hooks/useRemoteSelections.d.ts +16 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.d.ts.map +1 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.js +30 -0
- package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +6 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +78 -69
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.d.ts +3 -0
- package/dist/components/DataGrid/utils/getCellClassName.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js +21 -12
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.d.ts +15 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js +43 -0
- package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -0
- package/dist/components/DialogBase.d.ts +3 -1
- package/dist/components/DialogBase.d.ts.map +1 -1
- package/dist/components/DialogBase.js +75 -56
- package/dist/components/DialogBase.js.map +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js +2 -3
- package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +2 -3
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +2 -3
- package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +3 -4
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/HeaderCard.js +2 -3
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +168 -165
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +3 -4
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.d.ts +1 -0
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.d.ts.map +1 -1
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js +23 -16
- package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.d.ts +6 -1
- package/dist/components/SynapseTable/SynapseTable.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js +123 -93
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/TextField/TextField.css +1 -0
- package/dist/components/TextField/TextField.d.ts +2 -1
- package/dist/components/TextField/TextField.d.ts.map +1 -1
- package/dist/components/TextField/TextField.js +42 -28
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextField.module.scss +25 -0
- package/dist/components/TextField/TextField.module.scss.js +14 -0
- package/dist/components/TextField/TextField.module.scss.js.map +1 -0
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +2 -3
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +242 -240
- package/dist/components/index.js.map +1 -1
- package/dist/components/styled/HoverPopover.css +1 -1
- package/dist/components/styled/HoverPopover.d.ts.map +1 -1
- package/dist/components/styled/HoverPopover.js +6 -5
- package/dist/components/styled/HoverPopover.js.map +1 -1
- package/dist/components/styled/HoverPopover.module.scss +2 -1
- package/dist/components/styled/HoverPopover.module.scss.js +1 -1
- package/dist/components/styled/StyledFormControl.js +1 -1
- package/dist/components/styled/StyledFormControl.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +2 -3
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +2 -3
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/features/curator/GridPage/GridPage.js +2 -3
- package/dist/features/curator/GridPage/GridPage.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +2 -3
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +5 -2
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +46 -33
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +52 -27
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts +7 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +322 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.d.ts +7 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js +7 -7
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts +9 -5
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +79 -16
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts +12 -0
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +20 -0
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts +3 -3
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +54 -41
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +11 -4
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.d.ts +3 -0
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.js +7 -0
- package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -0
- package/dist/index.js +306 -304
- package/dist/index.js.map +1 -1
- package/dist/mocks/curation/mockCurationTask.d.ts +10 -0
- package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -0
- package/dist/mocks/curation/mockCurationTask.js +24 -0
- package/dist/mocks/curation/mockCurationTask.js.map +1 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +16 -0
- package/dist/synapse-client/SynapseClient.d.ts +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +3 -2
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +8 -3
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +22 -7
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +6 -3
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +62 -18
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.d.ts +17 -2
- package/dist/synapse-queries/grid/useGridSession.d.ts.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js +63 -30
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/index.js +103 -99
- package/dist/synapse-queries/team/index.js +18 -15
- package/dist/synapse-queries/team/useTeamMembers.d.ts +34 -0
- package/dist/synapse-queries/team/useTeamMembers.d.ts.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js +110 -69
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/types.d.ts +13 -0
- package/dist/synapse-queries/types.d.ts.map +1 -0
- package/dist/synapse-queries/types.js +2 -0
- package/dist/synapse-queries/types.js.map +1 -0
- package/dist/synapse-queries/user/index.js +12 -11
- package/dist/synapse-queries/user/useUserGroupHeader.d.ts +5 -0
- package/dist/synapse-queries/user/useUserGroupHeader.d.ts.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js +28 -21
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/theme/palette/Palettes.d.ts +2 -0
- package/dist/theme/palette/Palettes.d.ts.map +1 -1
- package/dist/theme/palette/Palettes.js +46 -40
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/hooks/useOverlay.d.ts +2 -2
- package/dist/utils/hooks/useOverlay.d.ts.map +1 -1
- package/dist/utils/hooks/useOverlay.js +41 -41
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/package.json +4 -4
- package/dist/assets/ArcusBioIcon.svg +0 -1
- package/dist/assets/ArcusBioIcon.svg.js +0 -7
- package/dist/assets/ArcusBioIcon.svg.js.map +0 -1
|
@@ -1,86 +1,165 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import * as
|
|
1
|
+
import { jsxs as D, Fragment as V, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import * as y from "../../synapse-client/SynapseClient.js";
|
|
3
3
|
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
|
|
4
4
|
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
|
|
5
5
|
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
|
|
6
|
-
import "@sage-bionetworks/synapse-types";
|
|
6
|
+
import { ACCESS_TYPE as a } from "@sage-bionetworks/synapse-types";
|
|
7
7
|
import "../../utils/functions/EntityTypeUtils.js";
|
|
8
8
|
import "../../utils/SynapseConstants.js";
|
|
9
9
|
import "lodash-es";
|
|
10
10
|
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
import { useGetRealmPrincipals as B } from "../../synapse-queries/realm/useRealmPrincipals.js";
|
|
12
|
+
import { useSynapseContext as O } from "../../utils/context/SynapseContext.js";
|
|
13
|
+
import { Stack as W, Alert as R } from "@mui/material";
|
|
14
|
+
import { useState as p } from "react";
|
|
15
|
+
import { useMutation as k } from "@tanstack/react-query";
|
|
16
|
+
import { ConfirmationDialog as F } from "../ConfirmationDialog/ConfirmationDialog.js";
|
|
17
|
+
import G from "../FullWidthAlert/FullWidthAlert.js";
|
|
18
|
+
import x from "../TextField/TextField.js";
|
|
19
|
+
import { ProjectVisibilityRadioGroup as M } from "./ProjectVisibilityRadioGroup.js";
|
|
20
|
+
function ce({
|
|
21
|
+
isShowingModal: I = !1,
|
|
22
|
+
onClose: T,
|
|
23
|
+
gotoPlace: C
|
|
20
24
|
}) {
|
|
21
|
-
const { accessToken:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const { accessToken: m } = O(), [d, g] = p(""), [A, P] = p(""), [c, w] = p("DISCOVERABLE"), [N, j] = p(!1), { data: S } = B(), l = S?.publicGroup, u = S?.authenticatedUsers, L = async (e) => {
|
|
26
|
+
if (c !== "PRIVATE")
|
|
27
|
+
try {
|
|
28
|
+
const i = await y.getEntityACL(
|
|
29
|
+
e,
|
|
30
|
+
m
|
|
31
|
+
), o = (f, h, v) => f.find((s) => s.principalId === h) ? f.map(
|
|
32
|
+
(s) => s.principalId === h ? {
|
|
33
|
+
...s,
|
|
34
|
+
accessType: [.../* @__PURE__ */ new Set([...s.accessType, ...v])]
|
|
35
|
+
} : s
|
|
36
|
+
) : [...f, { principalId: h, accessType: v }];
|
|
37
|
+
let t = [...i.resourceAccess];
|
|
38
|
+
c === "DISCOVERABLE" ? (l && (t = o(
|
|
39
|
+
t,
|
|
40
|
+
Number(l),
|
|
41
|
+
[a.READ]
|
|
42
|
+
)), u && (t = o(
|
|
43
|
+
t,
|
|
44
|
+
Number(u),
|
|
45
|
+
[a.READ]
|
|
46
|
+
))) : c === "PUBLIC" && (l && (t = o(
|
|
47
|
+
t,
|
|
48
|
+
Number(l),
|
|
49
|
+
[a.READ]
|
|
50
|
+
)), u && (t = o(
|
|
51
|
+
t,
|
|
52
|
+
Number(u),
|
|
53
|
+
[a.READ, a.DOWNLOAD]
|
|
54
|
+
))), await y.updateEntityACL(
|
|
55
|
+
{ ...i, resourceAccess: t },
|
|
56
|
+
m
|
|
57
|
+
);
|
|
58
|
+
} catch (i) {
|
|
59
|
+
const o = i;
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Project was created, but visibility could not be set: ${o.reason ?? o.message}`
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
}, r = k({
|
|
65
|
+
mutationFn: async () => {
|
|
66
|
+
const e = await y.createProject(
|
|
67
|
+
d,
|
|
68
|
+
A,
|
|
69
|
+
m
|
|
28
70
|
);
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
71
|
+
return await L(e.id), e;
|
|
72
|
+
},
|
|
73
|
+
onSuccess: (e) => {
|
|
74
|
+
j(!0), b();
|
|
75
|
+
const i = `/Synapse:${e.id}`;
|
|
76
|
+
C ? C(i) : window.location.href = i;
|
|
32
77
|
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
78
|
+
}), b = () => {
|
|
79
|
+
g(""), P(""), w("DISCOVERABLE"), r.reset(), T();
|
|
80
|
+
}, E = r.error ? r.error.reason ?? r.error.message : void 0;
|
|
81
|
+
return /* @__PURE__ */ D(V, { children: [
|
|
82
|
+
/* @__PURE__ */ n(
|
|
83
|
+
F,
|
|
37
84
|
{
|
|
38
|
-
open:
|
|
85
|
+
open: I,
|
|
39
86
|
title: "Create a new Project",
|
|
40
|
-
content: /* @__PURE__ */
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
-
|
|
87
|
+
content: /* @__PURE__ */ D(W, { gap: 2, children: [
|
|
88
|
+
/* @__PURE__ */ n(
|
|
89
|
+
x,
|
|
43
90
|
{
|
|
44
91
|
id: "projectInput",
|
|
45
92
|
label: "Project Name",
|
|
46
|
-
|
|
93
|
+
required: !0,
|
|
94
|
+
helperText: "Pick a unique title for your project",
|
|
95
|
+
value: d,
|
|
47
96
|
fullWidth: !0,
|
|
48
97
|
onChange: (e) => {
|
|
49
|
-
|
|
98
|
+
g(e.target.value);
|
|
50
99
|
},
|
|
51
100
|
inputProps: {
|
|
52
101
|
onKeyDown: (e) => {
|
|
53
|
-
e.key === "Enter" &&
|
|
102
|
+
e.key === "Enter" && d !== "" && r.mutate();
|
|
54
103
|
}
|
|
55
104
|
}
|
|
56
105
|
}
|
|
57
106
|
),
|
|
58
|
-
|
|
107
|
+
/* @__PURE__ */ n(
|
|
108
|
+
x,
|
|
109
|
+
{
|
|
110
|
+
id: "descriptionInput",
|
|
111
|
+
label: "Description",
|
|
112
|
+
helperText: "(optional)",
|
|
113
|
+
placeholder: "Brief description of this project",
|
|
114
|
+
multiline: !0,
|
|
115
|
+
minRows: 3,
|
|
116
|
+
value: A,
|
|
117
|
+
fullWidth: !0,
|
|
118
|
+
maxCharacterCount: 350,
|
|
119
|
+
onChange: (e) => {
|
|
120
|
+
P(e.target.value);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
/* @__PURE__ */ n(
|
|
125
|
+
M,
|
|
126
|
+
{
|
|
127
|
+
value: c,
|
|
128
|
+
onChange: w
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
E && /* @__PURE__ */ n(R, { severity: "error", children: E }),
|
|
132
|
+
/* @__PURE__ */ n(R, { severity: "warning", children: "You can update project visibility at any time in Project Tools, or manage access at a more granular level for individual files and folders." })
|
|
59
133
|
] }),
|
|
60
|
-
confirmButtonProps: {
|
|
134
|
+
confirmButtonProps: {
|
|
135
|
+
children: "Save",
|
|
136
|
+
disabled: r.isPending,
|
|
137
|
+
loading: r.isPending
|
|
138
|
+
},
|
|
61
139
|
onConfirm: () => {
|
|
62
|
-
|
|
140
|
+
r.mutate();
|
|
63
141
|
},
|
|
64
|
-
onCancel:
|
|
65
|
-
maxWidth: "
|
|
142
|
+
onCancel: b,
|
|
143
|
+
maxWidth: "sm",
|
|
144
|
+
dense: !0
|
|
66
145
|
}
|
|
67
146
|
),
|
|
68
|
-
/* @__PURE__ */
|
|
69
|
-
|
|
147
|
+
/* @__PURE__ */ n(
|
|
148
|
+
G,
|
|
70
149
|
{
|
|
71
|
-
show:
|
|
150
|
+
show: N,
|
|
72
151
|
variant: "info",
|
|
73
152
|
title: "Project created",
|
|
74
153
|
description: "",
|
|
75
154
|
autoCloseAfterDelayInSeconds: 10,
|
|
76
155
|
onClose: () => {
|
|
77
|
-
|
|
156
|
+
j(!1);
|
|
78
157
|
}
|
|
79
158
|
}
|
|
80
159
|
)
|
|
81
160
|
] });
|
|
82
161
|
}
|
|
83
162
|
export {
|
|
84
|
-
|
|
163
|
+
ce as CreateProjectModal
|
|
85
164
|
};
|
|
86
165
|
//# sourceMappingURL=CreateProjectModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateProjectModal.js","sources":["../../../src/components/CreateProjectModal/CreateProjectModal.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { Alert } from '@mui/material'\nimport { KeyboardEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport FullWidthAlert from '../FullWidthAlert/FullWidthAlert'\nimport TextField from '../TextField/TextField'\n\nexport type CreateProjectModalProps = {\n isShowingModal?: boolean\n onClose: () => void\n}\n\nexport function CreateProjectModal({\n isShowingModal = false,\n onClose,\n}: CreateProjectModalProps) {\n const { accessToken } = useSynapseContext()\n const [projectName, setProjectName] = useState<string>('')\n const [isShowingSuccessAlert, setIsShowingSuccessAlert] =\n useState<boolean>(false)\n const [errorMessage, setErrorMessage] = useState<string>()\n const hide = () => {\n setProjectName('')\n setErrorMessage(undefined)\n onClose()\n }\n const onCreateProject = async () => {\n try {\n const newProject = await SynapseClient.createProject(\n projectName,\n accessToken,\n )\n setIsShowingSuccessAlert(true)\n hide()\n window.location.href = `/Synapse:${newProject.id}`\n } catch (err) {\n if (err.reason) {\n setErrorMessage(err.reason)\n } else {\n setErrorMessage(err.toString())\n }\n }\n }\n\n const dialogContent = (\n <>\n <TextField\n id=\"projectInput\"\n label=\"Project Name\"\n value={projectName}\n fullWidth\n onChange={event => {\n setProjectName(event.target.value)\n }}\n inputProps={{\n onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n if (projectName !== '') {\n onCreateProject()\n }\n }\n },\n }}\n />\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n </>\n )\n\n return (\n <>\n <ConfirmationDialog\n open={isShowingModal}\n title=\"Create a new Project\"\n content={dialogContent}\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() => {\n void onCreateProject()\n }}\n onCancel={hide}\n maxWidth=\"md\"\n />\n <FullWidthAlert\n show={isShowingSuccessAlert}\n variant=\"info\"\n title=\"Project created\"\n description=\"\"\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setIsShowingSuccessAlert(false)\n }}\n />\n </>\n )\n}\n"],"names":["CreateProjectModal","isShowingModal","onClose","accessToken","useSynapseContext","projectName","setProjectName","useState","isShowingSuccessAlert","setIsShowingSuccessAlert","errorMessage","setErrorMessage","hide","onCreateProject","newProject","SynapseClient","err","jsxs","Fragment","jsx","ConfirmationDialog","TextField","event","Alert","FullWidthAlert"],"mappings":";;;;;;;;;;;;;;;;AAaO,SAASA,EAAmB;AAAA,EACjC,gBAAAC,IAAiB;AAAA,EACjB,SAAAC;AACF,GAA4B;AAC1B,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAClB,CAACC,GAAaC,CAAc,IAAIC,EAAiB,EAAE,GACnD,CAACC,GAAuBC,CAAwB,IACpDF,EAAkB,EAAK,GACnB,CAACG,GAAcC,CAAe,IAAIJ,EAAA,GAClCK,IAAO,MAAM;AACjB,IAAAN,EAAe,EAAE,GACjBK,EAAgB,MAAS,GACzBT,EAAA;AAAA,EACF,GACMW,IAAkB,YAAY;AAClC,QAAI;AACF,YAAMC,IAAa,MAAMC,EAAc;AAAA,QACrCV;AAAA,QACAF;AAAA,MAAA;AAEF,MAAAM,EAAyB,EAAI,GAC7BG,EAAA,GACA,OAAO,SAAS,OAAO,YAAYE,EAAW,EAAE;AAAA,IAClD,SAASE,GAAK;AACZ,MAAIA,EAAI,SACNL,EAAgBK,EAAI,MAAM,IAE1BL,EAAgBK,EAAI,UAAU;AAAA,IAElC;AAAA,EACF;AA0BA,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAMnB;AAAA,QACN,OAAM;AAAA,QACN,SA5BJ,gBAAAgB,EAAAC,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,OAAM;AAAA,cACN,OAAOhB;AAAA,cACP,WAAS;AAAA,cACT,UAAU,CAAAiB,MAAS;AACjB,gBAAAhB,EAAegB,EAAM,OAAO,KAAK;AAAA,cACnC;AAAA,cACA,YAAY;AAAA,gBACV,WAAW,CAACA,MAA2C;AACrD,kBAAIA,EAAM,QAAQ,WACZjB,MAAgB,MAClBQ,EAAA;AAAA,gBAGN;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,UAEDH,KAAgB,gBAAAS,EAACI,GAAA,EAAM,UAAS,SAAS,UAAAb,EAAA,CAAa;AAAA,QAAA,GACzD;AAAA,QASI,oBAAoB,EAAE,UAAU,OAAA;AAAA,QAChC,WAAW,MAAM;AACf,UAAKG,EAAA;AAAA,QACP;AAAA,QACA,UAAUD;AAAA,QACV,UAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAEX,gBAAAO;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,MAAMhB;AAAA,QACN,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,aAAY;AAAA,QACZ,8BAA8B;AAAA,QAC9B,SAAS,MAAM;AACb,UAAAC,EAAyB,EAAK;AAAA,QAChC;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"CreateProjectModal.js","sources":["../../../src/components/CreateProjectModal/CreateProjectModal.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetRealmPrincipals } from '@/synapse-queries/realm/useRealmPrincipals'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { Alert, Stack } from '@mui/material'\nimport { ACCESS_TYPE } from '@sage-bionetworks/synapse-types'\nimport { KeyboardEvent, useState } from 'react'\nimport { useMutation } from '@tanstack/react-query'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport FullWidthAlert from '../FullWidthAlert/FullWidthAlert'\nimport TextField from '../TextField/TextField'\nimport {\n ProjectVisibility,\n ProjectVisibilityRadioGroup,\n} from './ProjectVisibilityRadioGroup'\n\nexport type CreateProjectModalProps = {\n isShowingModal?: boolean\n onClose: () => void\n gotoPlace?: (href: string) => void\n}\n\nexport function CreateProjectModal({\n isShowingModal = false,\n onClose,\n gotoPlace,\n}: CreateProjectModalProps) {\n const { accessToken } = useSynapseContext()\n const [projectName, setProjectName] = useState<string>('')\n const [description, setDescription] = useState<string>('')\n const [visibility, setVisibility] =\n useState<ProjectVisibility>('DISCOVERABLE')\n const [isShowingSuccessAlert, setIsShowingSuccessAlert] =\n useState<boolean>(false)\n\n const { data: realmPrincipals } = useGetRealmPrincipals()\n const publicGroupId = realmPrincipals?.publicGroup\n const authenticatedUsersId = realmPrincipals?.authenticatedUsers\n\n const applyVisibilityAcl = async (projectId: string): Promise<void> => {\n if (visibility === 'PRIVATE') {\n return\n }\n try {\n const currentAcl = await SynapseClient.getEntityACL(\n projectId,\n accessToken,\n )\n\n const upsertAccessTypes = (\n entries: typeof currentAcl.resourceAccess,\n principalId: number,\n accessTypes: ACCESS_TYPE[],\n ): typeof currentAcl.resourceAccess => {\n const existing = entries.find(e => e.principalId === principalId)\n if (existing) {\n return entries.map(e =>\n e.principalId === principalId\n ? {\n ...e,\n accessType: [...new Set([...e.accessType, ...accessTypes])],\n }\n : e,\n )\n }\n return [...entries, { principalId, accessType: accessTypes }]\n }\n\n let newResourceAccess = [...currentAcl.resourceAccess]\n\n if (visibility === 'DISCOVERABLE') {\n if (publicGroupId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(publicGroupId),\n [ACCESS_TYPE.READ],\n )\n }\n if (authenticatedUsersId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(authenticatedUsersId),\n [ACCESS_TYPE.READ],\n )\n }\n } else if (visibility === 'PUBLIC') {\n if (publicGroupId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(publicGroupId),\n [ACCESS_TYPE.READ],\n )\n }\n if (authenticatedUsersId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(authenticatedUsersId),\n [ACCESS_TYPE.READ, ACCESS_TYPE.DOWNLOAD],\n )\n }\n }\n\n await SynapseClient.updateEntityACL(\n { ...currentAcl, resourceAccess: newResourceAccess },\n accessToken,\n )\n } catch (e) {\n const err = e as SynapseClientError\n throw new Error(\n `Project was created, but visibility could not be set: ${\n err.reason ?? err.message\n }`,\n )\n }\n }\n\n const createProjectMutation = useMutation({\n mutationFn: async () => {\n const newProject = await SynapseClient.createProject(\n projectName,\n description,\n accessToken,\n )\n await applyVisibilityAcl(newProject.id!)\n return newProject\n },\n onSuccess: newProject => {\n setIsShowingSuccessAlert(true)\n hide()\n const href = `/Synapse:${newProject.id}`\n if (gotoPlace) {\n gotoPlace(href)\n } else {\n window.location.href = href\n }\n },\n })\n\n const hide = () => {\n setProjectName('')\n setDescription('')\n setVisibility('DISCOVERABLE')\n createProjectMutation.reset()\n onClose()\n }\n\n const errorMessage = createProjectMutation.error\n ? (createProjectMutation.error as SynapseClientError).reason ??\n createProjectMutation.error.message\n : undefined\n\n const dialogContent = (\n <Stack gap={2}>\n <TextField\n id=\"projectInput\"\n label=\"Project Name\"\n required\n helperText=\"Pick a unique title for your project\"\n value={projectName}\n fullWidth\n onChange={event => {\n setProjectName(event.target.value)\n }}\n inputProps={{\n onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n if (projectName !== '') {\n createProjectMutation.mutate()\n }\n }\n },\n }}\n />\n <TextField\n id=\"descriptionInput\"\n label=\"Description\"\n helperText=\"(optional)\"\n placeholder=\"Brief description of this project\"\n multiline\n minRows={3}\n value={description}\n fullWidth\n maxCharacterCount={350}\n onChange={event => {\n setDescription(event.target.value)\n }}\n />\n <ProjectVisibilityRadioGroup\n value={visibility}\n onChange={setVisibility}\n />\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n <Alert severity=\"warning\">\n You can update project visibility at any time in Project Tools, or\n manage access at a more granular level for individual files and folders.\n </Alert>\n </Stack>\n )\n\n return (\n <>\n <ConfirmationDialog\n open={isShowingModal}\n title=\"Create a new Project\"\n content={dialogContent}\n confirmButtonProps={{\n children: 'Save',\n disabled: createProjectMutation.isPending,\n loading: createProjectMutation.isPending,\n }}\n onConfirm={() => {\n createProjectMutation.mutate()\n }}\n onCancel={hide}\n maxWidth=\"sm\"\n dense\n />\n <FullWidthAlert\n show={isShowingSuccessAlert}\n variant=\"info\"\n title=\"Project created\"\n description=\"\"\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setIsShowingSuccessAlert(false)\n }}\n />\n </>\n )\n}\n"],"names":["CreateProjectModal","isShowingModal","onClose","gotoPlace","accessToken","useSynapseContext","projectName","setProjectName","useState","description","setDescription","visibility","setVisibility","isShowingSuccessAlert","setIsShowingSuccessAlert","realmPrincipals","useGetRealmPrincipals","publicGroupId","authenticatedUsersId","applyVisibilityAcl","projectId","currentAcl","SynapseClient","upsertAccessTypes","entries","principalId","accessTypes","e","newResourceAccess","ACCESS_TYPE","err","createProjectMutation","useMutation","newProject","hide","href","errorMessage","jsxs","Fragment","jsx","ConfirmationDialog","Stack","TextField","event","ProjectVisibilityRadioGroup","Alert","FullWidthAlert"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type ProjectVisibility = 'PRIVATE' | 'DISCOVERABLE' | 'PUBLIC' | 'OPEN';
|
|
2
|
+
export type ProjectVisibilityRadioGroupProps = {
|
|
3
|
+
value: ProjectVisibility;
|
|
4
|
+
onChange: (value: ProjectVisibility) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare function ProjectVisibilityRadioGroup({ value, onChange, }: ProjectVisibilityRadioGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=ProjectVisibilityRadioGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectVisibilityRadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/CreateProjectModal/ProjectVisibilityRadioGroup.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAA;AAqD9E,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC7C,CAAA;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,KAAK,EACL,QAAQ,GACT,EAAE,gCAAgC,2CA6ElC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { jsxs as l, jsx as i, Fragment as s } from "react/jsx-runtime";
|
|
2
|
+
import { FormControl as d, Typography as a, RadioGroup as c, FormControlLabel as p, Box as t, Chip as b, Radio as x } from "@mui/material";
|
|
3
|
+
import h from "../IconSvg/IconSvg.js";
|
|
4
|
+
const m = [
|
|
5
|
+
{
|
|
6
|
+
value: "PRIVATE",
|
|
7
|
+
label: "Private",
|
|
8
|
+
chipText: "Invisible",
|
|
9
|
+
description: "Only you and people you invite can see this project exists. Others with the link will see an error."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
value: "DISCOVERABLE",
|
|
13
|
+
label: "Discoverable",
|
|
14
|
+
chipText: "Visible metadata",
|
|
15
|
+
description: "Anyone can find and view this project. Data download is not allowed."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
value: "PUBLIC",
|
|
19
|
+
label: "Public",
|
|
20
|
+
chipText: "Visible metadata, registered download",
|
|
21
|
+
description: "Anyone can find and view this project. Registered Synapse users can download data."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
value: "OPEN",
|
|
25
|
+
label: "Open",
|
|
26
|
+
chipText: "Fully visible, anonymous download",
|
|
27
|
+
description: "Anyone can find and view this project and download its data.",
|
|
28
|
+
note: "Currently available upon request for non-sensitive data.",
|
|
29
|
+
disabled: !0
|
|
30
|
+
}
|
|
31
|
+
], y = {
|
|
32
|
+
PRIVATE: "privateVisibility",
|
|
33
|
+
DISCOVERABLE: "visibility",
|
|
34
|
+
PUBLIC: "publicVisibility",
|
|
35
|
+
OPEN: "openVisibility"
|
|
36
|
+
};
|
|
37
|
+
function f({
|
|
38
|
+
value: n,
|
|
39
|
+
onChange: r
|
|
40
|
+
}) {
|
|
41
|
+
return /* @__PURE__ */ l(d, { component: "fieldset", children: [
|
|
42
|
+
/* @__PURE__ */ i(a, { variant: "smallText2", component: "legend", sx: { mb: 1, pb: 1 }, children: "Visibility" }),
|
|
43
|
+
/* @__PURE__ */ i(
|
|
44
|
+
c,
|
|
45
|
+
{
|
|
46
|
+
sx: { mt: 1 },
|
|
47
|
+
value: n,
|
|
48
|
+
onChange: (e, o) => r(o),
|
|
49
|
+
children: m.map((e) => /* @__PURE__ */ i(
|
|
50
|
+
p,
|
|
51
|
+
{
|
|
52
|
+
value: e.value,
|
|
53
|
+
disabled: e.disabled,
|
|
54
|
+
sx: {
|
|
55
|
+
alignItems: "flex-start",
|
|
56
|
+
mb: 1,
|
|
57
|
+
opacity: e.disabled ? 0.5 : 1
|
|
58
|
+
},
|
|
59
|
+
control: /* @__PURE__ */ i(x, { sx: { pt: "2px" } }),
|
|
60
|
+
label: /* @__PURE__ */ l(t, { sx: { display: "flex", alignItems: "flex-start", gap: 1 }, children: [
|
|
61
|
+
/* @__PURE__ */ i(
|
|
62
|
+
h,
|
|
63
|
+
{
|
|
64
|
+
icon: y[e.value],
|
|
65
|
+
wrap: !1,
|
|
66
|
+
sx: { mt: "2px", flexShrink: 0 }
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ l(t, { children: [
|
|
70
|
+
/* @__PURE__ */ l(
|
|
71
|
+
t,
|
|
72
|
+
{
|
|
73
|
+
sx: {
|
|
74
|
+
display: "flex",
|
|
75
|
+
alignItems: "center",
|
|
76
|
+
gap: 1,
|
|
77
|
+
flexWrap: "wrap"
|
|
78
|
+
},
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ i(
|
|
81
|
+
a,
|
|
82
|
+
{
|
|
83
|
+
variant: "body1",
|
|
84
|
+
component: "span",
|
|
85
|
+
fontWeight: "bold",
|
|
86
|
+
children: e.label
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
/* @__PURE__ */ i(
|
|
90
|
+
b,
|
|
91
|
+
{
|
|
92
|
+
label: e.chipText,
|
|
93
|
+
size: "small",
|
|
94
|
+
sx: {
|
|
95
|
+
bgcolor: "grey.200",
|
|
96
|
+
color: "text.secondary",
|
|
97
|
+
height: 20,
|
|
98
|
+
fontSize: "0.7rem"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
),
|
|
105
|
+
/* @__PURE__ */ l(
|
|
106
|
+
a,
|
|
107
|
+
{
|
|
108
|
+
variant: "body1",
|
|
109
|
+
color: "text.secondary",
|
|
110
|
+
sx: { mt: 0.25 },
|
|
111
|
+
children: [
|
|
112
|
+
e.description,
|
|
113
|
+
e.note && /* @__PURE__ */ l(s, { children: [
|
|
114
|
+
" ",
|
|
115
|
+
/* @__PURE__ */ i("em", { children: e.note })
|
|
116
|
+
] })
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
] })
|
|
121
|
+
] })
|
|
122
|
+
},
|
|
123
|
+
e.value
|
|
124
|
+
))
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
] });
|
|
128
|
+
}
|
|
129
|
+
export {
|
|
130
|
+
f as ProjectVisibilityRadioGroup
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=ProjectVisibilityRadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectVisibilityRadioGroup.js","sources":["../../../src/components/CreateProjectModal/ProjectVisibilityRadioGroup.tsx"],"sourcesContent":["import {\n Box,\n Chip,\n FormControl,\n FormControlLabel,\n Radio,\n RadioGroup,\n Typography,\n} from '@mui/material'\nimport IconSvg from '../IconSvg'\n\nexport type ProjectVisibility = 'PRIVATE' | 'DISCOVERABLE' | 'PUBLIC' | 'OPEN'\n\ntype VisibilityOption = {\n value: ProjectVisibility\n label: string\n chipText: string\n description: string\n note?: string\n disabled?: boolean\n}\n\nconst VISIBILITY_OPTIONS: VisibilityOption[] = [\n {\n value: 'PRIVATE',\n label: 'Private',\n chipText: 'Invisible',\n description:\n 'Only you and people you invite can see this project exists. Others with the link will see an error.',\n },\n {\n value: 'DISCOVERABLE',\n label: 'Discoverable',\n chipText: 'Visible metadata',\n description:\n 'Anyone can find and view this project. Data download is not allowed.',\n },\n {\n value: 'PUBLIC',\n label: 'Public',\n chipText: 'Visible metadata, registered download',\n description:\n 'Anyone can find and view this project. Registered Synapse users can download data.',\n },\n {\n value: 'OPEN',\n label: 'Open',\n chipText: 'Fully visible, anonymous download',\n description: 'Anyone can find and view this project and download its data.',\n note: 'Currently available upon request for non-sensitive data.',\n disabled: true,\n },\n]\n\nconst VISIBILITY_ICONS: Record<\n ProjectVisibility,\n React.ComponentProps<typeof IconSvg>['icon']\n> = {\n PRIVATE: 'privateVisibility',\n DISCOVERABLE: 'visibility',\n PUBLIC: 'publicVisibility',\n OPEN: 'openVisibility',\n}\n\nexport type ProjectVisibilityRadioGroupProps = {\n value: ProjectVisibility\n onChange: (value: ProjectVisibility) => void\n}\n\nexport function ProjectVisibilityRadioGroup({\n value,\n onChange,\n}: ProjectVisibilityRadioGroupProps) {\n return (\n <FormControl component=\"fieldset\">\n <Typography variant=\"smallText2\" component=\"legend\" sx={{ mb: 1, pb: 1 }}>\n Visibility\n </Typography>\n <RadioGroup\n sx={{ mt: 1 }}\n value={value}\n onChange={(_e, val) => onChange(val as ProjectVisibility)}\n >\n {VISIBILITY_OPTIONS.map(option => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n sx={{\n alignItems: 'flex-start',\n mb: 1,\n opacity: option.disabled ? 0.5 : 1,\n }}\n control={<Radio sx={{ pt: '2px' }} />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1 }}>\n <IconSvg\n icon={VISIBILITY_ICONS[option.value]}\n wrap={false}\n sx={{ mt: '2px', flexShrink: 0 }}\n />\n <Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexWrap: 'wrap',\n }}\n >\n <Typography\n variant=\"body1\"\n component=\"span\"\n fontWeight=\"bold\"\n >\n {option.label}\n </Typography>\n <Chip\n label={option.chipText}\n size=\"small\"\n sx={{\n bgcolor: 'grey.200',\n color: 'text.secondary',\n height: 20,\n fontSize: '0.7rem',\n }}\n />\n </Box>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mt: 0.25 }}\n >\n {option.description}\n {option.note && (\n <>\n {' '}\n <em>{option.note}</em>\n </>\n )}\n </Typography>\n </Box>\n </Box>\n }\n />\n ))}\n </RadioGroup>\n </FormControl>\n )\n}\n"],"names":["VISIBILITY_OPTIONS","VISIBILITY_ICONS","ProjectVisibilityRadioGroup","value","onChange","jsxs","FormControl","jsx","Typography","RadioGroup","_e","val","option","FormControlLabel","Radio","Box","IconSvg","Chip","Fragment"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import '@sage-bionetworks/react-datasheet-grid/dist/style.css';
|
|
|
5
5
|
import '../../style/components/_data-grid-extra.scss';
|
|
6
6
|
import { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid';
|
|
7
7
|
import { DataGridRow, Operation } from './DataGridTypes';
|
|
8
|
+
import type { RemoteSelection } from './hooks/useRemoteSelections';
|
|
8
9
|
type DataGridProps = {
|
|
9
10
|
gridRef: React.RefObject<DataSheetGridRef | null>;
|
|
10
11
|
columnNames: string[];
|
|
@@ -19,6 +20,7 @@ type DataGridProps = {
|
|
|
19
20
|
selection: SelectionWithId | null;
|
|
20
21
|
}) => void;
|
|
21
22
|
onSelectedRowChange?: (rowIndex: number | null, row: DataGridRow | null) => void;
|
|
23
|
+
remoteSelections?: readonly RemoteSelection[];
|
|
22
24
|
};
|
|
23
25
|
/**
|
|
24
26
|
* Component that renders a data grid/spreadsheet using react-datasheet-grid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/DataGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAEL,gBAAgB,EACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,uDAAuD,CAAA;AAC9D,OAAO,8CAA8C,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAMxE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/DataGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAEL,gBAAgB,EACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,uDAAuD,CAAA;AAC9D,OAAO,8CAA8C,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAMxE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACjD,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,oBAAoB,EAAE,mBAAmB,CAAA;IACzC,SAAS,EAAE,WAAW,EAAE,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAA;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;IACxE,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5E,mBAAmB,CAAC,EAAE,CACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,GAAG,EAAE,WAAW,GAAG,IAAI,KACpB,IAAI,CAAA;IACT,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;CAC9C,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA2OpD"}
|