UNPKG

synapse-react-client

Version:

[![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synapse-react-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettie

176 lines (175 loc) 6.13 kB
import { jsxs as c, jsx as r } from "react/jsx-runtime"; import "../../synapse-client/SynapseClient.js"; import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode"; import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse"; import "@sage-bionetworks/synapse-client/util/SynapseClientError"; import { ACCESS_TYPE as _ } from "@sage-bionetworks/synapse-types"; import "../../utils/functions/EntityTypeUtils.js"; import "../../utils/SynapseConstants.js"; import { isEqual as v } from "lodash-es"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import "@tanstack/react-query"; import "../../utils/PermissionLevelToAccessType.js"; import { forwardRef as L, useState as T, useEffect as b, useImperativeHandle as q } from "react"; import "../../utils/context/SynapseContext.js"; import "use-deep-compare-effect"; import { Stack as N, Box as M, Typography as a, Alert as O } from "@mui/material"; import "../../utils/hooks/useCookiePreferences.js"; import "../../utils/hooks/useSourceAppConfigs.js"; import "universal-cookie"; import "../../utils/AppUtils/session/ApplicationSessionContext.js"; import "../../utils/context/FullContextProvider.js"; import "../../utils/context/DocumentMetadataContext.js"; import '../../style/components/_spinner.css';/* empty css */ import "@tanstack/query-core"; import "lodash-es/isEmpty"; import "lodash-es/isEqual"; import "lodash-es/xorWith"; import "react-router"; import "@sage-bionetworks/synapse-client"; import "../../utils/types/IsType.js"; import { useGetAccessRequirementACL as P, useDeleteAccessRequirementACL as U, useCreateAccessRequirementACL as w, useUpdateAccessRequirementACL as B } from "../../synapse-queries/dataaccess/useAccessRequirements.js"; import { spreadSx as h } from "../../theme/spreadSx.js"; import { AclEditor as G } from "../AclEditor/AclEditor.js"; import j from "../AclEditor/useUpdateAcl.js"; const p = { variant: "body1", lineHeight: "20px", color: "grey.800" }, D = "Only ACT has permissions on this AR.", V = [ "CAN_REVIEW_SUBMISSIONS", "IS_EXEMPTION_ELIGIBLE", "CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE" ], Ce = L( function(f, I) { const { accessRequirementId: i, onSaveComplete: o } = f, [u, n] = T(null), l = () => { n(null), o(!0); }, m = (e) => { n(e.reason), o(!1); }, { data: t, isLoading: R } = P(i, { // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation staleTime: 1 / 0 }), { resourceAccessList: s, setResourceAccessList: d, addResourceAccessItem: g, updateResourceAccessItem: x, removeResourceAccessItem: y, resetDirtyState: C } = j({ onChange: () => n(null), onError: n }); b(() => { t && (C(), d(t.resourceAccess)); }, [t, d]); const { mutate: A } = U({ onSuccess: () => l(), onError: (e) => m(e) }), { mutate: E } = w({ onSuccess: () => l(), onError: (e) => m(e) }), { mutate: S } = B({ onSuccess: () => l(), onError: (e) => m(e) }); return q( I, () => ({ save() { const e = s.length === 0 ? null : { ...t, id: t?.id || i, resourceAccess: s }; t === null && e == null || // ignore properties that will change when the ACL is saved (etag, modifiedOn) v(t?.resourceAccess, s) && t?.id === e?.id ? o(!0) : t === null && e !== null ? E(e) : e === null ? A(i) : S(e); } }), [ i, t, s, E, A, o, S ] ), /* @__PURE__ */ c( N, { direction: "column", sx: { gap: "20px" }, children: [ /* @__PURE__ */ c(M, { children: [ /* @__PURE__ */ r( a, { variant: "headline3", sx: { mb: "10px" }, children: "Guide to AR permissions" } ), /* @__PURE__ */ c( a, { sx: h( { mb: "10px" }, p ), children: [ /* @__PURE__ */ r("span", { style: { fontStyle: "italic" }, children: "Can Review" }), " means a user or team has access request review permission for this AR." ] } ), /* @__PURE__ */ c( a, { sx: h( { mb: "10px" }, p ), children: [ /* @__PURE__ */ r("span", { style: { fontStyle: "italic" }, children: "Exempt Eligible" }), ' users and teams can bypass access requirements for entities they have been granted "edit and delete" permission on, via the "Sharing Settings" dialog in the Project Settings.' ] } ), /* @__PURE__ */ r(a, { sx: { ...p, color: "grey.900" }, children: "ACT members always retain the ability to review or modify Access Requirements." }) ] }), /* @__PURE__ */ r( G, { resourceAccessList: s, availablePermissionLevels: V, isLoading: R, canEdit: !0, emptyText: D, onAddPrincipalToAcl: (e) => g(e, [_.REVIEW_SUBMISSIONS]), updateResourceAccessItem: x, removeResourceAccessItem: y, showAddRemovePublicButton: !1, showNotifyCheckbox: !1, isInherited: !1 } ), u && /* @__PURE__ */ r(O, { severity: "error", children: u }) ] } ); } ); export { Ce as AccessRequirementAclEditor, D as EMPTY_RESOURCE_ACCESS_LIST_TEXT }; //# sourceMappingURL=AccessRequirementAclEditor.js.map