synapse-react-client 4.0.41 → 4.0.43
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.js +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +6 -20
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +165 -159
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts +3 -2
- package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListItem.js +23 -22
- package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.d.ts +4 -3
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js +6 -4
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.d.ts +22 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.js +166 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.js.map +1 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.d.ts +18 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.js +91 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.js.map +1 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.d.ts +33 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.js +49 -0
- package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.js.map +1 -0
- 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/CancelRequestDataAccess.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js +26 -42
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +97 -218
- 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 +177 -78
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts +4 -3
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +15 -15
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.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 +88 -103
- 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/RequestDataAccessSuccess.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js +14 -30
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItem.d.ts → RequestableAccessRequirementItem.d.ts} +9 -8
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItem.js → RequestableAccessRequirementItem.js} +16 -16
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItemView.d.ts → RequestableAccessRequirementItemView.d.ts} +8 -7
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItemView.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItemView.js → RequestableAccessRequirementItemView.js} +3 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItemView.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +123 -170
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +2 -2
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +35 -51
- 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 +107 -91
- 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 +12 -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/AccessRequirementList/RequestDataStep.d.ts +34 -0
- package/dist/components/AccessRequirementList/RequestDataStep.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/RequestDataStep.js +37 -0
- package/dist/components/AccessRequirementList/RequestDataStep.js.map +1 -0
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.d.ts +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js +20 -20
- package/dist/components/Authentication/TwoFactorBackupCodes.js +1 -1
- 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 +79 -69
- 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 +30 -29
- 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/FieldDefinitionDrawer.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +71 -68
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
- 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.map +1 -1
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js +29 -41
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -1
- 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/schemaFieldUtils.d.ts +3 -1
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +26 -8
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
- 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.map +1 -1
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +34 -19
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
- package/dist/components/FormTemplateEditor/utils.d.ts +2 -2
- package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -1
- package/dist/components/FormTemplateEditor/utils.js +7 -10
- package/dist/components/FormTemplateEditor/utils.js.map +1 -1
- package/dist/components/JsonSchemaForm/SchemaStepForm.d.ts +21 -0
- package/dist/components/JsonSchemaForm/SchemaStepForm.d.ts.map +1 -0
- package/dist/components/JsonSchemaForm/SchemaStepForm.js +29 -0
- package/dist/components/JsonSchemaForm/SchemaStepForm.js.map +1 -0
- 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.d.ts +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.js +102 -105
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.js +6 -6
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.js +88 -81
- 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 +24 -20
- package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -1
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js +2 -2
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +1 -1
- 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/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/SetBasicAccessRequirementFields/GovernanceUtils.d.ts +2 -2
- package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.d.ts.map +1 -1
- package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js +11 -10
- package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
- package/dist/components/SynapseForm/SynapseForm.js +28 -28
- 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 +7 -4
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +5 -4
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.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/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboardRouter.js +15 -15
- package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +15 -14
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.js +8 -2
- package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +30 -15
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.js +17 -31
- package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
- package/dist/mocks/dataaccess/MockDataAccessRequest.d.ts +3 -0
- package/dist/mocks/dataaccess/MockDataAccessRequest.d.ts.map +1 -1
- package/dist/mocks/dataaccess/MockDataAccessRequest.js +24 -12
- package/dist/mocks/dataaccess/MockDataAccessRequest.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/dataAccessRequestHandlers.d.ts +2 -0
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +65 -47
- 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 +8 -0
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js +20 -3
- package/dist/mocks/msw/handlers/schemaHandlers.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 +8 -1
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +17 -4
- 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.js +5 -5
- 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/dataaccess/useGeneratedRequestForm.d.ts +19 -0
- package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.d.ts.map +1 -0
- package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.js +26 -0
- package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.js.map +1 -0
- 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 -253
- package/dist/synapse-queries/jsonschema/index.js +2 -2
- 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/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -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/featureflag/FeatureFlags.d.ts +1 -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/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/hooks/useDetectSSOCode.d.ts.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js +31 -26
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/jsonschema/schemaData.d.ts +18 -0
- package/dist/utils/jsonschema/schemaData.d.ts.map +1 -0
- package/dist/utils/jsonschema/schemaData.js +26 -0
- package/dist/utils/jsonschema/schemaData.js.map +1 -0
- package/dist/utils/jsonschema/submissionContext.d.ts +5 -0
- package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -1
- package/dist/utils/jsonschema/submissionContext.js +22 -30
- package/dist/utils/jsonschema/submissionContext.js.map +1 -1
- package/package.json +10 -9
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.d.ts.map +0 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +0 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts.map +0 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementList.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementList.tsx"],"sourcesContent":["import {\n useGetAccessRequirementsForEntity,\n useGetAccessRequirementsForTeam,\n useSortAccessRequirementIdsByCompletion,\n} from '@/synapse-queries'\nimport {\n storeRedirectURLForOneSageLoginAndGotoURL,\n useSynapseContext,\n} from '@/utils'\nimport { StyledComponent } from '@emotion/styled'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n styled,\n Typography,\n TypographyProps,\n} from '@mui/material'\nimport {\n AccessRequirement,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport noop from 'lodash-es/noop'\nimport groupBy from 'lodash-es/groupBy'\nimport { ReactNode, useMemo, useState } from 'react'\nimport { DialogBaseTitle } from '../DialogBase'\nimport { EntityLink } from '../EntityLink'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport UserOrTeamBadge from '../UserOrTeamBadge'\nimport { AccessRequirementListItem } from './AccessRequirementListItem'\nimport { useCanShowManagedACTWikiInWizard } from './AccessRequirementListUtils'\nimport CancelRequestDataAccess from './ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess'\nimport DataAccessRequestAccessorsFilesForm from './ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\nimport RequestDataAccessSuccess from './ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess'\nimport ResearchProjectForm from './ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm'\nimport ReviewDucStep from './ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep'\nimport EDucPreviewStep from './ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep'\nimport ManualUploadDucStep from './ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep'\nimport SignatureStatusStep from './ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep'\nimport AuthenticatedRequirement from './RequirementItem/AuthenticatedRequirement'\nimport CertificationRequirement from './RequirementItem/CertificationRequirement'\nimport TwoFactorAuthEnabledRequirement from './RequirementItem/TwoFactorAuthEnabledRequirement'\nimport ValidationRequirement from './RequirementItem/ValidationRequirement'\nimport { useOneSageURL } from '@/utils/hooks'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\n\nexport type AccessRequirementListProps = {\n /* if provided, will show this instead of the entity information */\n numberOfFilesAffected?: number\n /* if provided, will show this instead of the entity information or numberOfFilesAffected */\n requestObjectName?: string\n /* If true, this component will render in its own modal */\n renderAsModal?: boolean\n /* Overrides the default dialog title. This only applies if renderAsModal is true */\n dialogTitle?: string\n /* Called when the user rejects the terms of a listed AccessRequirement. If renderAsModal is true, this is also called when the user closes the modal. */\n onHide: () => void\n /* Displays the provided list of access requirements, instead of the ones fetched using the subject ID */\n accessRequirementFromProps?: Array<AccessRequirement>\n /* If provided, displays these actions on when viewing all ARs */\n customDialogActions?: ReactNode\n /* Optional callback invoked if a submission is created via this component */\n onSubmissionCreated?: (submissionId: string) => void\n /**\n * Optionally open the wizard directly at a specific ManagedACTAccessRequirement step instead of\n * the default access requirement list. Useful for deep-link routes and for resuming an in-progress\n * eDUC signature flow (jump straight to `RequestDataStep.SIGNATURE_STATUS`).\n *\n * The `managedACTAccessRequirement` is bundled with the step because every ManagedACT wizard step\n * requires it — passing them together prevents entering a step with no AR selected.\n *\n * Does not affect the traditional-DUC (non-eDUC) flow, which is entered from the AR list.\n */\n initialWizardEntry?: {\n step: RequestDataStep\n managedACTAccessRequirement: ManagedACTAccessRequirement\n }\n} & (\n | {\n /**\n * Fetches the access requirements associated with an entity\n * @deprecated Please use `subjectId` and `subjectType`\n */\n entityId: string\n }\n | {\n /**\n * Fetches the access requirements associated with a team\n * @deprecated Please use `subjectId` and `subjectType`\n */\n teamId: string\n }\n | {\n /* The ID of the object for which access is being requested */\n subjectId?: string\n /* The type of the object for which access is being requested */\n subjectType?: RestrictableObjectType\n }\n)\n\nconst SUPPORTED_ACCESS_REQUIREMENT_TYPES_SORTED: AccessRequirement['concreteType'][] =\n [\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ]\n\nconst SUPPORTED_ACCESS_REQUIREMENT_TYPES = new Set<\n AccessRequirement['concreteType']\n>(SUPPORTED_ACCESS_REQUIREMENT_TYPES_SORTED)\n\nconst DialogSubsectionHeader: StyledComponent<TypographyProps> = styled(\n Typography,\n {\n label: 'DialogSubsectionHeader',\n },\n)(({ theme }) => ({\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n fontSize: '18px',\n fontWeight: 'bold',\n borderBottom: '1px solid',\n borderColor: theme.palette.grey['200'],\n}))\n\nexport const checkHasUnsupportedRequirement = (\n accessRequirements: Array<AccessRequirement>,\n): boolean => {\n return accessRequirements.some(isARUnsupported)\n}\n\nconst isARUnsupported = (accessRequirement: AccessRequirement) => {\n return !SUPPORTED_ACCESS_REQUIREMENT_TYPES.has(accessRequirement.concreteType)\n}\n\n/**\n * Represents a distinct screen in the wizard used to apply to a ManagedACTAccessRequirement\n */\nexport enum RequestDataStep {\n SHOW_ALL_ARS = 0,\n UPDATE_RESEARCH_PROJECT = 1,\n UPDATE_ACCESSORS_AND_FILES = 2,\n PROMPT_CANCEL = 3,\n PROMPT_LOGIN = 4,\n COMPLETE = 5,\n REVIEW_DUC = 6,\n EDUC_PREVIEW = 7,\n MANUAL_UPLOAD_DUC = 8,\n SIGNATURE_STATUS = 9,\n}\n\nexport type RequestDataStepCallbackArgs = {\n step: RequestDataStep\n managedACTAccessRequirement?: ManagedACTAccessRequirement\n researchProjectId?: string\n dataAccessRequest?: Request | Renewal\n}\n\n/**\n * The AccessRequirementListV2 component renders a set of {@link AccessRequirement}s (either pre-defined, or those applied\n * to an entity, based on provided props).\n *\n * The component shows the user the approval status of each AR and provides a workflow for accepting the terms of or\n * creating a submission for any of the Access Requirements.\n *\n * ### Wizard entry\n *\n * By default the component opens on the AR list ({@link RequestDataStep.SHOW_ALL_ARS}) and the user\n * navigates into the ManagedACT wizard by clicking Request Access on a specific AR.\n *\n * To open the wizard directly at a specific step (for example, to resume an in-progress eDUC signature\n * flow or to serve a deep-link route), pass {@link AccessRequirementListProps.initialWizardEntry} with\n * the target step and the {@link ManagedACTAccessRequirement} the wizard should operate on.\n */\nexport default function AccessRequirementList(\n props: AccessRequirementListProps,\n) {\n const {\n onHide = noop,\n renderAsModal = false,\n numberOfFilesAffected,\n requestObjectName,\n customDialogActions,\n onSubmissionCreated = noop,\n initialWizardEntry,\n } = props\n\n const isShowingRequirementsForEntity = 'entityId' in props\n const isShowingRequirementsForTeam = 'teamId' in props\n const isShowingRequirementsFromProps = 'accessRequirementFromProps' in props\n\n const subjectId =\n 'subjectId' in props\n ? props.subjectId\n : isShowingRequirementsForEntity\n ? props.entityId\n : isShowingRequirementsForTeam\n ? props.teamId\n : undefined\n\n const subjectType =\n 'subjectType' in props\n ? props.subjectType\n : isShowingRequirementsForEntity\n ? RestrictableObjectType.ENTITY\n : isShowingRequirementsForTeam\n ? RestrictableObjectType.TEAM\n : undefined\n\n let { dialogTitle = 'Data Access Request' } = props\n const { isAuthenticated } = useSynapseContext()\n const [requestDataStep, setRequestDataStep] = useState<RequestDataStep>(\n initialWizardEntry?.step ?? RequestDataStep.SHOW_ALL_ARS,\n )\n const oneSageURL = useOneSageURL()\n const [managedACTAccessRequirement, setManagedACTAccessRequirement] =\n useState<ManagedACTAccessRequirement | undefined>(\n initialWizardEntry?.managedACTAccessRequirement,\n )\n const [researchProjectId, setResearchProjectId] = useState<string>('')\n const [dataAccessRequest, setDataAccessRequest] = useState<\n Request | Renewal | undefined\n >()\n\n const canShowManagedACTWikiInWizard = useCanShowManagedACTWikiInWizard()\n\n const { data: fetchedRequirementsForTeam } = useGetAccessRequirementsForTeam(\n subjectId!,\n {\n enabled:\n subjectId !== undefined && subjectType === RestrictableObjectType.TEAM,\n },\n )\n const { data: fetchedRequirementsForEntity } =\n useGetAccessRequirementsForEntity(subjectId!, {\n enabled:\n subjectId !== undefined &&\n subjectType === RestrictableObjectType.ENTITY,\n })\n\n const requirementsFromProps = isShowingRequirementsFromProps\n ? props.accessRequirementFromProps\n : undefined\n\n const accessRequirements =\n requirementsFromProps ??\n fetchedRequirementsForEntity ??\n fetchedRequirementsForTeam\n\n /**\n * Set the initial ordering of the Access Requirements to show complete ARs first. The individual AR Item components\n * retrieve and render status independently, so this data only determines ordering. For this reason, the query data\n * should not be invalidated or updated as the user progresses through the workflow.\n */\n const { data: sortedAccessRequirementIds } =\n useSortAccessRequirementIdsByCompletion(\n (accessRequirements ?? []).map(ar => String(ar.id)),\n {\n enabled: !!accessRequirements,\n // Set the stale time to infinity because we don't want to refetch this and change the order\n staleTime: Infinity,\n },\n )\n\n const sortedGroupedAccessRequirementsByType = useMemo(() => {\n if (accessRequirements && sortedAccessRequirementIds) {\n // SWC-7218: Group by access requirement type\n const groupedAccessRequirementsByType = groupBy(\n accessRequirements,\n 'concreteType',\n )\n const sortedByTypeAndStatus =\n SUPPORTED_ACCESS_REQUIREMENT_TYPES_SORTED.map(type => {\n const arsOfType = groupedAccessRequirementsByType[type]\n if (arsOfType) {\n return sortedAccessRequirementIds.map(\n id => arsOfType.find(ar => id === String(ar.id))!,\n )\n }\n return []\n })\n .flat()\n .filter((item): item is AccessRequirement => item !== undefined)\n return sortedByTypeAndStatus\n }\n return undefined\n }, [accessRequirements, sortedAccessRequirementIds])\n\n const requestDataStepCallback = (props: RequestDataStepCallbackArgs) => {\n const {\n managedACTAccessRequirement,\n step,\n researchProjectId,\n dataAccessRequest: newDataAccessRequest,\n } = props\n if (managedACTAccessRequirement) {\n // required for step 1, 2 form\n setManagedACTAccessRequirement(managedACTAccessRequirement)\n }\n if (researchProjectId) {\n setResearchProjectId(researchProjectId)\n }\n if (newDataAccessRequest) {\n setDataAccessRequest(newDataAccessRequest)\n }\n setRequestDataStep(step)\n }\n\n const anyARsRequireTwoFactorAuth = accessRequirements?.some(\n accessRequirement =>\n accessRequirement.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE &&\n accessRequirement.isTwoFaRequired,\n )\n\n const anyARsRequireCertification = accessRequirements?.some(\n accessRequirement =>\n (accessRequirement.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE ||\n accessRequirement.concreteType ===\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE) &&\n accessRequirement.isCertifiedUserRequired,\n )\n\n const anyARsRequireProfileValidation = accessRequirements?.some(\n accessRequirement =>\n (accessRequirement.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE ||\n accessRequirement.concreteType ===\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE) &&\n accessRequirement.isValidatedProfileRequired,\n )\n\n const requestDetails = useMemo(() => {\n // Prioritize requestObjectName, then the number of files affected, then the entity/team name\n if (requestObjectName) return requestObjectName\n if (numberOfFilesAffected)\n return (\n <>\n <IconSvg icon=\"file\" sx={{ width: '30px' }} /> {numberOfFilesAffected}{' '}\n File(s)\n </>\n )\n if (\n subjectId !== undefined &&\n subjectType === RestrictableObjectType.ENTITY\n ) {\n return <EntityLink entity={subjectId} />\n } else if (subjectType === RestrictableObjectType.TEAM) {\n return <UserOrTeamBadge principalId={subjectId} />\n } else {\n console.warn(\n `Unhandled case for AccessRequirementList requestDetails: ${subjectType}: ${subjectId}`,\n )\n return <></>\n }\n }, [numberOfFilesAffected, requestObjectName, subjectId, subjectType])\n\n const dialogWidth =\n [\n RequestDataStep.UPDATE_ACCESSORS_AND_FILES,\n RequestDataStep.UPDATE_RESEARCH_PROJECT,\n RequestDataStep.REVIEW_DUC,\n RequestDataStep.EDUC_PREVIEW,\n ].includes(requestDataStep) && canShowManagedACTWikiInWizard\n ? 'xl'\n : 'md'\n\n let renderContent = <></>\n switch (requestDataStep) {\n case RequestDataStep.UPDATE_RESEARCH_PROJECT:\n renderContent = (\n <ResearchProjectForm\n managedACTAccessRequirement={managedACTAccessRequirement!}\n onSave={researchProject => {\n requestDataStepCallback({\n managedACTAccessRequirement,\n step: RequestDataStep.UPDATE_ACCESSORS_AND_FILES,\n researchProjectId: researchProject.id,\n })\n }}\n onHide={onHide}\n />\n )\n break\n case RequestDataStep.UPDATE_ACCESSORS_AND_FILES:\n renderContent = (\n <DataAccessRequestAccessorsFilesForm\n researchProjectId={researchProjectId}\n managedACTAccessRequirement={managedACTAccessRequirement!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onCancel={dataAccessRequestInProgress => {\n requestDataStepCallback({\n step: RequestDataStep.PROMPT_CANCEL,\n dataAccessRequest: dataAccessRequestInProgress,\n })\n }}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n onBackClicked={() => {\n requestDataStepCallback({\n step: RequestDataStep.UPDATE_RESEARCH_PROJECT,\n })\n }}\n onEDucContinue={\n managedACTAccessRequirement?.eDucTemplateId\n ? () => {\n requestDataStepCallback({\n step: RequestDataStep.REVIEW_DUC,\n })\n }\n : undefined\n }\n />\n )\n break\n case RequestDataStep.REVIEW_DUC:\n renderContent = (\n <ReviewDucStep\n managedACTAccessRequirement={managedACTAccessRequirement!}\n onHide={onHide}\n onBackClicked={() => {\n requestDataStepCallback({\n step: RequestDataStep.UPDATE_ACCESSORS_AND_FILES,\n })\n }}\n onCreateDuc={() => {\n requestDataStepCallback({ step: RequestDataStep.EDUC_PREVIEW })\n }}\n />\n )\n break\n case RequestDataStep.EDUC_PREVIEW:\n renderContent = (\n <EDucPreviewStep\n managedACTAccessRequirement={managedACTAccessRequirement!}\n onHide={onHide}\n onBackClicked={() => {\n requestDataStepCallback({ step: RequestDataStep.REVIEW_DUC })\n }}\n onSendForSignature={() => {\n // The signature-status step isn't useful right after routing (0 signatures collected,\n // Submit necessarily disabled), so surface a toast and close the wizard. The user can\n // resume from their in-flight requests table when signatures are ready.\n displayToast(\n 'Your DUC has been emailed to your collaborators. You can check signature progress in your access request history.',\n 'info',\n {\n primaryButtonConfig: {\n text: 'View Request History',\n // Resolves to a same-origin path on synapse.org and to the absolute synapse.org URL when embedded in a portal.\n href: `${getEndpoint(BackendDestinationEnum.PORTAL_ENDPOINT)}RequestHistory:default`,\n },\n dismissOnPrimaryButtonClick: true,\n },\n )\n onHide()\n }}\n onManualUpload={() => {\n requestDataStepCallback({\n step: RequestDataStep.MANUAL_UPLOAD_DUC,\n })\n }}\n />\n )\n break\n case RequestDataStep.MANUAL_UPLOAD_DUC:\n renderContent = (\n <ManualUploadDucStep\n managedACTAccessRequirement={managedACTAccessRequirement!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onBackClicked={() => {\n requestDataStepCallback({ step: RequestDataStep.EDUC_PREVIEW })\n }}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n />\n )\n break\n case RequestDataStep.SIGNATURE_STATUS:\n renderContent = (\n <SignatureStatusStep\n managedACTAccessRequirement={managedACTAccessRequirement!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onBackClicked={() => {\n // Back from SIGNATURE_STATUS returns to the research project step so the user can\n // modify the request. EDUC_PREVIEW is skipped because Send-for-signature toasts and\n // closes the wizard, so users only reach this step from the row-level \"Review\n // Signatures and Submit\" entry point.\n requestDataStepCallback({\n step: RequestDataStep.UPDATE_RESEARCH_PROJECT,\n })\n }}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n />\n )\n break\n case RequestDataStep.PROMPT_CANCEL:\n renderContent = (\n <CancelRequestDataAccess\n modifiedDataAccessRequest={dataAccessRequest}\n onHide={onHide} // for closing dialogs\n />\n )\n break\n case RequestDataStep.PROMPT_LOGIN:\n // Send to OneSage login page\n storeRedirectURLForOneSageLoginAndGotoURL(oneSageURL.toString())\n dialogTitle = 'Please Log In'\n renderContent = <></>\n break\n case RequestDataStep.COMPLETE:\n renderContent = <RequestDataAccessSuccess onHide={onHide} />\n break\n case RequestDataStep.SHOW_ALL_ARS:\n default:\n renderContent = (\n <>\n {renderAsModal ? (\n <DialogBaseTitle title={dialogTitle} onCancel={onHide} />\n ) : (\n <Typography variant=\"h5\" sx={{ mb: 2 }}>\n {dialogTitle}\n </Typography>\n )}\n <DialogContent>\n <DialogSubsectionHeader variant={'h4'} sx={{ mt: 0 }}>\n What is this request for?\n </DialogSubsectionHeader>\n <Typography variant={'body1'} component={'span'}>\n {requestDetails}\n </Typography>\n <DialogSubsectionHeader variant={'h4'}>\n What do I need to do?\n </DialogSubsectionHeader>\n <AuthenticatedRequirement />\n {anyARsRequireCertification && <CertificationRequirement />}\n {anyARsRequireProfileValidation && <ValidationRequirement />}\n {anyARsRequireTwoFactorAuth && <TwoFactorAuthEnabledRequirement />}\n {sortedGroupedAccessRequirementsByType?.map(accessRequirement => {\n return (\n <AccessRequirementListItem\n key={accessRequirement.id}\n accessRequirement={accessRequirement}\n subjectId={subjectId}\n subjectType={subjectType}\n onHide={onHide}\n onRequestAccess={accessRequirement => {\n const nextStep = isAuthenticated\n ? RequestDataStep.UPDATE_RESEARCH_PROJECT\n : RequestDataStep.PROMPT_LOGIN\n requestDataStepCallback({\n managedACTAccessRequirement: accessRequirement,\n step: nextStep,\n })\n }}\n />\n )\n })}\n </DialogContent>\n <DialogActions>\n {customDialogActions ? (\n customDialogActions\n ) : (\n <>\n {renderAsModal && (\n <Button variant=\"contained\" onClick={onHide}>\n Close\n </Button>\n )}\n </>\n )}\n </DialogActions>\n </>\n )\n }\n\n if (renderAsModal) {\n return (\n <Dialog maxWidth={dialogWidth} fullWidth open={true} onClose={onHide}>\n {renderContent}\n </Dialog>\n )\n }\n\n return <>{renderContent}</>\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AccessRequirementList.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementList.tsx"],"sourcesContent":["import {\n useGetAccessRequirementsForEntity,\n useGetAccessRequirementsForTeam,\n useSortAccessRequirementIdsByCompletion,\n} from '@/synapse-queries'\nimport {\n storeRedirectURLForOneSageLoginAndGotoURL,\n useSynapseContext,\n} from '@/utils'\nimport { StyledComponent } from '@emotion/styled'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n styled,\n Typography,\n TypographyProps,\n} from '@mui/material'\nimport {\n AccessRequirement,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n Renewal,\n Request,\n RestrictableObjectType,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\nimport noop from 'lodash-es/noop'\nimport groupBy from 'lodash-es/groupBy'\nimport { ReactNode, useMemo, useState } from 'react'\nimport { DialogBaseTitle } from '../DialogBase'\nimport { EntityLink } from '../EntityLink'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { displayToast } from '../ToastMessage/ToastMessage'\nimport UserOrTeamBadge from '../UserOrTeamBadge'\nimport { AccessRequirementListItem } from './AccessRequirementListItem'\nimport { useShowAccessRequirementWikiInWizard } from './AccessRequirementListUtils'\nimport { hasAccessorRequirement } from '../SetBasicAccessRequirementFields/GovernanceUtils'\nimport {\n getFirstRequestStep,\n getNextRequestStep,\n getPreviousRequestStep,\n isRequestableAccessRequirement,\n RequestableAccessRequirement,\n RequestDataStep,\n} from './RequestDataStep'\nimport CancelRequestDataAccess from './ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess'\nimport DataAccessRequestAccessorsFilesForm from './ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\nimport JsonSchemaRequestWizard from './JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard'\nimport RequestDataAccessSuccess from './ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess'\nimport ResearchProjectForm from './ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm'\nimport ReviewDucStep from './ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep'\nimport EDucPreviewStep from './ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep'\nimport ManualUploadDucStep from './ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep'\nimport SignatureStatusStep from './ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep'\nimport AuthenticatedRequirement from './RequirementItem/AuthenticatedRequirement'\nimport CertificationRequirement from './RequirementItem/CertificationRequirement'\nimport TwoFactorAuthEnabledRequirement from './RequirementItem/TwoFactorAuthEnabledRequirement'\nimport ValidationRequirement from './RequirementItem/ValidationRequirement'\nimport { useOneSageURL } from '@/utils/hooks'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\n\nexport type AccessRequirementListProps = {\n /* if provided, will show this instead of the entity information */\n numberOfFilesAffected?: number\n /* if provided, will show this instead of the entity information or numberOfFilesAffected */\n requestObjectName?: string\n /* If true, this component will render in its own modal */\n renderAsModal?: boolean\n /* Overrides the default dialog title. This only applies if renderAsModal is true */\n dialogTitle?: string\n /* Called when the user rejects the terms of a listed AccessRequirement. If renderAsModal is true, this is also called when the user closes the modal. */\n onHide: () => void\n /* Displays the provided list of access requirements, instead of the ones fetched using the subject ID */\n accessRequirementFromProps?: Array<AccessRequirement>\n /* If provided, displays these actions on when viewing all ARs */\n customDialogActions?: ReactNode\n /* Optional callback invoked if a submission is created via this component */\n onSubmissionCreated?: (submissionId: string) => void\n /**\n * Optionally open the wizard directly at a specific ManagedACTAccessRequirement step instead of\n * the default access requirement list. Useful for deep-link routes and for resuming an in-progress\n * eDUC signature flow (jump straight to `RequestDataStep.SIGNATURE_STATUS`).\n *\n * The `accessRequirement` is bundled with the step because every wizard step\n * requires it — passing them together prevents entering a step with no AR selected.\n *\n * Does not affect the traditional-DUC (non-eDUC) flow, which is entered from the AR list.\n */\n initialWizardEntry?: {\n step: RequestDataStep\n accessRequirement: RequestableAccessRequirement\n }\n} & (\n | {\n /**\n * Fetches the access requirements associated with an entity\n * @deprecated Please use `subjectId` and `subjectType`\n */\n entityId: string\n }\n | {\n /**\n * Fetches the access requirements associated with a team\n * @deprecated Please use `subjectId` and `subjectType`\n */\n teamId: string\n }\n | {\n /* The ID of the object for which access is being requested */\n subjectId?: string\n /* The type of the object for which access is being requested */\n subjectType?: RestrictableObjectType\n }\n)\n\nconst SUPPORTED_ACCESS_REQUIREMENT_TYPES_SORTED: AccessRequirement['concreteType'][] =\n [\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n ]\n\nconst SUPPORTED_ACCESS_REQUIREMENT_TYPES = new Set<\n AccessRequirement['concreteType']\n>(SUPPORTED_ACCESS_REQUIREMENT_TYPES_SORTED)\n\nconst DialogSubsectionHeader: StyledComponent<TypographyProps> = styled(\n Typography,\n {\n label: 'DialogSubsectionHeader',\n },\n)(({ theme }) => ({\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n fontSize: '18px',\n fontWeight: 'bold',\n borderBottom: '1px solid',\n borderColor: theme.palette.grey['200'],\n}))\n\nexport const checkHasUnsupportedRequirement = (\n accessRequirements: Array<AccessRequirement>,\n): boolean => {\n return accessRequirements.some(isARUnsupported)\n}\n\nconst isARUnsupported = (accessRequirement: AccessRequirement) => {\n return !SUPPORTED_ACCESS_REQUIREMENT_TYPES.has(accessRequirement.concreteType)\n}\n\nexport type RequestDataStepCallbackArgs = {\n step: RequestDataStep\n accessRequirement?: RequestableAccessRequirement\n researchProjectId?: string\n dataAccessRequest?: Request | Renewal\n}\n\n/**\n * The AccessRequirementListV2 component renders a set of {@link AccessRequirement}s (either pre-defined, or those applied\n * to an entity, based on provided props).\n *\n * The component shows the user the approval status of each AR and provides a workflow for accepting the terms of or\n * creating a submission for any of the Access Requirements.\n *\n * ### Wizard entry\n *\n * By default the component opens on the AR list ({@link RequestDataStep.SHOW_ALL_ARS}) and the user\n * navigates into the ManagedACT wizard by clicking Request Access on a specific AR.\n *\n * To open the wizard directly at a specific step (for example, to resume an in-progress eDUC signature\n * flow or to serve a deep-link route), pass {@link AccessRequirementListProps.initialWizardEntry} with\n * the target step and the {@link RequestableAccessRequirement} the wizard should operate on.\n */\nexport default function AccessRequirementList(\n props: AccessRequirementListProps,\n) {\n const {\n onHide = noop,\n renderAsModal = false,\n numberOfFilesAffected,\n requestObjectName,\n customDialogActions,\n onSubmissionCreated = noop,\n initialWizardEntry,\n } = props\n\n const isShowingRequirementsForEntity = 'entityId' in props\n const isShowingRequirementsForTeam = 'teamId' in props\n const isShowingRequirementsFromProps = 'accessRequirementFromProps' in props\n\n const subjectId =\n 'subjectId' in props\n ? props.subjectId\n : isShowingRequirementsForEntity\n ? props.entityId\n : isShowingRequirementsForTeam\n ? props.teamId\n : undefined\n\n const subjectType =\n 'subjectType' in props\n ? props.subjectType\n : isShowingRequirementsForEntity\n ? RestrictableObjectType.ENTITY\n : isShowingRequirementsForTeam\n ? RestrictableObjectType.TEAM\n : undefined\n\n let { dialogTitle = 'Data Access Request' } = props\n const { isAuthenticated } = useSynapseContext()\n const [requestDataStep, setRequestDataStep] = useState<RequestDataStep>(\n initialWizardEntry?.step ?? RequestDataStep.SHOW_ALL_ARS,\n )\n const oneSageURL = useOneSageURL()\n const [accessRequirementInWizard, setAccessRequirementInWizard] = useState<\n RequestableAccessRequirement | undefined\n >(initialWizardEntry?.accessRequirement)\n const managedACTAccessRequirement =\n accessRequirementInWizard?.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE\n ? accessRequirementInWizard\n : undefined\n const jsonSchemaAccessRequirement =\n accessRequirementInWizard?.concreteType ===\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE\n ? accessRequirementInWizard\n : undefined\n const [researchProjectId, setResearchProjectId] = useState<string>('')\n const [dataAccessRequest, setDataAccessRequest] = useState<\n Request | Renewal | undefined\n >()\n\n const showAccessRequirementWikiInWizard =\n useShowAccessRequirementWikiInWizard(accessRequirementInWizard)\n\n const { data: fetchedRequirementsForTeam } = useGetAccessRequirementsForTeam(\n subjectId!,\n {\n enabled:\n subjectId !== undefined && subjectType === RestrictableObjectType.TEAM,\n },\n )\n const { data: fetchedRequirementsForEntity } =\n useGetAccessRequirementsForEntity(subjectId!, {\n enabled:\n subjectId !== undefined &&\n subjectType === RestrictableObjectType.ENTITY,\n })\n\n const requirementsFromProps = isShowingRequirementsFromProps\n ? props.accessRequirementFromProps\n : undefined\n\n const accessRequirements =\n requirementsFromProps ??\n fetchedRequirementsForEntity ??\n fetchedRequirementsForTeam\n\n /**\n * Set the initial ordering of the Access Requirements to show complete ARs first. The individual AR Item components\n * retrieve and render status independently, so this data only determines ordering. For this reason, the query data\n * should not be invalidated or updated as the user progresses through the workflow.\n */\n const { data: sortedAccessRequirementIds } =\n useSortAccessRequirementIdsByCompletion(\n (accessRequirements ?? []).map(ar => String(ar.id)),\n {\n enabled: !!accessRequirements,\n // Set the stale time to infinity because we don't want to refetch this and change the order\n staleTime: Infinity,\n },\n )\n\n const sortedGroupedAccessRequirementsByType = useMemo(() => {\n if (accessRequirements && sortedAccessRequirementIds) {\n // SWC-7218: Group by access requirement type\n const groupedAccessRequirementsByType = groupBy(\n accessRequirements,\n 'concreteType',\n )\n const sortedByTypeAndStatus =\n SUPPORTED_ACCESS_REQUIREMENT_TYPES_SORTED.map(type => {\n const arsOfType = groupedAccessRequirementsByType[type]\n if (arsOfType) {\n return sortedAccessRequirementIds.map(\n id => arsOfType.find(ar => id === String(ar.id))!,\n )\n }\n return []\n })\n .flat()\n .filter((item): item is AccessRequirement => item !== undefined)\n return sortedByTypeAndStatus\n }\n return undefined\n }, [accessRequirements, sortedAccessRequirementIds])\n\n const requestDataStepCallback = (props: RequestDataStepCallbackArgs) => {\n const {\n accessRequirement,\n step,\n researchProjectId,\n dataAccessRequest: newDataAccessRequest,\n } = props\n if (accessRequirement) {\n // required for every wizard step\n setAccessRequirementInWizard(accessRequirement)\n }\n if (researchProjectId) {\n setResearchProjectId(researchProjectId)\n }\n if (newDataAccessRequest) {\n setDataAccessRequest(newDataAccessRequest)\n }\n setRequestDataStep(step)\n }\n\n // Each callback is invoked from the step being rendered, so `requestDataStep` is the step being navigated away from\n const goToNextRequestStep = () =>\n requestDataStepCallback({\n step: getNextRequestStep(accessRequirementInWizard!, requestDataStep),\n })\n const goToPreviousRequestStep = () =>\n requestDataStepCallback({\n step: getPreviousRequestStep(accessRequirementInWizard!, requestDataStep),\n })\n\n const anyARsRequireTwoFactorAuth = accessRequirements?.some(\n accessRequirement =>\n isRequestableAccessRequirement(accessRequirement) &&\n accessRequirement.isTwoFaRequired,\n )\n\n const anyARsRequireCertification = accessRequirements?.some(\n accessRequirement =>\n hasAccessorRequirement(accessRequirement) &&\n accessRequirement.isCertifiedUserRequired,\n )\n\n const anyARsRequireProfileValidation = accessRequirements?.some(\n accessRequirement =>\n hasAccessorRequirement(accessRequirement) &&\n accessRequirement.isValidatedProfileRequired,\n )\n\n const requestDetails = useMemo(() => {\n // Prioritize requestObjectName, then the number of files affected, then the entity/team name\n if (requestObjectName) return requestObjectName\n if (numberOfFilesAffected)\n return (\n <>\n <IconSvg icon=\"file\" sx={{ width: '30px' }} /> {numberOfFilesAffected}{' '}\n File(s)\n </>\n )\n if (\n subjectId !== undefined &&\n subjectType === RestrictableObjectType.ENTITY\n ) {\n return <EntityLink entity={subjectId} />\n } else if (subjectType === RestrictableObjectType.TEAM) {\n return <UserOrTeamBadge principalId={subjectId} />\n } else {\n console.warn(\n `Unhandled case for AccessRequirementList requestDetails: ${subjectType}: ${subjectId}`,\n )\n return <></>\n }\n }, [numberOfFilesAffected, requestObjectName, subjectId, subjectType])\n\n const dialogWidth =\n [\n RequestDataStep.UPDATE_ACCESSORS_AND_FILES,\n RequestDataStep.UPDATE_RESEARCH_PROJECT,\n RequestDataStep.REVIEW_DUC,\n RequestDataStep.EDUC_PREVIEW,\n ].includes(requestDataStep) && showAccessRequirementWikiInWizard\n ? 'xl'\n : 'md'\n\n let renderContent = <></>\n switch (requestDataStep) {\n case RequestDataStep.UPDATE_RESEARCH_PROJECT:\n renderContent = (\n <ResearchProjectForm\n managedACTAccessRequirement={managedACTAccessRequirement!}\n onSave={researchProject => {\n requestDataStepCallback({\n step: getNextRequestStep(\n managedACTAccessRequirement!,\n requestDataStep,\n ),\n researchProjectId: researchProject.id,\n })\n }}\n onHide={onHide}\n />\n )\n break\n case RequestDataStep.UPDATE_ACCESSORS_AND_FILES:\n renderContent = (\n <DataAccessRequestAccessorsFilesForm\n researchProjectId={researchProjectId}\n managedACTAccessRequirement={managedACTAccessRequirement!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onCancel={dataAccessRequestInProgress => {\n requestDataStepCallback({\n step: RequestDataStep.PROMPT_CANCEL,\n dataAccessRequest: dataAccessRequestInProgress,\n })\n }}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n onBackClicked={goToPreviousRequestStep}\n onEDucContinue={\n managedACTAccessRequirement?.eDucTemplateId\n ? goToNextRequestStep\n : undefined\n }\n />\n )\n break\n case RequestDataStep.REVIEW_DUC:\n renderContent = (\n <ReviewDucStep\n managedACTAccessRequirement={accessRequirementInWizard!}\n onHide={onHide}\n onBackClicked={goToPreviousRequestStep}\n onCreateDuc={goToNextRequestStep}\n />\n )\n break\n case RequestDataStep.EDUC_PREVIEW:\n renderContent = (\n <EDucPreviewStep\n managedACTAccessRequirement={accessRequirementInWizard!}\n onHide={onHide}\n onBackClicked={goToPreviousRequestStep}\n onSendForSignature={() => {\n // The signature-status step isn't useful right after routing (0 signatures collected,\n // Submit necessarily disabled), so surface a toast and close the wizard. The user can\n // resume from their in-flight requests table when signatures are ready.\n displayToast(\n 'Your DUC has been emailed to your collaborators. You can check signature progress in your access request history.',\n 'info',\n {\n primaryButtonConfig: {\n text: 'View Request History',\n // Resolves to a same-origin path on synapse.org and to the absolute synapse.org URL when embedded in a portal.\n href: `${getEndpoint(BackendDestinationEnum.PORTAL_ENDPOINT)}RequestHistory:default`,\n },\n dismissOnPrimaryButtonClick: true,\n },\n )\n onHide()\n }}\n onManualUpload={goToNextRequestStep}\n />\n )\n break\n case RequestDataStep.MANUAL_UPLOAD_DUC:\n renderContent = (\n <ManualUploadDucStep\n managedACTAccessRequirement={accessRequirementInWizard!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onBackClicked={goToPreviousRequestStep}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n />\n )\n break\n case RequestDataStep.SIGNATURE_STATUS:\n renderContent = (\n <SignatureStatusStep\n managedACTAccessRequirement={accessRequirementInWizard!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onBackClicked={() => {\n // Back from SIGNATURE_STATUS returns to the first step of the request so the user can\n // modify the request. EDUC_PREVIEW is skipped because Send-for-signature toasts and\n // closes the wizard, so users only reach this step from the row-level \"Review\n // Signatures and Submit\" entry point.\n requestDataStepCallback({\n step: getFirstRequestStep(accessRequirementInWizard!),\n })\n }}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n />\n )\n break\n case RequestDataStep.SCHEMA_DRIVEN_REQUEST:\n renderContent = (\n <JsonSchemaRequestWizard\n accessRequirement={jsonSchemaAccessRequirement!}\n subjectId={subjectId ?? ''}\n subjectType={subjectType ?? RestrictableObjectType.ENTITY}\n onHide={onHide}\n onCancel={dataAccessRequestInProgress => {\n requestDataStepCallback({\n step: RequestDataStep.PROMPT_CANCEL,\n dataAccessRequest: dataAccessRequestInProgress,\n })\n }}\n onSubmissionCreated={submissionId => {\n requestDataStepCallback({ step: RequestDataStep.COMPLETE })\n onSubmissionCreated(submissionId)\n }}\n onEDucContinue={\n jsonSchemaAccessRequirement?.eDucTemplateId\n ? goToNextRequestStep\n : undefined\n }\n />\n )\n break\n case RequestDataStep.PROMPT_CANCEL:\n renderContent = (\n <CancelRequestDataAccess\n modifiedDataAccessRequest={dataAccessRequest}\n onHide={onHide} // for closing dialogs\n />\n )\n break\n case RequestDataStep.PROMPT_LOGIN:\n // Send to OneSage login page\n storeRedirectURLForOneSageLoginAndGotoURL(oneSageURL.toString())\n dialogTitle = 'Please Log In'\n renderContent = <></>\n break\n case RequestDataStep.COMPLETE:\n renderContent = <RequestDataAccessSuccess onHide={onHide} />\n break\n case RequestDataStep.SHOW_ALL_ARS:\n default:\n renderContent = (\n <>\n {renderAsModal ? (\n <DialogBaseTitle title={dialogTitle} onCancel={onHide} />\n ) : (\n <Typography variant=\"h5\" sx={{ mb: 2 }}>\n {dialogTitle}\n </Typography>\n )}\n <DialogContent>\n <DialogSubsectionHeader variant={'h4'} sx={{ mt: 0 }}>\n What is this request for?\n </DialogSubsectionHeader>\n <Typography variant={'body1'} component={'span'}>\n {requestDetails}\n </Typography>\n <DialogSubsectionHeader variant={'h4'}>\n What do I need to do?\n </DialogSubsectionHeader>\n <AuthenticatedRequirement />\n {anyARsRequireCertification && <CertificationRequirement />}\n {anyARsRequireProfileValidation && <ValidationRequirement />}\n {anyARsRequireTwoFactorAuth && <TwoFactorAuthEnabledRequirement />}\n {sortedGroupedAccessRequirementsByType?.map(accessRequirement => {\n return (\n <AccessRequirementListItem\n key={accessRequirement.id}\n accessRequirement={accessRequirement}\n subjectId={subjectId}\n subjectType={subjectType}\n onHide={onHide}\n onRequestAccess={accessRequirement => {\n const nextStep = isAuthenticated\n ? getFirstRequestStep(accessRequirement)\n : RequestDataStep.PROMPT_LOGIN\n requestDataStepCallback({\n accessRequirement,\n step: nextStep,\n })\n }}\n />\n )\n })}\n </DialogContent>\n <DialogActions>\n {customDialogActions ? (\n customDialogActions\n ) : (\n <>\n {renderAsModal && (\n <Button variant=\"contained\" onClick={onHide}>\n Close\n </Button>\n )}\n </>\n )}\n </DialogActions>\n </>\n )\n }\n\n if (renderAsModal) {\n return (\n <Dialog maxWidth={dialogWidth} fullWidth open={true} onClose={onHide}>\n {renderContent}\n </Dialog>\n )\n }\n\n return <>{renderContent}</>\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { AccessRequirement,
|
|
1
|
+
import { AccessRequirement, RestrictableObjectType } from '@sage-bionetworks/synapse-types';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { RequestableAccessRequirement } from './RequestDataStep';
|
|
3
4
|
export type AccessRequirementListItemProps = {
|
|
4
5
|
accessRequirement: AccessRequirement;
|
|
5
6
|
onHide: () => void;
|
|
6
|
-
onRequestAccess: (accessRequirement:
|
|
7
|
+
onRequestAccess: (accessRequirement: RequestableAccessRequirement) => void;
|
|
7
8
|
subjectId?: string;
|
|
8
9
|
subjectType?: RestrictableObjectType;
|
|
9
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementListItem.d.ts","sourceRoot":"","sources":["../../../src/components/AccessRequirementList/AccessRequirementListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"AccessRequirementListItem.d.ts","sourceRoot":"","sources":["../../../src/components/AccessRequirementList/AccessRequirementListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAMjB,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAMhE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,eAAe,EAAE,CAAC,iBAAiB,EAAE,4BAA4B,KAAK,IAAI,CAAA;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,sBAAsB,CAAA;CACrC,CAAA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,KAAK,CAAC,SAAS,CA4CjB"}
|
|
@@ -1,39 +1,40 @@
|
|
|
1
1
|
import e from "./RequirementItem/UnmanagedACTAccessRequirementItem.js";
|
|
2
|
-
import {
|
|
2
|
+
import { RequestableAccessRequirementItem as t } from "./ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.js";
|
|
3
3
|
import n from "./RequirementItem/SelfSignAccessRequirementItem.js";
|
|
4
4
|
import r from "./RequirementItem/LockAccessRequirementItem.js";
|
|
5
5
|
import "react";
|
|
6
6
|
import { Fragment as i, jsx as a } from "react/jsx-runtime";
|
|
7
|
-
import { ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as o,
|
|
7
|
+
import { ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as o, JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as s, LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as c, MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as l, SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as u, TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as d } from "@sage-bionetworks/synapse-types";
|
|
8
8
|
//#region src/components/AccessRequirementList/AccessRequirementListItem.tsx
|
|
9
|
-
function
|
|
10
|
-
let { accessRequirement:
|
|
11
|
-
switch (
|
|
12
|
-
case
|
|
13
|
-
case
|
|
14
|
-
accessRequirement:
|
|
15
|
-
onHide:
|
|
9
|
+
function f(f) {
|
|
10
|
+
let { accessRequirement: p, subjectId: m, subjectType: h, onHide: g, onRequestAccess: _ } = f;
|
|
11
|
+
switch (p.concreteType) {
|
|
12
|
+
case u:
|
|
13
|
+
case d: return /* @__PURE__ */ a(n, {
|
|
14
|
+
accessRequirement: p,
|
|
15
|
+
onHide: g
|
|
16
16
|
});
|
|
17
17
|
case o: return /* @__PURE__ */ a(e, {
|
|
18
|
-
accessRequirement:
|
|
19
|
-
onHide:
|
|
20
|
-
subjectId:
|
|
21
|
-
subjectType:
|
|
18
|
+
accessRequirement: p,
|
|
19
|
+
onHide: g,
|
|
20
|
+
subjectId: m,
|
|
21
|
+
subjectType: h
|
|
22
22
|
});
|
|
23
|
-
case
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
case l:
|
|
24
|
+
case s: return /* @__PURE__ */ a(t, {
|
|
25
|
+
accessRequirement: p,
|
|
26
|
+
subjectId: m,
|
|
27
|
+
subjectType: h,
|
|
28
|
+
onRejectTerms: g,
|
|
28
29
|
onRequestAccess: () => {
|
|
29
|
-
|
|
30
|
+
_(p);
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
|
-
case
|
|
33
|
-
default: return console.warn("Unsupported access requirement type:",
|
|
33
|
+
case c: return /* @__PURE__ */ a(r, {});
|
|
34
|
+
default: return console.warn("Unsupported access requirement type:", p.concreteType), /* @__PURE__ */ a(i, {});
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
//#endregion
|
|
37
|
-
export {
|
|
38
|
+
export { f as AccessRequirementListItem };
|
|
38
39
|
|
|
39
40
|
//# sourceMappingURL=AccessRequirementListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementListItem.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListItem.tsx"],"sourcesContent":["import {\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n AccessRequirement,\n
|
|
1
|
+
{"version":3,"file":"AccessRequirementListItem.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListItem.tsx"],"sourcesContent":["import {\n ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n AccessRequirement,\n JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport React from 'react'\nimport { RequestableAccessRequirement } from './RequestDataStep'\nimport UnmanagedACTAccessRequirementItem from './RequirementItem/UnmanagedACTAccessRequirementItem'\nimport RequestableAccessRequirementItem from './ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem'\nimport SelfSignAccessRequirementItem from './RequirementItem/SelfSignAccessRequirementItem'\nimport LockAccessRequirementItem from './RequirementItem/LockAccessRequirementItem'\n\nexport type AccessRequirementListItemProps = {\n accessRequirement: AccessRequirement\n onHide: () => void\n onRequestAccess: (accessRequirement: RequestableAccessRequirement) => void\n subjectId?: string\n subjectType?: RestrictableObjectType\n}\n\n/**\n * Renders an individual AR item for the AccessRequirementList\n */\nexport function AccessRequirementListItem(\n props: AccessRequirementListItemProps,\n): React.ReactNode {\n const { accessRequirement, subjectId, subjectType, onHide, onRequestAccess } =\n props\n switch (accessRequirement.concreteType) {\n case SELF_SIGN_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n case TERMS_OF_USE_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <SelfSignAccessRequirementItem\n accessRequirement={accessRequirement}\n onHide={onHide}\n />\n )\n case ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <UnmanagedACTAccessRequirementItem\n accessRequirement={accessRequirement}\n onHide={onHide}\n subjectId={subjectId}\n subjectType={subjectType}\n />\n )\n case MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n case JSON_SCHEMA_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return (\n <RequestableAccessRequirementItem\n accessRequirement={accessRequirement}\n subjectId={subjectId}\n subjectType={subjectType}\n onRejectTerms={onHide}\n onRequestAccess={() => {\n onRequestAccess(accessRequirement)\n }}\n />\n )\n case LOCK_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE:\n return <LockAccessRequirementItem />\n // case not supported yet\n default:\n console.warn(\n 'Unsupported access requirement type:',\n (accessRequirement as AccessRequirement).concreteType,\n )\n return <></>\n }\n}\n"],"mappings":";;;;;;;;AA4BA,SAAgB,EACd,GACiB;CACjB,IAAM,EAAE,sBAAmB,cAAW,gBAAa,WAAQ,uBACzD;CACF,QAAQ,EAAkB,cAA1B;EACE,KAAK;EACL,KAAK,GACH,OACE,kBAAC,GAAD;GACqB;GACX;EACT,CAAA;EAEL,KAAK,GACH,OACE,kBAAC,GAAD;GACqB;GACX;GACG;GACE;EACd,CAAA;EAEL,KAAK;EACL,KAAK,GACH,OACE,kBAAC,GAAD;GACqB;GACR;GACE;GACb,eAAe;GACf,uBAAuB;IACrB,EAAgB,CAAiB;GACnC;EACD,CAAA;EAEL,KAAK,GACH,OAAO,kBAAC,GAAD,CAA4B,CAAA;EAErC,SAKE,OAJA,QAAQ,KACN,wCACC,EAAwC,YAC3C,GACO,kBAAA,GAAA,CAAI,CAAA;CACf;AACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AccessRequirement } from '@sage-bionetworks/synapse-types';
|
|
1
2
|
/**
|
|
2
3
|
* Given an array of access requirement IDs, return the IDs sorted by the user's status, where
|
|
3
4
|
* completed access requirements are shown first.
|
|
@@ -6,8 +7,8 @@
|
|
|
6
7
|
*/
|
|
7
8
|
export declare const sortAccessRequirementsByCompletion: (accessToken: string | undefined, requirementIds: string[]) => Promise<string[]>;
|
|
8
9
|
/**
|
|
9
|
-
* Determines if
|
|
10
|
-
*
|
|
10
|
+
* Determines if the wiki of the access requirement in the request wizard is shown alongside the forms. Only a
|
|
11
|
+
* ManagedACTAccessRequirement's wiki is shown, and only on screens wide enough to fit it (SWC-6432).
|
|
11
12
|
*/
|
|
12
|
-
export declare function
|
|
13
|
+
export declare function useShowAccessRequirementWikiInWizard(accessRequirement: Pick<AccessRequirement, 'concreteType'> | undefined): boolean;
|
|
13
14
|
//# sourceMappingURL=AccessRequirementListUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementListUtils.d.ts","sourceRoot":"","sources":["../../../src/components/AccessRequirementList/AccessRequirementListUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccessRequirementListUtils.d.ts","sourceRoot":"","sources":["../../../src/components/AccessRequirementList/AccessRequirementListUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EAElB,MAAM,iCAAiC,CAAA;AAExC;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,GAC7C,aAAa,MAAM,GAAG,SAAS,EAC/B,gBAAgB,MAAM,EAAE,KACvB,OAAO,CAAC,MAAM,EAAE,CAkBlB,CAAA;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,GAAG,SAAS,GACrE,OAAO,CAQT"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { getAccessRequirementStatus as e } from "../../synapse-client/SynapseClient.js";
|
|
2
2
|
import { sortBy as t } from "lodash-es";
|
|
3
3
|
import { useMediaQuery as n, useTheme as r } from "@mui/material";
|
|
4
|
+
import { MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE as i } from "@sage-bionetworks/synapse-types";
|
|
4
5
|
//#region src/components/AccessRequirementList/AccessRequirementListUtils.ts
|
|
5
|
-
var
|
|
6
|
+
var a = async (n, r) => {
|
|
6
7
|
let i = r.map((t) => e(n, t)), a = await Promise.all(i);
|
|
7
8
|
return t(r, (e) => -1 * Number(a.find((t) => e === t.accessRequirementId).isApproved));
|
|
8
9
|
};
|
|
9
|
-
function
|
|
10
|
-
|
|
10
|
+
function o(e) {
|
|
11
|
+
let t = n(r().breakpoints.up("md"));
|
|
12
|
+
return e?.concreteType === i && t;
|
|
11
13
|
}
|
|
12
14
|
//#endregion
|
|
13
|
-
export {
|
|
15
|
+
export { a as sortAccessRequirementsByCompletion, o as useShowAccessRequirementWikiInWizard };
|
|
14
16
|
|
|
15
17
|
//# sourceMappingURL=AccessRequirementListUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRequirementListUtils.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListUtils.ts"],"sourcesContent":["import { getAccessRequirementStatus } from '@/synapse-client/SynapseClient'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport { sortBy } from 'lodash-es'\n\n/**\n * Given an array of access requirement IDs, return the IDs sorted by the user's status, where\n * completed access requirements are shown first.\n * @param accessToken\n * @param requirementIds\n */\nexport const sortAccessRequirementsByCompletion = async (\n accessToken: string | undefined,\n requirementIds: string[],\n): Promise<string[]> => {\n const statuses = requirementIds.map(id => {\n return getAccessRequirementStatus(accessToken, id)\n })\n const accessRequirementStatuses = await Promise.all(statuses)\n\n return sortBy(requirementIds, id => {\n // if its true then it should come first, which means that it should be higher in the list\n // which is sorted ascendingly\n return (\n -1 *\n Number(\n accessRequirementStatuses.find(\n status => id === status.accessRequirementId,\n )!.isApproved,\n )\n )\n })\n}\n\n/**\n * Determines if
|
|
1
|
+
{"version":3,"file":"AccessRequirementListUtils.js","names":[],"sources":["../../../src/components/AccessRequirementList/AccessRequirementListUtils.ts"],"sourcesContent":["import { getAccessRequirementStatus } from '@/synapse-client/SynapseClient'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport { sortBy } from 'lodash-es'\nimport {\n AccessRequirement,\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE,\n} from '@sage-bionetworks/synapse-types'\n\n/**\n * Given an array of access requirement IDs, return the IDs sorted by the user's status, where\n * completed access requirements are shown first.\n * @param accessToken\n * @param requirementIds\n */\nexport const sortAccessRequirementsByCompletion = async (\n accessToken: string | undefined,\n requirementIds: string[],\n): Promise<string[]> => {\n const statuses = requirementIds.map(id => {\n return getAccessRequirementStatus(accessToken, id)\n })\n const accessRequirementStatuses = await Promise.all(statuses)\n\n return sortBy(requirementIds, id => {\n // if its true then it should come first, which means that it should be higher in the list\n // which is sorted ascendingly\n return (\n -1 *\n Number(\n accessRequirementStatuses.find(\n status => id === status.accessRequirementId,\n )!.isApproved,\n )\n )\n })\n}\n\n/**\n * Determines if the wiki of the access requirement in the request wizard is shown alongside the forms. Only a\n * ManagedACTAccessRequirement's wiki is shown, and only on screens wide enough to fit it (SWC-6432).\n */\nexport function useShowAccessRequirementWikiInWizard(\n accessRequirement: Pick<AccessRequirement, 'concreteType'> | undefined,\n): boolean {\n const theme = useTheme()\n const matchesBreakpoint = useMediaQuery(theme.breakpoints.up('md'))\n // A JsonSchemaAccessRequirement's form describes what it asks, so its wiki is not shown beside the form\n return (\n accessRequirement?.concreteType ===\n MANAGED_ACT_ACCESS_REQUIREMENT_CONCRETE_TYPE_VALUE && matchesBreakpoint\n )\n}\n"],"mappings":";;;;;AAcA,IAAa,IAAqC,OAChD,GACA,MACsB;CACtB,IAAM,IAAW,EAAe,KAAI,MAC3B,EAA2B,GAAa,CAAE,CAClD,GACK,IAA4B,MAAM,QAAQ,IAAI,CAAQ;CAE5D,OAAO,EAAO,IAAgB,MAI1B,KACA,OACE,EAA0B,MACxB,MAAU,MAAO,EAAO,mBAC1B,EAAG,UACL,CAEH;AACH;AAMA,SAAgB,EACd,GACS;CAET,IAAM,IAAoB,EADZ,EAC0B,EAAM,YAAY,GAAG,IAAI,CAAC;CAElE,OACE,GAAmB,iBACjB,KAAsD;AAE5D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JsonSchemaAccessRequirement, Renewal, Request, RestrictableObjectType } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
export declare const REQUESTER_INFORMATION_STEP_LABEL = "Requester information";
|
|
3
|
+
export type JsonSchemaRequestWizardProps = {
|
|
4
|
+
accessRequirement: JsonSchemaAccessRequirement;
|
|
5
|
+
subjectId: string;
|
|
6
|
+
subjectType: RestrictableObjectType;
|
|
7
|
+
onHide: () => void;
|
|
8
|
+
/** Invoked when the user clicks cancel, with the request including unsaved answers. */
|
|
9
|
+
onCancel: (modifiedDataAccessRequest: Request | Renewal) => void;
|
|
10
|
+
onSubmissionCreated: (submissionId: string) => void;
|
|
11
|
+
/**
|
|
12
|
+
* When set (used for eDUC ARs), completing the last step saves the request and invokes this callback instead of
|
|
13
|
+
* creating a submission. The submission is created later in the eDUC flow.
|
|
14
|
+
*/
|
|
15
|
+
onEDucContinue?: () => void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The request wizard for a JsonSchemaAccessRequirement: a fixed step of requester information followed by one step
|
|
19
|
+
* per step of the access requirement's FormTemplate.
|
|
20
|
+
*/
|
|
21
|
+
export default function JsonSchemaRequestWizard(props: JsonSchemaRequestWizardProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=JsonSchemaRequestWizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSchemaRequestWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.tsx"],"names":[],"mappings":"AAoBA,OAAO,EACL,2BAA2B,EAC3B,OAAO,EACP,OAAO,EACP,sBAAsB,EAEvB,MAAM,iCAAiC,CAAA;AAoBxC,eAAO,MAAM,gCAAgC,0BAA0B,CAAA;AAGvE,MAAM,MAAM,4BAA4B,GAAG;IACzC,iBAAiB,EAAE,2BAA2B,CAAA;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,sBAAsB,CAAA;IACnC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,uFAAuF;IACvF,QAAQ,EAAE,CAAC,yBAAyB,EAAE,OAAO,GAAG,OAAO,KAAK,IAAI,CAAA;IAChE,mBAAmB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;CAC5B,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,KAAK,EAAE,4BAA4B,2CA2CpC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { useSynapseContext as e } from "../../../utils/context/SynapseContext.js";
|
|
2
|
+
import "../../../utils/index.js";
|
|
3
|
+
import { useSubmitDataAccessRequest as t } from "../../../synapse-queries/dataaccess/useDataAccessSubmission.js";
|
|
4
|
+
import { useGetDataAccessRequestForUpdate as n, useUpdateDataAccessRequest as r } from "../../../synapse-queries/dataaccess/useAccessRequirements.js";
|
|
5
|
+
import { useGetCurrentUserProfile as i } from "../../../synapse-queries/user/useUserBundle.js";
|
|
6
|
+
import "../../../synapse-queries/index.js";
|
|
7
|
+
import { DialogBaseTitle as a } from "../../DialogBase.js";
|
|
8
|
+
import { useGeneratedRequestForm as o } from "../../../synapse-queries/dataaccess/useGeneratedRequestForm.js";
|
|
9
|
+
import { getFileUploadFieldTitles as s, getStepTitle as c } from "../../../utils/jsonschema/schemaData.js";
|
|
10
|
+
import { buildRequest as l, getRequestType as u, isRequesterInformationComplete as d, toRequesterInformationValues as f } from "./requesterInformation.js";
|
|
11
|
+
import p from "./RequesterInformationFields.js";
|
|
12
|
+
import m from "../../JsonSchemaForm/SchemaStepForm.js";
|
|
13
|
+
import { useRef as ee, useState as h } from "react";
|
|
14
|
+
import { Alert as g, Box as _, Button as v, DialogActions as y, DialogContent as b, Skeleton as x, Step as S, StepLabel as C, Stepper as w } from "@mui/material";
|
|
15
|
+
import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
16
|
+
//#region src/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.tsx
|
|
17
|
+
var O = "Requester information", k = "Request Access";
|
|
18
|
+
function A(t) {
|
|
19
|
+
let { accessRequirement: r, onHide: a } = t, { isAuthenticated: s } = e(), { data: c } = i({ enabled: s }), { data: l } = n(String(r.id), {
|
|
20
|
+
enabled: s,
|
|
21
|
+
staleTime: Infinity,
|
|
22
|
+
throwOnError: !0
|
|
23
|
+
}), { form: d, error: f } = o(r.formTemplateRef, l ? u(l) : void 0);
|
|
24
|
+
return f ? /* @__PURE__ */ E(j, {
|
|
25
|
+
onHide: a,
|
|
26
|
+
children: /* @__PURE__ */ D(g, {
|
|
27
|
+
severity: "error",
|
|
28
|
+
children: ["The request form could not be loaded. ", f.reason]
|
|
29
|
+
})
|
|
30
|
+
}) : !l || !c || !d ? /* @__PURE__ */ E(j, {
|
|
31
|
+
onHide: a,
|
|
32
|
+
children: /* @__PURE__ */ E(x, {
|
|
33
|
+
variant: "rectangular",
|
|
34
|
+
height: 300
|
|
35
|
+
})
|
|
36
|
+
}) : /* @__PURE__ */ E(M, {
|
|
37
|
+
...t,
|
|
38
|
+
request: l,
|
|
39
|
+
currentUserId: c.ownerId,
|
|
40
|
+
steps: d.steps
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function j(e) {
|
|
44
|
+
return /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(a, {
|
|
45
|
+
title: k,
|
|
46
|
+
onCancel: e.onHide
|
|
47
|
+
}), /* @__PURE__ */ E(b, { children: e.children })] });
|
|
48
|
+
}
|
|
49
|
+
function M(e) {
|
|
50
|
+
let { accessRequirement: n, subjectId: i, subjectType: o, onHide: u, onCancel: x, onSubmissionCreated: O, onEDucContinue: A, request: j, currentUserId: M, steps: N } = e, P = !!n.eDucTemplateId, [F, I] = h(0), [L, R] = h(), [z, B] = h(() => f(j, M)), [V, H] = h(j.schemaData ?? {}), U = ee(null), { mutateAsync: W, isPending: G } = r({ onError: (e) => R(e.reason) }), { mutate: K, isPending: q } = t({
|
|
51
|
+
onSuccess: (e) => O(e.submissionId),
|
|
52
|
+
onError: (e) => R(e.reason)
|
|
53
|
+
}), J = s(N), Y = G || q, X = F === N.length, Z = F === 0, Q = Z ? void 0 : N[F - 1];
|
|
54
|
+
async function $(e = V) {
|
|
55
|
+
R(void 0);
|
|
56
|
+
let t;
|
|
57
|
+
try {
|
|
58
|
+
t = await W(l(j, z, e, P));
|
|
59
|
+
} catch {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!X) {
|
|
63
|
+
I(F + 1);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (A) {
|
|
67
|
+
A();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
K({
|
|
71
|
+
request: {
|
|
72
|
+
requestId: t.id,
|
|
73
|
+
requestEtag: t.etag,
|
|
74
|
+
subjectId: i,
|
|
75
|
+
subjectType: o
|
|
76
|
+
},
|
|
77
|
+
accessRequirementId: String(n.id)
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function te() {
|
|
81
|
+
Z ? $() : U.current?.submit();
|
|
82
|
+
}
|
|
83
|
+
function ne(e) {
|
|
84
|
+
e.success && e.resp ? W({
|
|
85
|
+
...j,
|
|
86
|
+
ducFileHandleId: e.resp.fileHandleId
|
|
87
|
+
}).catch(() => {}) : e.error && R(e.error.reason);
|
|
88
|
+
}
|
|
89
|
+
let re = Y || Z && !d(z, P) || X && J.length > 0, ie = X ? A ? "Continue" : "Submit" : "Next";
|
|
90
|
+
return /* @__PURE__ */ D(T, { children: [
|
|
91
|
+
/* @__PURE__ */ E(a, {
|
|
92
|
+
title: k,
|
|
93
|
+
onCancel: u
|
|
94
|
+
}),
|
|
95
|
+
/* @__PURE__ */ D(b, { children: [
|
|
96
|
+
N.length > 0 && /* @__PURE__ */ E(w, {
|
|
97
|
+
activeStep: F,
|
|
98
|
+
sx: { mb: 3 },
|
|
99
|
+
children: ["Requester information"].concat(N.map((e, t) => c(e, t + 2))).map((e, t) => /* @__PURE__ */ E(S, { children: /* @__PURE__ */ E(C, { children: e }) }, t))
|
|
100
|
+
}),
|
|
101
|
+
Z && /* @__PURE__ */ E(p, {
|
|
102
|
+
accessRequirement: n,
|
|
103
|
+
request: j,
|
|
104
|
+
values: z,
|
|
105
|
+
onChange: (e) => B((t) => ({
|
|
106
|
+
...t,
|
|
107
|
+
...e
|
|
108
|
+
})),
|
|
109
|
+
disabled: Y,
|
|
110
|
+
isLoading: Y,
|
|
111
|
+
onDucUpload: ne
|
|
112
|
+
}),
|
|
113
|
+
Q && /* @__PURE__ */ E(m, {
|
|
114
|
+
ref: U,
|
|
115
|
+
step: Q,
|
|
116
|
+
schemaData: V,
|
|
117
|
+
onSchemaDataChange: H,
|
|
118
|
+
onValid: (e) => void $(e)
|
|
119
|
+
}, F),
|
|
120
|
+
X && J.length > 0 && /* @__PURE__ */ D(g, {
|
|
121
|
+
severity: "warning",
|
|
122
|
+
sx: { mt: 2 },
|
|
123
|
+
children: [
|
|
124
|
+
"This request includes file upload questions (",
|
|
125
|
+
J.join(", "),
|
|
126
|
+
"), which cannot be answered here yet. The request cannot be submitted."
|
|
127
|
+
]
|
|
128
|
+
}),
|
|
129
|
+
L && /* @__PURE__ */ D(g, {
|
|
130
|
+
severity: "error",
|
|
131
|
+
sx: { mt: 2 },
|
|
132
|
+
children: [
|
|
133
|
+
/* @__PURE__ */ E("strong", { children: "Sorry, there is an error in submitting your request." }),
|
|
134
|
+
/* @__PURE__ */ E("br", {}),
|
|
135
|
+
L
|
|
136
|
+
]
|
|
137
|
+
})
|
|
138
|
+
] }),
|
|
139
|
+
/* @__PURE__ */ D(y, { children: [
|
|
140
|
+
!Z && /* @__PURE__ */ E(v, {
|
|
141
|
+
variant: "outlined",
|
|
142
|
+
disabled: Y,
|
|
143
|
+
onClick: () => I(F - 1),
|
|
144
|
+
children: "Back"
|
|
145
|
+
}),
|
|
146
|
+
/* @__PURE__ */ E(_, { sx: { flexGrow: 1 } }),
|
|
147
|
+
/* @__PURE__ */ E(v, {
|
|
148
|
+
variant: "outlined",
|
|
149
|
+
disabled: Y,
|
|
150
|
+
onClick: () => x(l(j, z, V, P)),
|
|
151
|
+
children: "Cancel"
|
|
152
|
+
}),
|
|
153
|
+
/* @__PURE__ */ E(v, {
|
|
154
|
+
variant: "contained",
|
|
155
|
+
loading: Y,
|
|
156
|
+
disabled: re,
|
|
157
|
+
onClick: te,
|
|
158
|
+
children: ie
|
|
159
|
+
})
|
|
160
|
+
] })
|
|
161
|
+
] });
|
|
162
|
+
}
|
|
163
|
+
//#endregion
|
|
164
|
+
export { O as REQUESTER_INFORMATION_STEP_LABEL, A as default };
|
|
165
|
+
|
|
166
|
+
//# sourceMappingURL=JsonSchemaRequestWizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSchemaRequestWizard.js","names":[],"sources":["../../../../src/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.tsx"],"sourcesContent":["import {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '@/synapse-queries'\nimport { useGeneratedRequestForm } from '@/synapse-queries/dataaccess/useGeneratedRequestForm'\nimport { useSynapseContext } from '@/utils'\nimport { GeneratedFormStepForRjsf } from '@/utils/jsonschema/generateDataAccessSchema'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n Skeleton,\n Step,\n StepLabel,\n Stepper,\n} from '@mui/material'\nimport {\n JsonSchemaAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { useRef, useState } from 'react'\nimport { DialogBaseTitle } from '../../DialogBase'\nimport RequesterInformationFields from './RequesterInformationFields'\nimport {\n isRequesterInformationComplete,\n buildRequest,\n RequesterInformationValues,\n getRequestType,\n toRequesterInformationValues,\n} from './requesterInformation'\nimport SchemaStepForm, {\n SchemaStepFormHandle,\n} from '@/components/JsonSchemaForm/SchemaStepForm'\nimport {\n getFileUploadFieldTitles,\n getStepTitle,\n SchemaData,\n} from '@/utils/jsonschema/schemaData'\n\nexport const REQUESTER_INFORMATION_STEP_LABEL = 'Requester information'\nconst REQUEST_ACCESS_TITLE = 'Request Access'\n\nexport type JsonSchemaRequestWizardProps = {\n accessRequirement: JsonSchemaAccessRequirement\n subjectId: string\n subjectType: RestrictableObjectType\n onHide: () => void\n /** Invoked when the user clicks cancel, with the request including unsaved answers. */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n onSubmissionCreated: (submissionId: string) => void\n /**\n * When set (used for eDUC ARs), completing the last step saves the request and invokes this callback instead of\n * creating a submission. The submission is created later in the eDUC flow.\n */\n onEDucContinue?: () => void\n}\n\n/**\n * The request wizard for a JsonSchemaAccessRequirement: a fixed step of requester information followed by one step\n * per step of the access requirement's FormTemplate.\n */\nexport default function JsonSchemaRequestWizard(\n props: JsonSchemaRequestWizardProps,\n) {\n const { accessRequirement, onHide } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const { data: request } = useGetDataAccessRequestForUpdate(\n String(accessRequirement.id),\n {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't be re-fetched unless explicitly invalidated by a mutation\n staleTime: Infinity,\n throwOnError: true,\n },\n )\n const { form, error: formError } = useGeneratedRequestForm(\n accessRequirement.formTemplateRef,\n request ? getRequestType(request) : undefined,\n )\n\n if (formError) {\n return (\n <WizardFrame onHide={onHide}>\n <Alert severity=\"error\">\n The request form could not be loaded. {formError.reason}\n </Alert>\n </WizardFrame>\n )\n }\n if (!request || !user || !form) {\n return (\n <WizardFrame onHide={onHide}>\n <Skeleton variant=\"rectangular\" height={300} />\n </WizardFrame>\n )\n }\n return (\n <JsonSchemaRequestWizardContent\n {...props}\n request={request}\n currentUserId={user.ownerId}\n steps={form.steps}\n />\n )\n}\n\nfunction WizardFrame(props: { onHide: () => void; children: React.ReactNode }) {\n return (\n <>\n <DialogBaseTitle title={REQUEST_ACCESS_TITLE} onCancel={props.onHide} />\n <DialogContent>{props.children}</DialogContent>\n </>\n )\n}\n\ntype JsonSchemaRequestWizardContentProps = JsonSchemaRequestWizardProps & {\n request: Request | Renewal\n currentUserId: string\n steps: GeneratedFormStepForRjsf[]\n}\n\nfunction JsonSchemaRequestWizardContent(\n props: JsonSchemaRequestWizardContentProps,\n) {\n const {\n accessRequirement,\n subjectId,\n subjectType,\n onHide,\n onCancel,\n onSubmissionCreated,\n onEDucContinue,\n request,\n currentUserId,\n steps,\n } = props\n const isEDucEnabled = Boolean(accessRequirement.eDucTemplateId)\n\n const [activeStepIndex, setActiveStepIndex] = useState(0)\n const [alertMessage, setAlertMessage] = useState<string | undefined>()\n const [requesterInformation, setRequesterInformation] =\n useState<RequesterInformationValues>(() =>\n toRequesterInformationValues(request, currentUserId),\n )\n const [schemaData, setSchemaData] = useState<SchemaData>(\n request.schemaData ?? {},\n )\n const schemaStepFormRef = useRef<SchemaStepFormHandle>(null)\n\n const { mutateAsync: updateRequest, isPending: isSaving } =\n useUpdateDataAccessRequest({\n onError: e => setAlertMessage(e.reason),\n })\n const { mutate: submit, isPending: isSubmitting } =\n useSubmitDataAccessRequest({\n onSuccess: submission => onSubmissionCreated(submission.submissionId),\n onError: e => setAlertMessage(e.reason),\n })\n\n const fileUploadFieldTitles = getFileUploadFieldTitles(steps)\n const isBusy = isSaving || isSubmitting\n // Step 0 is the requester information; schema steps follow\n const lastStepIndex = steps.length\n const isLastStep = activeStepIndex === lastStepIndex\n const isRequesterInformationStep = activeStepIndex === 0\n const activeSchemaStep = isRequesterInformationStep\n ? undefined\n : steps[activeStepIndex - 1]\n\n async function saveAndAdvance(latestSchemaData: SchemaData = schemaData) {\n setAlertMessage(undefined)\n let saved: Request | Renewal\n try {\n saved = await updateRequest(\n buildRequest(\n request,\n requesterInformation,\n latestSchemaData,\n isEDucEnabled,\n ),\n )\n } catch {\n // The mutation's onError displays the message\n return\n }\n if (!isLastStep) {\n setActiveStepIndex(activeStepIndex + 1)\n return\n }\n if (onEDucContinue) {\n onEDucContinue()\n return\n }\n submit({\n request: {\n requestId: saved.id,\n requestEtag: saved.etag,\n subjectId,\n subjectType,\n },\n accessRequirementId: String(accessRequirement.id),\n })\n }\n\n function onNextClicked() {\n if (isRequesterInformationStep) {\n void saveAndAdvance()\n } else {\n // Validates the step; onValid is invoked only if the answers are valid\n schemaStepFormRef.current?.submit()\n }\n }\n\n function onDucUpload(response: UploadCallbackResp) {\n if (response.success && response.resp) {\n // The mutation's onError displays the message\n updateRequest({\n ...request,\n ducFileHandleId: response.resp.fileHandleId,\n }).catch(() => {})\n } else if (response.error) {\n setAlertMessage(response.error.reason)\n }\n }\n\n const disableNext =\n isBusy ||\n (isRequesterInformationStep &&\n !isRequesterInformationComplete(requesterInformation, isEDucEnabled)) ||\n (isLastStep && fileUploadFieldTitles.length > 0)\n\n const primaryActionText = !isLastStep\n ? 'Next'\n : onEDucContinue\n ? 'Continue'\n : 'Submit'\n\n return (\n <>\n <DialogBaseTitle title={REQUEST_ACCESS_TITLE} onCancel={onHide} />\n <DialogContent>\n {steps.length > 0 && (\n <Stepper activeStep={activeStepIndex} sx={{ mb: 3 }}>\n {[REQUESTER_INFORMATION_STEP_LABEL]\n // The requester information step comes first, so schema steps start at position 2\n .concat(steps.map((step, index) => getStepTitle(step, index + 2)))\n .map((label, index) => (\n <Step key={index}>\n <StepLabel>{label}</StepLabel>\n </Step>\n ))}\n </Stepper>\n )}\n {isRequesterInformationStep && (\n <RequesterInformationFields\n accessRequirement={accessRequirement}\n request={request}\n values={requesterInformation}\n onChange={changes =>\n setRequesterInformation(previous => ({ ...previous, ...changes }))\n }\n disabled={isBusy}\n isLoading={isBusy}\n onDucUpload={onDucUpload}\n />\n )}\n {activeSchemaStep && (\n <SchemaStepForm\n // Reset the form's validation state when moving between steps\n key={activeStepIndex}\n ref={schemaStepFormRef}\n step={activeSchemaStep}\n schemaData={schemaData}\n onSchemaDataChange={setSchemaData}\n onValid={latestSchemaData => void saveAndAdvance(latestSchemaData)}\n />\n )}\n {isLastStep && fileUploadFieldTitles.length > 0 && (\n <Alert severity=\"warning\" sx={{ mt: 2 }}>\n This request includes file upload questions (\n {fileUploadFieldTitles.join(', ')}), which cannot be answered here\n yet. The request cannot be submitted.\n </Alert>\n )}\n {alertMessage && (\n <Alert severity=\"error\" sx={{ mt: 2 }}>\n <strong>\n Sorry, there is an error in submitting your request.\n </strong>\n <br />\n {alertMessage}\n </Alert>\n )}\n </DialogContent>\n <DialogActions>\n {!isRequesterInformationStep && (\n <Button\n variant=\"outlined\"\n disabled={isBusy}\n onClick={() => setActiveStepIndex(activeStepIndex - 1)}\n >\n Back\n </Button>\n )}\n <Box sx={{ flexGrow: 1 }} />\n <Button\n variant=\"outlined\"\n disabled={isBusy}\n onClick={() =>\n onCancel(\n buildRequest(\n request,\n requesterInformation,\n schemaData,\n isEDucEnabled,\n ),\n )\n }\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n loading={isBusy}\n disabled={disableNext}\n onClick={onNextClicked}\n >\n {primaryActionText}\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Renewal, Request, UploadCallbackResp } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
import { AccessorStepAccessRequirement } from '../ManagedACTAccessRequirementRequestFlow/requestFlowTypes';
|
|
3
|
+
import { RequesterInformationValues } from './requesterInformation';
|
|
4
|
+
export type RequesterInformationFieldsProps = {
|
|
5
|
+
accessRequirement: AccessorStepAccessRequirement;
|
|
6
|
+
request: Request | Renewal;
|
|
7
|
+
values: RequesterInformationValues;
|
|
8
|
+
onChange: (changes: Partial<RequesterInformationValues>) => void;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
isLoading: boolean;
|
|
11
|
+
onDucUpload: (response: UploadCallbackResp) => void;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The always-present questions of a JsonSchemaAccessRequirement request: who is requesting access, the eDUC
|
|
15
|
+
* participants, and the DUC when it is uploaded rather than signed electronically.
|
|
16
|
+
*/
|
|
17
|
+
export default function RequesterInformationFields(props: RequesterInformationFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=RequesterInformationFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequesterInformationFields.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,OAAO,EACP,OAAO,EACP,kBAAkB,EACnB,MAAM,iCAAiC,CAAA;AAMxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAA;AAE1G,OAAO,EACL,0BAA0B,EAE3B,MAAM,wBAAwB,CAAA;AAE/B,MAAM,MAAM,+BAA+B,GAAG;IAC5C,iBAAiB,EAAE,6BAA6B,CAAA;IAChD,OAAO,EAAE,OAAO,GAAG,OAAO,CAAA;IAC1B,MAAM,EAAE,0BAA0B,CAAA;IAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAA;IAChE,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACpD,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,KAAK,EAAE,+BAA+B,2CA0GvC"}
|