synapse-react-client 4.0.40 → 4.0.42
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 +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts +7 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +30 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +138 -244
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts +13 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js +60 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +8 -2
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +179 -63
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts +2 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +13 -13
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts +3 -2
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +3 -2
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts +12 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js +50 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +112 -143
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +4 -2
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +8 -7
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +3 -2
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +79 -47
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts +12 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js +51 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts +12 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js +24 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +11 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.js +0 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts +22 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js +32 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js.map +1 -0
- package/dist/components/AclEditor/AclEditor.js +20 -20
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +51 -48
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Authentication/Constants.d.ts +4 -0
- package/dist/components/Authentication/Constants.d.ts.map +1 -1
- package/dist/components/Authentication/Constants.js +5 -2
- package/dist/components/Authentication/Constants.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +20 -18
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +90 -77
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +244 -246
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/GridLoadingState.d.ts +23 -0
- package/dist/components/DataGrid/components/GridLoadingState.d.ts.map +1 -0
- package/dist/components/DataGrid/components/GridLoadingState.js +64 -0
- package/dist/components/DataGrid/components/GridLoadingState.js.map +1 -0
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +52 -54
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +60 -6
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +71 -60
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts +11 -0
- package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/getNamedColumnIndices.js +8 -0
- package/dist/components/DataGrid/utils/getNamedColumnIndices.js.map +1 -0
- package/dist/components/FilePreview/FileHandleContentRenderer.d.ts +6 -2
- package/dist/components/FilePreview/FileHandleContentRenderer.d.ts.map +1 -1
- package/dist/components/FilePreview/FileHandleContentRenderer.js +27 -14
- package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
- package/dist/components/FilePreview/PdfPreview.d.ts +1 -1
- package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
- package/dist/components/FilePreview/PdfPreview.js +15 -16
- package/dist/components/FilePreview/PdfPreview.js.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +190 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.css +1 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.d.ts +17 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.js +88 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.module.js +5 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.module.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldLibrary.module.scss +12 -0
- package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts +19 -0
- package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js +115 -0
- package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.css +1 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts +9 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js +18 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js +5 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.scss +4 -0
- package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts +21 -0
- package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormStructurePanel.js +108 -0
- package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts +10 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditor.js +31 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts +15 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +234 -0
- package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js +72 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/StepCard.d.ts +25 -0
- package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/StepCard.js +203 -0
- package/dist/components/FormTemplateEditor/StepCard.js.map +1 -0
- package/dist/components/FormTemplateEditor/StepFieldRow.d.ts +34 -0
- package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/StepFieldRow.js +128 -0
- package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -0
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts +19 -0
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +78 -0
- package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -0
- package/dist/components/FormTemplateEditor/dragHandle.css +1 -0
- package/dist/components/FormTemplateEditor/dragHandle.module.js +8 -0
- package/dist/components/FormTemplateEditor/dragHandle.module.js.map +1 -0
- package/dist/components/FormTemplateEditor/dragHandle.module.scss +22 -0
- package/dist/components/FormTemplateEditor/dropTarget.css +1 -0
- package/dist/components/FormTemplateEditor/dropTarget.module.js +5 -0
- package/dist/components/FormTemplateEditor/dropTarget.module.js.map +1 -0
- package/dist/components/FormTemplateEditor/dropTarget.module.scss +14 -0
- package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts +48 -0
- package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateDraftState.js +126 -0
- package/dist/components/FormTemplateEditor/formTemplateDraftState.js.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts +35 -0
- package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateSchema.js +35 -0
- package/dist/components/FormTemplateEditor/formTemplateSchema.js.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +27 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +84 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
- package/dist/components/FormTemplateEditor/sortableIds.d.ts +23 -0
- package/dist/components/FormTemplateEditor/sortableIds.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/sortableIds.js +24 -0
- package/dist/components/FormTemplateEditor/sortableIds.js.map +1 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts +33 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDraft.js +59 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDraft.js.map +1 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts +9 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDrag.js +66 -0
- package/dist/components/FormTemplateEditor/useFormTemplateDrag.js.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +54 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
- package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
- package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/utils.js +24 -0
- package/dist/components/FormTemplateEditor/utils.js.map +1 -0
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts +11 -0
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.js +28 -19
- package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.css +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts +3 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.js +123 -123
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.module.js +10 -11
- package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.module.scss +0 -5
- package/dist/components/QueryBuilder/FilterGroupNode.css +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts +4 -0
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.js +85 -51
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.module.js +10 -9
- package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.module.scss +9 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
- package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.js +120 -108
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +7 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
- package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +2 -1
- package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -1
- package/dist/components/QueryBuilder/qbTreeToReadable.js +25 -21
- package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +16 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderMetadata.js +13 -5
- package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +13 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderOperations.js +39 -36
- package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts +18 -0
- package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -0
- package/dist/components/QueryBuilder/useQBValueDisplayName.js +64 -0
- package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +46 -47
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +6 -6
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts +1 -0
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +13 -11
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
- package/dist/components/SynapseTable/SearchV2.js +4 -4
- package/dist/components/ToastMessage/ToastMessage.d.ts.map +1 -1
- package/dist/components/ToastMessage/ToastMessage.js +25 -22
- package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
- package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts +7 -0
- package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts.map +1 -0
- package/dist/components/dataaccess/FormTemplateEditorRoute.js +26 -0
- package/dist/components/dataaccess/FormTemplateEditorRoute.js.map +1 -0
- package/dist/components/dataaccess/FormTemplateTable.d.ts +10 -0
- package/dist/components/dataaccess/FormTemplateTable.d.ts.map +1 -0
- package/dist/components/dataaccess/FormTemplateTable.js +124 -0
- package/dist/components/dataaccess/FormTemplateTable.js.map +1 -0
- package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js +80 -50
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +35 -36
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
- package/dist/components/styled/LeftRightPanel.js +19 -2
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/components/widgets/FileHandleLink.d.ts +12 -2
- package/dist/components/widgets/FileHandleLink.d.ts.map +1 -1
- package/dist/components/widgets/FileHandleLink.js +25 -29
- package/dist/components/widgets/FileHandleLink.js.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +4 -2
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.js +13 -14
- package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +4 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.js +24 -17
- package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/authHandlers.d.ts +1 -0
- package/dist/mocks/msw/handlers/authHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/authHandlers.js +6 -2
- package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts +2 -0
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +52 -46
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js +25 -21
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +2 -1
- package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/formTemplateHandlers.js +18 -18
- package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts +10 -1
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js +30 -7
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts +8 -0
- package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js +19 -0
- package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js.map +1 -0
- package/dist/style/abstracts/_cssVariables.scss +13 -0
- package/dist/style/components/_toasts.scss +10 -1
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +9 -3
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +17 -7
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/auth/index.d.ts +1 -0
- package/dist/synapse-queries/auth/index.d.ts.map +1 -1
- package/dist/synapse-queries/auth/index.js +2 -1
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts +11 -0
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts.map +1 -0
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +19 -0
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -0
- package/dist/synapse-queries/dataaccess/index.d.ts +0 -1
- package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +3 -4
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts +18 -0
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +33 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js +6 -6
- package/dist/synapse-queries/file/useFileHandle.d.ts +8 -0
- package/dist/synapse-queries/file/useFileHandle.d.ts.map +1 -1
- package/dist/synapse-queries/file/useFileHandle.js +15 -6
- package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
- package/dist/synapse-queries/index.js +260 -257
- package/dist/synapse-queries/jsonschema/index.js +2 -2
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
- package/dist/synapse-queries/jsonschema/useSchema.d.ts +5 -0
- package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -1
- package/dist/synapse-queries/jsonschema/useSchema.js +9 -1
- package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -1
- package/dist/testutils/vitest.setup.js +18 -9
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +2 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js +4 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -0
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.d.ts +3 -0
- package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +7 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/toPascalCase.d.ts +6 -0
- package/dist/utils/functions/toPascalCase.d.ts.map +1 -0
- package/dist/utils/functions/toPascalCase.js +8 -0
- package/dist/utils/functions/toPascalCase.js.map +1 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
- package/dist/utils/jsonschema/submissionContext.d.ts +91 -0
- package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
- package/dist/utils/jsonschema/submissionContext.js +178 -0
- package/dist/utils/jsonschema/submissionContext.js.map +1 -0
- package/package.json +13 -10
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts +0 -21
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts.map +0 -1
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js +0 -34
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import { NewReleasesOutlined } from '@mui/icons-material'\nimport {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Link,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { deepEquals } from '@rjsf/utils'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport isEmpty from 'lodash-es/isEmpty'\nimport {\n AccessorChange,\n AccessType,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n SigningOfficial,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useRef, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport { longFieldLabelSx } from '../styles'\nimport DocumentTemplate from '../DocumentTemplate'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\n// PORTALS-4376: eDUC DARs cap total accessors at 100 (submitter + PI + 97 collaborators + 1 slack).\nexport const EDUC_COLLABORATOR_LIMIT = 97\n\nfunction AccessorRequirementHelpText(props: {\n managedACTAccessRequirement: ManagedACTAccessRequirement\n isEDucEnabled: boolean\n}) {\n const { managedACTAccessRequirement, isEDucEnabled } = props\n let link: string = ''\n let msg: string = ''\n\n if (\n managedACTAccessRequirement.isCertifiedUserRequired &&\n managedACTAccessRequirement.isValidatedProfileRequired\n ) {\n link = 'https://help.synapse.org/docs/User-Types.2007072795.html'\n msg =\n 'All data requesters must be certified users and have a validated user profile.'\n } else if (managedACTAccessRequirement.isCertifiedUserRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-CertifiedUsers'\n msg = 'All data requesters must be a certified user.'\n } else if (managedACTAccessRequirement.isValidatedProfileRequired) {\n link =\n 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-ValidatedUsers'\n msg = 'All data requesters must have a validated user profile.'\n }\n return (\n <>\n {managedACTAccessRequirement.isDUCRequired && !isEDucEnabled ? (\n <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', py: 1 }}>\n <NewReleasesOutlined sx={{ color: 'error.main' }} />\n <div>\n You must list the Synapse user names of all collaborators listed in\n your Data Use Certificate (DUC).\n </div>\n </Box>\n ) : (\n ''\n )}\n {msg}{' '}\n {link && (\n <Link href={link} target={'_blank'} rel={'noreferrer'}>\n Learn more\n </Link>\n )}\n </>\n )\n}\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n /**\n * When set (used for eDUC ARs), clicking the primary action saves the DAR and invokes this callback\n * instead of creating a submission. Submission happens later in the eDUC flow.\n */\n onEDucContinue?: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n onEDucContinue,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const isEDucEnabled = Boolean(managedACTAccessRequirement.eDucTemplateId)\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n const [soName, setSoName] = useState<string>('')\n const [soEmail, setSoEmail] = useState<string>('')\n const hasAppliedImmediateUpdates = useRef(false)\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * Fields backed by local state are not synced with the server until the request is submitted, so an in-flight\n * background update to the request must not block the user from editing them.\n */\n const disableLocalStateFields =\n isLoadingGetDataAccessRequest || submitDataAccessRequestIsPending\n\n const disableSubmitButton =\n submitDataAccessRequestIsPending || (isEDucEnabled && (!soName || !soEmail))\n\n /**\n * This effect comprises a collection of updates we should immediately apply to a data access request.\n */\n useEffect(() => {\n if (dataAccessRequest && user && !hasAppliedImmediateUpdates.current) {\n let shouldUpdate = false\n\n // Attach the researchProjectId to the request\n if (!dataAccessRequest.researchProjectId) {\n dataAccessRequest.researchProjectId = researchProjectId\n shouldUpdate = true\n }\n\n // Add the current user with GAIN_ACCESS to the list of accessors\n const currentUserWithGainAccess: AccessorChange = {\n userId: user.ownerId,\n type: isRenewal ? AccessType.RENEW_ACCESS : AccessType.GAIN_ACCESS,\n }\n if (\n !dataAccessRequest.accessorChanges?.find(item =>\n deepEquals(item, currentUserWithGainAccess),\n )\n ) {\n dataAccessRequest.accessorChanges = [\n currentUserWithGainAccess,\n ...(dataAccessRequest.accessorChanges || []),\n ]\n shouldUpdate = true\n }\n\n // SWC-5765: Filter out duplicate accessors\n const seen = new Set()\n const uniqueAccessorChanges = dataAccessRequest.accessorChanges.filter(\n accessorChange => {\n return seen.has(accessorChange.userId)\n ? false\n : seen.add(accessorChange.userId)\n },\n )\n if (\n uniqueAccessorChanges.length !==\n dataAccessRequest.accessorChanges.length\n ) {\n dataAccessRequest.accessorChanges = uniqueAccessorChanges\n shouldUpdate = true\n }\n\n if (shouldUpdate) {\n // Only attempt these updates once. If the server does not echo back a value we applied here, retrying would\n // loop indefinitely, leaving the form perpetually in a pending state.\n hasAppliedImmediateUpdates.current = true\n updateRequestAsync(dataAccessRequest)\n }\n }\n }, [\n dataAccessRequest,\n isRenewal,\n researchProjectId,\n updateRequestAsync,\n user,\n ])\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n if (isEDucEnabled) {\n const so = dataAccessRequest.signingOfficial\n if (isEmpty(soName) && so?.name) {\n setSoName(so.name)\n }\n if (isEmpty(soEmail) && so?.institutionalEmail) {\n setSoEmail(so.institutionalEmail)\n }\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n const base = {\n ...dataAccessRequest,\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n if (isEDucEnabled) {\n const nextSo: SigningOfficial = {\n ...dataAccessRequest?.signingOfficial,\n name: soName || undefined,\n institutionalEmail: soEmail || undefined,\n }\n return { ...base, signingOfficial: nextSo }\n }\n return base\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n if (onEDucContinue) {\n onEDucContinue()\n return\n }\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequestAsync({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequestAsync({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2, fontSize: '16px' }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {isEDucEnabled && (\n <>\n <Typography variant={'headline3'} sx={{ mb: 2 }}>\n Signing Official\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, mb: 2 }}\n >\n The signing official is a member of your institution with\n oversight authority who is NOT part of the study team (i.e.,\n not the Project Lead, not a Data Requester or Collaborator,\n and not the Principal Investigator). They do not need a\n Synapse account but must be able to receive messages at the\n email address provided below.\n </Typography>\n <TextField\n id=\"so-name\"\n label=\"First and last names of your Signing Official\"\n placeholder=\"First and last name of signing official, ex: John Smith\"\n fullWidth\n type=\"text\"\n disabled={disableLocalStateFields}\n value={soName}\n required\n onChange={e => setSoName(e.target.value)}\n sx={{ mb: 2 }}\n />\n <TextField\n id=\"so-email\"\n label=\"Institutional Email of your Signing Official\"\n type=\"email\"\n placeholder=\"Individual with signing authority, e.g. jane.smith@institution.edu\"\n fullWidth\n disabled={disableLocalStateFields}\n value={soEmail}\n required\n onChange={e => setSoEmail(e.target.value)}\n sx={{ mb: 2 }}\n />\n <Divider sx={{ my: 4 }} />\n </>\n )}\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n collaboratorLimit={\n isEDucEnabled ? EDUC_COLLABORATOR_LIMIT : undefined\n }\n helpText={\n <AccessorRequirementHelpText\n managedACTAccessRequirement={managedACTAccessRequirement}\n isEDucEnabled={isEDucEnabled}\n />\n }\n />\n )}\n\n {((managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled) ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC — hidden for eDUC ARs, which handle DUC via the eDUC flow */}\n {managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled && (\n <>\n {managedACTAccessRequirement?.ducTemplateFileHandleId && (\n <DocumentTemplate\n title={'Download DUC Template'}\n description={\n 'As a first step, you will need to download the most current version of the Data Use Certificate.'\n }\n fileHandleAssociation={{\n fileHandleId:\n managedACTAccessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: String(managedACTAccessRequirement.id),\n }}\n downloadButtonText={'Download DUC Template'}\n />\n )}\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Fill out and upload a Data Use Certificate\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must download and fill out a Data Use Certificate (DUC).\n Be sure to upload the completed DUC below once you've\n completed it.\n </Typography>\n <Typography\n variant={'body1'}\n component={'ol'}\n sx={longFieldLabelSx}\n >\n <li>Download the DUC template file.</li>\n <li>\n Fill out the DUC template, following the instructions in the\n file.\n </li>\n <li>\n Upload the completed certificate using the button below:\n </li>\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'duc'}\n isLoading={isLoading}\n uploadCallback={resp =>\n uploadCallback(resp, 'ducFileHandleId')\n }\n documentName={'Data Use Certificate'}\n fileHandleAssociations={ducFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n loading={submitDataAccessRequestIsPending}\n disabled={disableSubmitButton}\n onClick={() => {\n handleSubmit()\n }}\n >\n {onEDucContinue ? 'Continue' : 'Submit'}\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport isEmpty from 'lodash-es/isEmpty'\nimport {\n AccessorChange,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n SigningOfficial,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport { longFieldLabelSx } from '../styles'\nimport AccessorRequirementHelpText from '../AccessorRequirementHelpText'\nimport DucUploadSection from '../DucUploadSection'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport SigningOfficialFields from '../SigningOfficialFields'\nimport { useInitializeRequestAccessors } from '../useInitializeRequestAccessors'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\n// PORTALS-4376: eDUC DARs cap total accessors at 100 (submitter + PI + 97 collaborators + 1 slack).\nexport const EDUC_COLLABORATOR_LIMIT = 97\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n /**\n * When set (used for eDUC ARs), clicking the primary action saves the DAR and invokes this callback\n * instead of creating a submission. Submission happens later in the eDUC flow.\n */\n onEDucContinue?: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n onEDucContinue,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const isEDucEnabled = Boolean(managedACTAccessRequirement.eDucTemplateId)\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n const [soName, setSoName] = useState<string>('')\n const [soEmail, setSoEmail] = useState<string>('')\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutate: updateRequest,\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * Fields backed by local state are not synced with the server until the request is submitted, so an in-flight\n * background update to the request must not block the user from editing them.\n */\n const disableLocalStateFields =\n isLoadingGetDataAccessRequest || submitDataAccessRequestIsPending\n\n const disableSubmitButton =\n submitDataAccessRequestIsPending || (isEDucEnabled && (!soName || !soEmail))\n\n useInitializeRequestAccessors({\n dataAccessRequest,\n user,\n isRenewal,\n updateRequest,\n researchProjectId,\n })\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n if (isEDucEnabled) {\n const so = dataAccessRequest.signingOfficial\n if (isEmpty(soName) && so?.name) {\n setSoName(so.name)\n }\n if (isEmpty(soEmail) && so?.institutionalEmail) {\n setSoEmail(so.institutionalEmail)\n }\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n const base = {\n ...dataAccessRequest,\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n if (isEDucEnabled) {\n const nextSo: SigningOfficial = {\n ...dataAccessRequest?.signingOfficial,\n name: soName || undefined,\n institutionalEmail: soEmail || undefined,\n }\n return { ...base, signingOfficial: nextSo }\n }\n return base\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n if (onEDucContinue) {\n onEDucContinue()\n return\n }\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequest({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequest({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequest({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2, fontSize: '16px' }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {isEDucEnabled && (\n <SigningOfficialFields\n name={soName}\n email={soEmail}\n disabled={disableLocalStateFields}\n onNameChange={setSoName}\n onEmailChange={setSoEmail}\n />\n )}\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n collaboratorLimit={\n isEDucEnabled ? EDUC_COLLABORATOR_LIMIT : undefined\n }\n helpText={\n <AccessorRequirementHelpText\n accessRequirement={managedACTAccessRequirement}\n isEDucEnabled={isEDucEnabled}\n />\n }\n />\n )}\n\n {((managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled) ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC — hidden for eDUC ARs, which handle DUC via the eDUC flow */}\n {managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled && (\n <>\n <DucUploadSection\n accessRequirement={managedACTAccessRequirement}\n isLoading={isLoading}\n uploadedDucAssociations={ducFileHandleAssociation}\n onUpload={resp => uploadCallback(resp, 'ducFileHandleId')}\n />\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n loading={submitDataAccessRequestIsPending}\n disabled={disableSubmitButton}\n onClick={() => {\n handleSubmit()\n }}\n >\n {onEDucContinue ? 'Continue' : 'Submit'}\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FileHandleAssociation, UploadCallbackResp } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
import { AccessorStepAccessRequirement } from './requestFlowTypes';
|
|
3
|
+
export type DucUploadSectionProps = {
|
|
4
|
+
accessRequirement: AccessorStepAccessRequirement;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
uploadedDucAssociations: FileHandleAssociation[];
|
|
7
|
+
onUpload: (response: UploadCallbackResp) => void;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Lets the user download the DUC template of a non-eDUC access requirement and upload the completed certificate.
|
|
11
|
+
*/
|
|
12
|
+
export default function DucUploadSection(props: DucUploadSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=DucUploadSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DucUploadSection.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;AAIlE,MAAM,MAAM,qBAAqB,GAAG;IAClC,iBAAiB,EAAE,6BAA6B,CAAA;IAChD,SAAS,EAAE,OAAO,CAAA;IAClB,uBAAuB,EAAE,qBAAqB,EAAE,CAAA;IAChD,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACjD,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CA6CpE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { SynapseErrorBoundary as e } from "../../error/ErrorBanner.js";
|
|
2
|
+
import { longFieldLabelSx as t } from "./styles.js";
|
|
3
|
+
import n from "./DocumentTemplate.js";
|
|
4
|
+
import { UploadDocumentField as r } from "./UploadDocumentField.js";
|
|
5
|
+
import { Typography as i } from "@mui/material";
|
|
6
|
+
import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
+
import { FileHandleAssociateType as c } from "@sage-bionetworks/synapse-types";
|
|
8
|
+
//#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.tsx
|
|
9
|
+
function l(l) {
|
|
10
|
+
let { accessRequirement: u, isLoading: d, uploadedDucAssociations: f, onUpload: p } = l;
|
|
11
|
+
return /* @__PURE__ */ s(a, { children: [
|
|
12
|
+
u.ducTemplateFileHandleId && /* @__PURE__ */ o(n, {
|
|
13
|
+
title: "Download DUC Template",
|
|
14
|
+
description: "As a first step, you will need to download the most current version of the Data Use Certificate.",
|
|
15
|
+
fileHandleAssociation: {
|
|
16
|
+
fileHandleId: u.ducTemplateFileHandleId,
|
|
17
|
+
associateObjectType: c.AccessRequirementAttachment,
|
|
18
|
+
associateObjectId: String(u.id)
|
|
19
|
+
},
|
|
20
|
+
downloadButtonText: "Download DUC Template"
|
|
21
|
+
}),
|
|
22
|
+
/* @__PURE__ */ o(i, {
|
|
23
|
+
variant: "headline3",
|
|
24
|
+
sx: {
|
|
25
|
+
mt: 4,
|
|
26
|
+
mb: 2
|
|
27
|
+
},
|
|
28
|
+
children: "Fill out and upload a Data Use Certificate"
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ o(i, {
|
|
31
|
+
variant: "body1",
|
|
32
|
+
sx: {
|
|
33
|
+
...t,
|
|
34
|
+
my: 2
|
|
35
|
+
},
|
|
36
|
+
children: "You must download and fill out a Data Use Certificate (DUC). Be sure to upload the completed DUC below once you've completed it."
|
|
37
|
+
}),
|
|
38
|
+
/* @__PURE__ */ s(i, {
|
|
39
|
+
variant: "body1",
|
|
40
|
+
component: "ol",
|
|
41
|
+
sx: t,
|
|
42
|
+
children: [
|
|
43
|
+
/* @__PURE__ */ o("li", { children: "Download the DUC template file." }),
|
|
44
|
+
/* @__PURE__ */ o("li", { children: "Fill out the DUC template, following the instructions in the file." }),
|
|
45
|
+
/* @__PURE__ */ o("li", { children: "Upload the completed certificate using the button below:" })
|
|
46
|
+
]
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ o(e, { children: /* @__PURE__ */ o(r, {
|
|
49
|
+
id: "duc",
|
|
50
|
+
isLoading: d,
|
|
51
|
+
uploadCallback: p,
|
|
52
|
+
documentName: "Data Use Certificate",
|
|
53
|
+
fileHandleAssociations: f
|
|
54
|
+
}) })
|
|
55
|
+
] });
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { l as default };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=DucUploadSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DucUploadSection.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport {\n FileHandleAssociateType,\n FileHandleAssociation,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { SynapseErrorBoundary } from '../../error/ErrorBanner'\nimport DocumentTemplate from './DocumentTemplate'\nimport { AccessorStepAccessRequirement } from './requestFlowTypes'\nimport { longFieldLabelSx } from './styles'\nimport { UploadDocumentField } from './UploadDocumentField'\n\nexport type DucUploadSectionProps = {\n accessRequirement: AccessorStepAccessRequirement\n isLoading: boolean\n uploadedDucAssociations: FileHandleAssociation[]\n onUpload: (response: UploadCallbackResp) => void\n}\n\n/**\n * Lets the user download the DUC template of a non-eDUC access requirement and upload the completed certificate.\n */\nexport default function DucUploadSection(props: DucUploadSectionProps) {\n const { accessRequirement, isLoading, uploadedDucAssociations, onUpload } =\n props\n return (\n <>\n {accessRequirement.ducTemplateFileHandleId && (\n <DocumentTemplate\n title={'Download DUC Template'}\n description={\n 'As a first step, you will need to download the most current version of the Data Use Certificate.'\n }\n fileHandleAssociation={{\n fileHandleId: accessRequirement.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: String(accessRequirement.id),\n }}\n downloadButtonText={'Download DUC Template'}\n />\n )}\n <Typography variant={'headline3'} sx={{ mt: 4, mb: 2 }}>\n Fill out and upload a Data Use Certificate\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, my: 2 }}>\n You must download and fill out a Data Use Certificate (DUC). Be sure to\n upload the completed DUC below once you've completed it.\n </Typography>\n <Typography variant={'body1'} component={'ol'} sx={longFieldLabelSx}>\n <li>Download the DUC template file.</li>\n <li>\n Fill out the DUC template, following the instructions in the file.\n </li>\n <li>Upload the completed certificate using the button below:</li>\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'duc'}\n isLoading={isLoading}\n uploadCallback={onUpload}\n documentName={'Data Use Certificate'}\n fileHandleAssociations={uploadedDucAssociations}\n />\n </SynapseErrorBoundary>\n </>\n )\n}\n"],"mappings":";;;;;;;;AAsBA,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EAAE,sBAAmB,cAAW,4BAAyB,gBAC7D;CACF,OACE,kBAAA,GAAA,EAAA,UAAA;EACG,EAAkB,2BACjB,kBAAC,GAAD;GACE,OAAO;GACP,aACE;GAEF,uBAAuB;IACrB,cAAc,EAAkB;IAChC,qBACE,EAAwB;IAC1B,mBAAmB,OAAO,EAAkB,EAAE;GAChD;GACA,oBAAoB;EACrB,CAAA;EAEH,kBAAC,GAAD;GAAY,SAAS;GAAa,IAAI;IAAE,IAAI;IAAG,IAAI;GAAE;aAAG;EAE5C,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;GAAS,IAAI;IAAE,GAAG;IAAkB,IAAI;GAAE;aAAG;EAGtD,CAAA;EACZ,kBAAC,GAAD;GAAY,SAAS;GAAS,WAAW;GAAM,IAAI;aAAnD;IACE,kBAAC,MAAD,EAAA,UAAI,kCAAmC,CAAA;IACvC,kBAAC,MAAD,EAAA,UAAI,qEAEA,CAAA;IACJ,kBAAC,MAAD,EAAA,UAAI,2DAA4D,CAAA;GACtD;;EACZ,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,IAAI;GACO;GACX,gBAAgB;GAChB,cAAc;GACd,wBAAwB;EACzB,CAAA,EACmB,CAAA;CACtB,EAAA,CAAA;AAEN"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RequestFlowAccessRequirement } from '../requestFlowTypes';
|
|
2
|
+
export declare const SEND_FOR_SIGNATURE_BUTTON_TEXT = "Send for electronic signature";
|
|
3
|
+
export declare const KEEP_OR_REPLACE_DIALOG_TITLE = "Keep your existing DUC or send a new one?";
|
|
4
|
+
export declare const KEEP_EXISTING_DUC_BUTTON_TEXT = "Keep Existing DUC";
|
|
5
|
+
export declare const SEND_NEW_DUC_BUTTON_TEXT = "Send new DUC";
|
|
6
|
+
export declare const RESTART_SIGNING_DIALOG_TITLE = "Restart DUC signing?";
|
|
7
|
+
export declare const RESTART_SIGNING_CONFIRM_BUTTON_TEXT = "I understand, send new DUC";
|
|
2
8
|
export type EDucPreviewStepProps = {
|
|
3
|
-
managedACTAccessRequirement:
|
|
9
|
+
managedACTAccessRequirement: RequestFlowAccessRequirement;
|
|
4
10
|
onHide: () => void;
|
|
5
11
|
onBackClicked: () => void;
|
|
6
12
|
onSendForSignature: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EDucPreviewStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EDucPreviewStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAIlE,eAAO,MAAM,8BAA8B,kCAAkC,CAAA;AAE7E,eAAO,MAAM,4BAA4B,8CACI,CAAA;AAC7C,eAAO,MAAM,6BAA6B,sBAAsB,CAAA;AAChE,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,eAAO,MAAM,4BAA4B,yBAAyB,CAAA;AAClE,eAAO,MAAM,mCAAmC,+BAA+B,CAAA;AAW/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B,EAAE,4BAA4B,CAAA;IACzD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA+YlE"}
|
|
@@ -1,24 +1,58 @@
|
|
|
1
1
|
import e from "../../../../synapse-client/index.js";
|
|
2
2
|
import { useGetDataAccessRequestForUpdate as t } from "../../../../synapse-queries/dataaccess/useAccessRequirements.js";
|
|
3
|
-
import {
|
|
3
|
+
import { useCheckDataAccessRequestSignatureUpdatable as n, useGetDataAccessRequestPreview as r, useGetDataAccessRequestSignatureQuota as ee, useInitiateDataAccessRequestSignature as te, useUpdateDataAccessRequestSignature as ne, useVoidDataAccessRequestSignature as re } from "../../../../synapse-queries/dataaccess/useEDuc.js";
|
|
4
4
|
import "../../../../synapse-queries/index.js";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
5
|
+
import { DialogBase as ie } from "../../../DialogBase.js";
|
|
6
|
+
import { CANCEL_BUTTON_TEXT as ae, ConfirmationDialog as oe } from "../../../ConfirmationDialog/ConfirmationDialog.js";
|
|
7
|
+
import "../../../ConfirmationDialog/index.js";
|
|
8
|
+
import se from "../../../IconSvg/IconSvg.js";
|
|
9
|
+
import { longFieldLabelSx as i } from "../styles.js";
|
|
10
|
+
import { useFetchBlobUrl as ce } from "../../../../utils/hooks/useFetchBlobUrl.js";
|
|
11
|
+
import { SignatureQuotaExhaustedMessage as a } from "../eDucSignatureUtils.js";
|
|
12
|
+
import { useState as o } from "react";
|
|
13
|
+
import { Alert as s, Box as c, Button as l, DialogActions as le, DialogContent as ue, DialogTitle as de, Divider as fe, IconButton as pe, Skeleton as me, Stack as u, Tooltip as d, Typography as f } from "@mui/material";
|
|
14
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
15
|
+
import { FileHandleAssociateType as he } from "@sage-bionetworks/synapse-types";
|
|
11
16
|
//#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.tsx
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
let { managedACTAccessRequirement:
|
|
17
|
+
var g = "500px", _ = "Send for electronic signature", v = "Keep your existing DUC or send a new one?", y = "Keep Existing DUC", b = "Send new DUC", x = "Restart DUC signing?", S = "I understand, send new DUC", ge = "Sorry, we couldn't check the status of your existing signature request.", _e = "Sorry, we couldn't apply your changes to your existing signature request.", ve = "Sorry, we couldn't cancel your existing signature request.", ye = "Sorry, we couldn't send your DUC for electronic signature.";
|
|
18
|
+
function C(C) {
|
|
19
|
+
let { managedACTAccessRequirement: xe, onHide: Se, onBackClicked: Ce, onSendForSignature: E, onManualUpload: we, previewSrcOverride: D } = C, { data: O, isLoading: k } = t(String(xe.id), {
|
|
15
20
|
staleTime: Infinity,
|
|
16
21
|
throwOnError: !0
|
|
17
|
-
}), { data:
|
|
18
|
-
|
|
22
|
+
}), A = O?.id, j = !!O?.eDucSignatureEnvelopeId, [Te, Ee] = o(!1), { data: De, isLoading: Oe, error: M } = r(A ?? "", { enabled: !!A && !Te }), N = De?.fileHandleId, { blobUrl: P, error: F } = ce(D || !N || !A ? void 0 : e.getPortalFileHandleServletUrl(N, A, he.DataAccessRequestAttachment)), { mutateAsync: ke, isPending: Ae, error: I, reset: je } = n(), { mutate: Me, isPending: L, error: R, reset: Ne } = ne({ onSuccess: () => E() }), { mutateAsync: Pe, isPending: Fe, error: z, reset: Ie } = re(), { mutate: B, isPending: Le, error: V, reset: Re } = te({ onSuccess: () => E() }), { data: H, isLoading: ze } = ee(A ?? "", { enabled: !!A }), U = H?.remaining != null && H.remaining <= 0, W = U && !j, [G, K] = o(null), [Be, q] = o(!1), J = Ae || L || Fe || Le, Y = k || !!A && Oe || !D && !!N && !P && !F, X = Y || !D && !P || J, Ve = X || ze || W, Z = I && {
|
|
23
|
+
title: ge,
|
|
24
|
+
reason: I.reason
|
|
25
|
+
} || R && {
|
|
26
|
+
title: _e,
|
|
27
|
+
reason: R.reason
|
|
28
|
+
} || z && {
|
|
29
|
+
title: ve,
|
|
30
|
+
reason: z.reason
|
|
31
|
+
} || V && {
|
|
32
|
+
title: ye,
|
|
33
|
+
reason: V.reason
|
|
34
|
+
} || Be && {
|
|
35
|
+
title: "Sorry, you've used all of your electronic signature requests.",
|
|
36
|
+
reason: /* @__PURE__ */ m(a, { quota: H?.quota })
|
|
37
|
+
}, He = () => {
|
|
38
|
+
je(), Ne(), Ie(), Re(), q(!1);
|
|
39
|
+
}, Ue = async () => {
|
|
40
|
+
if (!A) return;
|
|
41
|
+
if (He(), Ee(!0), !j) {
|
|
42
|
+
B(A);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
let e = await ke(A).catch(() => null);
|
|
46
|
+
e !== null && (e ? K("keepOrReplace") : U ? q(!0) : K("restartSigning"));
|
|
47
|
+
}, We = () => {
|
|
48
|
+
A && (K(null), Me(A));
|
|
49
|
+
}, Q = async () => {
|
|
50
|
+
A && (K(null), await Pe(A).then(() => !0, () => !1) && B(A));
|
|
51
|
+
}, $ = () => {
|
|
52
|
+
K(null);
|
|
19
53
|
};
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
/* @__PURE__ */
|
|
54
|
+
return /* @__PURE__ */ h(p, { children: [
|
|
55
|
+
/* @__PURE__ */ m(de, { children: /* @__PURE__ */ h(u, {
|
|
22
56
|
direction: "row",
|
|
23
57
|
sx: {
|
|
24
58
|
alignItems: "center",
|
|
@@ -26,11 +60,11 @@ function T(T) {
|
|
|
26
60
|
},
|
|
27
61
|
children: [
|
|
28
62
|
"Request Access",
|
|
29
|
-
/* @__PURE__ */
|
|
30
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ m(c, { sx: { flexGrow: 1 } }),
|
|
64
|
+
/* @__PURE__ */ m(pe, {
|
|
31
65
|
"aria-label": "Close",
|
|
32
|
-
onClick:
|
|
33
|
-
children: /* @__PURE__ */
|
|
66
|
+
onClick: Se,
|
|
67
|
+
children: /* @__PURE__ */ m(se, {
|
|
34
68
|
icon: "close",
|
|
35
69
|
wrap: !1,
|
|
36
70
|
sx: { color: "grey.700" }
|
|
@@ -38,8 +72,8 @@ function T(T) {
|
|
|
38
72
|
})
|
|
39
73
|
]
|
|
40
74
|
}) }),
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
-
/* @__PURE__ */
|
|
75
|
+
/* @__PURE__ */ h(ue, { children: [
|
|
76
|
+
/* @__PURE__ */ m(f, {
|
|
43
77
|
variant: "body1",
|
|
44
78
|
sx: {
|
|
45
79
|
fontWeight: 700,
|
|
@@ -47,38 +81,38 @@ function T(T) {
|
|
|
47
81
|
},
|
|
48
82
|
children: "Take a minute to preview your DUC"
|
|
49
83
|
}),
|
|
50
|
-
/* @__PURE__ */
|
|
84
|
+
/* @__PURE__ */ m(f, {
|
|
51
85
|
variant: "body1",
|
|
52
86
|
sx: {
|
|
53
|
-
...
|
|
87
|
+
...i,
|
|
54
88
|
mb: 2
|
|
55
89
|
},
|
|
56
90
|
children: "Please ensure that all information is correct, as incorrect information will result in the rejection of your access request. Use the Back button to return to previous steps and modify any details."
|
|
57
91
|
}),
|
|
58
|
-
|
|
92
|
+
Y && /* @__PURE__ */ m(me, {
|
|
59
93
|
variant: "rectangular",
|
|
60
94
|
width: "100%",
|
|
61
|
-
height:
|
|
95
|
+
height: g,
|
|
62
96
|
"data-testid": "EDucPreviewStep-loading"
|
|
63
97
|
}),
|
|
64
|
-
!
|
|
98
|
+
!Y && (M || F) && /* @__PURE__ */ h(s, {
|
|
65
99
|
severity: "error",
|
|
66
100
|
children: [
|
|
67
|
-
/* @__PURE__ */
|
|
68
|
-
/* @__PURE__ */
|
|
69
|
-
|
|
101
|
+
/* @__PURE__ */ m("strong", { children: "Sorry, we couldn't load your DUC preview." }),
|
|
102
|
+
/* @__PURE__ */ m("br", {}),
|
|
103
|
+
M?.reason ?? F?.message
|
|
70
104
|
]
|
|
71
105
|
}),
|
|
72
|
-
!
|
|
106
|
+
!Y && !M && !F && (D || P) && /* @__PURE__ */ m("iframe", {
|
|
73
107
|
title: "eDUC preview",
|
|
74
|
-
src:
|
|
108
|
+
src: D ?? P,
|
|
75
109
|
style: {
|
|
76
110
|
border: 0,
|
|
77
111
|
width: "100%",
|
|
78
|
-
height:
|
|
112
|
+
height: g
|
|
79
113
|
}
|
|
80
114
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ h(c, {
|
|
82
116
|
sx: {
|
|
83
117
|
mt: 3,
|
|
84
118
|
border: "1px solid",
|
|
@@ -86,59 +120,141 @@ function T(T) {
|
|
|
86
120
|
borderRadius: 1
|
|
87
121
|
},
|
|
88
122
|
children: [
|
|
89
|
-
/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */ m(T, {
|
|
90
124
|
title: "Email DUC to Collaborators",
|
|
91
125
|
description: "Complete and sign the DUC online by emailing a secure DocuSign link to your listed collaborators. Notifications will be sent directly to the email address associated with their Synapse accounts. This is fastest way to get access.",
|
|
92
|
-
action: /* @__PURE__ */
|
|
93
|
-
title:
|
|
126
|
+
action: /* @__PURE__ */ m(d, {
|
|
127
|
+
title: W ? /* @__PURE__ */ m(a, { quota: H?.quota }) : "",
|
|
94
128
|
arrow: !0,
|
|
95
|
-
disableHoverListener: !
|
|
96
|
-
disableFocusListener: !
|
|
97
|
-
disableTouchListener: !
|
|
98
|
-
children: /* @__PURE__ */
|
|
129
|
+
disableHoverListener: !W,
|
|
130
|
+
disableFocusListener: !W,
|
|
131
|
+
disableTouchListener: !W,
|
|
132
|
+
children: /* @__PURE__ */ m(c, {
|
|
99
133
|
component: "span",
|
|
100
|
-
children: /* @__PURE__ */
|
|
134
|
+
children: /* @__PURE__ */ m(l, {
|
|
101
135
|
variant: "contained",
|
|
102
|
-
disabled:
|
|
103
|
-
onClick:
|
|
104
|
-
|
|
136
|
+
disabled: Ve,
|
|
137
|
+
onClick: () => {
|
|
138
|
+
Ue();
|
|
139
|
+
},
|
|
140
|
+
children: J ? "Sending..." : _
|
|
105
141
|
})
|
|
106
142
|
})
|
|
107
143
|
})
|
|
108
144
|
}),
|
|
109
|
-
/* @__PURE__ */
|
|
110
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ m(fe, {}),
|
|
146
|
+
/* @__PURE__ */ m(T, {
|
|
111
147
|
title: "Print and upload a PDF instead",
|
|
112
148
|
description: "Download the DUC, sign it by hand, and upload the completed document.",
|
|
113
|
-
action: /* @__PURE__ */
|
|
149
|
+
action: /* @__PURE__ */ m(l, {
|
|
114
150
|
variant: "outlined",
|
|
115
|
-
disabled:
|
|
116
|
-
onClick:
|
|
151
|
+
disabled: X,
|
|
152
|
+
onClick: we,
|
|
117
153
|
children: "Manually print and upload PDF"
|
|
118
154
|
})
|
|
119
155
|
})
|
|
120
156
|
]
|
|
121
157
|
}),
|
|
122
|
-
|
|
158
|
+
Z && /* @__PURE__ */ h(s, {
|
|
123
159
|
severity: "error",
|
|
124
160
|
sx: { mt: 2 },
|
|
125
161
|
children: [
|
|
126
|
-
/* @__PURE__ */
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
-
|
|
162
|
+
/* @__PURE__ */ m("strong", { children: Z.title }),
|
|
163
|
+
/* @__PURE__ */ m("br", {}),
|
|
164
|
+
Z.reason
|
|
129
165
|
]
|
|
130
166
|
})
|
|
131
167
|
] }),
|
|
132
|
-
/* @__PURE__ */
|
|
168
|
+
/* @__PURE__ */ m(le, { children: /* @__PURE__ */ m(l, {
|
|
133
169
|
variant: "outlined",
|
|
134
|
-
onClick:
|
|
170
|
+
onClick: Ce,
|
|
135
171
|
children: "Back"
|
|
136
|
-
}) })
|
|
172
|
+
}) }),
|
|
173
|
+
/* @__PURE__ */ m(ie, {
|
|
174
|
+
open: G === "keepOrReplace",
|
|
175
|
+
title: v,
|
|
176
|
+
content: /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(f, {
|
|
177
|
+
variant: "body1",
|
|
178
|
+
sx: i,
|
|
179
|
+
children: "Your DUC was already signed and submitted. If your changes don't affect what's on it, you can keep it and resubmit. If they do, you'll need a new DUC, and your PI or Project Lead, Signing Official, and any named Collaborators will need to sign again."
|
|
180
|
+
}), /* @__PURE__ */ m(w, { remaining: H?.remaining })] }),
|
|
181
|
+
onCancel: $,
|
|
182
|
+
actions: /* @__PURE__ */ h(p, { children: [
|
|
183
|
+
/* @__PURE__ */ m(l, {
|
|
184
|
+
variant: "outlined",
|
|
185
|
+
onClick: $,
|
|
186
|
+
children: ae
|
|
187
|
+
}),
|
|
188
|
+
/* @__PURE__ */ m(be, {
|
|
189
|
+
quota: H?.quota,
|
|
190
|
+
isAtOrOverQuota: U,
|
|
191
|
+
variant: "outlined",
|
|
192
|
+
onClick: () => {
|
|
193
|
+
Q();
|
|
194
|
+
},
|
|
195
|
+
children: b
|
|
196
|
+
}),
|
|
197
|
+
/* @__PURE__ */ m(l, {
|
|
198
|
+
variant: "contained",
|
|
199
|
+
onClick: We,
|
|
200
|
+
children: y
|
|
201
|
+
})
|
|
202
|
+
] })
|
|
203
|
+
}),
|
|
204
|
+
/* @__PURE__ */ m(oe, {
|
|
205
|
+
open: G === "restartSigning",
|
|
206
|
+
title: x,
|
|
207
|
+
content: /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m(f, {
|
|
208
|
+
variant: "body1",
|
|
209
|
+
sx: i,
|
|
210
|
+
children: "Your DUC was already submitted for review, so it can't be edited. To submit your changes, we'll close the current DUC and send a new one for signature. Your PI or Project Lead, Signing Official, and any named Collaborators will need to sign again."
|
|
211
|
+
}), /* @__PURE__ */ m(w, { remaining: H?.remaining })] }),
|
|
212
|
+
confirmButtonProps: { children: S },
|
|
213
|
+
onConfirm: () => {
|
|
214
|
+
Q();
|
|
215
|
+
},
|
|
216
|
+
onCancel: $
|
|
217
|
+
})
|
|
137
218
|
] });
|
|
138
219
|
}
|
|
139
|
-
function
|
|
220
|
+
function w(e) {
|
|
221
|
+
let { remaining: t } = e;
|
|
222
|
+
return t == null ? null : /* @__PURE__ */ h(f, {
|
|
223
|
+
variant: "body1",
|
|
224
|
+
sx: {
|
|
225
|
+
...i,
|
|
226
|
+
mt: 2
|
|
227
|
+
},
|
|
228
|
+
children: [
|
|
229
|
+
"You can create ",
|
|
230
|
+
/* @__PURE__ */ m("strong", { children: t }),
|
|
231
|
+
" more electronic",
|
|
232
|
+
" ",
|
|
233
|
+
t === 1 ? "DUC" : "DUCs",
|
|
234
|
+
" this month."
|
|
235
|
+
]
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
function be(e) {
|
|
239
|
+
let { quota: t, isAtOrOverQuota: n, ...r } = e;
|
|
240
|
+
return /* @__PURE__ */ m(d, {
|
|
241
|
+
title: n ? /* @__PURE__ */ m(a, { quota: t }) : "",
|
|
242
|
+
arrow: !0,
|
|
243
|
+
disableHoverListener: !n,
|
|
244
|
+
disableFocusListener: !n,
|
|
245
|
+
disableTouchListener: !n,
|
|
246
|
+
children: /* @__PURE__ */ m(c, {
|
|
247
|
+
component: "span",
|
|
248
|
+
children: /* @__PURE__ */ m(l, {
|
|
249
|
+
...r,
|
|
250
|
+
disabled: n
|
|
251
|
+
})
|
|
252
|
+
})
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
function T(e) {
|
|
140
256
|
let { title: t, description: n, action: r } = e;
|
|
141
|
-
return /* @__PURE__ */
|
|
257
|
+
return /* @__PURE__ */ h(u, {
|
|
142
258
|
direction: {
|
|
143
259
|
xs: "column",
|
|
144
260
|
sm: "row"
|
|
@@ -148,27 +264,27 @@ function E(e) {
|
|
|
148
264
|
gap: 2,
|
|
149
265
|
p: 2
|
|
150
266
|
},
|
|
151
|
-
children: [/* @__PURE__ */
|
|
267
|
+
children: [/* @__PURE__ */ h(c, {
|
|
152
268
|
sx: { flexGrow: 1 },
|
|
153
|
-
children: [/* @__PURE__ */
|
|
269
|
+
children: [/* @__PURE__ */ m(f, {
|
|
154
270
|
variant: "body1",
|
|
155
271
|
sx: {
|
|
156
272
|
fontWeight: 700,
|
|
157
273
|
mb: .5
|
|
158
274
|
},
|
|
159
275
|
children: t
|
|
160
|
-
}), /* @__PURE__ */
|
|
276
|
+
}), /* @__PURE__ */ m(f, {
|
|
161
277
|
variant: "body1",
|
|
162
|
-
sx:
|
|
278
|
+
sx: i,
|
|
163
279
|
children: n
|
|
164
280
|
})]
|
|
165
|
-
}), /* @__PURE__ */
|
|
281
|
+
}), /* @__PURE__ */ m(c, {
|
|
166
282
|
sx: { flexShrink: 0 },
|
|
167
283
|
children: r
|
|
168
284
|
})]
|
|
169
285
|
});
|
|
170
286
|
}
|
|
171
287
|
//#endregion
|
|
172
|
-
export {
|
|
288
|
+
export { y as KEEP_EXISTING_DUC_BUTTON_TEXT, v as KEEP_OR_REPLACE_DIALOG_TITLE, S as RESTART_SIGNING_CONFIRM_BUTTON_TEXT, x as RESTART_SIGNING_DIALOG_TITLE, _ as SEND_FOR_SIGNATURE_BUTTON_TEXT, b as SEND_NEW_DUC_BUTTON_TEXT, C as default };
|
|
173
289
|
|
|
174
290
|
//# sourceMappingURL=EDucPreviewStep.js.map
|