synapse-react-client 4.0.43 → 4.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/SWC.index.d.ts +1 -1
  2. package/dist/SWC.index.js +2 -2
  3. package/dist/SWC.index.js.map +1 -1
  4. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +2 -1
  5. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  6. package/dist/components/AccessRequirementList/AccessRequirementList.js +126 -125
  7. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  8. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts +1 -1
  9. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts.map +1 -1
  10. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +28 -16
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +99 -97
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +1 -1
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -1
  19. package/dist/components/AccessRequirementList/RequestDataStep.d.ts +1 -4
  20. package/dist/components/AccessRequirementList/RequestDataStep.d.ts.map +1 -1
  21. package/dist/components/AccessRequirementList/RequestDataStep.js +15 -18
  22. package/dist/components/AccessRequirementList/RequestDataStep.js.map +1 -1
  23. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.d.ts.map +1 -1
  24. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +52 -49
  25. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  26. package/dist/components/DataGrid/DataGridWebSocket.d.ts +29 -1
  27. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  28. package/dist/components/DataGrid/DataGridWebSocket.js +48 -16
  29. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  30. package/dist/components/DataGrid/components/GridLoadingState.d.ts +2 -2
  31. package/dist/components/DataGrid/components/GridLoadingState.d.ts.map +1 -1
  32. package/dist/components/DataGrid/components/GridLoadingState.js +2 -2
  33. package/dist/components/DataGrid/components/GridLoadingState.js.map +1 -1
  34. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  35. package/dist/components/DataGrid/useDataGridWebsocket.js +2 -1
  36. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  37. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.d.ts.map +1 -1
  38. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js +11 -10
  39. package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
  40. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -1
  41. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
  42. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.d.ts +9 -0
  43. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.d.ts.map +1 -0
  44. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.js +45 -0
  45. package/dist/components/FormTemplateReferenceField/FormTemplatePreviewDialog.js.map +1 -0
  46. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.d.ts +22 -0
  47. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.d.ts.map +1 -0
  48. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.js +139 -0
  49. package/dist/components/FormTemplateReferenceField/FormTemplateReferenceField.js.map +1 -0
  50. package/dist/components/Forum/ForumTable.d.ts +17 -5
  51. package/dist/components/Forum/ForumTable.d.ts.map +1 -1
  52. package/dist/components/Forum/ForumTable.js +94 -77
  53. package/dist/components/Forum/ForumTable.js.map +1 -1
  54. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.d.ts.map +1 -1
  55. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +142 -108
  56. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  57. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.d.ts.map +1 -1
  58. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js +15 -15
  59. package/dist/components/SetBasicAccessRequirementFields/AccessorRequirements.js.map +1 -1
  60. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.d.ts +10 -0
  61. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.d.ts.map +1 -0
  62. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.js +81 -0
  63. package/dist/components/SetManagedAccessRequirementFields/DataUseCertificateFields.js.map +1 -0
  64. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.d.ts +9 -0
  65. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.d.ts.map +1 -0
  66. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.js +32 -0
  67. package/dist/components/SetManagedAccessRequirementFields/ExpirationPeriodField.js.map +1 -0
  68. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts +0 -2
  69. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  70. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +79 -154
  71. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  72. package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
  73. package/dist/components/TanStackTable/TanStackTableUtils.js +8 -5
  74. package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
  75. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.d.ts +5 -0
  76. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.d.ts.map +1 -0
  77. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.js +20 -0
  78. package/dist/components/dataaccess/SubmissionPage/DataAccessSubmissionFileHandleLink.js.map +1 -0
  79. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.d.ts.map +1 -1
  80. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +183 -188
  81. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
  82. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.d.ts +25 -0
  83. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.d.ts.map +1 -0
  84. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.js +125 -0
  85. package/dist/components/dataaccess/SubmissionPage/SubmissionSchemaAnswers.js.map +1 -0
  86. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  87. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +4 -1
  88. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  89. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +5 -0
  90. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -1
  91. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +37 -26
  92. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -1
  93. package/dist/mocks/dataaccess/MockSubmission.d.ts +76 -0
  94. package/dist/mocks/dataaccess/MockSubmission.d.ts.map +1 -1
  95. package/dist/mocks/dataaccess/MockSubmission.js +108 -63
  96. package/dist/mocks/dataaccess/MockSubmission.js.map +1 -1
  97. package/dist/mocks/msw/handlers/discussionHandlers.d.ts.map +1 -1
  98. package/dist/mocks/msw/handlers/discussionHandlers.js +40 -33
  99. package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
  100. package/dist/style/components/_submission-page.scss +0 -4
  101. package/dist/style/main.css +1 -1
  102. package/dist/synapse-client/SynapseClient.d.ts +10 -0
  103. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  104. package/dist/synapse-client/SynapseClient.js +486 -482
  105. package/dist/synapse-client/SynapseClient.js.map +1 -1
  106. package/dist/synapse-client/index.js +3 -3
  107. package/dist/synapse-queries/KeyFactory.d.ts +13 -1
  108. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  109. package/dist/synapse-queries/KeyFactory.js +11 -1
  110. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  111. package/dist/synapse-queries/dataaccess/index.js +4 -4
  112. package/dist/synapse-queries/dataaccess/useAccessRequirements.d.ts.map +1 -1
  113. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +4 -1
  114. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  115. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +19 -5
  116. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  117. package/dist/synapse-queries/dataaccess/useEDuc.js +29 -21
  118. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  119. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +12 -0
  120. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -1
  121. package/dist/synapse-queries/dataaccess/useFormTemplate.js +52 -30
  122. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  123. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.d.ts +37 -0
  124. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.d.ts.map +1 -0
  125. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.js +35 -0
  126. package/dist/synapse-queries/dataaccess/useGeneratedSubmissionForm.js.map +1 -0
  127. package/dist/synapse-queries/forum/useForum.d.ts +5 -1
  128. package/dist/synapse-queries/forum/useForum.d.ts.map +1 -1
  129. package/dist/synapse-queries/forum/useForum.js +23 -1
  130. package/dist/synapse-queries/forum/useForum.js.map +1 -1
  131. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
  132. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
  133. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  134. package/dist/synapse-queries/index.js +185 -184
  135. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +5 -3
  136. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -1
  137. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +12 -15
  138. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -1
  139. package/dist/synapse-queries/termsOfService/useTermsOfService.d.ts.map +1 -1
  140. package/dist/synapse-queries/termsOfService/useTermsOfService.js +21 -19
  141. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  142. package/dist/tsconfig.build.tsbuildinfo +1 -1
  143. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  144. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  145. package/dist/utils/functions/EntityTypeUtils.d.ts +2 -2
  146. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  147. package/dist/utils/functions/EntityTypeUtils.js +135 -135
  148. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  149. package/dist/utils/functions/getEndpoint.d.ts +1 -0
  150. package/dist/utils/functions/getEndpoint.d.ts.map +1 -1
  151. package/dist/utils/functions/getEndpoint.js +3 -3
  152. package/dist/utils/functions/getEndpoint.js.map +1 -1
  153. package/dist/utils/types/RequestableAccessRequirement.d.ts +8 -0
  154. package/dist/utils/types/RequestableAccessRequirement.d.ts.map +1 -0
  155. package/dist/utils/types/RequestableAccessRequirement.js +9 -0
  156. package/dist/utils/types/RequestableAccessRequirement.js.map +1 -0
  157. package/package.json +3 -3
  158. package/dist/testutils/ReactQueryMockUtils.js +0 -676
  159. package/dist/testutils/ReactQueryMockUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SetAccessRequirementCommonFields.js","names":[],"sources":["../../../src/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.tsx"],"sourcesContent":["import {\n useCreateAccessRequirement,\n useGetAccessRequirements,\n useUpdateAccessRequirement,\n} from '@/synapse-queries'\nimport { spreadSx } from '@/theme/spreadSx'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Checkbox,\n FormControlLabel,\n Radio,\n RadioGroup,\n Skeleton,\n Stack,\n TextField,\n Tooltip,\n Typography,\n TypographyProps,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n ACCESS_REQUIREMENT_CONCRETE_TYPE,\n ACCESS_TYPE,\n AccessRequirement,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n RestrictableObjectDescriptor,\n RestrictableObjectType,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport pluralize from 'pluralize'\nimport {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport EntitySubjectsSelector from '../EntitySubjectsSelector'\nimport { SynapseErrorBoundary } from '../error'\nimport TeamSubjectsSelector from '../TeamSubjectsSelector'\n\nexport const EMPTY_SUBJECT_LIST_ERROR_MESSAGE =\n 'Please select at least one resource for this Access Requirement to be associated with.'\nexport const UNSAVED_SUBJECTS_ERROR_MESSAGE = (\n subjectsType: RestrictableObjectType,\n) => {\n const idsText =\n subjectsType === RestrictableObjectType.ENTITY ? 'Synapse' : 'Team'\n const typeText =\n subjectsType[0].toUpperCase() + subjectsType.slice(1).toLowerCase()\n return `${idsText} IDs were specified but not added to the subjects list. Please either clear out the Add ${idsText} IDs textbox or click the Add ${pluralize(\n typeText,\n )} button.`\n}\nconst NAME_HELP_TEXT =\n \"Enter access requirement name. This will also be used when sending notifications for expiring or revoked approval. For example, 'The approval for the name access requirement was revoked...'\"\n\nconst headerProps: Partial<TypographyProps> = {\n variant: 'body1',\n fontWeight: 700,\n}\n\nfunction getAccessType(subjectType: RestrictableObjectType) {\n switch (subjectType) {\n case RestrictableObjectType.ENTITY:\n return ACCESS_TYPE.DOWNLOAD\n case RestrictableObjectType.TEAM:\n return ACCESS_TYPE.PARTICIPATE\n default:\n throw new Error(\n `RestrictableObjectType ${subjectType} does not have an access type specified.`,\n )\n }\n}\n\nexport type SetAccessRequirementCommonFieldsHandle = {\n /* Allow the parent component to trigger saving the AR, so this may be embedded in an arbitrary modal. */\n save: () => void\n}\n\nexport type SetAccessRequirementCommonFieldsProps = {\n /* Provided when creating a new AR */\n subject?: RestrictableObjectDescriptor\n /* Provided when editing an existing AR */\n accessRequirementId?: string\n /* Called when AR has been saved successfully */\n onSave: (\n accessRequirementId: string,\n accessRequirementConreteType: ACCESS_REQUIREMENT_CONCRETE_TYPE,\n ) => void\n /* Called when error saving AR */\n onError: () => void\n}\n\nexport const SetAccessRequirementCommonFields = forwardRef(\n function SetAccessRequirementCommonFields(\n props: SetAccessRequirementCommonFieldsProps,\n ref: ForwardedRef<SetAccessRequirementCommonFieldsHandle>,\n ) {\n const { subject, accessRequirementId, onSave, onError } = props\n\n const isEditing = !subject\n\n const [subjects, setSubjects] = useState<RestrictableObjectDescriptor[]>(\n subject ? [subject] : [],\n )\n const [hasPendingSubjects, setHasPendingSubjects] = useState<boolean>(false)\n const [subjectsError, setSubjectsError] = useState<string | null>(null)\n const [name, setName] = useState<string>('')\n const [subjectsDefinedByAnnotations, setSubjectsDefinedByAnnotations] =\n useState<boolean>(false)\n const [arType, setArType] = useState<ACCESS_REQUIREMENT_CONCRETE_TYPE>(\n subject?.type === RestrictableObjectType.TEAM\n ? SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE\n : MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n )\n const [clientError, setClientError] = useState<string | null>(null)\n\n const onMutationSuccess = (ar: AccessRequirement) => {\n setClientError(null)\n onSave(ar.id.toString(), ar.concreteType)\n }\n\n const onMutationError = (error: SynapseClientError) => {\n setClientError(error.reason)\n onError()\n }\n\n const { mutate: createAccessRequirement } = useCreateAccessRequirement({\n onSuccess: newAr => onMutationSuccess(newAr),\n onError: error => onMutationError(error),\n })\n\n const { mutate: updateAccessRequirement } = useUpdateAccessRequirement({\n onSuccess: updatedAr => onMutationSuccess(updatedAr),\n onError: error => onMutationError(error),\n })\n\n const {\n data: accessRequirement,\n isLoading: isLoadingAr,\n error: getArError,\n } = useGetAccessRequirements(accessRequirementId!, {\n enabled: Boolean(accessRequirementId),\n })\n\n useEffect(() => {\n if (accessRequirement) {\n setArType(accessRequirement.concreteType)\n setName(accessRequirement.name)\n setSubjects(accessRequirement.subjectIds)\n setSubjectsDefinedByAnnotations(\n accessRequirement.subjectsDefinedByAnnotations,\n )\n }\n }, [accessRequirement])\n\n const subjectsType = useMemo(() => {\n if (subject) {\n return subject.type\n }\n if (accessRequirement) {\n const initialSubjects = accessRequirement.subjectIds\n if (initialSubjects.length > 0) {\n return initialSubjects[0].type\n }\n }\n if (subjectsDefinedByAnnotations) {\n return RestrictableObjectType.ENTITY\n }\n return null\n }, [subject, accessRequirement, subjectsDefinedByAnnotations])\n\n const selectorContent = useMemo(() => {\n if (!subjectsType) return <></>\n\n function onUpdate(subjects: RestrictableObjectDescriptor[]) {\n setSubjectsError(null)\n setSubjects(subjects)\n }\n\n function onUpdateIdsTextbox(value: string) {\n setSubjectsError(null)\n setHasPendingSubjects(value.trim() !== '')\n }\n\n if (subjectsDefinedByAnnotations) {\n return <></>\n }\n switch (subjectsType) {\n case RestrictableObjectType.TEAM:\n return (\n <TeamSubjectsSelector\n subjects={subjects}\n onUpdate={subjects => onUpdate(subjects)}\n onUpdateTeamIDsTextbox={value => onUpdateIdsTextbox(value)}\n />\n )\n case RestrictableObjectType.ENTITY:\n return (\n <EntitySubjectsSelector\n subjects={subjects}\n onUpdate={subjects => onUpdate(subjects)}\n onUpdateEntityIDsTextbox={value => onUpdateIdsTextbox(value)}\n />\n )\n default:\n console.error(\n `RestrictableObjectType ${subjectsType} does not have a selector implemented.`,\n )\n return <></>\n }\n }, [subjectsType, subjects, subjectsDefinedByAnnotations])\n\n useImperativeHandle(ref, () => {\n return {\n save() {\n const isStillLoading =\n (isEditing && !accessRequirement) || !subjectsType\n const hasSubjectsError =\n !subjectsDefinedByAnnotations &&\n (hasPendingSubjects || subjects.length === 0)\n if (isStillLoading || hasSubjectsError) {\n if (hasSubjectsError && !isStillLoading) {\n if (hasPendingSubjects) {\n setSubjectsError(UNSAVED_SUBJECTS_ERROR_MESSAGE(subjectsType))\n } else if (subjects.length === 0) {\n setSubjectsError(EMPTY_SUBJECT_LIST_ERROR_MESSAGE)\n }\n }\n\n onError()\n return\n }\n\n const newAccessType = getAccessType(subjectsType)\n if (!isEditing) {\n const newAr: Partial<AccessRequirement> = {\n concreteType: arType,\n subjectIds: subjects,\n name: name,\n accessType: newAccessType,\n subjectsDefinedByAnnotations: subjectsDefinedByAnnotations,\n }\n createAccessRequirement(newAr)\n }\n\n if (isEditing && accessRequirement) {\n updateAccessRequirement({\n ...accessRequirement,\n subjectIds: subjects,\n name: name,\n accessType: newAccessType,\n subjectsDefinedByAnnotations: subjectsDefinedByAnnotations,\n })\n }\n },\n }\n }, [\n hasPendingSubjects,\n subjectsType,\n subjects,\n name,\n arType,\n accessRequirement,\n isEditing,\n onError,\n createAccessRequirement,\n updateAccessRequirement,\n subjectsDefinedByAnnotations,\n ])\n\n if (isLoadingAr || !subjectsType) {\n return (\n <>\n <Skeleton width={100} height={30} />\n <Skeleton width={125} height={30} />\n <Skeleton width=\"100%\">\n <TextField />\n </Skeleton>\n <Skeleton width={100} height={30} />\n <Skeleton width=\"100%\">\n <TextField />\n </Skeleton>\n </>\n )\n }\n\n if (getArError) {\n return <Alert severity=\"error\">{getArError.reason}</Alert>\n }\n\n return (\n <>\n <Typography {...headerProps}>Resources</Typography>\n {subjectsType !== RestrictableObjectType.TEAM && (\n <FormControlLabel\n control={<Checkbox />}\n label=\"Associated entities should be defined by annotations (DUO)\"\n checked={subjectsDefinedByAnnotations}\n onChange={() => {\n setSubjectsError(null)\n // if we are switching from DUO to manually defining the subjects (and the AR has been retrieved), then\n // reset to the AR subject IDs or the original subject ID. Otherwise, clear out the subjects.\n let newSubjectIds: RestrictableObjectDescriptor[] = []\n if (subjectsDefinedByAnnotations) {\n if (accessRequirement) {\n newSubjectIds = accessRequirement.subjectIds\n } else if (subject) {\n newSubjectIds = [subject]\n }\n }\n setSubjects(newSubjectIds)\n setSubjectsDefinedByAnnotations(!subjectsDefinedByAnnotations)\n }}\n />\n )}\n <SynapseErrorBoundary>{selectorContent}</SynapseErrorBoundary>\n {subjectsError && <Alert severity=\"error\">{subjectsError}</Alert>}\n <Stack\n direction=\"row\"\n sx={{\n gap: 1,\n alignItems: 'center',\n mb: 1,\n mt: 2,\n }}\n >\n <Typography component=\"label\" htmlFor=\"arName\" {...headerProps}>\n Name\n </Typography>\n <Tooltip title={NAME_HELP_TEXT} placement=\"right\">\n <HelpOutlineTwoTone sx={{ color: 'grey.600' }} />\n </Tooltip>\n </Stack>\n <TextField\n id=\"arName\"\n name=\"arName\"\n value={name}\n placeholder=\"Access requirement name\"\n fullWidth\n onChange={event => setName(event.target.value)}\n />\n {!isEditing && subjectsType !== RestrictableObjectType.TEAM && (\n <>\n <Typography\n {...headerProps}\n sx={spreadSx(\n {\n mt: 2,\n },\n headerProps.sx,\n )}\n >\n Access requirement type\n </Typography>\n <RadioGroup\n value={arType}\n onChange={(_event, value) =>\n setArType(value as ACCESS_REQUIREMENT_CONCRETE_TYPE)\n }\n >\n <FormControlLabel\n value={MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE}\n control={<Radio />}\n label=\"Controlled - requests are in Synapse\"\n />\n <FormControlLabel\n value={SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE}\n control={<Radio />}\n label=\"Click wrap\"\n />\n </RadioGroup>\n </>\n )}\n {clientError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {clientError}\n </Alert>\n )}\n </>\n )\n },\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"SetAccessRequirementCommonFields.js","names":[],"sources":["../../../src/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.tsx"],"sourcesContent":["import {\n useCreateAccessRequirement,\n useGetAccessRequirements,\n useUpdateAccessRequirement,\n} from '@/synapse-queries'\nimport { spreadSx } from '@/theme/spreadSx'\nimport { HelpOutlineTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Checkbox,\n FormControlLabel,\n Radio,\n RadioGroup,\n Skeleton,\n Stack,\n TextField,\n Tooltip,\n Typography,\n TypographyProps,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n ACCESS_REQUIREMENT_CONCRETE_TYPE,\n ACCESS_TYPE,\n AccessRequirement,\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n RestrictableObjectDescriptor,\n RestrictableObjectType,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport pluralize from 'pluralize'\nimport { FormTemplateReference } from '@sage-bionetworks/synapse-client'\nimport { useGetFeatureFlag } from '@/synapse-queries/featureflags/useGetFeatureFlag'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport {\n FormTemplateReferenceField,\n useFormTemplateReferenceError,\n} from '../FormTemplateReferenceField/FormTemplateReferenceField'\nimport {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport EntitySubjectsSelector from '../EntitySubjectsSelector'\nimport { SynapseErrorBoundary } from '../error'\nimport TeamSubjectsSelector from '../TeamSubjectsSelector'\n\nexport const EMPTY_SUBJECT_LIST_ERROR_MESSAGE =\n 'Please select at least one resource for this Access Requirement to be associated with.'\nexport const UNSAVED_SUBJECTS_ERROR_MESSAGE = (\n subjectsType: RestrictableObjectType,\n) => {\n const idsText =\n subjectsType === RestrictableObjectType.ENTITY ? 'Synapse' : 'Team'\n const typeText =\n subjectsType[0].toUpperCase() + subjectsType.slice(1).toLowerCase()\n return `${idsText} IDs were specified but not added to the subjects list. Please either clear out the Add ${idsText} IDs textbox or click the Add ${pluralize(\n typeText,\n )} button.`\n}\nconst NAME_HELP_TEXT =\n \"Enter access requirement name. This will also be used when sending notifications for expiring or revoked approval. For example, 'The approval for the name access requirement was revoked...'\"\n\nconst headerProps: Partial<TypographyProps> = {\n variant: 'body1',\n fontWeight: 700,\n}\n\nfunction getAccessType(subjectType: RestrictableObjectType) {\n switch (subjectType) {\n case RestrictableObjectType.ENTITY:\n return ACCESS_TYPE.DOWNLOAD\n case RestrictableObjectType.TEAM:\n return ACCESS_TYPE.PARTICIPATE\n default:\n throw new Error(\n `RestrictableObjectType ${subjectType} does not have an access type specified.`,\n )\n }\n}\n\nexport type SetAccessRequirementCommonFieldsHandle = {\n /* Allow the parent component to trigger saving the AR, so this may be embedded in an arbitrary modal. */\n save: () => void\n}\n\nexport type SetAccessRequirementCommonFieldsProps = {\n /* Provided when creating a new AR */\n subject?: RestrictableObjectDescriptor\n /* Provided when editing an existing AR */\n accessRequirementId?: string\n /* Called when AR has been saved successfully */\n onSave: (\n accessRequirementId: string,\n accessRequirementConreteType: ACCESS_REQUIREMENT_CONCRETE_TYPE,\n ) => void\n /* Called when error saving AR */\n onError: () => void\n}\n\nexport const SetAccessRequirementCommonFields = forwardRef(\n function SetAccessRequirementCommonFields(\n props: SetAccessRequirementCommonFieldsProps,\n ref: ForwardedRef<SetAccessRequirementCommonFieldsHandle>,\n ) {\n const { subject, accessRequirementId, onSave, onError } = props\n\n const isEditing = !subject\n\n const [subjects, setSubjects] = useState<RestrictableObjectDescriptor[]>(\n subject ? [subject] : [],\n )\n const [hasPendingSubjects, setHasPendingSubjects] = useState<boolean>(false)\n const [subjectsError, setSubjectsError] = useState<string | null>(null)\n const [name, setName] = useState<string>('')\n const [subjectsDefinedByAnnotations, setSubjectsDefinedByAnnotations] =\n useState<boolean>(false)\n const [arType, setArType] = useState<ACCESS_REQUIREMENT_CONCRETE_TYPE>(\n subject?.type === RestrictableObjectType.TEAM\n ? SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE\n : MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n )\n const [clientError, setClientError] = useState<string | null>(null)\n const isSchemaDrivenEnabled = useGetFeatureFlag(\n FeatureFlagEnum.ACT_DASHBOARD_FORM_TEMPLATES,\n )\n const [formTemplateRef, setFormTemplateRef] = useState<\n FormTemplateReference | undefined\n >(undefined)\n const [showFormTemplateError, setShowFormTemplateError] =\n useState<boolean>(false)\n const isSchemaDrivenTypeSelected =\n isSchemaDrivenEnabled &&\n arType === JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE\n const formTemplateReferenceError = useFormTemplateReferenceError(\n isSchemaDrivenTypeSelected ? formTemplateRef : undefined,\n )\n\n const onMutationSuccess = (ar: AccessRequirement) => {\n setClientError(null)\n onSave(ar.id.toString(), ar.concreteType)\n }\n\n const onMutationError = (error: SynapseClientError) => {\n setClientError(error.reason)\n onError()\n }\n\n const { mutate: createAccessRequirement } = useCreateAccessRequirement({\n onSuccess: newAr => onMutationSuccess(newAr),\n onError: error => onMutationError(error),\n })\n\n const { mutate: updateAccessRequirement } = useUpdateAccessRequirement({\n onSuccess: updatedAr => onMutationSuccess(updatedAr),\n onError: error => onMutationError(error),\n })\n\n const {\n data: accessRequirement,\n isLoading: isLoadingAr,\n error: getArError,\n } = useGetAccessRequirements(accessRequirementId!, {\n enabled: Boolean(accessRequirementId),\n })\n\n useEffect(() => {\n if (accessRequirement) {\n setArType(accessRequirement.concreteType)\n if (\n accessRequirement.concreteType ===\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE\n ) {\n setFormTemplateRef(accessRequirement.formTemplateRef)\n }\n setName(accessRequirement.name)\n setSubjects(accessRequirement.subjectIds)\n setSubjectsDefinedByAnnotations(\n accessRequirement.subjectsDefinedByAnnotations,\n )\n }\n }, [accessRequirement])\n\n const subjectsType = useMemo(() => {\n if (subject) {\n return subject.type\n }\n if (accessRequirement) {\n const initialSubjects = accessRequirement.subjectIds\n if (initialSubjects.length > 0) {\n return initialSubjects[0].type\n }\n }\n if (subjectsDefinedByAnnotations) {\n return RestrictableObjectType.ENTITY\n }\n return null\n }, [subject, accessRequirement, subjectsDefinedByAnnotations])\n\n const selectorContent = useMemo(() => {\n if (!subjectsType) return <></>\n\n function onUpdate(subjects: RestrictableObjectDescriptor[]) {\n setSubjectsError(null)\n setSubjects(subjects)\n }\n\n function onUpdateIdsTextbox(value: string) {\n setSubjectsError(null)\n setHasPendingSubjects(value.trim() !== '')\n }\n\n if (subjectsDefinedByAnnotations) {\n return <></>\n }\n switch (subjectsType) {\n case RestrictableObjectType.TEAM:\n return (\n <TeamSubjectsSelector\n subjects={subjects}\n onUpdate={subjects => onUpdate(subjects)}\n onUpdateTeamIDsTextbox={value => onUpdateIdsTextbox(value)}\n />\n )\n case RestrictableObjectType.ENTITY:\n return (\n <EntitySubjectsSelector\n subjects={subjects}\n onUpdate={subjects => onUpdate(subjects)}\n onUpdateEntityIDsTextbox={value => onUpdateIdsTextbox(value)}\n />\n )\n default:\n console.error(\n `RestrictableObjectType ${subjectsType} does not have a selector implemented.`,\n )\n return <></>\n }\n }, [subjectsType, subjects, subjectsDefinedByAnnotations])\n\n useImperativeHandle(ref, () => {\n return {\n save() {\n const isStillLoading =\n (isEditing && !accessRequirement) || !subjectsType\n const hasSubjectsError =\n !subjectsDefinedByAnnotations &&\n (hasPendingSubjects || subjects.length === 0)\n if (isStillLoading || hasSubjectsError) {\n if (hasSubjectsError && !isStillLoading) {\n if (hasPendingSubjects) {\n setSubjectsError(UNSAVED_SUBJECTS_ERROR_MESSAGE(subjectsType))\n } else if (subjects.length === 0) {\n setSubjectsError(EMPTY_SUBJECT_LIST_ERROR_MESSAGE)\n }\n }\n\n onError()\n return\n }\n\n if (isSchemaDrivenTypeSelected && formTemplateReferenceError) {\n setShowFormTemplateError(true)\n onError()\n return\n }\n\n const newAccessType = getAccessType(subjectsType)\n if (!isEditing) {\n const newAr: Partial<AccessRequirement> = {\n concreteType: arType,\n subjectIds: subjects,\n name: name,\n accessType: newAccessType,\n subjectsDefinedByAnnotations: subjectsDefinedByAnnotations,\n ...(isSchemaDrivenTypeSelected ? { formTemplateRef } : {}),\n }\n createAccessRequirement(newAr)\n }\n\n if (isEditing && accessRequirement) {\n updateAccessRequirement({\n ...accessRequirement,\n subjectIds: subjects,\n name: name,\n accessType: newAccessType,\n subjectsDefinedByAnnotations: subjectsDefinedByAnnotations,\n ...(isSchemaDrivenTypeSelected ? { formTemplateRef } : {}),\n })\n }\n },\n }\n }, [\n hasPendingSubjects,\n subjectsType,\n subjects,\n name,\n arType,\n accessRequirement,\n isEditing,\n onError,\n createAccessRequirement,\n updateAccessRequirement,\n subjectsDefinedByAnnotations,\n isSchemaDrivenTypeSelected,\n formTemplateRef,\n formTemplateReferenceError,\n ])\n\n if (isLoadingAr || !subjectsType) {\n return (\n <>\n <Skeleton width={100} height={30} />\n <Skeleton width={125} height={30} />\n <Skeleton width=\"100%\">\n <TextField />\n </Skeleton>\n <Skeleton width={100} height={30} />\n <Skeleton width=\"100%\">\n <TextField />\n </Skeleton>\n </>\n )\n }\n\n if (getArError) {\n return <Alert severity=\"error\">{getArError.reason}</Alert>\n }\n\n return (\n <>\n <Typography {...headerProps}>Resources</Typography>\n {subjectsType !== RestrictableObjectType.TEAM && (\n <FormControlLabel\n control={<Checkbox />}\n label=\"Associated entities should be defined by annotations (DUO)\"\n checked={subjectsDefinedByAnnotations}\n onChange={() => {\n setSubjectsError(null)\n // if we are switching from DUO to manually defining the subjects (and the AR has been retrieved), then\n // reset to the AR subject IDs or the original subject ID. Otherwise, clear out the subjects.\n let newSubjectIds: RestrictableObjectDescriptor[] = []\n if (subjectsDefinedByAnnotations) {\n if (accessRequirement) {\n newSubjectIds = accessRequirement.subjectIds\n } else if (subject) {\n newSubjectIds = [subject]\n }\n }\n setSubjects(newSubjectIds)\n setSubjectsDefinedByAnnotations(!subjectsDefinedByAnnotations)\n }}\n />\n )}\n <SynapseErrorBoundary>{selectorContent}</SynapseErrorBoundary>\n {subjectsError && <Alert severity=\"error\">{subjectsError}</Alert>}\n <Stack\n direction=\"row\"\n sx={{\n gap: 1,\n alignItems: 'center',\n mb: 1,\n mt: 2,\n }}\n >\n <Typography component=\"label\" htmlFor=\"arName\" {...headerProps}>\n Name\n </Typography>\n <Tooltip title={NAME_HELP_TEXT} placement=\"right\">\n <HelpOutlineTwoTone sx={{ color: 'grey.600' }} />\n </Tooltip>\n </Stack>\n <TextField\n id=\"arName\"\n name=\"arName\"\n value={name}\n placeholder=\"Access requirement name\"\n fullWidth\n onChange={event => setName(event.target.value)}\n />\n {!isEditing && subjectsType !== RestrictableObjectType.TEAM && (\n <>\n <Typography\n {...headerProps}\n sx={spreadSx(\n {\n mt: 2,\n },\n headerProps.sx,\n )}\n >\n Access requirement type\n </Typography>\n <RadioGroup\n value={arType}\n onChange={(_event, value) =>\n setArType(value as ACCESS_REQUIREMENT_CONCRETE_TYPE)\n }\n >\n <FormControlLabel\n value={MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE}\n control={<Radio />}\n label=\"Controlled - requests are in Synapse\"\n />\n <FormControlLabel\n value={SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE}\n control={<Radio />}\n label=\"Click wrap\"\n />\n {isSchemaDrivenEnabled && (\n <FormControlLabel\n value={JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE}\n control={<Radio />}\n label=\"Schema-driven - requests are in Synapse, using a form template\"\n />\n )}\n </RadioGroup>\n </>\n )}\n {isSchemaDrivenTypeSelected && (\n <Box sx={{ mt: 2 }}>\n <Typography\n {...headerProps}\n sx={spreadSx({ mb: 1 }, headerProps.sx)}\n >\n Form presented to requesters\n </Typography>\n <FormTemplateReferenceField\n value={formTemplateRef}\n onChange={reference => {\n setShowFormTemplateError(false)\n setFormTemplateRef(reference)\n }}\n error={showFormTemplateError ? formTemplateReferenceError : null}\n />\n </Box>\n )}\n {clientError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {clientError}\n </Alert>\n )}\n </>\n )\n },\n)\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccessorRequirements.d.ts","sourceRoot":"","sources":["../../../src/components/SetBasicAccessRequirementFields/AccessorRequirements.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAElB,MAAM,iCAAiC,CAAA;AAIxC,KAAK,yBAAyB,GAAG;IAC/B,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACjD,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA6DpE"}
1
+ {"version":3,"file":"AccessorRequirements.d.ts","sourceRoot":"","sources":["../../../src/components/SetBasicAccessRequirementFields/AccessorRequirements.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGlB,MAAM,iCAAiC,CAAA;AAIxC,KAAK,yBAAyB,GAAG;IAC/B,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAA;CACjD,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA+DpE"}
@@ -1,11 +1,11 @@
1
1
  import { hasAccessorRequirement as e } from "./GovernanceUtils.js";
2
2
  import { Box as t, Checkbox as n, FormControlLabel as r, Typography as i } from "@mui/material";
3
3
  import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
4
- import { MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as c } from "@sage-bionetworks/synapse-types";
4
+ import { JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as c, MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as l } from "@sage-bionetworks/synapse-types";
5
5
  //#region src/components/SetBasicAccessRequirementFields/AccessorRequirements.tsx
6
- function l(l) {
7
- let { accessRequirement: u, onChange: d } = l;
8
- return /* @__PURE__ */ o(a, { children: e(u) && /* @__PURE__ */ o(a, { children: /* @__PURE__ */ s(t, {
6
+ function u(u) {
7
+ let { accessRequirement: d, onChange: f } = u;
8
+ return /* @__PURE__ */ o(a, { children: e(d) && /* @__PURE__ */ o(a, { children: /* @__PURE__ */ s(t, {
9
9
  sx: { mb: 2 },
10
10
  children: [
11
11
  /* @__PURE__ */ o(i, {
@@ -16,27 +16,27 @@ function l(l) {
16
16
  /* @__PURE__ */ o(r, {
17
17
  control: /* @__PURE__ */ o(n, {}),
18
18
  label: "Accessors must be certified.",
19
- checked: u.isCertifiedUserRequired,
20
- onChange: (e, t) => d({
21
- ...u,
19
+ checked: d.isCertifiedUserRequired,
20
+ onChange: (e, t) => f({
21
+ ...d,
22
22
  isCertifiedUserRequired: t
23
23
  })
24
24
  }),
25
25
  /* @__PURE__ */ o(r, {
26
26
  control: /* @__PURE__ */ o(n, {}),
27
27
  label: "Accessors must have a validated profile.",
28
- checked: u.isValidatedProfileRequired,
29
- onChange: (e, t) => d({
30
- ...u,
28
+ checked: d.isValidatedProfileRequired,
29
+ onChange: (e, t) => f({
30
+ ...d,
31
31
  isValidatedProfileRequired: t
32
32
  })
33
33
  }),
34
- u.concreteType === c && /* @__PURE__ */ o(r, {
34
+ (d.concreteType === l || d.concreteType === c) && /* @__PURE__ */ o(r, {
35
35
  control: /* @__PURE__ */ o(n, {}),
36
36
  label: "Accessors must use two-factor authentication (2FA).",
37
- checked: u.isTwoFaRequired,
38
- onChange: (e, t) => d({
39
- ...u,
37
+ checked: d.isTwoFaRequired,
38
+ onChange: (e, t) => f({
39
+ ...d,
40
40
  isTwoFaRequired: t
41
41
  })
42
42
  })
@@ -44,6 +44,6 @@ function l(l) {
44
44
  }) }) });
45
45
  }
46
46
  //#endregion
47
- export { l as AccessorRequirements };
47
+ export { u as AccessorRequirements };
48
48
 
49
49
  //# sourceMappingURL=AccessorRequirements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessorRequirements.js","names":[],"sources":["../../../src/components/SetBasicAccessRequirementFields/AccessorRequirements.tsx"],"sourcesContent":["import {\n AccessRequirement,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport { hasAccessorRequirement } from './GovernanceUtils'\nimport { Box, Checkbox, FormControlLabel, Typography } from '@mui/material'\n\ntype AccessorRequirementsProps = {\n accessRequirement: AccessRequirement\n onChange: (updatedAr: AccessRequirement) => void\n}\n\nexport function AccessorRequirements(props: AccessorRequirementsProps) {\n const { accessRequirement, onChange } = props\n\n return (\n <>\n {hasAccessorRequirement(accessRequirement) && (\n <>\n <Box\n sx={{\n mb: 2,\n }}\n >\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 700,\n }}\n >\n Accessor requirements\n </Typography>\n <FormControlLabel\n control={<Checkbox />}\n label=\"Accessors must be certified.\"\n checked={accessRequirement.isCertifiedUserRequired}\n onChange={(_event, checked: boolean) =>\n onChange({\n ...accessRequirement,\n isCertifiedUserRequired: checked,\n })\n }\n />\n <FormControlLabel\n control={<Checkbox />}\n label=\"Accessors must have a validated profile.\"\n checked={accessRequirement.isValidatedProfileRequired}\n onChange={(_event, checked: boolean) =>\n onChange({\n ...accessRequirement,\n isValidatedProfileRequired: checked,\n })\n }\n />\n {accessRequirement.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE && (\n <FormControlLabel\n control={<Checkbox />}\n label=\"Accessors must use two-factor authentication (2FA).\"\n checked={accessRequirement.isTwoFaRequired}\n onChange={(_event, checked: boolean) =>\n onChange({\n ...accessRequirement,\n isTwoFaRequired: checked,\n })\n }\n />\n )}\n </Box>\n </>\n )}\n </>\n )\n}\n"],"mappings":";;;;;AAYA,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,sBAAmB,gBAAa;CAExC,OACE,kBAAA,GAAA,EAAA,UACG,EAAuB,CAAiB,KACvC,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;EACE,IAAI,EACF,IAAI,EACN;YAHF;GAKE,kBAAC,GAAD;IACE,SAAQ;IACR,IAAI,EACF,YAAY,IACd;cACD;GAEW,CAAA;GACZ,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IACpB,OAAM;IACN,SAAS,EAAkB;IAC3B,WAAW,GAAQ,MACjB,EAAS;KACP,GAAG;KACH,yBAAyB;IAC3B,CAAC;GAEJ,CAAA;GACD,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IACpB,OAAM;IACN,SAAS,EAAkB;IAC3B,WAAW,GAAQ,MACjB,EAAS;KACP,GAAG;KACH,4BAA4B;IAC9B,CAAC;GAEJ,CAAA;GACA,EAAkB,iBACjB,KACA,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IACpB,OAAM;IACN,SAAS,EAAkB;IAC3B,WAAW,GAAQ,MACjB,EAAS;KACP,GAAG;KACH,iBAAiB;IACnB,CAAC;GAEJ,CAAA;EAEA;IACL,CAAA,EAEJ,CAAA;AAEN"}
1
+ {"version":3,"file":"AccessorRequirements.js","names":[],"sources":["../../../src/components/SetBasicAccessRequirementFields/AccessorRequirements.tsx"],"sourcesContent":["import {\n AccessRequirement,\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport { hasAccessorRequirement } from './GovernanceUtils'\nimport { Box, Checkbox, FormControlLabel, Typography } from '@mui/material'\n\ntype AccessorRequirementsProps = {\n accessRequirement: AccessRequirement\n onChange: (updatedAr: AccessRequirement) => void\n}\n\nexport function AccessorRequirements(props: AccessorRequirementsProps) {\n const { accessRequirement, onChange } = props\n\n return (\n <>\n {hasAccessorRequirement(accessRequirement) && (\n <>\n <Box\n sx={{\n mb: 2,\n }}\n >\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 700,\n }}\n >\n Accessor requirements\n </Typography>\n <FormControlLabel\n control={<Checkbox />}\n label=\"Accessors must be certified.\"\n checked={accessRequirement.isCertifiedUserRequired}\n onChange={(_event, checked: boolean) =>\n onChange({\n ...accessRequirement,\n isCertifiedUserRequired: checked,\n })\n }\n />\n <FormControlLabel\n control={<Checkbox />}\n label=\"Accessors must have a validated profile.\"\n checked={accessRequirement.isValidatedProfileRequired}\n onChange={(_event, checked: boolean) =>\n onChange({\n ...accessRequirement,\n isValidatedProfileRequired: checked,\n })\n }\n />\n {(accessRequirement.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE ||\n accessRequirement.concreteType ===\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE) && (\n <FormControlLabel\n control={<Checkbox />}\n label=\"Accessors must use two-factor authentication (2FA).\"\n checked={accessRequirement.isTwoFaRequired}\n onChange={(_event, checked: boolean) =>\n onChange({\n ...accessRequirement,\n isTwoFaRequired: checked,\n })\n }\n />\n )}\n </Box>\n </>\n )}\n </>\n )\n}\n"],"mappings":";;;;;AAaA,SAAgB,EAAqB,GAAkC;CACrE,IAAM,EAAE,sBAAmB,gBAAa;CAExC,OACE,kBAAA,GAAA,EAAA,UACG,EAAuB,CAAiB,KACvC,kBAAA,GAAA,EAAA,UACE,kBAAC,GAAD;EACE,IAAI,EACF,IAAI,EACN;YAHF;GAKE,kBAAC,GAAD;IACE,SAAQ;IACR,IAAI,EACF,YAAY,IACd;cACD;GAEW,CAAA;GACZ,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IACpB,OAAM;IACN,SAAS,EAAkB;IAC3B,WAAW,GAAQ,MACjB,EAAS;KACP,GAAG;KACH,yBAAyB;IAC3B,CAAC;GAEJ,CAAA;GACD,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IACpB,OAAM;IACN,SAAS,EAAkB;IAC3B,WAAW,GAAQ,MACjB,EAAS;KACP,GAAG;KACH,4BAA4B;IAC9B,CAAC;GAEJ,CAAA;IACC,EAAkB,iBAClB,KACA,EAAkB,iBAChB,MACF,kBAAC,GAAD;IACE,SAAS,kBAAC,GAAD,CAAW,CAAA;IACpB,OAAM;IACN,SAAS,EAAkB;IAC3B,WAAW,GAAQ,MACjB,EAAS;KACP,GAAG;KACH,iBAAiB;IACnB,CAAC;GAEJ,CAAA;EAEA;IACL,CAAA,EAEJ,CAAA;AAEN"}
@@ -0,0 +1,10 @@
1
+ import { ManagedACTAccessRequirement } from '@sage-bionetworks/synapse-types';
2
+ export declare const DUC_TEMPLATE_UPLOAD_ERROR = "There was an error uploading the DUC template. ";
3
+ export type DataUseCertificateSettings = Pick<ManagedACTAccessRequirement, 'id' | 'isDUCRequired' | 'ducTemplateFileHandleId' | 'eDucTemplateId'>;
4
+ export type DataUseCertificateFieldsProps = {
5
+ accessRequirement: DataUseCertificateSettings;
6
+ onChange: (changes: Partial<DataUseCertificateSettings>) => void;
7
+ isLoading: boolean;
8
+ };
9
+ export declare function DataUseCertificateFields(props: DataUseCertificateFieldsProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=DataUseCertificateFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataUseCertificateFields.d.ts","sourceRoot":"","sources":["../../../src/components/SetManagedAccessRequirementFields/DataUseCertificateFields.tsx"],"names":[],"mappings":"AAYA,OAAO,EAIL,2BAA2B,EAE5B,MAAM,iCAAiC,CAAA;AAKxC,eAAO,MAAM,yBAAyB,oDACa,CAAA;AAEnD,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,2BAA2B,EAC3B,IAAI,GAAG,eAAe,GAAG,yBAAyB,GAAG,gBAAgB,CACtE,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,iBAAiB,EAAE,0BAA0B,CAAA;IAE7C,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAA;IAChE,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,2CA8H5E"}
@@ -0,0 +1,81 @@
1
+ import { SynapseErrorBoundary as e } from "../error/ErrorBanner.js";
2
+ import { useListEDucTemplates as t } from "../../synapse-queries/dataaccess/useEDuc.js";
3
+ import "../../synapse-queries/index.js";
4
+ import { UploadDocumentField as n } from "../AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js";
5
+ import { useEffect as r, useMemo as i, useState as a } from "react";
6
+ import { Alert as o, Autocomplete as s, Box as c, Checkbox as l, FormControlLabel as u, TextField as d, Typography as f } from "@mui/material";
7
+ import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
8
+ import { FileHandleAssociateType as g } from "@sage-bionetworks/synapse-types";
9
+ //#region src/components/SetManagedAccessRequirementFields/DataUseCertificateFields.tsx
10
+ var _ = "There was an error uploading the DUC template. ";
11
+ function v(v) {
12
+ let { accessRequirement: y, onChange: b, isLoading: x } = v, [S, C] = a(null), w = i(() => {
13
+ if (y.ducTemplateFileHandleId) return {
14
+ fileHandleId: y.ducTemplateFileHandleId,
15
+ associateObjectType: g.AccessRequirementAttachment,
16
+ associateObjectId: y.id.toString()
17
+ };
18
+ }, [y.ducTemplateFileHandleId, y.id]), { data: T, isLoading: E, hasNextPage: D, fetchNextPage: O } = t();
19
+ r(() => {
20
+ D && O();
21
+ }, [D, O]);
22
+ let k = i(() => T?.pages.flatMap((e) => e.results ?? []) ?? [], [T]), A = i(() => k.find((e) => e.templateId === y.eDucTemplateId) ?? null, [k, y.eDucTemplateId]), j = (e) => {
23
+ if (e.resp && e.success) {
24
+ C(null);
25
+ let t = e.resp;
26
+ b({
27
+ ducTemplateFileHandleId: t.fileHandleId,
28
+ eDucTemplateId: void 0
29
+ });
30
+ } else !e.success && e.error && C(`${_} ${e.error.reason}`);
31
+ };
32
+ return /* @__PURE__ */ h(p, { children: [
33
+ /* @__PURE__ */ m(f, {
34
+ variant: "body1",
35
+ sx: { fontWeight: 700 },
36
+ children: "DUC"
37
+ }),
38
+ /* @__PURE__ */ m(u, {
39
+ control: /* @__PURE__ */ m(l, {}),
40
+ label: "DUC is required.",
41
+ checked: y.isDUCRequired,
42
+ onChange: (e, t) => b({ isDUCRequired: t })
43
+ }),
44
+ /* @__PURE__ */ h(e, { children: [/* @__PURE__ */ m(n, {
45
+ id: "duc",
46
+ isLoading: x,
47
+ disabled: !y.isDUCRequired,
48
+ uploadCallback: (e) => j(e),
49
+ documentName: "Template DUC",
50
+ fileHandleAssociations: w ? [w] : void 0,
51
+ isMultiFileUpload: !1,
52
+ uploadBtnVariant: "contained"
53
+ }), S && /* @__PURE__ */ m(o, {
54
+ severity: "error",
55
+ sx: { marginTop: 2 },
56
+ children: S
57
+ })] }),
58
+ /* @__PURE__ */ m(c, {
59
+ sx: { mt: 2 },
60
+ children: /* @__PURE__ */ m(s, {
61
+ id: "eDucTemplate",
62
+ options: k,
63
+ loading: E,
64
+ disabled: !y.isDUCRequired,
65
+ value: A,
66
+ onChange: (e, t) => b({ eDucTemplateId: t?.templateId }),
67
+ getOptionLabel: (e) => e.name ?? "",
68
+ isOptionEqualToValue: (e, t) => e.templateId === t.templateId,
69
+ renderInput: (e) => /* @__PURE__ */ m(d, {
70
+ ...e,
71
+ label: "eDUC template (electronic signing)",
72
+ helperText: "Optional. Select a DocuSign template to enable the eDUC signing flow for this Access Requirement."
73
+ })
74
+ })
75
+ })
76
+ ] });
77
+ }
78
+ //#endregion
79
+ export { _ as DUC_TEMPLATE_UPLOAD_ERROR, v as DataUseCertificateFields };
80
+
81
+ //# sourceMappingURL=DataUseCertificateFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataUseCertificateFields.js","names":[],"sources":["../../../src/components/SetManagedAccessRequirementFields/DataUseCertificateFields.tsx"],"sourcesContent":["import { useListEDucTemplates } from '@/synapse-queries'\nimport {\n Alert,\n Autocomplete,\n Box,\n Checkbox,\n FormControlLabel,\n TextField,\n Typography,\n} from '@mui/material'\nimport { EDucTemplate } from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useMemo, useState } from 'react'\nimport { UploadDocumentField } from '../AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\n\nexport const DUC_TEMPLATE_UPLOAD_ERROR =\n 'There was an error uploading the DUC template. '\n\nexport type DataUseCertificateSettings = Pick<\n ManagedACTAccessRequirement,\n 'id' | 'isDUCRequired' | 'ducTemplateFileHandleId' | 'eDucTemplateId'\n>\n\nexport type DataUseCertificateFieldsProps = {\n accessRequirement: DataUseCertificateSettings\n /* Called with the settings that changed; the caller merges them into its copy of the AR. */\n onChange: (changes: Partial<DataUseCertificateSettings>) => void\n isLoading: boolean\n}\n\nexport function DataUseCertificateFields(props: DataUseCertificateFieldsProps) {\n const { accessRequirement, onChange, isLoading } = props\n\n const [uploadDucTemplateError, setUploadDucTemplateError] = useState<\n string | null\n >(null)\n\n const ducTemplateFileHandleAssociation = useMemo(() => {\n if (accessRequirement.ducTemplateFileHandleId) {\n const ducTemplateFileHandleAssociation: FileHandleAssociation = {\n fileHandleId: accessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: accessRequirement.id.toString(),\n }\n return ducTemplateFileHandleAssociation\n }\n return undefined\n }, [accessRequirement.ducTemplateFileHandleId, accessRequirement.id])\n\n const {\n data: eDucTemplateData,\n isLoading: isLoadingEDucTemplates,\n hasNextPage: hasNextEDucTemplatePage,\n fetchNextPage: fetchNextEDucTemplatePage,\n } = useListEDucTemplates()\n // Auto-fetch all pages so the dropdown always shows the complete template list.\n useEffect(() => {\n if (hasNextEDucTemplatePage) {\n void fetchNextEDucTemplatePage()\n }\n }, [hasNextEDucTemplatePage, fetchNextEDucTemplatePage])\n const eDucTemplates = useMemo(\n () => eDucTemplateData?.pages.flatMap(page => page.results ?? []) ?? [],\n [eDucTemplateData],\n )\n const selectedEDucTemplate = useMemo(\n () =>\n eDucTemplates.find(\n template => template.templateId === accessRequirement.eDucTemplateId,\n ) ?? null,\n [eDucTemplates, accessRequirement.eDucTemplateId],\n )\n\n const uploadDucTemplateCallback = (data: UploadCallbackResp) => {\n if (data.resp && data.success) {\n setUploadDucTemplateError(null)\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n onChange({\n ducTemplateFileHandleId: uploadResponse.fileHandleId,\n eDucTemplateId: undefined, // mutually exclusive with file upload\n })\n } else if (!data.success && data.error) {\n setUploadDucTemplateError(\n `${DUC_TEMPLATE_UPLOAD_ERROR} ${\n (data.error as SynapseClientError).reason\n }`,\n )\n }\n }\n\n return (\n <>\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 700,\n }}\n >\n DUC\n </Typography>\n <FormControlLabel\n control={<Checkbox />}\n label=\"DUC is required.\"\n checked={accessRequirement.isDUCRequired}\n onChange={(_event, checked: boolean) =>\n onChange({ isDUCRequired: checked })\n }\n />\n <SynapseErrorBoundary>\n <UploadDocumentField\n id=\"duc\"\n isLoading={isLoading}\n disabled={!accessRequirement.isDUCRequired}\n uploadCallback={resp => uploadDucTemplateCallback(resp)}\n documentName=\"Template DUC\"\n fileHandleAssociations={\n ducTemplateFileHandleAssociation\n ? [ducTemplateFileHandleAssociation]\n : undefined\n }\n isMultiFileUpload={false}\n uploadBtnVariant=\"contained\"\n />\n {uploadDucTemplateError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {uploadDucTemplateError}\n </Alert>\n )}\n </SynapseErrorBoundary>\n <Box sx={{ mt: 2 }}>\n <Autocomplete<EDucTemplate>\n id=\"eDucTemplate\"\n options={eDucTemplates}\n loading={isLoadingEDucTemplates}\n disabled={!accessRequirement.isDUCRequired}\n value={selectedEDucTemplate}\n onChange={(_event, template) =>\n onChange({ eDucTemplateId: template?.templateId })\n }\n getOptionLabel={template => template.name ?? ''}\n isOptionEqualToValue={(option, value) =>\n option.templateId === value.templateId\n }\n renderInput={params => (\n <TextField\n {...params}\n label=\"eDUC template (electronic signing)\"\n helperText=\"Optional. Select a DocuSign template to enable the eDUC signing flow for this Access Requirement.\"\n />\n )}\n />\n </Box>\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAuBA,IAAa,IACX;AAcF,SAAgB,EAAyB,GAAsC;CAC7E,IAAM,EAAE,sBAAmB,aAAU,iBAAc,GAE7C,CAAC,GAAwB,KAA6B,EAE1D,IAAI,GAEA,IAAmC,QAAc;EACrD,IAAI,EAAkB,yBAOpB,OAAO;GALL,cAAc,EAAkB;GAChC,qBACE,EAAwB;GAC1B,mBAAmB,EAAkB,GAAG,SAAS;EAE5C;CAGX,GAAG,CAAC,EAAkB,yBAAyB,EAAkB,EAAE,CAAC,GAE9D,EACJ,MAAM,GACN,WAAW,GACX,aAAa,GACb,eAAe,MACb,EAAqB;CAEzB,QAAgB;EACd,AAAI,KACF,EAA+B;CAEnC,GAAG,CAAC,GAAyB,CAAyB,CAAC;CACvD,IAAM,IAAgB,QACd,GAAkB,MAAM,SAAQ,MAAQ,EAAK,WAAW,CAAC,CAAC,KAAK,CAAC,GACtE,CAAC,CAAgB,CACnB,GACM,IAAuB,QAEzB,EAAc,MACZ,MAAY,EAAS,eAAe,EAAkB,cACxD,KAAK,MACP,CAAC,GAAe,EAAkB,cAAc,CAClD,GAEM,KAA6B,MAA6B;EAC9D,IAAI,EAAK,QAAQ,EAAK,SAAS;GAC7B,EAA0B,IAAI;GAE9B,IAAM,IAAqC,EAAK;GAChD,EAAS;IACP,yBAAyB,EAAe;IACxC,gBAAgB,KAAA;GAClB,CAAC;EACH,OAAO,AAAI,CAAC,EAAK,WAAW,EAAK,SAC/B,EACE,GAAG,EAA0B,GAC1B,EAAK,MAA6B,QAEvC;CAEJ;CAEA,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD;GACE,SAAQ;GACR,IAAI,EACF,YAAY,IACd;aACD;EAEW,CAAA;EACZ,kBAAC,GAAD;GACE,SAAS,kBAAC,GAAD,CAAW,CAAA;GACpB,OAAM;GACN,SAAS,EAAkB;GAC3B,WAAW,GAAQ,MACjB,EAAS,EAAE,eAAe,EAAQ,CAAC;EAEtC,CAAA;EACD,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;GACE,IAAG;GACQ;GACX,UAAU,CAAC,EAAkB;GAC7B,iBAAgB,MAAQ,EAA0B,CAAI;GACtD,cAAa;GACb,wBACE,IACI,CAAC,CAAgC,IACjC,KAAA;GAEN,mBAAmB;GACnB,kBAAiB;EAClB,CAAA,GACA,KACC,kBAAC,GAAD;GAAO,UAAS;GAAQ,IAAI,EAAE,WAAW,EAAE;aACxC;EACI,CAAA,CAEW,EAAA,CAAA;EACtB,kBAAC,GAAD;GAAK,IAAI,EAAE,IAAI,EAAE;aACf,kBAAC,GAAD;IACE,IAAG;IACH,SAAS;IACT,SAAS;IACT,UAAU,CAAC,EAAkB;IAC7B,OAAO;IACP,WAAW,GAAQ,MACjB,EAAS,EAAE,gBAAgB,GAAU,WAAW,CAAC;IAEnD,iBAAgB,MAAY,EAAS,QAAQ;IAC7C,uBAAuB,GAAQ,MAC7B,EAAO,eAAe,EAAM;IAE9B,cAAa,MACX,kBAAC,GAAD;KACE,GAAI;KACJ,OAAM;KACN,YAAW;IACZ,CAAA;GAEJ,CAAA;EACE,CAAA;CACL,EAAA,CAAA;AAEN"}
@@ -0,0 +1,9 @@
1
+ export declare const getValidExpirationPeriodOrErrorMessage: (expirationPeriodDays: string) => string | number;
2
+ export type ExpirationPeriodFieldProps = {
3
+ days: string;
4
+ error: string | null;
5
+ onChange: (days: string) => void;
6
+ onBlur: () => void;
7
+ };
8
+ export declare function ExpirationPeriodField(props: ExpirationPeriodFieldProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=ExpirationPeriodField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpirationPeriodField.d.ts","sourceRoot":"","sources":["../../../src/components/SetManagedAccessRequirementFields/ExpirationPeriodField.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,sCAAsC,GACjD,sBAAsB,MAAM,oBAa7B,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IAEvC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAgBtE"}
@@ -0,0 +1,32 @@
1
+ import { DAY_IN_MS as e } from "../../utils/SynapseConstants.js";
2
+ import { TextField as t } from "@mui/material";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region src/components/SetManagedAccessRequirementFields/ExpirationPeriodField.tsx
5
+ var r = (t) => {
6
+ if (t === "") return 0;
7
+ let n = "Please enter a valid expiration period (in days): ";
8
+ if (/^[-]?\d+$/.test(t)) {
9
+ let r = Number(t);
10
+ return r < 0 ? `${n}If expiration period is set, then it must be greater than 0.` : r * e;
11
+ }
12
+ return `${n}For input string: "${t}"`;
13
+ };
14
+ function i(e) {
15
+ let { days: r, error: i, onChange: a, onBlur: o } = e;
16
+ return /* @__PURE__ */ n(t, {
17
+ id: "expirationPeriod",
18
+ name: "expirationPeriod",
19
+ label: "Expiration period (days)",
20
+ value: r,
21
+ error: !!i,
22
+ helperText: i,
23
+ sx: { mt: 1 },
24
+ fullWidth: !0,
25
+ onChange: (e) => a(e.target.value),
26
+ onBlur: o
27
+ });
28
+ }
29
+ //#endregion
30
+ export { i as ExpirationPeriodField, r as getValidExpirationPeriodOrErrorMessage };
31
+
32
+ //# sourceMappingURL=ExpirationPeriodField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpirationPeriodField.js","names":[],"sources":["../../../src/components/SetManagedAccessRequirementFields/ExpirationPeriodField.tsx"],"sourcesContent":["import { DAY_IN_MS } from '@/utils/SynapseConstants'\nimport { TextField } from '@mui/material'\n\nexport const getValidExpirationPeriodOrErrorMessage = (\n expirationPeriodDays: string,\n) => {\n if (expirationPeriodDays === '') return 0\n\n const msgPrefix = 'Please enter a valid expiration period (in days): '\n if (/^[-]?\\d+$/.test(expirationPeriodDays)) {\n const num = Number(expirationPeriodDays)\n if (num < 0) {\n return `${msgPrefix}If expiration period is set, then it must be greater than 0.`\n }\n return num * DAY_IN_MS\n }\n return `${msgPrefix}For input string: \"${expirationPeriodDays}\"`\n}\n\nexport type ExpirationPeriodFieldProps = {\n /* The expiration period in days, as typed by the user */\n days: string\n error: string | null\n onChange: (days: string) => void\n onBlur: () => void\n}\n\nexport function ExpirationPeriodField(props: ExpirationPeriodFieldProps) {\n const { days, error, onChange, onBlur } = props\n return (\n <TextField\n id=\"expirationPeriod\"\n name=\"expirationPeriod\"\n label=\"Expiration period (days)\"\n value={days}\n error={Boolean(error)}\n helperText={error}\n sx={{ mt: 1 }}\n fullWidth\n onChange={event => onChange(event.target.value)}\n onBlur={onBlur}\n />\n )\n}\n"],"mappings":";;;;AAGA,IAAa,KACX,MACG;CACH,IAAI,MAAyB,IAAI,OAAO;CAExC,IAAM,IAAY;CAClB,IAAI,YAAY,KAAK,CAAoB,GAAG;EAC1C,IAAM,IAAM,OAAO,CAAoB;EAIvC,OAHI,IAAM,IACD,GAAG,EAAU,gEAEf,IAAM;CACf;CACA,OAAO,GAAG,EAAU,qBAAqB,EAAqB;AAChE;AAUA,SAAgB,EAAsB,GAAmC;CACvE,IAAM,EAAE,SAAM,UAAO,aAAU,cAAW;CAC1C,OACE,kBAAC,GAAD;EACE,IAAG;EACH,MAAK;EACL,OAAM;EACN,OAAO;EACP,OAAO,EAAQ;EACf,YAAY;EACZ,IAAI,EAAE,IAAI,EAAE;EACZ,WAAA;EACA,WAAU,MAAS,EAAS,EAAM,OAAO,KAAK;EACtC;CACT,CAAA;AAEL"}
@@ -1,5 +1,3 @@
1
- export declare const DUC_TEMPLATE_UPLOAD_ERROR = "There was an error uploading the DUC template. ";
2
- export declare const getValidExpirationPeriodOrErrorMessage: (expirationPeriodDays: string) => string | number;
3
1
  export type SetManagedAccessRequirementFieldsHandle = {
4
2
  save: () => void;
5
3
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SetManagedAccessRequirementFields.d.ts","sourceRoot":"","sources":["../../../src/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.tsx"],"names":[],"mappings":"AAwCA,eAAO,MAAM,yBAAyB,oDACa,CAAA;AAEnD,eAAO,MAAM,sCAAsC,GACjD,sBAAsB,MAAM,oBAa7B,CAAA;AAED,MAAM,MAAM,uCAAuC,GAAG;IAEpD,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,sCAAsC,GAAG;IACnD,mBAAmB,EAAE,MAAM,CAAA;IAE3B,MAAM,EAAE,MAAM,IAAI,CAAA;IAElB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iCAAiC,4JA2T7C,CAAA"}
1
+ {"version":3,"file":"SetManagedAccessRequirementFields.d.ts","sourceRoot":"","sources":["../../../src/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.tsx"],"names":[],"mappings":"AAgCA,MAAM,MAAM,uCAAuC,GAAG;IAEpD,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,sCAAsC,GAAG;IACnD,mBAAmB,EAAE,MAAM,CAAA;IAE3B,MAAM,EAAE,MAAM,IAAI,CAAA;IAElB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iCAAiC,4JA2M7C,CAAA"}