synapse-react-client 4.0.32 → 4.0.34
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 +5 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +152 -85
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +62 -43
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts +6 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +227 -147
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js +28 -24
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +21 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +163 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +22 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +264 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +166 -71
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.d.ts +13 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +122 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +17 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +112 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +22 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +193 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.d.ts +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js +7 -7
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts +3 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts.map +1 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js +9 -0
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js.map +1 -0
- package/dist/components/CopyToClipboardIcon.d.ts +2 -1
- package/dist/components/CopyToClipboardIcon.d.ts.map +1 -1
- package/dist/components/CopyToClipboardIcon.js +6 -6
- package/dist/components/CopyToClipboardIcon.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +230 -215
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +3 -3
- package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts +10 -0
- package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts.map +1 -0
- package/dist/components/DataGrid/components/ReorderColumnsButton.js +37 -0
- package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -0
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts +12 -0
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -0
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +93 -0
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -0
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts +3 -0
- package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +5 -0
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts +8 -0
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js +14 -0
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js.map +1 -0
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +119 -122
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts +5 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +7 -7
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
- package/dist/components/EntityLink.d.ts +2 -0
- package/dist/components/EntityLink.d.ts.map +1 -1
- package/dist/components/EntityLink.js +15 -11
- package/dist/components/EntityLink.js.map +1 -1
- package/dist/components/EntitySidebar/AccessAndPermissions.css +1 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.d.ts +7 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.d.ts.map +1 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.js +75 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.js.map +1 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.module.js +15 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.module.js.map +1 -0
- package/dist/components/EntitySidebar/AccessAndPermissions.module.scss +58 -0
- package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.js +54 -42
- package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.js +10 -11
- package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -13
- package/dist/components/EntityTreeTable/EntityTreeTable.css +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.module.js +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.module.js.map +1 -1
- package/dist/components/EntityTreeTable/EntityTreeTable.module.scss +18 -0
- package/dist/components/EntityTreeTable/components/ColumnHeaders.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/ColumnHeaders.js +20 -7
- package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js +3 -1
- package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableView.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableView.js +4 -1
- package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js +3 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js +24 -19
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
- package/dist/components/FilePreview/PdfPreview.js +23 -20
- package/dist/components/FilePreview/PdfPreview.js.map +1 -1
- package/dist/components/Forum/DiscussionEmpty.css +1 -1
- package/dist/components/Forum/DiscussionEmpty.module.js +4 -4
- package/dist/components/Forum/DiscussionEmpty.module.js.map +1 -1
- package/dist/components/Forum/DiscussionEmpty.module.scss +3 -6
- package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +100 -99
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.css +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts +29 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js +229 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js +9 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.scss +19 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts +23 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js +39 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts +14 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js +12 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts +17 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js +8 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts +6 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/index.js +4 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts +20 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js +25 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts +35 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts.map +1 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js +60 -0
- package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.css +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.module.js +5 -5
- package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.module.scss +2 -4
- package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -1
- package/dist/components/ProjectInfo/ProjectInfoPopover.js +17 -16
- package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js +16 -16
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +95 -95
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +2 -2
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +120 -92
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +1 -3
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +40 -40
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -2
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.css +1 -1
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.d.ts.map +1 -1
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js +0 -7
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js.map +1 -1
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js +2 -2
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js.map +1 -1
- package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.scss +12 -2
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.css +1 -1
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js +3 -3
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js.map +1 -1
- package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.scss +5 -1
- package/dist/components/TanStackTable/ColumnHeader.d.ts +7 -0
- package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js +10 -9
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts +8 -0
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts.map +1 -1
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.js +31 -22
- package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts +21 -0
- package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts.map +1 -0
- package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js +22 -0
- package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js.map +1 -0
- package/dist/components/dataaccess/AccessRequirementDashboard.d.ts.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +55 -55
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/EDucTemplateTable.d.ts +3 -0
- package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -0
- package/dist/components/dataaccess/EDucTemplateTable.js +213 -0
- package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -0
- package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
- package/dist/components/dataaccess/ReviewerDashboard.js +44 -34
- package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
- package/dist/components/entity/metadata/AnnotationsTable.js +2 -2
- package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.d.ts.map +1 -1
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js +8 -8
- package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +22 -22
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +62 -68
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/styled/StyledTableContainer.d.ts +1 -0
- package/dist/components/styled/StyledTableContainer.d.ts.map +1 -1
- package/dist/components/styled/StyledTableContainer.js +3 -3
- package/dist/components/styled/StyledTableContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +2 -0
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -40
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/mocks/eDuc/mockEDucTemplates.d.ts +7 -0
- package/dist/mocks/eDuc/mockEDucTemplates.d.ts.map +1 -0
- package/dist/mocks/eDuc/mockEDucTemplates.js +18 -0
- package/dist/mocks/eDuc/mockEDucTemplates.js.map +1 -0
- package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts +31 -0
- package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts.map +1 -0
- package/dist/mocks/jsonschema/mockJsonSchemaListing.js +101 -0
- package/dist/mocks/jsonschema/mockJsonSchemaListing.js.map +1 -0
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +48 -23
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts +2 -0
- package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/eDucTemplateHandlers.js +14 -0
- package/dist/mocks/msw/handlers/eDucTemplateHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts +8 -0
- package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js +30 -0
- package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +55 -51
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/abstracts/_cssVariables.scss +13 -0
- package/dist/style/components/entity_finder/_details-view.scss +0 -10
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +0 -6
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +2 -6
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +3 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +9 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts +3 -3
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +40 -35
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/entity/index.d.ts +0 -2
- package/dist/synapse-queries/entity/index.d.ts.map +1 -1
- package/dist/synapse-queries/entity/index.js +8 -10
- package/dist/synapse-queries/index.d.ts +1 -0
- package/dist/synapse-queries/index.d.ts.map +1 -1
- package/dist/synapse-queries/index.js +136 -128
- package/dist/synapse-queries/index.js.map +1 -1
- package/dist/synapse-queries/jsonschema/index.d.ts +6 -0
- package/dist/synapse-queries/jsonschema/index.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/index.js +6 -0
- package/dist/synapse-queries/jsonschema/useEntityBoundSchema.d.ts.map +1 -0
- package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.js +1 -1
- package/dist/synapse-queries/jsonschema/useEntityBoundSchema.js.map +1 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts +26 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js +36 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js.map +1 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts +8 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js +21 -0
- package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js.map +1 -0
- package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts +8 -0
- package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useListOrganizations.js +22 -0
- package/dist/synapse-queries/jsonschema/useListOrganizations.js.map +1 -0
- package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -0
- package/dist/synapse-queries/{entity → jsonschema}/useSchema.js +1 -1
- package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -0
- package/dist/testutils/VirtualizedTableTestUtils.js +17 -0
- package/dist/testutils/VirtualizedTableTestUtils.js.map +1 -0
- package/dist/theme/palette/Palettes.d.ts.map +1 -1
- package/dist/theme/palette/Palettes.js +13 -0
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +6 -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/hooks/useFetchBlobUrl.d.ts +9 -0
- package/dist/utils/hooks/useFetchBlobUrl.d.ts.map +1 -0
- package/dist/utils/hooks/useFetchBlobUrl.js +19 -0
- package/dist/utils/hooks/useFetchBlobUrl.js.map +1 -0
- package/package.json +3 -3
- package/dist/synapse-queries/entity/useEntityBoundSchema.d.ts.map +0 -1
- package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +0 -1
- package/dist/synapse-queries/entity/useSchema.d.ts.map +0 -1
- package/dist/synapse-queries/entity/useSchema.js.map +0 -1
- /package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.d.ts +0 -0
- /package/dist/synapse-queries/{entity → jsonschema}/useSchema.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResearchProjectForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.tsx"],"sourcesContent":["import {\n useGetResearchProject,\n useUpdateResearchProject,\n} from '@/synapse-queries'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n ResearchProject,\n} from '@sage-bionetworks/synapse-types'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { FormEvent, useEffect, useState } from 'react'\nimport HelpPopover from '../../../HelpPopover'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport TextFieldWithWordLimit, {\n getWordCount,\n} from '../../../TextField/TextFieldWithWordLimit'\nimport { AlertProps } from '../DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\n\nconst INTENDED_DATA_USE_MIN_WORD_COUNT = 50\nconst INTENDED_DATA_USE_MAX_WORD_COUNT = 750 // SWC-7526\n\nexport type ResearchProjectFormProps = {\n /* The access requirement to which the research project refers */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSave?: (researchProject: ResearchProject) => void\n onHide?: () => void\n}\n\n/**\n * Step 1 of the Data Access Request/Renewal flow prompts the user to provide information about their ResearchProject.\n */\nexport default function ResearchProjectForm(props: ResearchProjectFormProps) {\n const { onSave, managedACTAccessRequirement, onHide } = props\n const [projectLead, setProjectLead] = useState<string>('')\n const [institution, setInstitution] = useState<string>('')\n const [intendedDataUseStatement, setIntendedDataUseStatement] =\n useState<string>('')\n const [alert, setAlert] = useState<AlertProps | undefined>()\n\n const [showConfirmationScreen, setShowConfirmationScreen] = useState(false)\n\n const { data: existingResearchProject, isLoading: isLoadingInitialData } =\n useGetResearchProject(String(managedACTAccessRequirement.id), {\n // Infinite staleTime ensures this won't be refetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n })\n\n // Populate the form with existing data if it exists\n useEffect(() => {\n if (isEmpty(projectLead) && existingResearchProject?.projectLead) {\n setProjectLead(existingResearchProject?.projectLead)\n }\n if (isEmpty(institution) && existingResearchProject?.institution) {\n setInstitution(existingResearchProject?.institution)\n }\n if (\n isEmpty(intendedDataUseStatement) &&\n existingResearchProject?.intendedDataUseStatement\n ) {\n setIntendedDataUseStatement(\n existingResearchProject?.intendedDataUseStatement,\n )\n }\n }, [\n existingResearchProject?.institution,\n existingResearchProject?.intendedDataUseStatement,\n existingResearchProject?.projectLead,\n // PORTALS-3774: initialize from existingResearchProject, but do not reset institution,\n // projectLead, or intendedDataUseStatement if they have been modified\n ])\n\n const { mutate, isPending: updateIsPending } = useUpdateResearchProject({\n onSuccess: data => {\n if (onSave) {\n onSave(data)\n }\n },\n onError: e => {\n console.log(\n 'RequestDataAccessStep1: Error updating research project data: ',\n e,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n },\n })\n\n const isLoading = isLoadingInitialData || updateIsPending\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Unable to update research project data.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const handleSubmit = (e: FormEvent<HTMLElement>) => {\n e.preventDefault()\n if (!showConfirmationScreen) {\n setShowConfirmationScreen(true)\n } else {\n mutate({\n ...existingResearchProject,\n accessRequirementId: String(managedACTAccessRequirement.id),\n institution: institution,\n projectLead: projectLead,\n intendedDataUseStatement: intendedDataUseStatement || undefined,\n })\n setShowConfirmationScreen(false)\n }\n }\n\n const formIsValid =\n projectLead &&\n institution &&\n (!managedACTAccessRequirement.isIDURequired ||\n (intendedDataUseStatement &&\n getWordCount(intendedDataUseStatement) >=\n INTENDED_DATA_USE_MIN_WORD_COUNT &&\n getWordCount(intendedDataUseStatement) <=\n INTENDED_DATA_USE_MAX_WORD_COUNT))\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n {showConfirmationScreen && (\n <ConfirmationScreenContent\n isIDURequired={managedACTAccessRequirement.isIDURequired}\n />\n )}\n {!showConfirmationScreen && (\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(\n managedACTAccessRequirement.id,\n )}\n >\n <Box\n component={'form'}\n onSubmit={handleSubmit}\n sx={{\n '& .MuiTextField-root': {\n marginBottom: '20px',\n },\n }}\n >\n <TextField\n id={'project-lead'}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>First and last names of your project lead or PI</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nProvide the name of one person who serves as the project leader or PI.`}\n />\n </Box>\n }\n placeholder={\n 'First and last name of individual leading the project, ex: Jane Smith'\n }\n fullWidth\n disabled={isLoading}\n type=\"text\"\n value={projectLead}\n required\n onChange={e => setProjectLead(e.target.value)}\n slotProps={{\n inputLabel: {\n // allows floating the help popover all the way to the right\n sx: { width: '100%' },\n },\n }}\n />\n <TextField\n id={'institution'}\n label={'Your Institution'}\n placeholder={\n 'Full, unabbreviated name of the institution you are affiliated with'\n }\n fullWidth\n type=\"text\"\n disabled={isLoading}\n value={institution}\n required\n onChange={e => setInstitution(e.target.value)}\n />\n\n {managedACTAccessRequirement.isIDURequired && (\n <TextFieldWithWordLimit\n id={'data-use'}\n minWords={INTENDED_DATA_USE_MIN_WORD_COUNT}\n maxWords={INTENDED_DATA_USE_MAX_WORD_COUNT}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>Intended Data Use (IDU)</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nCheck the instructions for data access for information on completing the IDU statement.`}\n />\n </Box>\n }\n helperText={\n managedACTAccessRequirement.isIDUPublic\n ? 'This will be visible to the public'\n : undefined\n }\n placeholder={\n 'Outline the objectives of your proposed research involving this data, and your study design and analysis plan.'\n }\n fullWidth\n required\n multiline\n rows={9}\n disabled={isLoading}\n value={intendedDataUseStatement}\n onChange={e => setIntendedDataUseStatement(e.target.value)}\n />\n )}\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n )}\n <DialogActions>\n {showConfirmationScreen && (\n <>\n <Button\n variant={'outlined'}\n onClick={() => {\n setShowConfirmationScreen(false)\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n </>\n )}\n <Button variant=\"outlined\" disabled={isLoading} onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n type=\"submit\"\n disabled={isLoading || !formIsValid}\n onClick={handleSubmit}\n >\n {updateIsPending ? 'Saving...' : 'Save and Continue'}\n </Button>\n </DialogActions>\n </>\n )\n}\n\nfunction ConfirmationScreenContent(props: { isIDURequired: boolean }) {\n const { isIDURequired } = props\n return (\n <DialogContent>\n <Typography\n variant=\"body1\"\n gutterBottom\n sx={{\n fontWeight: 700,\n }}\n >\n Double-check your submission before continuing!\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n Here are some common reasons a request is rejected:\n </Typography>\n <Box component=\"ul\">\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is your <i>Project Lead</i> a full name (first and last)?\n </Typography>\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is the <i>Institution</i> name you provided unabbreviated and\n verifiable? You must give the full name of your institution, so we can\n look it up.\n </Typography>\n {isIDURequired && (\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Did you provide clear <i>study objectives</i> and your{' '}\n <i>study design</i> and <i>analysis plan</i> in the IDU section?\n </Typography>\n )}\n </Box>\n <Typography variant=\"body1\" gutterBottom>\n Please take a minute to make sure your submission is correct. If your\n submission is rejected, you’ll have to resubmit after a few days!\n </Typography>\n </DialogContent>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResearchProjectForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.tsx"],"sourcesContent":["import {\n useGetDataAccessRequestForUpdate,\n useGetResearchProject,\n useGetUserProfile,\n useUpdateDataAccessRequest,\n useUpdateResearchProject,\n} from '@/synapse-queries'\nimport { InfoTwoTone } from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n PrincipalInvestigator,\n Renewal,\n Request,\n ResearchProject,\n TYPE_FILTER,\n} from '@sage-bionetworks/synapse-types'\nimport isEmpty from 'lodash-es/isEmpty'\nimport { FormEvent, useEffect, useRef, useState } from 'react'\nimport HelpPopover from '../../../HelpPopover'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport TextFieldWithWordLimit, {\n getWordCount,\n} from '../../../TextField/TextFieldWithWordLimit'\nimport UserSearchBox from '../../../UserSearchBox/UserSearchBox'\nimport { AlertProps } from '../DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\n\nconst INTENDED_DATA_USE_MIN_WORD_COUNT = 50\nconst INTENDED_DATA_USE_MAX_WORD_COUNT = 750 // SWC-7526\n\nexport type ResearchProjectFormProps = {\n /* The access requirement to which the research project refers */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSave?: (researchProject: ResearchProject) => void\n onHide?: () => void\n}\n\n/**\n * Step 1 of the Data Access Request/Renewal flow prompts the user to provide information about their ResearchProject.\n */\nexport default function ResearchProjectForm(props: ResearchProjectFormProps) {\n const { onSave, managedACTAccessRequirement, onHide } = props\n const isEDucEnabled = Boolean(managedACTAccessRequirement.eDucTemplateId)\n const [projectLead, setProjectLead] = useState<string>('')\n const [institution, setInstitution] = useState<string>('')\n const [intendedDataUseStatement, setIntendedDataUseStatement] =\n useState<string>('')\n const [piUserId, setPiUserId] = useState<string | null>(null)\n const [piEmail, setPiEmail] = useState<string>('')\n const [alert, setAlert] = useState<AlertProps | undefined>()\n\n const [showConfirmationScreen, setShowConfirmationScreen] = useState(false)\n\n const { data: existingResearchProject, isLoading: isLoadingInitialData } =\n useGetResearchProject(String(managedACTAccessRequirement.id), {\n // Infinite staleTime ensures this won't be refetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n })\n\n const {\n data: existingDataAccessRequest,\n isLoading: isLoadingDataAccessRequest,\n } = useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isEDucEnabled,\n staleTime: Infinity,\n })\n const existingDarRef = useRef(existingDataAccessRequest)\n useEffect(() => {\n existingDarRef.current = existingDataAccessRequest\n }, [existingDataAccessRequest])\n\n // Populate the form with existing data if it exists\n useEffect(() => {\n if (isEmpty(projectLead) && existingResearchProject?.projectLead) {\n setProjectLead(existingResearchProject?.projectLead)\n }\n if (isEmpty(institution) && existingResearchProject?.institution) {\n setInstitution(existingResearchProject?.institution)\n }\n if (\n isEmpty(intendedDataUseStatement) &&\n existingResearchProject?.intendedDataUseStatement\n ) {\n setIntendedDataUseStatement(\n existingResearchProject?.intendedDataUseStatement,\n )\n }\n }, [\n existingResearchProject?.institution,\n existingResearchProject?.intendedDataUseStatement,\n existingResearchProject?.projectLead,\n // PORTALS-3774: initialize from existingResearchProject, but do not reset institution,\n // projectLead, or intendedDataUseStatement if they have been modified\n ])\n\n // Prefill eDUC-only PI fields from any previously-saved DAR values.\n useEffect(() => {\n if (!isEDucEnabled || !existingDataAccessRequest) return\n const pi = existingDataAccessRequest.principalInvestigator\n if (piUserId === null && pi?.userId) {\n setPiUserId(pi.userId)\n }\n if (isEmpty(piEmail) && pi?.institutionalEmail) {\n setPiEmail(pi.institutionalEmail)\n }\n // PORTALS-4375: initialize from existingDataAccessRequest, but do not reset\n // fields once the user has interacted with them.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isEDucEnabled,\n existingDataAccessRequest?.principalInvestigator?.userId,\n existingDataAccessRequest?.principalInvestigator?.institutionalEmail,\n ])\n\n const { data: piUserProfile } = useGetUserProfile(piUserId ?? '', {\n enabled: Boolean(piUserId),\n })\n\n useEffect(() => {\n if (!piUserProfile || !isEmpty(projectLead)) return\n const fullName = [piUserProfile.firstName, piUserProfile.lastName]\n .filter(Boolean)\n .join(' ')\n .trim()\n if (fullName) {\n setProjectLead(fullName)\n }\n // Only populate when projectLead is empty; do not overwrite user edits.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [piUserProfile])\n\n const { mutateAsync: updateResearchProject, isPending: updateIsPending } =\n useUpdateResearchProject({\n onError: e => {\n console.log(\n 'RequestDataAccessStep1: Error updating research project data: ',\n e,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n },\n })\n\n const {\n mutateAsync: updateDataAccessRequest,\n isPending: updateDarIsPending,\n } = useUpdateDataAccessRequest({\n onError: e => {\n console.log(\n 'RequestDataAccessStep1: Error updating data access request: ',\n e,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n },\n })\n\n const isLoading =\n isLoadingInitialData ||\n (isEDucEnabled && isLoadingDataAccessRequest) ||\n updateIsPending ||\n updateDarIsPending\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Unable to update research project data.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const handleSubmit = async (e: FormEvent<HTMLElement>) => {\n e.preventDefault()\n if (!showConfirmationScreen) {\n setShowConfirmationScreen(true)\n return\n }\n let updatedResearchProject: ResearchProject\n try {\n updatedResearchProject = await updateResearchProject({\n ...existingResearchProject,\n accessRequirementId: String(managedACTAccessRequirement.id),\n institution: institution,\n projectLead: projectLead,\n intendedDataUseStatement: intendedDataUseStatement || undefined,\n })\n } catch {\n setShowConfirmationScreen(false)\n return\n }\n if (isEDucEnabled && existingDarRef.current) {\n const existingDar = existingDarRef.current\n const nextPi: PrincipalInvestigator = {\n ...existingDar.principalInvestigator,\n userId: piUserId ?? undefined,\n name: projectLead || undefined,\n institutionalEmail: piEmail || undefined,\n }\n try {\n await updateDataAccessRequest({\n ...existingDar,\n // The DAR is fetched before the ResearchProject exists, so it may not have an id yet\n researchProjectId:\n existingDar.researchProjectId ?? updatedResearchProject.id,\n institution: institution,\n principalInvestigator: nextPi,\n } as Request | Renewal)\n } catch {\n setShowConfirmationScreen(false)\n return\n }\n }\n if (onSave) {\n onSave(updatedResearchProject)\n }\n }\n\n const formIsValid =\n projectLead &&\n institution &&\n (!isEDucEnabled || (piUserId && piEmail)) &&\n (!managedACTAccessRequirement.isIDURequired ||\n (intendedDataUseStatement &&\n getWordCount(intendedDataUseStatement) >=\n INTENDED_DATA_USE_MIN_WORD_COUNT &&\n getWordCount(intendedDataUseStatement) <=\n INTENDED_DATA_USE_MAX_WORD_COUNT))\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton aria-label={'Close'} onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n {showConfirmationScreen && (\n <ConfirmationScreenContent\n isIDURequired={managedACTAccessRequirement.isIDURequired}\n />\n )}\n {!showConfirmationScreen && (\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(\n managedACTAccessRequirement.id,\n )}\n >\n <Box\n component={'form'}\n onSubmit={e => {\n void handleSubmit(e)\n }}\n sx={{\n '& .MuiTextField-root': {\n marginBottom: '20px',\n },\n }}\n >\n <TextField\n id={'project-lead'}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>First and last names of your Project Lead or PI</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nProvide the name of one person who serves as the project leader or PI.`}\n />\n </Box>\n }\n placeholder={\n 'First and last name of individual leading the project, ex: Jane Smith'\n }\n fullWidth\n disabled={isLoading}\n type=\"text\"\n value={projectLead}\n required\n onChange={e => setProjectLead(e.target.value)}\n slotProps={{\n inputLabel: {\n // allows floating the help popover all the way to the right\n sx: { width: '100%' },\n },\n }}\n />\n {isEDucEnabled && (\n <Box sx={{ mb: '20px' }}>\n <Typography\n component=\"label\"\n htmlFor=\"pi-user\"\n variant=\"body1\"\n sx={{ display: 'block', mb: 1 }}\n >\n Synapse username of your Project Lead or PI\n <Box component=\"span\" sx={{ color: 'error.main' }}>\n {' '}\n *\n </Box>\n </Typography>\n <UserSearchBox\n inputId=\"pi-user\"\n typeFilter={TYPE_FILTER.USERS_ONLY}\n value={piUserId}\n onChange={principalId => setPiUserId(principalId)}\n placeholder=\"Search Synapse for your Project Lead or PI\"\n />\n <TextField\n id=\"pi-email\"\n label=\"Institutional Email of your Project Lead or PI\"\n type=\"email\"\n placeholder=\"pi@example.edu\"\n fullWidth\n disabled={isLoading}\n value={piEmail}\n required\n onChange={e => setPiEmail(e.target.value)}\n sx={{ mt: 2 }}\n />\n </Box>\n )}\n\n <TextField\n id={'institution'}\n label={'Your Institution'}\n placeholder={\n 'Full, unabbreviated name of the institution you are affiliated with'\n }\n fullWidth\n type=\"text\"\n disabled={isLoading}\n value={institution}\n required\n onChange={e => setInstitution(e.target.value)}\n />\n\n {managedACTAccessRequirement.isIDURequired && (\n <TextFieldWithWordLimit\n id={'data-use'}\n minWords={INTENDED_DATA_USE_MIN_WORD_COUNT}\n maxWords={INTENDED_DATA_USE_MAX_WORD_COUNT}\n label={\n <Box sx={{ display: 'inline' }}>\n <span>Intended Data Use (IDU)</span>\n <HelpPopover\n Icon={InfoTwoTone}\n containerSx={{ float: 'right' }}\n markdownText={`This field is required.\\n\\nCheck the instructions for data access for information on completing the IDU statement.`}\n />\n </Box>\n }\n helperText={\n managedACTAccessRequirement.isIDUPublic\n ? 'This will be visible to the public'\n : undefined\n }\n placeholder={\n 'Outline the objectives of your proposed research involving this data, and your study design and analysis plan.'\n }\n fullWidth\n required\n multiline\n rows={9}\n disabled={isLoading}\n value={intendedDataUseStatement}\n onChange={e => setIntendedDataUseStatement(e.target.value)}\n />\n )}\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n )}\n <DialogActions>\n {showConfirmationScreen && (\n <>\n <Button\n variant={'outlined'}\n onClick={() => {\n setShowConfirmationScreen(false)\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n </>\n )}\n <Button variant=\"outlined\" disabled={isLoading} onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n type=\"submit\"\n disabled={isLoading || !formIsValid}\n onClick={e => {\n void handleSubmit(e)\n }}\n >\n {updateIsPending ? 'Saving...' : 'Save and Continue'}\n </Button>\n </DialogActions>\n </>\n )\n}\n\nfunction ConfirmationScreenContent(props: { isIDURequired: boolean }) {\n const { isIDURequired } = props\n return (\n <DialogContent>\n <Typography\n variant=\"body1\"\n gutterBottom\n sx={{\n fontWeight: 700,\n }}\n >\n Double-check your submission before continuing!\n </Typography>\n <Typography variant=\"body1\" gutterBottom>\n Here are some common reasons a request is rejected:\n </Typography>\n <Box component=\"ul\">\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is your <i>Project Lead</i> a full name (first and last)?\n </Typography>\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Is the <i>Institution</i> name you provided unabbreviated and\n verifiable? You must give the full name of your institution, so we can\n look it up.\n </Typography>\n {isIDURequired && (\n <Typography component={'li'} variant=\"body1\" gutterBottom>\n Did you provide clear <i>study objectives</i> and your{' '}\n <i>study design</i> and <i>analysis plan</i> in the IDU section?\n </Typography>\n )}\n </Box>\n <Typography variant=\"body1\" gutterBottom>\n Please take a minute to make sure your submission is correct. If your\n submission is rejected, you’ll have to resubmit after a few days!\n </Typography>\n </DialogContent>\n )\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AccessorChange, PrincipalInvestigator, SigningOfficial } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
export type ReviewCollaboratorsAndSigningOfficialAccordionProps = {
|
|
3
|
+
accessorChanges: AccessorChange[];
|
|
4
|
+
principalInvestigator?: PrincipalInvestigator;
|
|
5
|
+
signingOfficial?: SigningOfficial;
|
|
6
|
+
isLoading?: boolean;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Collapsible summary of the DAR's collaborators, PI, and signing official.
|
|
10
|
+
* Shared by ReviewDucStep and ManualUploadDucStep.
|
|
11
|
+
*/
|
|
12
|
+
export declare function ReviewCollaboratorsAndSigningOfficialAccordion(props: ReviewCollaboratorsAndSigningOfficialAccordionProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=ReviewCollaboratorsAndSigningOfficialAccordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewCollaboratorsAndSigningOfficialAccordion.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.tsx"],"names":[],"mappings":"AASA,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,EAChB,MAAM,iCAAiC,CAAA;AAIxC,MAAM,MAAM,mDAAmD,GAAG;IAChE,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,mDAAmD,2CA8G3D"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { UserBadge as e } from "../../UserCard/UserBadge.js";
|
|
2
|
+
import { longFieldLabelSx as t } from "./styles.js";
|
|
3
|
+
import { Accordion as n, AccordionDetails as r, AccordionSummary as i, Box as a, Stack as o, Typography as s } from "@mui/material";
|
|
4
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
5
|
+
import { ExpandMore as u } from "@mui/icons-material";
|
|
6
|
+
//#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.tsx
|
|
7
|
+
function d(d) {
|
|
8
|
+
let { accessorChanges: f, principalInvestigator: p, signingOfficial: m, isLoading: h = !1 } = d;
|
|
9
|
+
return /* @__PURE__ */ l(n, {
|
|
10
|
+
defaultExpanded: !1,
|
|
11
|
+
disableGutters: !0,
|
|
12
|
+
sx: {
|
|
13
|
+
boxShadow: "none",
|
|
14
|
+
border: "1px solid",
|
|
15
|
+
borderColor: "grey.300",
|
|
16
|
+
"&:before": { display: "none" }
|
|
17
|
+
},
|
|
18
|
+
children: [/* @__PURE__ */ c(i, {
|
|
19
|
+
expandIcon: /* @__PURE__ */ c(u, {}),
|
|
20
|
+
"aria-controls": "review-collaborators-so-content",
|
|
21
|
+
id: "review-collaborators-so-header",
|
|
22
|
+
children: /* @__PURE__ */ c(s, {
|
|
23
|
+
variant: "headline3",
|
|
24
|
+
children: "Review your collaborators & signing official"
|
|
25
|
+
})
|
|
26
|
+
}), /* @__PURE__ */ l(r, { children: [
|
|
27
|
+
/* @__PURE__ */ c(s, {
|
|
28
|
+
variant: "body1",
|
|
29
|
+
sx: {
|
|
30
|
+
...t,
|
|
31
|
+
fontWeight: 700,
|
|
32
|
+
mb: 1
|
|
33
|
+
},
|
|
34
|
+
children: "Your collaborators:"
|
|
35
|
+
}),
|
|
36
|
+
/* @__PURE__ */ l(o, {
|
|
37
|
+
sx: {
|
|
38
|
+
mb: 3,
|
|
39
|
+
gap: 1
|
|
40
|
+
},
|
|
41
|
+
children: [f.length === 0 && !h && /* @__PURE__ */ c(s, {
|
|
42
|
+
variant: "body1",
|
|
43
|
+
sx: t,
|
|
44
|
+
children: "No collaborators added."
|
|
45
|
+
}), f.map((t) => /* @__PURE__ */ c(e, {
|
|
46
|
+
userId: t.userId,
|
|
47
|
+
showAccountLevelIcon: !0,
|
|
48
|
+
disableLink: !0,
|
|
49
|
+
showFullName: !0
|
|
50
|
+
}, t.userId))]
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ c(s, {
|
|
53
|
+
variant: "body1",
|
|
54
|
+
sx: {
|
|
55
|
+
...t,
|
|
56
|
+
fontWeight: 700,
|
|
57
|
+
mb: 1
|
|
58
|
+
},
|
|
59
|
+
children: "Your Project Lead or PI:"
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ c(s, {
|
|
62
|
+
variant: "body1",
|
|
63
|
+
sx: {
|
|
64
|
+
...t,
|
|
65
|
+
mb: 1
|
|
66
|
+
},
|
|
67
|
+
children: "Your Project Lead or PI will also receive access to the requested data."
|
|
68
|
+
}),
|
|
69
|
+
/* @__PURE__ */ l(a, {
|
|
70
|
+
sx: { mb: 3 },
|
|
71
|
+
children: [
|
|
72
|
+
p?.userId && /* @__PURE__ */ c(e, {
|
|
73
|
+
userId: p.userId,
|
|
74
|
+
showAccountLevelIcon: !0,
|
|
75
|
+
disableLink: !0,
|
|
76
|
+
showFullName: !0
|
|
77
|
+
}),
|
|
78
|
+
p?.name && /* @__PURE__ */ c(s, {
|
|
79
|
+
variant: "body1",
|
|
80
|
+
sx: t,
|
|
81
|
+
children: p.name
|
|
82
|
+
}),
|
|
83
|
+
p?.institutionalEmail && /* @__PURE__ */ c(s, {
|
|
84
|
+
variant: "body1",
|
|
85
|
+
sx: t,
|
|
86
|
+
children: p.institutionalEmail
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ c(s, {
|
|
91
|
+
variant: "body1",
|
|
92
|
+
sx: {
|
|
93
|
+
...t,
|
|
94
|
+
fontWeight: 700,
|
|
95
|
+
mb: 1
|
|
96
|
+
},
|
|
97
|
+
children: "Your signing official:"
|
|
98
|
+
}),
|
|
99
|
+
/* @__PURE__ */ c(s, {
|
|
100
|
+
variant: "body1",
|
|
101
|
+
sx: {
|
|
102
|
+
...t,
|
|
103
|
+
mb: 1
|
|
104
|
+
},
|
|
105
|
+
children: "A member of your institution who is NOT part of the study team (i.e., not the Project Lead, not a Data Requester or Collaborator, and not the Project Lead or PI)."
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ l(a, { children: [m?.name && /* @__PURE__ */ c(s, {
|
|
108
|
+
variant: "body1",
|
|
109
|
+
sx: t,
|
|
110
|
+
children: m.name
|
|
111
|
+
}), m?.institutionalEmail && /* @__PURE__ */ c(s, {
|
|
112
|
+
variant: "body1",
|
|
113
|
+
sx: t,
|
|
114
|
+
children: m.institutionalEmail
|
|
115
|
+
})] })
|
|
116
|
+
] })]
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
export { d as ReviewCollaboratorsAndSigningOfficialAccordion };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=ReviewCollaboratorsAndSigningOfficialAccordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewCollaboratorsAndSigningOfficialAccordion.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.tsx"],"sourcesContent":["import { ExpandMore } from '@mui/icons-material'\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Stack,\n Typography,\n} from '@mui/material'\nimport {\n AccessorChange,\n PrincipalInvestigator,\n SigningOfficial,\n} from '@sage-bionetworks/synapse-types'\nimport { UserBadge } from '../../UserCard/UserBadge'\nimport { longFieldLabelSx } from './styles'\n\nexport type ReviewCollaboratorsAndSigningOfficialAccordionProps = {\n accessorChanges: AccessorChange[]\n principalInvestigator?: PrincipalInvestigator\n signingOfficial?: SigningOfficial\n isLoading?: boolean\n}\n\n/**\n * Collapsible summary of the DAR's collaborators, PI, and signing official.\n * Shared by ReviewDucStep and ManualUploadDucStep.\n */\nexport function ReviewCollaboratorsAndSigningOfficialAccordion(\n props: ReviewCollaboratorsAndSigningOfficialAccordionProps,\n) {\n const {\n accessorChanges,\n principalInvestigator: pi,\n signingOfficial: so,\n isLoading = false,\n } = props\n\n return (\n <Accordion\n defaultExpanded={false}\n disableGutters\n sx={{\n boxShadow: 'none',\n border: '1px solid',\n borderColor: 'grey.300',\n '&:before': { display: 'none' },\n }}\n >\n <AccordionSummary\n expandIcon={<ExpandMore />}\n aria-controls=\"review-collaborators-so-content\"\n id=\"review-collaborators-so-header\"\n >\n <Typography variant={'headline3'}>\n Review your collaborators & signing official\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, fontWeight: 700, mb: 1 }}\n >\n Your collaborators:\n </Typography>\n <Stack sx={{ mb: 3, gap: 1 }}>\n {accessorChanges.length === 0 && !isLoading && (\n <Typography variant={'body1'} sx={longFieldLabelSx}>\n No collaborators added.\n </Typography>\n )}\n {accessorChanges.map(ac => (\n <UserBadge\n key={ac.userId}\n userId={ac.userId}\n showAccountLevelIcon={true}\n disableLink={true}\n showFullName={true}\n />\n ))}\n </Stack>\n\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, fontWeight: 700, mb: 1 }}\n >\n Your Project Lead or PI:\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 1 }}>\n Your Project Lead or PI will also receive access to the requested\n data.\n </Typography>\n <Box sx={{ mb: 3 }}>\n {pi?.userId && (\n <UserBadge\n userId={pi.userId}\n showAccountLevelIcon={true}\n disableLink={true}\n showFullName={true}\n />\n )}\n {pi?.name && (\n <Typography variant={'body1'} sx={longFieldLabelSx}>\n {pi.name}\n </Typography>\n )}\n {pi?.institutionalEmail && (\n <Typography variant={'body1'} sx={longFieldLabelSx}>\n {pi.institutionalEmail}\n </Typography>\n )}\n </Box>\n\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, fontWeight: 700, mb: 1 }}\n >\n Your signing official:\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 1 }}>\n A member of your institution who is NOT part of the study team (i.e.,\n not the Project Lead, not a Data Requester or Collaborator, and not\n the Project Lead or PI).\n </Typography>\n <Box>\n {so?.name && (\n <Typography variant={'body1'} sx={longFieldLabelSx}>\n {so.name}\n </Typography>\n )}\n {so?.institutionalEmail && (\n <Typography variant={'body1'} sx={longFieldLabelSx}>\n {so.institutionalEmail}\n </Typography>\n )}\n </Box>\n </AccordionDetails>\n </Accordion>\n )\n}\n"],"mappings":";;;;;;AA4BA,SAAgB,EACd,GACA;CACA,IAAM,EACJ,oBACA,uBAAuB,GACvB,iBAAiB,GACjB,eAAY,OACV;CAEJ,OACE,kBAAC,GAAD;EACE,iBAAiB;EACjB,gBAAA;EACA,IAAI;GACF,WAAW;GACX,QAAQ;GACR,aAAa;GACb,YAAY,EAAE,SAAS,OAAO;EAChC;YARF,CAUE,kBAAC,GAAD;GACE,YAAY,kBAAC,GAAD,CAAa,CAAA;GACzB,iBAAc;GACd,IAAG;aAEH,kBAAC,GAAD;IAAY,SAAS;cAAa;GAEtB,CAAA;EACI,CAAA,GAClB,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IACE,SAAS;IACT,IAAI;KAAE,GAAG;KAAkB,YAAY;KAAK,IAAI;IAAE;cACnD;GAEW,CAAA;GACZ,kBAAC,GAAD;IAAO,IAAI;KAAE,IAAI;KAAG,KAAK;IAAE;cAA3B,CACG,EAAgB,WAAW,KAAK,CAAC,KAChC,kBAAC,GAAD;KAAY,SAAS;KAAS,IAAI;eAAkB;IAExC,CAAA,GAEb,EAAgB,KAAI,MACnB,kBAAC,GAAD;KAEE,QAAQ,EAAG;KACX,sBAAsB;KACtB,aAAa;KACb,cAAc;IACf,GALM,EAAG,MAKT,CACF,CACI;;GAEP,kBAAC,GAAD;IACE,SAAS;IACT,IAAI;KAAE,GAAG;KAAkB,YAAY;KAAK,IAAI;IAAE;cACnD;GAEW,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAS;IAAS,IAAI;KAAE,GAAG;KAAkB,IAAI;IAAE;cAAG;GAGtD,CAAA;GACZ,kBAAC,GAAD;IAAK,IAAI,EAAE,IAAI,EAAE;cAAjB;KACG,GAAI,UACH,kBAAC,GAAD;MACE,QAAQ,EAAG;MACX,sBAAsB;MACtB,aAAa;MACb,cAAc;KACf,CAAA;KAEF,GAAI,QACH,kBAAC,GAAD;MAAY,SAAS;MAAS,IAAI;gBAC/B,EAAG;KACM,CAAA;KAEb,GAAI,sBACH,kBAAC,GAAD;MAAY,SAAS;MAAS,IAAI;gBAC/B,EAAG;KACM,CAAA;IAEX;;GAEL,kBAAC,GAAD;IACE,SAAS;IACT,IAAI;KAAE,GAAG;KAAkB,YAAY;KAAK,IAAI;IAAE;cACnD;GAEW,CAAA;GACZ,kBAAC,GAAD;IAAY,SAAS;IAAS,IAAI;KAAE,GAAG;KAAkB,IAAI;IAAE;cAAG;GAItD,CAAA;GACZ,kBAAC,GAAD,EAAA,UAAA,CACG,GAAI,QACH,kBAAC,GAAD;IAAY,SAAS;IAAS,IAAI;cAC/B,EAAG;GACM,CAAA,GAEb,GAAI,sBACH,kBAAC,GAAD;IAAY,SAAS;IAAS,IAAI;cAC/B,EAAG;GACM,CAAA,CAEX,EAAA,CAAA;EACW,EAAA,CAAA,CACT;;AAEf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ManagedACTAccessRequirement } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
export type ReviewDucStepProps = {
|
|
3
|
+
managedACTAccessRequirement: ManagedACTAccessRequirement;
|
|
4
|
+
onHide: () => void;
|
|
5
|
+
onBackClicked: () => void;
|
|
6
|
+
/**
|
|
7
|
+
* Called when the user clicks "Create a DUC". The parent advances to the eDUC preview step
|
|
8
|
+
* (PORTALS-4377), where the generated document is displayed for review before signing.
|
|
9
|
+
*/
|
|
10
|
+
onCreateDuc: () => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Wizard step shown after accessors/files (PORTALS-4375) and before the eDUC preview (PORTALS-4377).
|
|
14
|
+
* Lets the user confirm their collaborators, PI, and Signing Official before generating the DUC.
|
|
15
|
+
*/
|
|
16
|
+
export default function ReviewDucStep(props: ReviewDucStepProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=ReviewDucStep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewDucStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAM7E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB;;;OAGG;IACH,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CA8E9D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useGetDataAccessRequestForUpdate as e } from "../../../../synapse-queries/dataaccess/useAccessRequirements.js";
|
|
2
|
+
import "../../../../synapse-queries/index.js";
|
|
3
|
+
import t from "../../../IconSvg/IconSvg.js";
|
|
4
|
+
import { longFieldLabelSx as n } from "../styles.js";
|
|
5
|
+
import r from "../ManagedACTAccessRequirementFormWikiWrapper.js";
|
|
6
|
+
import { ReviewCollaboratorsAndSigningOfficialAccordion as i } from "../ReviewCollaboratorsAndSigningOfficialAccordion.js";
|
|
7
|
+
import { Box as a, Button as o, DialogActions as s, DialogContent as c, DialogTitle as l, IconButton as u, Stack as d, Typography as f } from "@mui/material";
|
|
8
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.tsx
|
|
10
|
+
function g(g) {
|
|
11
|
+
let { managedACTAccessRequirement: _, onHide: v, onBackClicked: y, onCreateDuc: b } = g, { data: x, isLoading: S } = e(String(_.id), {
|
|
12
|
+
staleTime: Infinity,
|
|
13
|
+
throwOnError: !0
|
|
14
|
+
}), C = x?.accessorChanges ?? [], w = x?.principalInvestigator, T = x?.signingOfficial;
|
|
15
|
+
return /* @__PURE__ */ h(p, { children: [
|
|
16
|
+
/* @__PURE__ */ m(l, { children: /* @__PURE__ */ h(d, {
|
|
17
|
+
direction: "row",
|
|
18
|
+
sx: {
|
|
19
|
+
alignItems: "center",
|
|
20
|
+
gap: "5px"
|
|
21
|
+
},
|
|
22
|
+
children: [
|
|
23
|
+
"Request Access",
|
|
24
|
+
/* @__PURE__ */ m(a, { sx: { flexGrow: 1 } }),
|
|
25
|
+
/* @__PURE__ */ m(u, {
|
|
26
|
+
"aria-label": "Close",
|
|
27
|
+
onClick: v,
|
|
28
|
+
children: /* @__PURE__ */ m(t, {
|
|
29
|
+
icon: "close",
|
|
30
|
+
wrap: !1,
|
|
31
|
+
sx: { color: "grey.700" }
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
]
|
|
35
|
+
}) }),
|
|
36
|
+
/* @__PURE__ */ m(c, { children: /* @__PURE__ */ m(r, {
|
|
37
|
+
managedACTAccessRequirementId: String(_.id),
|
|
38
|
+
children: /* @__PURE__ */ h(a, { children: [
|
|
39
|
+
/* @__PURE__ */ m(f, {
|
|
40
|
+
variant: "headline3",
|
|
41
|
+
sx: { mb: 2 },
|
|
42
|
+
children: "Sign a Data Use Certificate (DUC)"
|
|
43
|
+
}),
|
|
44
|
+
/* @__PURE__ */ m(f, {
|
|
45
|
+
variant: "body1",
|
|
46
|
+
sx: {
|
|
47
|
+
...n,
|
|
48
|
+
mb: 2
|
|
49
|
+
},
|
|
50
|
+
children: "The DUC may be signed electronically."
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ m(f, {
|
|
53
|
+
variant: "body1",
|
|
54
|
+
sx: {
|
|
55
|
+
...n,
|
|
56
|
+
mb: 2
|
|
57
|
+
},
|
|
58
|
+
children: "Please verify the information of each data requester listed in the previous step. Ensure all email addresses are accurate. You can click the BACK button, below, to modify your list of collaborators and Signing Official if necessary."
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ m(f, {
|
|
61
|
+
variant: "body1",
|
|
62
|
+
sx: {
|
|
63
|
+
...n,
|
|
64
|
+
mb: 2
|
|
65
|
+
},
|
|
66
|
+
children: "If any information is incorrect, the request will be rejected."
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ h(f, {
|
|
69
|
+
variant: "body1",
|
|
70
|
+
sx: {
|
|
71
|
+
...n,
|
|
72
|
+
mb: 3
|
|
73
|
+
},
|
|
74
|
+
children: [
|
|
75
|
+
"Click ",
|
|
76
|
+
/* @__PURE__ */ m("strong", { children: "Create a DUC" }),
|
|
77
|
+
" to generate a document and review it before sending it to your collaborators, PI, and Signing Official."
|
|
78
|
+
]
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ m(i, {
|
|
81
|
+
accessorChanges: C,
|
|
82
|
+
principalInvestigator: w,
|
|
83
|
+
signingOfficial: T,
|
|
84
|
+
isLoading: S
|
|
85
|
+
})
|
|
86
|
+
] })
|
|
87
|
+
}) }),
|
|
88
|
+
/* @__PURE__ */ h(s, { children: [
|
|
89
|
+
/* @__PURE__ */ m(o, {
|
|
90
|
+
variant: "outlined",
|
|
91
|
+
onClick: y,
|
|
92
|
+
children: "Back"
|
|
93
|
+
}),
|
|
94
|
+
/* @__PURE__ */ m(a, { sx: { flexGrow: 1 } }),
|
|
95
|
+
/* @__PURE__ */ m(o, {
|
|
96
|
+
variant: "outlined",
|
|
97
|
+
onClick: v,
|
|
98
|
+
children: "Cancel"
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ m(o, {
|
|
101
|
+
variant: "contained",
|
|
102
|
+
disabled: S,
|
|
103
|
+
onClick: b,
|
|
104
|
+
children: "Create a DUC"
|
|
105
|
+
})
|
|
106
|
+
] })
|
|
107
|
+
] });
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
export { g as default };
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=ReviewDucStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewDucStep.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.tsx"],"sourcesContent":["import { useGetDataAccessRequestForUpdate } from '@/synapse-queries'\nimport {\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport { ManagedACTAccessRequirement } from '@sage-bionetworks/synapse-types'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport { ReviewCollaboratorsAndSigningOfficialAccordion } from '../ReviewCollaboratorsAndSigningOfficialAccordion'\nimport { longFieldLabelSx } from '../styles'\n\nexport type ReviewDucStepProps = {\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onHide: () => void\n onBackClicked: () => void\n /**\n * Called when the user clicks \"Create a DUC\". The parent advances to the eDUC preview step\n * (PORTALS-4377), where the generated document is displayed for review before signing.\n */\n onCreateDuc: () => void\n}\n\n/**\n * Wizard step shown after accessors/files (PORTALS-4375) and before the eDUC preview (PORTALS-4377).\n * Lets the user confirm their collaborators, PI, and Signing Official before generating the DUC.\n */\nexport default function ReviewDucStep(props: ReviewDucStepProps) {\n const { managedACTAccessRequirement, onHide, onBackClicked, onCreateDuc } =\n props\n\n const { data: dataAccessRequest, isLoading } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n staleTime: Infinity,\n throwOnError: true,\n })\n\n const accessorChanges = dataAccessRequest?.accessorChanges ?? []\n const pi = dataAccessRequest?.principalInvestigator\n const so = dataAccessRequest?.signingOfficial\n\n return (\n <>\n <DialogTitle>\n <Stack direction=\"row\" sx={{ alignItems: 'center', gap: '5px' }}>\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton aria-label={'Close'} onClick={onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box>\n <Typography variant={'headline3'} sx={{ mb: 2 }}>\n Sign a Data Use Certificate (DUC)\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 2 }}>\n The DUC may be signed electronically.\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 2 }}>\n Please verify the information of each data requester listed in the\n previous step. Ensure all email addresses are accurate. You can\n click the BACK button, below, to modify your list of collaborators\n and Signing Official if necessary.\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 2 }}>\n If any information is incorrect, the request will be rejected.\n </Typography>\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 3 }}>\n Click <strong>Create a DUC</strong> to generate a document and\n review it before sending it to your collaborators, PI, and Signing\n Official.\n </Typography>\n\n <ReviewCollaboratorsAndSigningOfficialAccordion\n accessorChanges={accessorChanges}\n principalInvestigator={pi}\n signingOfficial={so}\n isLoading={isLoading}\n />\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n </DialogContent>\n <DialogActions>\n <Button variant={'outlined'} onClick={onBackClicked}>\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }} />\n <Button variant={'outlined'} onClick={onHide}>\n Cancel\n </Button>\n <Button\n variant={'contained'}\n disabled={isLoading}\n onClick={onCreateDuc}\n >\n Create a DUC\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAgCA,SAAwB,EAAc,GAA2B;CAC/D,IAAM,EAAE,gCAA6B,WAAQ,kBAAe,mBAC1D,GAEI,EAAE,MAAM,GAAmB,iBAC/B,EAAiC,OAAO,EAA4B,EAAE,GAAG;EACvE,WAAW;EACX,cAAc;CAChB,CAAC,GAEG,IAAkB,GAAmB,mBAAmB,CAAC,GACzD,IAAK,GAAmB,uBACxB,IAAK,GAAmB;CAE9B,OACE,kBAAA,GAAA,EAAA,UAAA;EACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GAAO,WAAU;GAAM,IAAI;IAAE,YAAY;IAAU,KAAK;GAAM;aAA9D;IAAiE;IAE/D,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAI,CAAA;IAC3B,kBAAC,GAAD;KAAY,cAAY;KAAS,SAAS;eACxC,kBAAC,GAAD;MAAS,MAAM;MAAS,MAAM;MAAO,IAAI,EAAE,OAAO,WAAW;KAAI,CAAA;IACvD,CAAA;GACP;KACI,CAAA;EACb,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GACE,+BAA+B,OAAO,EAA4B,EAAE;aAEpE,kBAAC,GAAD,EAAA,UAAA;IACE,kBAAC,GAAD;KAAY,SAAS;KAAa,IAAI,EAAE,IAAI,EAAE;eAAG;IAErC,CAAA;IACZ,kBAAC,GAAD;KAAY,SAAS;KAAS,IAAI;MAAE,GAAG;MAAkB,IAAI;KAAE;eAAG;IAEtD,CAAA;IACZ,kBAAC,GAAD;KAAY,SAAS;KAAS,IAAI;MAAE,GAAG;MAAkB,IAAI;KAAE;eAAG;IAKtD,CAAA;IACZ,kBAAC,GAAD;KAAY,SAAS;KAAS,IAAI;MAAE,GAAG;MAAkB,IAAI;KAAE;eAAG;IAEtD,CAAA;IACZ,kBAAC,GAAD;KAAY,SAAS;KAAS,IAAI;MAAE,GAAG;MAAkB,IAAI;KAAE;eAA/D;MAAkE;MAC1D,kBAAC,UAAD,EAAA,UAAQ,eAAoB,CAAA;MAAC;KAGzB;;IAEZ,kBAAC,GAAD;KACmB;KACjB,uBAAuB;KACvB,iBAAiB;KACN;IACZ,CAAA;GACE,EAAA,CAAA;EACqC,CAAA,EAC/B,CAAA;EACf,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IAAQ,SAAS;IAAY,SAAS;cAAe;GAE7C,CAAA;GACR,kBAAC,GAAD,EAAK,IAAI,EAAE,UAAU,EAAE,EAAI,CAAA;GAC3B,kBAAC,GAAD;IAAQ,SAAS;IAAY,SAAS;cAAQ;GAEtC,CAAA;GACR,kBAAC,GAAD;IACE,SAAS;IACT,UAAU;IACV,SAAS;cACV;GAEO,CAAA;EACK,EAAA,CAAA;CACf,EAAA,CAAA;AAEN"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ManagedACTAccessRequirement, RestrictableObjectType } from '@sage-bionetworks/synapse-types';
|
|
2
|
+
export type SignatureStatusStepProps = {
|
|
3
|
+
managedACTAccessRequirement: ManagedACTAccessRequirement;
|
|
4
|
+
subjectId: string;
|
|
5
|
+
subjectType: RestrictableObjectType;
|
|
6
|
+
onHide: () => void;
|
|
7
|
+
onBackClicked: () => void;
|
|
8
|
+
onSubmissionCreated: (submissionId: string) => void;
|
|
9
|
+
/**
|
|
10
|
+
* Optional href override for the "View DUC" link. When set, the preview file handle fetch
|
|
11
|
+
* is skipped and this URL is used directly. Used by stories and tests where the portal
|
|
12
|
+
* servlet is not available.
|
|
13
|
+
*/
|
|
14
|
+
viewDucHrefOverride?: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Wizard step shown after the user has routed the eDUC for electronic signature
|
|
18
|
+
* (PORTALS-4380). Polls the DocuSign envelope status, lists the pending signers,
|
|
19
|
+
* and enables submission once every signer has signed.
|
|
20
|
+
*/
|
|
21
|
+
export default function SignatureStatusStep(props: SignatureStatusStepProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=SignatureStatusStep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureStatusStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx"],"names":[],"mappings":"AA8BA,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AAKxC,MAAM,MAAM,wBAAwB,GAAG;IACrC,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,sBAAsB,CAAA;IACnC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,mBAAmB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CA6O1E"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { PRODUCTION_ENDPOINT_CONFIG as e } from "../../../../utils/functions/getEndpoint.js";
|
|
2
|
+
import t from "../../../../synapse-client/index.js";
|
|
3
|
+
import { useSubmitDataAccessRequest as n } from "../../../../synapse-queries/dataaccess/useDataAccessSubmission.js";
|
|
4
|
+
import { useGetDataAccessRequestForUpdate as r, useUpdateDataAccessRequest as i } from "../../../../synapse-queries/dataaccess/useAccessRequirements.js";
|
|
5
|
+
import { useGetDataAccessRequestPreview as a, useGetDataAccessRequestSignatureStatus as o, useGetDataAccessRequestSignedFileHandleId as s } from "../../../../synapse-queries/dataaccess/useEDuc.js";
|
|
6
|
+
import "../../../../synapse-queries/index.js";
|
|
7
|
+
import c from "../../../IconSvg/IconSvg.js";
|
|
8
|
+
import { longFieldLabelSx as ee } from "../styles.js";
|
|
9
|
+
import { useState as l } from "react";
|
|
10
|
+
import { Alert as u, Box as d, Button as f, DialogActions as p, DialogContent as m, DialogTitle as h, IconButton as g, Link as _, Skeleton as v, Stack as y, Typography as b } from "@mui/material";
|
|
11
|
+
import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
12
|
+
import { CheckCircleOutline as w, HourglassEmpty as T, OpenInNew as E, Refresh as D } from "@mui/icons-material";
|
|
13
|
+
//#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx
|
|
14
|
+
function O(e) {
|
|
15
|
+
let { managedACTAccessRequirement: O, subjectId: A, subjectType: j, onHide: te, onBackClicked: ne, onSubmissionCreated: re, viewDucHrefOverride: M } = e, { data: N, isLoading: P } = r(String(O.id), {
|
|
16
|
+
staleTime: Infinity,
|
|
17
|
+
throwOnError: !0
|
|
18
|
+
}), F = N?.id ?? "", { data: I, isLoading: L, isRefetching: R, error: z, refetch: B } = o(F, { enabled: !!F }), V = I?.signerStatus ?? [], H = V.filter((e) => e.status === "done").length, U = V.length, W = U > 0 && H === U, G = V.filter((e) => e.status !== "done"), { data: K } = a(F, { enabled: !!F && !M }), q = M ?? (K?.fileHandleId ? t.getPortalFileHandleServletUrl(K.fileHandleId) : void 0), { data: J } = s(F, { enabled: !!F && W }), [Y, X] = l(), [Z, Q] = l(), { mutateAsync: ie, isPending: ae } = i({ onError: (e) => X(e.reason) }), { mutate: oe, isPending: $ } = n({
|
|
19
|
+
onSuccess: (e) => re(e.submissionId),
|
|
20
|
+
onError: (e) => Q(e.reason)
|
|
21
|
+
}), se = P || L || R || !N || !W || !J?.fileHandleId || ae || $, ce = async () => {
|
|
22
|
+
if (!N || !J?.fileHandleId) return;
|
|
23
|
+
X(void 0), Q(void 0);
|
|
24
|
+
let e = await ie({
|
|
25
|
+
...N,
|
|
26
|
+
ducFileHandleId: J.fileHandleId
|
|
27
|
+
}).catch(() => null);
|
|
28
|
+
e && oe({
|
|
29
|
+
request: {
|
|
30
|
+
requestId: e.id,
|
|
31
|
+
requestEtag: e.etag,
|
|
32
|
+
subjectId: A,
|
|
33
|
+
subjectType: j
|
|
34
|
+
},
|
|
35
|
+
accessRequirementId: String(O.id)
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ C(x, { children: [
|
|
39
|
+
/* @__PURE__ */ S(h, { children: /* @__PURE__ */ C(y, {
|
|
40
|
+
direction: "row",
|
|
41
|
+
sx: {
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
gap: "5px"
|
|
44
|
+
},
|
|
45
|
+
children: [
|
|
46
|
+
"Request Access",
|
|
47
|
+
/* @__PURE__ */ S(d, { sx: { flexGrow: 1 } }),
|
|
48
|
+
/* @__PURE__ */ S(g, {
|
|
49
|
+
"aria-label": "Close",
|
|
50
|
+
onClick: te,
|
|
51
|
+
children: /* @__PURE__ */ S(c, {
|
|
52
|
+
icon: "close",
|
|
53
|
+
wrap: !1,
|
|
54
|
+
sx: { color: "grey.700" }
|
|
55
|
+
})
|
|
56
|
+
})
|
|
57
|
+
]
|
|
58
|
+
}) }),
|
|
59
|
+
/* @__PURE__ */ C(m, { children: [
|
|
60
|
+
/* @__PURE__ */ S(b, {
|
|
61
|
+
variant: "headline3",
|
|
62
|
+
sx: { mb: 2 },
|
|
63
|
+
children: "Sign a Data Use Certificate (DUC)"
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ S(b, {
|
|
66
|
+
variant: "body1",
|
|
67
|
+
sx: {
|
|
68
|
+
...ee,
|
|
69
|
+
mb: 2
|
|
70
|
+
},
|
|
71
|
+
children: "Your DUC has been emailed to your Collaborators. Once all signatures (including the Signing Official) have been collected, you can submit the Data Access Request."
|
|
72
|
+
}),
|
|
73
|
+
L && /* @__PURE__ */ S(v, {
|
|
74
|
+
variant: "rectangular",
|
|
75
|
+
width: "100%",
|
|
76
|
+
height: 120,
|
|
77
|
+
"data-testid": "SignatureStatusStep-loading"
|
|
78
|
+
}),
|
|
79
|
+
z && /* @__PURE__ */ C(u, {
|
|
80
|
+
severity: "error",
|
|
81
|
+
children: [
|
|
82
|
+
/* @__PURE__ */ S("strong", { children: "Sorry, we couldn't load the current signature status." }),
|
|
83
|
+
/* @__PURE__ */ S("br", {}),
|
|
84
|
+
z.reason
|
|
85
|
+
]
|
|
86
|
+
}),
|
|
87
|
+
!L && !z && I && /* @__PURE__ */ C(x, { children: [
|
|
88
|
+
/* @__PURE__ */ C(y, {
|
|
89
|
+
direction: "row",
|
|
90
|
+
sx: {
|
|
91
|
+
alignItems: "center",
|
|
92
|
+
gap: 1,
|
|
93
|
+
mb: 1
|
|
94
|
+
},
|
|
95
|
+
children: [
|
|
96
|
+
W ? /* @__PURE__ */ S(w, { color: "success" }) : /* @__PURE__ */ S(T, { sx: { color: "grey.700" } }),
|
|
97
|
+
/* @__PURE__ */ S(b, {
|
|
98
|
+
variant: "body1",
|
|
99
|
+
sx: { fontWeight: 700 },
|
|
100
|
+
children: W ? "All signatures collected." : `${H} out of ${U} signatures collected.`
|
|
101
|
+
}),
|
|
102
|
+
/* @__PURE__ */ S(d, { sx: { flexGrow: 1 } }),
|
|
103
|
+
q && /* @__PURE__ */ C(_, {
|
|
104
|
+
href: q,
|
|
105
|
+
target: "_blank",
|
|
106
|
+
rel: "noopener",
|
|
107
|
+
sx: {
|
|
108
|
+
display: "inline-flex",
|
|
109
|
+
alignItems: "center",
|
|
110
|
+
gap: .5
|
|
111
|
+
},
|
|
112
|
+
children: ["View DUC", /* @__PURE__ */ S(E, { fontSize: "small" })]
|
|
113
|
+
})
|
|
114
|
+
]
|
|
115
|
+
}),
|
|
116
|
+
G.length > 0 && /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(b, {
|
|
117
|
+
variant: "body1",
|
|
118
|
+
sx: { mb: 1 },
|
|
119
|
+
children: "You're still waiting for signatures from"
|
|
120
|
+
}), /* @__PURE__ */ S(d, {
|
|
121
|
+
component: "ul",
|
|
122
|
+
sx: {
|
|
123
|
+
mt: 0,
|
|
124
|
+
mb: 2,
|
|
125
|
+
pl: 3
|
|
126
|
+
},
|
|
127
|
+
children: G.map((e, t) => /* @__PURE__ */ S("li", { children: /* @__PURE__ */ S(k, { signer: e }) }, e.userId ?? `${e.name}-${t}`))
|
|
128
|
+
})] }),
|
|
129
|
+
/* @__PURE__ */ S(f, {
|
|
130
|
+
variant: "outlined",
|
|
131
|
+
startIcon: /* @__PURE__ */ S(D, {}),
|
|
132
|
+
loading: R,
|
|
133
|
+
onClick: () => {
|
|
134
|
+
B();
|
|
135
|
+
},
|
|
136
|
+
children: "Refresh"
|
|
137
|
+
})
|
|
138
|
+
] }),
|
|
139
|
+
Y && /* @__PURE__ */ C(u, {
|
|
140
|
+
severity: "error",
|
|
141
|
+
sx: { mt: 2 },
|
|
142
|
+
children: [
|
|
143
|
+
/* @__PURE__ */ S("strong", { children: "Sorry, we couldn't save your change." }),
|
|
144
|
+
/* @__PURE__ */ S("br", {}),
|
|
145
|
+
Y
|
|
146
|
+
]
|
|
147
|
+
}),
|
|
148
|
+
Z && /* @__PURE__ */ C(u, {
|
|
149
|
+
severity: "error",
|
|
150
|
+
sx: { mt: 2 },
|
|
151
|
+
children: [
|
|
152
|
+
/* @__PURE__ */ S("strong", { children: "Sorry, we couldn't submit your request." }),
|
|
153
|
+
/* @__PURE__ */ S("br", {}),
|
|
154
|
+
Z
|
|
155
|
+
]
|
|
156
|
+
})
|
|
157
|
+
] }),
|
|
158
|
+
/* @__PURE__ */ C(p, { children: [
|
|
159
|
+
/* @__PURE__ */ S(f, {
|
|
160
|
+
variant: "outlined",
|
|
161
|
+
onClick: ne,
|
|
162
|
+
children: "Back"
|
|
163
|
+
}),
|
|
164
|
+
/* @__PURE__ */ S(d, { sx: { flexGrow: 1 } }),
|
|
165
|
+
/* @__PURE__ */ S(f, {
|
|
166
|
+
variant: "contained",
|
|
167
|
+
disabled: se,
|
|
168
|
+
loading: $,
|
|
169
|
+
onClick: () => {
|
|
170
|
+
ce();
|
|
171
|
+
},
|
|
172
|
+
children: "Submit"
|
|
173
|
+
})
|
|
174
|
+
] })
|
|
175
|
+
] });
|
|
176
|
+
}
|
|
177
|
+
function k(t) {
|
|
178
|
+
let { signer: n } = t, r = n.name ?? "Unnamed signer";
|
|
179
|
+
return /* @__PURE__ */ C(b, {
|
|
180
|
+
variant: "body1",
|
|
181
|
+
component: "span",
|
|
182
|
+
children: [n.userId ? /* @__PURE__ */ S(_, {
|
|
183
|
+
href: `${e.PORTAL}Profile:${n.userId}`,
|
|
184
|
+
target: "_blank",
|
|
185
|
+
rel: "noopener",
|
|
186
|
+
children: r
|
|
187
|
+
}) : /* @__PURE__ */ S(x, { children: r }), n.status && n.status !== "pending" && n.status !== "done" ? ` (${n.status})` : ""]
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
//#endregion
|
|
191
|
+
export { O as default };
|
|
192
|
+
|
|
193
|
+
//# sourceMappingURL=SignatureStatusStep.js.map
|