synapse-react-client 4.0.41 → 4.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts +7 -0
  3. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts.map +1 -0
  4. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +30 -0
  5. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -0
  6. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +138 -244
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts +13 -0
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts.map +1 -0
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js +60 -0
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js.map +1 -0
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +8 -2
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +179 -63
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts +2 -0
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts.map +1 -1
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +13 -13
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts +3 -2
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts.map +1 -1
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +3 -2
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts +12 -0
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts.map +1 -0
  29. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js +50 -0
  30. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js.map +1 -0
  31. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  32. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +112 -143
  33. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  34. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +4 -2
  35. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -1
  36. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +8 -7
  37. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -1
  38. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +3 -2
  39. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  40. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +79 -47
  41. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  42. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts +12 -0
  43. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts.map +1 -0
  44. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js +51 -0
  45. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js.map +1 -0
  46. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts +12 -0
  47. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts.map +1 -0
  48. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js +24 -0
  49. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js.map +1 -0
  50. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +11 -0
  51. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -0
  52. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.js +0 -0
  53. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts +22 -0
  54. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts.map +1 -0
  55. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js +32 -0
  56. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js.map +1 -0
  57. package/dist/components/AclEditor/AclEditor.js +20 -20
  58. package/dist/components/Authentication/TwoFactorBackupCodes.js +1 -1
  59. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  60. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  61. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +79 -69
  62. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  63. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  64. package/dist/components/DataGrid/SynapseGrid.js +244 -246
  65. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  66. package/dist/components/DataGrid/components/GridLoadingState.d.ts +23 -0
  67. package/dist/components/DataGrid/components/GridLoadingState.d.ts.map +1 -0
  68. package/dist/components/DataGrid/components/GridLoadingState.js +64 -0
  69. package/dist/components/DataGrid/components/GridLoadingState.js.map +1 -0
  70. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  71. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +30 -29
  72. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  73. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +60 -6
  74. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  75. package/dist/components/DataGrid/useDataGridWebsocket.js +71 -60
  76. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  77. package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts +11 -0
  78. package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts.map +1 -0
  79. package/dist/components/DataGrid/utils/getNamedColumnIndices.js +8 -0
  80. package/dist/components/DataGrid/utils/getNamedColumnIndices.js.map +1 -0
  81. package/dist/components/FilePreview/FileHandleContentRenderer.d.ts +6 -2
  82. package/dist/components/FilePreview/FileHandleContentRenderer.d.ts.map +1 -1
  83. package/dist/components/FilePreview/FileHandleContentRenderer.js +27 -14
  84. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  85. package/dist/components/FilePreview/PdfPreview.d.ts +1 -1
  86. package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
  87. package/dist/components/FilePreview/PdfPreview.js +15 -16
  88. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  89. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  90. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +71 -68
  91. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  92. package/dist/components/FormTemplateEditor/FieldLibrary.css +1 -0
  93. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts +17 -0
  94. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -0
  95. package/dist/components/FormTemplateEditor/FieldLibrary.js +88 -0
  96. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -0
  97. package/dist/components/FormTemplateEditor/FieldLibrary.module.js +5 -0
  98. package/dist/components/FormTemplateEditor/FieldLibrary.module.js.map +1 -0
  99. package/dist/components/FormTemplateEditor/FieldLibrary.module.scss +12 -0
  100. package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts +19 -0
  101. package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts.map +1 -0
  102. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +115 -0
  103. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -0
  104. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.css +1 -0
  105. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts +9 -0
  106. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts.map +1 -0
  107. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js +18 -0
  108. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js.map +1 -0
  109. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js +5 -0
  110. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js.map +1 -0
  111. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.scss +4 -0
  112. package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts +21 -0
  113. package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts.map +1 -0
  114. package/dist/components/FormTemplateEditor/FormStructurePanel.js +108 -0
  115. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -0
  116. package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts +10 -0
  117. package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts.map +1 -0
  118. package/dist/components/FormTemplateEditor/FormTemplateEditor.js +31 -0
  119. package/dist/components/FormTemplateEditor/FormTemplateEditor.js.map +1 -0
  120. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts +15 -0
  121. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts.map +1 -0
  122. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +234 -0
  123. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -0
  124. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -1
  125. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +1 -12
  126. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -1
  127. package/dist/components/FormTemplateEditor/StepCard.d.ts +25 -0
  128. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -0
  129. package/dist/components/FormTemplateEditor/StepCard.js +203 -0
  130. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -0
  131. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts +34 -0
  132. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -0
  133. package/dist/components/FormTemplateEditor/StepFieldRow.js +128 -0
  134. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -0
  135. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts +19 -0
  136. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -0
  137. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +78 -0
  138. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -0
  139. package/dist/components/FormTemplateEditor/dragHandle.css +1 -0
  140. package/dist/components/FormTemplateEditor/dragHandle.module.js +8 -0
  141. package/dist/components/FormTemplateEditor/dragHandle.module.js.map +1 -0
  142. package/dist/components/FormTemplateEditor/dragHandle.module.scss +22 -0
  143. package/dist/components/FormTemplateEditor/dropTarget.css +1 -0
  144. package/dist/components/FormTemplateEditor/dropTarget.module.js +5 -0
  145. package/dist/components/FormTemplateEditor/dropTarget.module.js.map +1 -0
  146. package/dist/components/FormTemplateEditor/dropTarget.module.scss +14 -0
  147. package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts +48 -0
  148. package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts.map +1 -0
  149. package/dist/components/FormTemplateEditor/formTemplateDraftState.js +126 -0
  150. package/dist/components/FormTemplateEditor/formTemplateDraftState.js.map +1 -0
  151. package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts +35 -0
  152. package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts.map +1 -0
  153. package/dist/components/FormTemplateEditor/formTemplateSchema.js +35 -0
  154. package/dist/components/FormTemplateEditor/formTemplateSchema.js.map +1 -0
  155. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +3 -1
  156. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -1
  157. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +26 -8
  158. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  159. package/dist/components/FormTemplateEditor/sortableIds.d.ts +23 -0
  160. package/dist/components/FormTemplateEditor/sortableIds.d.ts.map +1 -0
  161. package/dist/components/FormTemplateEditor/sortableIds.js +24 -0
  162. package/dist/components/FormTemplateEditor/sortableIds.js.map +1 -0
  163. package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts +33 -0
  164. package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts.map +1 -0
  165. package/dist/components/FormTemplateEditor/useFormTemplateDraft.js +59 -0
  166. package/dist/components/FormTemplateEditor/useFormTemplateDraft.js.map +1 -0
  167. package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts +9 -0
  168. package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts.map +1 -0
  169. package/dist/components/FormTemplateEditor/useFormTemplateDrag.js +66 -0
  170. package/dist/components/FormTemplateEditor/useFormTemplateDrag.js.map +1 -0
  171. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -1
  172. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +34 -19
  173. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
  174. package/dist/components/FormTemplateEditor/utils.d.ts +2 -2
  175. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -1
  176. package/dist/components/FormTemplateEditor/utils.js +7 -10
  177. package/dist/components/FormTemplateEditor/utils.js.map +1 -1
  178. package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts +11 -0
  179. package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts.map +1 -1
  180. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js +28 -19
  181. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  182. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +1 -0
  183. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  184. package/dist/components/QueryBuilder/FilterConditionRow.js +102 -105
  185. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  186. package/dist/components/QueryBuilder/FilterGroupNode.js +6 -6
  187. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  188. package/dist/components/QueryBuilder/QueryBuilderControls.js +88 -81
  189. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  190. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +7 -0
  191. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  192. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  193. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +2 -1
  194. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -1
  195. package/dist/components/QueryBuilder/qbTreeToReadable.js +24 -20
  196. package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -1
  197. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -1
  198. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +2 -2
  199. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -1
  200. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +1 -1
  201. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +16 -0
  202. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  203. package/dist/components/QueryBuilder/queryBuilderMetadata.js +13 -5
  204. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  205. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts +18 -0
  206. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -0
  207. package/dist/components/QueryBuilder/useQBValueDisplayName.js +64 -0
  208. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -0
  209. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +6 -6
  210. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts +1 -0
  211. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts.map +1 -1
  212. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +13 -11
  213. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  214. package/dist/components/SynapseTable/SearchV2.js +4 -4
  215. package/dist/components/ToastMessage/ToastMessage.d.ts.map +1 -1
  216. package/dist/components/ToastMessage/ToastMessage.js +25 -22
  217. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  218. package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts +7 -0
  219. package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts.map +1 -0
  220. package/dist/components/dataaccess/FormTemplateEditorRoute.js +26 -0
  221. package/dist/components/dataaccess/FormTemplateEditorRoute.js.map +1 -0
  222. package/dist/components/dataaccess/FormTemplateTable.d.ts +10 -0
  223. package/dist/components/dataaccess/FormTemplateTable.d.ts.map +1 -0
  224. package/dist/components/dataaccess/FormTemplateTable.js +124 -0
  225. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -0
  226. package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
  227. package/dist/components/dataaccess/ReviewerDashboard.js +80 -50
  228. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  229. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  230. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -0
  231. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  232. package/dist/components/widgets/FileHandleLink.d.ts +12 -2
  233. package/dist/components/widgets/FileHandleLink.d.ts.map +1 -1
  234. package/dist/components/widgets/FileHandleLink.js +25 -29
  235. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  236. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -0
  237. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
  238. package/dist/mocks/accessRequirement/mockFormTemplates.js +8 -2
  239. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
  240. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
  241. package/dist/mocks/accessRequirement/mockJsonSchemas.js +17 -31
  242. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
  243. package/dist/mocks/msw/handlers/authHandlers.d.ts +1 -0
  244. package/dist/mocks/msw/handlers/authHandlers.d.ts.map +1 -1
  245. package/dist/mocks/msw/handlers/authHandlers.js +6 -2
  246. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  247. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts +2 -0
  248. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  249. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +52 -46
  250. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  251. package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
  252. package/dist/mocks/msw/handlers/fileHandlers.js +25 -21
  253. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  254. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +2 -1
  255. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -1
  256. package/dist/mocks/msw/handlers/formTemplateHandlers.js +18 -18
  257. package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -1
  258. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +8 -0
  259. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  260. package/dist/mocks/msw/handlers/schemaHandlers.js +20 -3
  261. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  262. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts +8 -0
  263. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts.map +1 -0
  264. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js +19 -0
  265. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js.map +1 -0
  266. package/dist/style/abstracts/_cssVariables.scss +13 -0
  267. package/dist/style/components/_toasts.scss +10 -1
  268. package/dist/style/main.css +1 -1
  269. package/dist/synapse-queries/KeyFactory.d.ts +8 -1
  270. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  271. package/dist/synapse-queries/KeyFactory.js +17 -4
  272. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  273. package/dist/synapse-queries/auth/index.d.ts +1 -0
  274. package/dist/synapse-queries/auth/index.d.ts.map +1 -1
  275. package/dist/synapse-queries/auth/index.js +2 -1
  276. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts +11 -0
  277. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts.map +1 -0
  278. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +19 -0
  279. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -0
  280. package/dist/synapse-queries/dataaccess/index.js +5 -5
  281. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +18 -0
  282. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  283. package/dist/synapse-queries/dataaccess/useEDuc.js +33 -1
  284. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  285. package/dist/synapse-queries/file/useDirectUploadToS3.js +6 -6
  286. package/dist/synapse-queries/file/useFileHandle.d.ts +8 -0
  287. package/dist/synapse-queries/file/useFileHandle.d.ts.map +1 -1
  288. package/dist/synapse-queries/file/useFileHandle.js +15 -6
  289. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  290. package/dist/synapse-queries/index.js +260 -253
  291. package/dist/synapse-queries/jsonschema/index.js +2 -2
  292. package/dist/synapse-queries/jsonschema/useSchema.d.ts +5 -0
  293. package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -1
  294. package/dist/synapse-queries/jsonschema/useSchema.js +9 -1
  295. package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -1
  296. package/dist/tsconfig.build.tsbuildinfo +1 -1
  297. package/dist/utils/APIConstants.d.ts +1 -0
  298. package/dist/utils/APIConstants.d.ts.map +1 -1
  299. package/dist/utils/APIConstants.js +2 -2
  300. package/dist/utils/APIConstants.js.map +1 -1
  301. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  302. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  303. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  304. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  305. package/dist/utils/functions/toPascalCase.d.ts +6 -0
  306. package/dist/utils/functions/toPascalCase.d.ts.map +1 -0
  307. package/dist/utils/functions/toPascalCase.js +8 -0
  308. package/dist/utils/functions/toPascalCase.js.map +1 -0
  309. package/dist/utils/jsonschema/submissionContext.d.ts +5 -0
  310. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -1
  311. package/dist/utils/jsonschema/submissionContext.js +22 -30
  312. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  313. package/package.json +10 -9
@@ -1,81 +1,107 @@
1
1
  import { SynapseErrorBoundary as e } from "../error/ErrorBanner.js";
2
2
  import { SynapseSpinner as t } from "../LoadingScreen/LoadingScreen.js";
3
- import { useGetCurrentUserBundle as n } from "../../synapse-queries/user/useUserBundle.js";
4
- import r from "../IconSvg/IconSvg.js";
5
- import i from "../OrientationBanner/index.js";
6
- import { UserHistoryDashboard as a } from "./AccessHistoryDashboard.js";
7
- import { AccessRequirementDashboard as o } from "./AccessRequirementDashboard.js";
8
- import { DataAccessSubmissionDashboard as s } from "./AccessSubmissionDashboard.js";
9
- import { EDucTemplateTable as c } from "./EDucTemplateTable.js";
10
- import l from "./SubmissionPage/SubmissionPage.js";
11
- import { useMemo as u } from "react";
12
- import { Typography as d } from "@mui/material";
13
- import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
14
- import { NavLink as h, Navigate as g, Outlet as _, RouterProvider as v, createBrowserRouter as y, createMemoryRouter as b, useParams as x } from "react-router";
15
- import { RouterProvider as S } from "react-router/dom";
3
+ import { useGetFeatureFlag as n } from "../../synapse-queries/featureflags/useGetFeatureFlag.js";
4
+ import { useGetCurrentUserBundle as r } from "../../synapse-queries/user/useUserBundle.js";
5
+ import i from "../IconSvg/IconSvg.js";
6
+ import a from "../OrientationBanner/index.js";
7
+ import { FeatureFlagEnum as o } from "../../utils/featureflag/FeatureFlags.js";
8
+ import { UserHistoryDashboard as s } from "./AccessHistoryDashboard.js";
9
+ import { AccessRequirementDashboard as c } from "./AccessRequirementDashboard.js";
10
+ import { DataAccessSubmissionDashboard as l } from "./AccessSubmissionDashboard.js";
11
+ import { EDucTemplateTable as u } from "./EDucTemplateTable.js";
12
+ import { FORM_TEMPLATES_PATH as d, FORM_TEMPLATES_ROUTE as f, FORM_TEMPLATE_ROUTE as p, FormTemplateTable as m, NEW_FORM_TEMPLATE_ROUTE as h } from "./FormTemplateTable.js";
13
+ import { FormTemplateEditorRoute as g } from "./FormTemplateEditorRoute.js";
14
+ import _ from "./SubmissionPage/SubmissionPage.js";
15
+ import { useMemo as v } from "react";
16
+ import { Box as y, Typography as b } from "@mui/material";
17
+ import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
18
+ import { DynamicFormOutlined as w } from "@mui/icons-material";
19
+ import { NavLink as T, Navigate as E, Outlet as D, RouterProvider as O, createBrowserRouter as k, createMemoryRouter as A, useParams as j } from "react-router";
20
+ import { RouterProvider as M } from "react-router/dom";
16
21
  //#region src/components/dataaccess/ReviewerDashboard.tsx
17
- function C(e) {
18
- let { href: t, children: n, icon: i } = e;
19
- return /* @__PURE__ */ m(h, {
22
+ function N(e) {
23
+ let { href: t, children: n, icon: r } = e;
24
+ return /* @__PURE__ */ C(T, {
20
25
  className: "Tab",
21
26
  role: "tab",
22
27
  to: t,
23
- children: [/* @__PURE__ */ p(r, {
24
- icon: i,
25
- sx: { paddingRight: "0.2rem" }
26
- }), /* @__PURE__ */ p(d, {
28
+ children: [/* @__PURE__ */ S(y, {
29
+ component: "span",
30
+ sx: {
31
+ display: "inline-flex",
32
+ paddingRight: "0.2rem"
33
+ },
34
+ children: r
35
+ }), /* @__PURE__ */ S(b, {
27
36
  variant: "buttonLink",
28
37
  children: n
29
38
  })]
30
39
  });
31
40
  }
32
- function w(r) {
33
- let { routerBaseName: l = "/DataAccessManagement:default", useMemoryRouter: d = !1 } = r, { data: h, isLoading: g } = n(), x = h?.isACTMember, w = h?.isACTMember || h?.isARReviewer, E = u(() => [{
41
+ function P(_) {
42
+ let { routerBaseName: y = "/DataAccessManagement:default", useMemoryRouter: b = !1 } = _, { data: T, isLoading: E } = r(), j = T?.isACTMember, P = T?.isACTMember || T?.isARReviewer, I = n(o.ACT_DASHBOARD_FORM_TEMPLATES), L = j && I, R = v(() => [{
34
43
  path: "/",
35
- element: /* @__PURE__ */ m("div", {
44
+ element: /* @__PURE__ */ C("div", {
36
45
  className: "ReviewerDashboard",
37
- children: [/* @__PURE__ */ m("div", {
46
+ children: [/* @__PURE__ */ C("div", {
38
47
  className: "Tabs",
39
48
  role: "tablist",
40
49
  children: [
41
- x && /* @__PURE__ */ p(C, {
50
+ j && /* @__PURE__ */ S(N, {
42
51
  href: "/AccessRequirements",
43
- icon: "accessClosed",
52
+ icon: /* @__PURE__ */ S(i, { icon: "accessClosed" }),
44
53
  children: "Access Requirements"
45
54
  }),
46
- x && /* @__PURE__ */ p(C, {
55
+ j && /* @__PURE__ */ S(N, {
47
56
  href: "/EDucTemplates",
48
- icon: "fileOutlined",
57
+ icon: /* @__PURE__ */ S(i, { icon: "fileOutlined" }),
49
58
  children: "eDUC Templates"
50
59
  }),
51
- w && /* @__PURE__ */ p(C, {
60
+ L && /* @__PURE__ */ S(N, {
61
+ href: d,
62
+ icon: /* @__PURE__ */ S(w, {}),
63
+ children: "Form Templates"
64
+ }),
65
+ P && /* @__PURE__ */ S(N, {
52
66
  href: "/Submissions",
53
- icon: "discussion",
67
+ icon: /* @__PURE__ */ S(i, { icon: "discussion" }),
54
68
  children: "Submissions"
55
69
  }),
56
- w && /* @__PURE__ */ p(C, {
70
+ P && /* @__PURE__ */ S(N, {
57
71
  href: "/UserAccessHistory",
58
- icon: "history",
72
+ icon: /* @__PURE__ */ S(i, { icon: "history" }),
59
73
  children: "User Access History"
60
74
  })
61
75
  ]
62
- }), /* @__PURE__ */ p("div", {
76
+ }), /* @__PURE__ */ S("div", {
63
77
  className: "TabContentContainer",
64
- children: /* @__PURE__ */ p(e, { children: /* @__PURE__ */ p(_, {}) })
78
+ children: /* @__PURE__ */ S(e, { children: /* @__PURE__ */ S(D, {}) })
65
79
  })]
66
80
  }),
67
81
  children: [
68
82
  {
69
83
  path: "AccessRequirements",
70
- element: x ? /* @__PURE__ */ p(o, {}) : null
84
+ element: j ? /* @__PURE__ */ S(c, {}) : null
71
85
  },
72
86
  {
73
87
  path: "EDucTemplates",
74
- element: x ? /* @__PURE__ */ p(c, {}) : null
88
+ element: j ? /* @__PURE__ */ S(u, {}) : null
89
+ },
90
+ {
91
+ path: f,
92
+ element: L ? /* @__PURE__ */ S(m, {}) : null
93
+ },
94
+ {
95
+ path: h,
96
+ element: L ? /* @__PURE__ */ S(g, {}) : null
97
+ },
98
+ {
99
+ path: p,
100
+ element: L ? /* @__PURE__ */ S(g, {}) : null
75
101
  },
76
102
  {
77
103
  path: "Submissions",
78
- element: w ? /* @__PURE__ */ m(f, { children: [!x && /* @__PURE__ */ p(i, {
104
+ element: P ? /* @__PURE__ */ C(x, { children: [!j && /* @__PURE__ */ S(a, {
79
105
  name: "DataAccessManagement",
80
106
  title: "Getting Started With Data Access Management",
81
107
  text: "When someone requests access to data, that request will show up here. Clicking on the Request ID will take you to a page where you can review the request.",
@@ -83,32 +109,36 @@ function w(r) {
83
109
  margin: "-20px -30px 20px -30px",
84
110
  width: "auto"
85
111
  }
86
- }), /* @__PURE__ */ p(s, {})] }) : null
112
+ }), /* @__PURE__ */ S(l, {})] }) : null
87
113
  },
88
114
  {
89
115
  path: "Submissions/:id",
90
- element: w ? /* @__PURE__ */ p(T, {}) : null
116
+ element: P ? /* @__PURE__ */ S(F, {}) : null
91
117
  },
92
118
  {
93
119
  path: "UserAccessHistory",
94
- element: /* @__PURE__ */ p(a, {})
120
+ element: /* @__PURE__ */ S(s, {})
95
121
  }
96
122
  ]
97
- }], [x, w]), D = u(() => d ? b(E, { basename: l }) : y(E, { basename: l }), [
98
- d,
99
- E,
100
- l
123
+ }], [
124
+ j,
125
+ P,
126
+ L
127
+ ]), z = v(() => b ? A(R, { basename: y }) : k(R, { basename: y }), [
128
+ b,
129
+ R,
130
+ y
101
131
  ]);
102
- return g ? /* @__PURE__ */ p(t, { size: 50 }) : p(d ? v : S, { router: D });
132
+ return E ? /* @__PURE__ */ S(t, { size: 50 }) : S(b ? O : M, { router: z });
103
133
  }
104
- function T() {
105
- let { id: e } = x();
106
- return e ? /* @__PURE__ */ p(l, {
134
+ function F() {
135
+ let { id: e } = j();
136
+ return e ? /* @__PURE__ */ S(_, {
107
137
  submissionId: e,
108
138
  isReviewer: !0
109
- }) : /* @__PURE__ */ p(g, { to: "Submissions/" });
139
+ }) : /* @__PURE__ */ S(E, { to: "Submissions/" });
110
140
  }
111
141
  //#endregion
112
- export { w as ReviewerDashboard, w as default };
142
+ export { P as ReviewerDashboard, P as default };
113
143
 
114
144
  //# sourceMappingURL=ReviewerDashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewerDashboard.js","names":[],"sources":["../../../src/components/dataaccess/ReviewerDashboard.tsx"],"sourcesContent":["import { useGetCurrentUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { Typography } from '@mui/material'\nimport { ReactNode, useMemo } from 'react'\nimport {\n createBrowserRouter,\n createMemoryRouter,\n Navigate,\n NavLink,\n Outlet,\n RouteObject,\n RouterProvider,\n useParams,\n} from 'react-router'\nimport { RouterProvider as DOMRouterProvider } from 'react-router/dom'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport IconSvg, { IconName } from '../IconSvg/IconSvg'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport OrientationBanner from '../OrientationBanner'\nimport { UserHistoryDashboard } from './AccessHistoryDashboard'\nimport { AccessRequirementDashboard } from './AccessRequirementDashboard'\nimport { DataAccessSubmissionDashboard } from './AccessSubmissionDashboard'\nimport { EDucTemplateTable } from './EDucTemplateTable'\nimport SubmissionPage from './SubmissionPage/SubmissionPage'\n\nfunction LinkTab(props: { href: string; children: ReactNode; icon: IconName }) {\n const { href, children, icon } = props\n return (\n <NavLink className=\"Tab\" role=\"tab\" to={href}>\n <IconSvg\n icon={icon}\n sx={{\n paddingRight: '0.2rem',\n }}\n />\n <Typography variant=\"buttonLink\">{children}</Typography>\n </NavLink>\n )\n}\n\ntype ReviewerDashboardProps = {\n /** Used to determine the base path for the component. Default is DataAccessManagement:default */\n routerBaseName?: string\n /** If true use a MemoryRouter, which prevents the browser URL from updating. For demo purposes only. */\n useMemoryRouter?: boolean\n}\n\nexport function ReviewerDashboard(props: ReviewerDashboardProps) {\n const {\n routerBaseName = '/DataAccessManagement:default',\n useMemoryRouter = false,\n } = props\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const hasActPermissions = userBundle?.isACTMember\n const hasReviewerPermissions =\n userBundle?.isACTMember || userBundle?.isARReviewer\n\n const routes: RouteObject[] = useMemo(\n () => [\n {\n path: '/',\n element: (\n <div className=\"ReviewerDashboard\">\n <div className=\"Tabs\" role=\"tablist\">\n {hasActPermissions && (\n <LinkTab href=\"/AccessRequirements\" icon=\"accessClosed\">\n Access Requirements\n </LinkTab>\n )}\n {hasActPermissions && (\n <LinkTab href=\"/EDucTemplates\" icon=\"fileOutlined\">\n eDUC Templates\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab href=\"/Submissions\" icon=\"discussion\">\n Submissions\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab href=\"/UserAccessHistory\" icon=\"history\">\n User Access History\n </LinkTab>\n )}\n </div>\n <div className=\"TabContentContainer\">\n <SynapseErrorBoundary>\n <Outlet />\n </SynapseErrorBoundary>\n </div>\n </div>\n ),\n children: [\n {\n path: 'AccessRequirements',\n element: hasActPermissions ? <AccessRequirementDashboard /> : null,\n },\n {\n path: 'EDucTemplates',\n element: hasActPermissions ? <EDucTemplateTable /> : null,\n },\n {\n path: 'Submissions',\n element: hasReviewerPermissions ? (\n <>\n {!hasActPermissions && (\n <OrientationBanner\n name=\"DataAccessManagement\"\n title=\"Getting Started With Data Access Management\"\n text=\"When someone requests access to data, that request will show up here. Clicking on the Request ID will take you to a page where you can review the request.\"\n sx={{\n margin: '-20px -30px 20px -30px',\n width: 'auto',\n }}\n />\n )}\n <DataAccessSubmissionDashboard />\n </>\n ) : null,\n },\n {\n path: 'Submissions/:id',\n element: hasReviewerPermissions ? (\n <SubmissionPageRouteRenderer />\n ) : null,\n },\n {\n path: 'UserAccessHistory',\n element: <UserHistoryDashboard />,\n },\n ],\n },\n ],\n [hasActPermissions, hasReviewerPermissions],\n )\n\n const router = useMemo(() => {\n if (useMemoryRouter) {\n return createMemoryRouter(routes, {\n basename: routerBaseName,\n })\n } else {\n return createBrowserRouter(routes, {\n basename: routerBaseName,\n })\n }\n }, [useMemoryRouter, routes, routerBaseName])\n\n if (isLoading) {\n return <SynapseSpinner size={50} />\n }\n\n if (useMemoryRouter) {\n return <RouterProvider router={router} />\n }\n\n return <DOMRouterProvider router={router} />\n}\n\nfunction SubmissionPageRouteRenderer() {\n const { id } = useParams<{ id: string }>()\n if (!id) {\n return <Navigate to=\"Submissions/\" />\n }\n return <SubmissionPage submissionId={id} isReviewer={true} />\n}\n\nexport default ReviewerDashboard\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,SAAS,EAAQ,GAA8D;CAC7E,IAAM,EAAE,SAAM,aAAU,YAAS;CACjC,OACE,kBAAC,GAAD;EAAS,WAAU;EAAM,MAAK;EAAM,IAAI;YAAxC,CACE,kBAAC,GAAD;GACQ;GACN,IAAI,EACF,cAAc,SAChB;EACD,CAAA,GACD,kBAAC,GAAD;GAAY,SAAQ;GAAc;EAAqB,CAAA,CAChD;;AAEb;AASA,SAAgB,EAAkB,GAA+B;CAC/D,IAAM,EACJ,oBAAiB,iCACjB,qBAAkB,OAChB,GAEE,EAAE,MAAM,GAAY,iBAAc,EAAwB,GAE1D,IAAoB,GAAY,aAChC,IACJ,GAAY,eAAe,GAAY,cAEnC,IAAwB,QACtB,CACJ;EACE,MAAM;EACN,SACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;IAAO,MAAK;cAA3B;KACG,KACC,kBAAC,GAAD;MAAS,MAAK;MAAsB,MAAK;gBAAe;KAE/C,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAiB,MAAK;gBAAe;KAE1C,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAe,MAAK;gBAAa;KAEtC,CAAA;KAEV,KACC,kBAAC,GAAD;MAAS,MAAK;MAAqB,MAAK;gBAAU;KAEzC,CAAA;IAER;OACL,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,CAAS,CAAA,EACW,CAAA;GACnB,CAAA,CACF;;EAEP,UAAU;GACR;IACE,MAAM;IACN,SAAS,IAAoB,kBAAC,GAAD,CAA6B,CAAA,IAAI;GAChE;GACA;IACE,MAAM;IACN,SAAS,IAAoB,kBAAC,GAAD,CAAoB,CAAA,IAAI;GACvD;GACA;IACE,MAAM;IACN,SAAS,IACP,kBAAA,GAAA,EAAA,UAAA,CACG,CAAC,KACA,kBAAC,GAAD;KACE,MAAK;KACL,OAAM;KACN,MAAK;KACL,IAAI;MACF,QAAQ;MACR,OAAO;KACT;IACD,CAAA,GAEH,kBAAC,GAAD,CAAgC,CAAA,CAChC,EAAA,CAAA,IACA;GACN;GACA;IACE,MAAM;IACN,SAAS,IACP,kBAAC,GAAD,CAA8B,CAAA,IAC5B;GACN;GACA;IACE,MAAM;IACN,SAAS,kBAAC,GAAD,CAAuB,CAAA;GAClC;EACF;CACF,CACF,GACA,CAAC,GAAmB,CAAsB,CAC5C,GAEM,IAAS,QACT,IACK,EAAmB,GAAQ,EAChC,UAAU,EACZ,CAAC,IAEM,EAAoB,GAAQ,EACjC,UAAU,EACZ,CAAC,GAEF;EAAC;EAAiB;EAAQ;CAAc,CAAC;CAU5C,OARI,IACK,kBAAC,GAAD,EAAgB,MAAM,GAAK,CAAA,IAI3B,EADL,IACM,IAGF,GAHC,EAAwB,UAAS,CAAA;AAI5C;AAEA,SAAS,IAA8B;CACrC,IAAM,EAAE,UAAO,EAA0B;CAIzC,OAHK,IAGE,kBAAC,GAAD;EAAgB,cAAc;EAAI,YAAY;CAAO,CAAA,IAFnD,kBAAC,GAAD,EAAU,IAAG,eAAgB,CAAA;AAGxC"}
1
+ {"version":3,"file":"ReviewerDashboard.js","names":[],"sources":["../../../src/components/dataaccess/ReviewerDashboard.tsx"],"sourcesContent":["import { useGetFeatureFlag } from '@/synapse-queries/featureflags/useGetFeatureFlag'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { useGetCurrentUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { DynamicFormOutlined } from '@mui/icons-material'\nimport { Box, Typography } from '@mui/material'\nimport { ReactNode, useMemo } from 'react'\nimport {\n createBrowserRouter,\n createMemoryRouter,\n Navigate,\n NavLink,\n Outlet,\n RouteObject,\n RouterProvider,\n useParams,\n} from 'react-router'\nimport { RouterProvider as DOMRouterProvider } from 'react-router/dom'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport IconSvg from '../IconSvg/IconSvg'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport OrientationBanner from '../OrientationBanner'\nimport { UserHistoryDashboard } from './AccessHistoryDashboard'\nimport { AccessRequirementDashboard } from './AccessRequirementDashboard'\nimport { DataAccessSubmissionDashboard } from './AccessSubmissionDashboard'\nimport { EDucTemplateTable } from './EDucTemplateTable'\nimport { FormTemplateEditorRoute } from './FormTemplateEditorRoute'\nimport {\n FORM_TEMPLATE_ROUTE,\n FORM_TEMPLATES_PATH,\n FORM_TEMPLATES_ROUTE,\n FormTemplateTable,\n NEW_FORM_TEMPLATE_ROUTE,\n} from './FormTemplateTable'\nimport SubmissionPage from './SubmissionPage/SubmissionPage'\n\nfunction LinkTab(props: {\n href: string\n children: ReactNode\n icon: ReactNode\n}) {\n const { href, children, icon } = props\n return (\n <NavLink className=\"Tab\" role=\"tab\" to={href}>\n <Box\n component=\"span\"\n sx={{ display: 'inline-flex', paddingRight: '0.2rem' }}\n >\n {icon}\n </Box>\n <Typography variant=\"buttonLink\">{children}</Typography>\n </NavLink>\n )\n}\n\ntype ReviewerDashboardProps = {\n /** Used to determine the base path for the component. Default is DataAccessManagement:default */\n routerBaseName?: string\n /** If true use a MemoryRouter, which prevents the browser URL from updating. For demo purposes only. */\n useMemoryRouter?: boolean\n}\n\nexport function ReviewerDashboard(props: ReviewerDashboardProps) {\n const {\n routerBaseName = '/DataAccessManagement:default',\n useMemoryRouter = false,\n } = props\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const hasActPermissions = userBundle?.isACTMember\n const hasReviewerPermissions =\n userBundle?.isACTMember || userBundle?.isARReviewer\n const isFormTemplatesFeatureEnabled = useGetFeatureFlag(\n FeatureFlagEnum.ACT_DASHBOARD_FORM_TEMPLATES,\n )\n const showFormTemplates = hasActPermissions && isFormTemplatesFeatureEnabled\n\n const routes: RouteObject[] = useMemo(\n () => [\n {\n path: '/',\n element: (\n <div className=\"ReviewerDashboard\">\n <div className=\"Tabs\" role=\"tablist\">\n {hasActPermissions && (\n <LinkTab\n href=\"/AccessRequirements\"\n icon={<IconSvg icon=\"accessClosed\" />}\n >\n Access Requirements\n </LinkTab>\n )}\n {hasActPermissions && (\n <LinkTab\n href=\"/EDucTemplates\"\n icon={<IconSvg icon=\"fileOutlined\" />}\n >\n eDUC Templates\n </LinkTab>\n )}\n {showFormTemplates && (\n <LinkTab\n href={FORM_TEMPLATES_PATH}\n icon={<DynamicFormOutlined />}\n >\n Form Templates\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab\n href=\"/Submissions\"\n icon={<IconSvg icon=\"discussion\" />}\n >\n Submissions\n </LinkTab>\n )}\n {hasReviewerPermissions && (\n <LinkTab\n href=\"/UserAccessHistory\"\n icon={<IconSvg icon=\"history\" />}\n >\n User Access History\n </LinkTab>\n )}\n </div>\n <div className=\"TabContentContainer\">\n <SynapseErrorBoundary>\n <Outlet />\n </SynapseErrorBoundary>\n </div>\n </div>\n ),\n children: [\n {\n path: 'AccessRequirements',\n element: hasActPermissions ? <AccessRequirementDashboard /> : null,\n },\n {\n path: 'EDucTemplates',\n element: hasActPermissions ? <EDucTemplateTable /> : null,\n },\n {\n path: FORM_TEMPLATES_ROUTE,\n element: showFormTemplates ? <FormTemplateTable /> : null,\n },\n {\n path: NEW_FORM_TEMPLATE_ROUTE,\n element: showFormTemplates ? <FormTemplateEditorRoute /> : null,\n },\n {\n path: FORM_TEMPLATE_ROUTE,\n element: showFormTemplates ? <FormTemplateEditorRoute /> : null,\n },\n {\n path: 'Submissions',\n element: hasReviewerPermissions ? (\n <>\n {!hasActPermissions && (\n <OrientationBanner\n name=\"DataAccessManagement\"\n title=\"Getting Started With Data Access Management\"\n text=\"When someone requests access to data, that request will show up here. Clicking on the Request ID will take you to a page where you can review the request.\"\n sx={{\n margin: '-20px -30px 20px -30px',\n width: 'auto',\n }}\n />\n )}\n <DataAccessSubmissionDashboard />\n </>\n ) : null,\n },\n {\n path: 'Submissions/:id',\n element: hasReviewerPermissions ? (\n <SubmissionPageRouteRenderer />\n ) : null,\n },\n {\n path: 'UserAccessHistory',\n element: <UserHistoryDashboard />,\n },\n ],\n },\n ],\n [hasActPermissions, hasReviewerPermissions, showFormTemplates],\n )\n\n const router = useMemo(() => {\n if (useMemoryRouter) {\n return createMemoryRouter(routes, {\n basename: routerBaseName,\n })\n } else {\n return createBrowserRouter(routes, {\n basename: routerBaseName,\n })\n }\n }, [useMemoryRouter, routes, routerBaseName])\n\n if (isLoading) {\n return <SynapseSpinner size={50} />\n }\n\n if (useMemoryRouter) {\n return <RouterProvider router={router} />\n }\n\n return <DOMRouterProvider router={router} />\n}\n\nfunction SubmissionPageRouteRenderer() {\n const { id } = useParams<{ id: string }>()\n if (!id) {\n return <Navigate to=\"Submissions/\" />\n }\n return <SubmissionPage submissionId={id} isReviewer={true} />\n}\n\nexport default ReviewerDashboard\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InFlightEDucSignaturesTable.d.ts","sourceRoot":"","sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx"],"names":[],"mappings":"AA8IA;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,mDA6J1C"}
1
+ {"version":3,"file":"InFlightEDucSignaturesTable.d.ts","sourceRoot":"","sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx"],"names":[],"mappings":"AAgJA;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,mDA6J1C"}
@@ -17,10 +17,12 @@ import { createColumnHelper as O, getCoreRowModel as k, useReactTable as A } fro
17
17
  var j = [
18
18
  "sent",
19
19
  "delivered",
20
+ "declined",
20
21
  "completed"
21
22
  ], M = {
22
23
  sent: "Signatures pending",
23
24
  delivered: "Signatures pending",
25
+ declined: "Signature declined",
24
26
  completed: "Ready to submit"
25
27
  }, N = (e) => `/${u}/${e}/${l}`, P = O();
26
28
  function F(e) {
@@ -1 +1 @@
1
- {"version":3,"file":"InFlightEDucSignaturesTable.js","names":[],"sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx"],"sourcesContent":["import AccessRequirementList, {\n RequestDataStep,\n} from '@/components/AccessRequirementList/AccessRequirementList'\nimport { SkeletonTable } from '@/components/Skeleton'\nimport ColumnHeader from '@/components/TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '@/components/TanStackTable/StyledTanStackTable'\nimport { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport {\n useListAllUserDataAccessRequests,\n useVoidDataAccessRequestSignature,\n} from '@/synapse-queries'\nimport { useGetAccessRequirements } from '@/synapse-queries/dataaccess/useAccessRequirements'\nimport {\n Alert,\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Link as MuiLink,\n Stack,\n Typography,\n} from '@mui/material'\nimport {\n AccessRequestSummary,\n AccessRequestSummaryStatusEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { ManagedACTAccessRequirement } from '@sage-bionetworks/synapse-types'\nimport {\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { Link as RouterLink } from 'react-router'\nimport {\n USER_ACCESS_HISTORY_REQUEST_SIGNATURE_SUBPATH,\n USER_ACCESS_HISTORY_REQUEST_SUBPATH,\n} from './RouteConstants'\n\nconst IN_FLIGHT_STATUSES: readonly AccessRequestSummaryStatusEnum[] = [\n 'sent',\n 'delivered',\n 'completed',\n] as const\n\nconst STATUS_DISPLAY: Record<string, string> = {\n sent: 'Signatures pending',\n delivered: 'Signatures pending',\n completed: 'Ready to submit',\n}\n\nconst signatureDeepLink = (requestId: string) =>\n `/${USER_ACCESS_HISTORY_REQUEST_SUBPATH}/${requestId}/${USER_ACCESS_HISTORY_REQUEST_SIGNATURE_SUBPATH}`\n\nconst columnHelper = createColumnHelper<AccessRequestSummary>()\n\ntype ActionCallbacks = {\n onModify: (summary: AccessRequestSummary) => void\n onCancel: (summary: AccessRequestSummary) => void\n modifyLoadingArId: string | undefined\n}\n\nfunction buildColumns(actions: ActionCallbacks) {\n return [\n columnHelper.accessor('accessRequirementName', {\n header: props => <ColumnHeader {...props} title={'Request type'} />,\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.display({\n id: 'signatureProgress',\n header: props => <ColumnHeader {...props} title={'Signature progress'} />,\n enableSorting: false,\n cell: ctx => {\n const acquired = ctx.row.original.signaturesAcquired ?? 0\n const requested = ctx.row.original.signaturesRequested ?? 0\n return `${acquired} of ${requested}`\n },\n enableColumnFilter: false,\n size: 150,\n }),\n columnHelper.accessor('status', {\n header: props => <ColumnHeader {...props} title={'Current status'} />,\n enableSorting: false,\n cell: ctx => {\n const status = ctx.getValue()\n return status ? (STATUS_DISPLAY[status] ?? status) : ''\n },\n enableColumnFilter: false,\n size: 150,\n }),\n columnHelper.display({\n id: 'actions',\n header: props => <ColumnHeader {...props} title={'Actions'} />,\n enableSorting: false,\n enableColumnFilter: false,\n cell: ctx => {\n const summary = ctx.row.original\n const requestId = summary.requestId\n if (!requestId) return null\n const isModifyLoading =\n actions.modifyLoadingArId !== undefined &&\n actions.modifyLoadingArId === summary.accessRequirementId\n return (\n <Stack\n direction={'column'}\n sx={{ alignItems: 'flex-start', gap: 0.5 }}\n >\n <MuiLink component={RouterLink} to={signatureDeepLink(requestId)}>\n Review Signatures and Submit\n </MuiLink>\n <MuiLink\n component={'button'}\n type={'button'}\n onClick={() => actions.onModify(summary)}\n disabled={\n !summary.accessRequirementId ||\n actions.modifyLoadingArId !== undefined\n }\n sx={{ textAlign: 'left' }}\n >\n {isModifyLoading ? 'Loading…' : 'Modify Request'}\n </MuiLink>\n <MuiLink\n component={'button'}\n type={'button'}\n onClick={() => actions.onCancel(summary)}\n sx={{ textAlign: 'left' }}\n >\n Cancel Request\n </MuiLink>\n </Stack>\n )\n },\n size: 220,\n }),\n ]\n}\n\n/**\n * Lists the requester's active eDUC signatures (routed / signed but not yet submitted).\n *\n * The underlying query walks every page of `POST /dataAccessRequest/list` inside its `queryFn`,\n * pushing the `isEDuc: true` filter to the server so the walk skips non-eDUC requests. Status is\n * still filtered client-side because the list endpoint has no server-side status filter.\n *\n * Renders nothing when the fully-loaded, filtered list is empty.\n */\nexport function InFlightEDucSignaturesTable() {\n const {\n data: summaries,\n isLoading,\n error,\n } = useListAllUserDataAccessRequests({ isEDuc: true })\n\n const [modifyingArId, setModifyingArId] = useState<string | undefined>()\n const [cancellingSummary, setCancellingSummary] = useState<\n AccessRequestSummary | undefined\n >()\n\n const {\n data: modifyAccessRequirement,\n isFetching: isFetchingModifyAr,\n error: modifyArError,\n } = useGetAccessRequirements<ManagedACTAccessRequirement>(\n modifyingArId ?? '',\n { enabled: Boolean(modifyingArId), staleTime: Infinity },\n )\n\n // Bail out of the Modify flow if the AR fetch fails so the user isn't stuck on a disabled button.\n useEffect(() => {\n if (modifyArError && modifyingArId) {\n displayToast(\n `Sorry, we couldn't load your request. ${modifyArError.reason ?? ''}`.trim(),\n 'danger',\n )\n setModifyingArId(undefined)\n }\n }, [modifyArError, modifyingArId])\n\n const { mutate: voidSignature, isPending: isVoiding } =\n useVoidDataAccessRequestSignature({\n onSuccess: () => {\n displayToast('Your access request has been cancelled.', 'success')\n setCancellingSummary(undefined)\n },\n onError: e => {\n displayToast(\n `Sorry, we couldn't cancel your request. ${e.reason ?? ''}`.trim(),\n 'danger',\n )\n },\n })\n\n const modifyLoadingArId = isFetchingModifyAr ? modifyingArId : undefined\n\n const columns = useMemo(\n () =>\n buildColumns({\n onModify: summary => {\n if (summary.accessRequirementId) {\n setModifyingArId(summary.accessRequirementId)\n }\n },\n onCancel: summary => setCancellingSummary(summary),\n modifyLoadingArId,\n }),\n [modifyLoadingArId],\n )\n\n const rows = useMemo(\n () =>\n (summaries ?? []).filter(\n summary =>\n summary.status !== undefined &&\n (IN_FLIGHT_STATUSES as readonly string[]).includes(summary.status),\n ),\n [summaries],\n )\n\n const table = useReactTable({\n data: rows,\n columns,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n if (error) {\n return (\n <Alert severity={'error'}>\n <strong>\n Sorry, we couldn&apos;t load your in-flight eDUC signatures.\n </strong>\n <br />\n {error.reason}\n </Alert>\n )\n }\n\n if (isLoading) {\n return <SkeletonTable numCols={columns.length} fullWidthCells />\n }\n\n if (rows.length === 0) {\n return null\n }\n\n return (\n <Box>\n <Stack sx={{ gap: 2 }}>\n <Typography variant=\"headline1\" gutterBottom>\n In-flight eDUC signatures\n </Typography>\n <StyledTanStackTable table={table} fullWidth={true} />\n </Stack>\n {modifyAccessRequirement && (\n <AccessRequirementList\n renderAsModal\n onHide={() => setModifyingArId(undefined)}\n initialWizardEntry={{\n step: RequestDataStep.UPDATE_RESEARCH_PROJECT,\n managedACTAccessRequirement: modifyAccessRequirement,\n }}\n />\n )}\n <Dialog\n open={Boolean(cancellingSummary)}\n onClose={() => setCancellingSummary(undefined)}\n >\n <DialogTitle>Cancel request?</DialogTitle>\n <DialogContent>\n <DialogContentText>\n Cancelling this request will void the electronic signature envelope\n for{' '}\n <strong>\n {cancellingSummary?.accessRequirementName ?? 'this request'}\n </strong>\n . Any signatures already collected will be discarded. You can start\n a new request at any time. This action cannot be undone.\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => setCancellingSummary(undefined)}\n disabled={isVoiding}\n >\n Keep Request\n </Button>\n <Button\n variant={'contained'}\n color={'error'}\n loading={isVoiding}\n onClick={() => {\n if (cancellingSummary?.requestId) {\n voidSignature(cancellingSummary.requestId)\n }\n }}\n >\n Cancel Request\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"InFlightEDucSignaturesTable.js","names":[],"sources":["../../../../src/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.tsx"],"sourcesContent":["import AccessRequirementList, {\n RequestDataStep,\n} from '@/components/AccessRequirementList/AccessRequirementList'\nimport { SkeletonTable } from '@/components/Skeleton'\nimport ColumnHeader from '@/components/TanStackTable/ColumnHeader'\nimport StyledTanStackTable from '@/components/TanStackTable/StyledTanStackTable'\nimport { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport {\n useListAllUserDataAccessRequests,\n useVoidDataAccessRequestSignature,\n} from '@/synapse-queries'\nimport { useGetAccessRequirements } from '@/synapse-queries/dataaccess/useAccessRequirements'\nimport {\n Alert,\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Link as MuiLink,\n Stack,\n Typography,\n} from '@mui/material'\nimport {\n AccessRequestSummary,\n AccessRequestSummaryStatusEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { ManagedACTAccessRequirement } from '@sage-bionetworks/synapse-types'\nimport {\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table'\nimport { useEffect, useMemo, useState } from 'react'\nimport { Link as RouterLink } from 'react-router'\nimport {\n USER_ACCESS_HISTORY_REQUEST_SIGNATURE_SUBPATH,\n USER_ACCESS_HISTORY_REQUEST_SUBPATH,\n} from './RouteConstants'\n\nconst IN_FLIGHT_STATUSES: readonly AccessRequestSummaryStatusEnum[] = [\n 'sent',\n 'delivered',\n 'declined',\n 'completed',\n] as const\n\nconst STATUS_DISPLAY: Record<string, string> = {\n sent: 'Signatures pending',\n delivered: 'Signatures pending',\n declined: 'Signature declined',\n completed: 'Ready to submit',\n}\n\nconst signatureDeepLink = (requestId: string) =>\n `/${USER_ACCESS_HISTORY_REQUEST_SUBPATH}/${requestId}/${USER_ACCESS_HISTORY_REQUEST_SIGNATURE_SUBPATH}`\n\nconst columnHelper = createColumnHelper<AccessRequestSummary>()\n\ntype ActionCallbacks = {\n onModify: (summary: AccessRequestSummary) => void\n onCancel: (summary: AccessRequestSummary) => void\n modifyLoadingArId: string | undefined\n}\n\nfunction buildColumns(actions: ActionCallbacks) {\n return [\n columnHelper.accessor('accessRequirementName', {\n header: props => <ColumnHeader {...props} title={'Request type'} />,\n enableSorting: false,\n enableColumnFilter: false,\n }),\n columnHelper.display({\n id: 'signatureProgress',\n header: props => <ColumnHeader {...props} title={'Signature progress'} />,\n enableSorting: false,\n cell: ctx => {\n const acquired = ctx.row.original.signaturesAcquired ?? 0\n const requested = ctx.row.original.signaturesRequested ?? 0\n return `${acquired} of ${requested}`\n },\n enableColumnFilter: false,\n size: 150,\n }),\n columnHelper.accessor('status', {\n header: props => <ColumnHeader {...props} title={'Current status'} />,\n enableSorting: false,\n cell: ctx => {\n const status = ctx.getValue()\n return status ? (STATUS_DISPLAY[status] ?? status) : ''\n },\n enableColumnFilter: false,\n size: 150,\n }),\n columnHelper.display({\n id: 'actions',\n header: props => <ColumnHeader {...props} title={'Actions'} />,\n enableSorting: false,\n enableColumnFilter: false,\n cell: ctx => {\n const summary = ctx.row.original\n const requestId = summary.requestId\n if (!requestId) return null\n const isModifyLoading =\n actions.modifyLoadingArId !== undefined &&\n actions.modifyLoadingArId === summary.accessRequirementId\n return (\n <Stack\n direction={'column'}\n sx={{ alignItems: 'flex-start', gap: 0.5 }}\n >\n <MuiLink component={RouterLink} to={signatureDeepLink(requestId)}>\n Review Signatures and Submit\n </MuiLink>\n <MuiLink\n component={'button'}\n type={'button'}\n onClick={() => actions.onModify(summary)}\n disabled={\n !summary.accessRequirementId ||\n actions.modifyLoadingArId !== undefined\n }\n sx={{ textAlign: 'left' }}\n >\n {isModifyLoading ? 'Loading…' : 'Modify Request'}\n </MuiLink>\n <MuiLink\n component={'button'}\n type={'button'}\n onClick={() => actions.onCancel(summary)}\n sx={{ textAlign: 'left' }}\n >\n Cancel Request\n </MuiLink>\n </Stack>\n )\n },\n size: 220,\n }),\n ]\n}\n\n/**\n * Lists the requester's active eDUC signatures (routed / signed but not yet submitted).\n *\n * The underlying query walks every page of `POST /dataAccessRequest/list` inside its `queryFn`,\n * pushing the `isEDuc: true` filter to the server so the walk skips non-eDUC requests. Status is\n * still filtered client-side because the list endpoint has no server-side status filter.\n *\n * Renders nothing when the fully-loaded, filtered list is empty.\n */\nexport function InFlightEDucSignaturesTable() {\n const {\n data: summaries,\n isLoading,\n error,\n } = useListAllUserDataAccessRequests({ isEDuc: true })\n\n const [modifyingArId, setModifyingArId] = useState<string | undefined>()\n const [cancellingSummary, setCancellingSummary] = useState<\n AccessRequestSummary | undefined\n >()\n\n const {\n data: modifyAccessRequirement,\n isFetching: isFetchingModifyAr,\n error: modifyArError,\n } = useGetAccessRequirements<ManagedACTAccessRequirement>(\n modifyingArId ?? '',\n { enabled: Boolean(modifyingArId), staleTime: Infinity },\n )\n\n // Bail out of the Modify flow if the AR fetch fails so the user isn't stuck on a disabled button.\n useEffect(() => {\n if (modifyArError && modifyingArId) {\n displayToast(\n `Sorry, we couldn't load your request. ${modifyArError.reason ?? ''}`.trim(),\n 'danger',\n )\n setModifyingArId(undefined)\n }\n }, [modifyArError, modifyingArId])\n\n const { mutate: voidSignature, isPending: isVoiding } =\n useVoidDataAccessRequestSignature({\n onSuccess: () => {\n displayToast('Your access request has been cancelled.', 'success')\n setCancellingSummary(undefined)\n },\n onError: e => {\n displayToast(\n `Sorry, we couldn't cancel your request. ${e.reason ?? ''}`.trim(),\n 'danger',\n )\n },\n })\n\n const modifyLoadingArId = isFetchingModifyAr ? modifyingArId : undefined\n\n const columns = useMemo(\n () =>\n buildColumns({\n onModify: summary => {\n if (summary.accessRequirementId) {\n setModifyingArId(summary.accessRequirementId)\n }\n },\n onCancel: summary => setCancellingSummary(summary),\n modifyLoadingArId,\n }),\n [modifyLoadingArId],\n )\n\n const rows = useMemo(\n () =>\n (summaries ?? []).filter(\n summary =>\n summary.status !== undefined &&\n (IN_FLIGHT_STATUSES as readonly string[]).includes(summary.status),\n ),\n [summaries],\n )\n\n const table = useReactTable({\n data: rows,\n columns,\n getCoreRowModel: getCoreRowModel(),\n columnResizeMode: 'onChange',\n })\n\n if (error) {\n return (\n <Alert severity={'error'}>\n <strong>\n Sorry, we couldn&apos;t load your in-flight eDUC signatures.\n </strong>\n <br />\n {error.reason}\n </Alert>\n )\n }\n\n if (isLoading) {\n return <SkeletonTable numCols={columns.length} fullWidthCells />\n }\n\n if (rows.length === 0) {\n return null\n }\n\n return (\n <Box>\n <Stack sx={{ gap: 2 }}>\n <Typography variant=\"headline1\" gutterBottom>\n In-flight eDUC signatures\n </Typography>\n <StyledTanStackTable table={table} fullWidth={true} />\n </Stack>\n {modifyAccessRequirement && (\n <AccessRequirementList\n renderAsModal\n onHide={() => setModifyingArId(undefined)}\n initialWizardEntry={{\n step: RequestDataStep.UPDATE_RESEARCH_PROJECT,\n managedACTAccessRequirement: modifyAccessRequirement,\n }}\n />\n )}\n <Dialog\n open={Boolean(cancellingSummary)}\n onClose={() => setCancellingSummary(undefined)}\n >\n <DialogTitle>Cancel request?</DialogTitle>\n <DialogContent>\n <DialogContentText>\n Cancelling this request will void the electronic signature envelope\n for{' '}\n <strong>\n {cancellingSummary?.accessRequirementName ?? 'this request'}\n </strong>\n . Any signatures already collected will be discarded. You can start\n a new request at any time. This action cannot be undone.\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => setCancellingSummary(undefined)}\n disabled={isVoiding}\n >\n Keep Request\n </Button>\n <Button\n variant={'contained'}\n color={'error'}\n loading={isVoiding}\n onClick={() => {\n if (cancellingSummary?.requestId) {\n voidSignature(cancellingSummary.requestId)\n }\n }}\n >\n Cancel Request\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1,11 +1,21 @@
1
1
  import React from 'react';
2
2
  import { FileHandleAssociation } from '@sage-bionetworks/synapse-types';
3
3
  type FileHandleLinkProps = {
4
- fileHandleAssociation: FileHandleAssociation;
5
4
  redirect?: boolean;
6
5
  showDownloadIcon: boolean;
7
6
  displayValue?: string;
8
- };
7
+ } & ({
8
+ /** Downloads the file handle as it is associated with a Synapse object. */
9
+ fileHandleAssociation: FileHandleAssociation;
10
+ creatorFileHandleId?: never;
11
+ } | {
12
+ fileHandleAssociation?: never;
13
+ /**
14
+ * Downloads a file handle that is not associated with any object yet. Synapse only serves
15
+ * such a file handle to the user that created it.
16
+ */
17
+ creatorFileHandleId: string;
18
+ });
9
19
  export declare const FileHandleLink: (props: FileHandleLinkProps) => React.ReactNode;
10
20
  export {};
11
21
  //# sourceMappingURL=FileHandleLink.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileHandleLink.d.ts","sourceRoot":"","sources":["../../../src/components/widgets/FileHandleLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAGL,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AAIxC,KAAK,mBAAmB,GAAG;IACzB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AACD,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,KAAG,KAAK,CAAC,SA8DjE,CAAA"}
1
+ {"version":3,"file":"FileHandleLink.d.ts","sourceRoot":"","sources":["../../../src/components/widgets/FileHandleLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAMtC,OAAO,EAEL,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AAIxC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,CACA;IACE,2EAA2E;IAC3E,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,mBAAmB,CAAC,EAAE,KAAK,CAAA;CAC5B,GACD;IACE,qBAAqB,CAAC,EAAE,KAAK,CAAA;IAC7B;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CACJ,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,KAAG,KAAK,CAAC,SAmEjE,CAAA"}
@@ -2,43 +2,39 @@ import { SRC_SIGN_IN_CLASS as e } from "../../utils/SynapseConstants.js";
2
2
  import t from "../../synapse-client/index.js";
3
3
  import { useSynapseContext as n } from "../../utils/context/SynapseContext.js";
4
4
  import "../../utils/index.js";
5
- import r from "../IconSvg/IconSvg.js";
6
- import { useEffect as i, useState as a } from "react";
7
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ import { useGetFileBatch as r } from "../../synapse-queries/file/useFiles.js";
6
+ import i from "../IconSvg/IconSvg.js";
7
+ import { useGetCreatorFileHandle as a } from "../../synapse-queries/file/useFileHandle.js";
8
+ import { useMemo as o } from "react";
9
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
10
+ import { useMutation as l } from "@tanstack/react-query";
8
11
  //#region src/components/widgets/FileHandleLink.tsx
9
- var c = (c) => {
10
- let { fileHandleAssociation: l, showDownloadIcon: u, redirect: d = !1, displayValue: f } = c, { accessToken: p } = n(), [m, h] = a();
11
- i(() => {
12
- f === void 0 && (async () => {
13
- let e = {
14
- requestedFiles: [l],
15
- includeFileHandles: !0,
16
- includePreSignedURLs: !1,
17
- includePreviewPreSignedURLs: !1
18
- };
19
- h(await t.getFiles(e, p));
20
- })();
21
- }, [
22
- p,
23
- f,
24
- l
25
- ]);
26
- let g;
27
- return m && (g = m.requestedFiles[0].fileHandle?.fileName), /* @__PURE__ */ s("button", {
12
+ var u = (u) => {
13
+ let { fileHandleAssociation: d, creatorFileHandleId: f, showDownloadIcon: p, redirect: m = !1, displayValue: h } = u, { accessToken: g } = n(), _ = d?.fileHandleId ?? f, v = h === void 0, { data: y } = r(o(() => ({
14
+ requestedFiles: d ? [d] : [],
15
+ includeFileHandles: !0,
16
+ includePreSignedURLs: !1,
17
+ includePreviewPreSignedURLs: !1
18
+ }), [d]), { enabled: v && !!d }), { data: b } = a(f ?? "", { enabled: v && !!f }), x = d ? y?.requestedFiles[0].fileHandle?.fileName : b?.fileName, { mutate: S } = l({
19
+ mutationFn: () => d ? t.getActualFileHandleByIdURL(d.fileHandleId, g, d.associateObjectType, d.associateObjectId, m) : t.getFileHandleByIdURL(f, g),
20
+ onSuccess: (e) => {
21
+ window.open(e, "_blank");
22
+ },
23
+ onError: (e) => {
24
+ console.error("Error on retrieving file handle url ", e);
25
+ }
26
+ });
27
+ return /* @__PURE__ */ c("button", {
28
28
  onClick: () => {
29
- p && l && t.getActualFileHandleByIdURL(l.fileHandleId, p, l.associateObjectType, l.associateObjectId, d).then((e) => {
30
- window.open(e, "_blank");
31
- }).catch((e) => {
32
- console.error("Error on retrieving file handle url ", e);
33
- });
29
+ g && S();
34
30
  },
35
31
  className: `SRC-primary-text-color ${e}`,
36
32
  type: "button",
37
33
  style: { padding: 0 },
38
- children: [f ?? g ?? l.fileHandleId, u && /* @__PURE__ */ o(r, { icon: "download" })]
34
+ children: [h ?? x ?? _, p && /* @__PURE__ */ s(i, { icon: "download" })]
39
35
  });
40
36
  };
41
37
  //#endregion
42
- export { c as FileHandleLink };
38
+ export { u as FileHandleLink };
43
39
 
44
40
  //# sourceMappingURL=FileHandleLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileHandleLink.js","names":[],"sources":["../../../src/components/widgets/FileHandleLink.tsx"],"sourcesContent":["import React from 'react'\nimport SynapseClient from '@/synapse-client'\nimport { SynapseConstants } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n BatchFileRequest,\n BatchFileResult,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport { useEffect, useState } from 'react'\nimport IconSvg from '../IconSvg/IconSvg'\n\ntype FileHandleLinkProps = {\n fileHandleAssociation: FileHandleAssociation\n redirect?: boolean\n showDownloadIcon: boolean\n displayValue?: string\n}\nexport const FileHandleLink = (props: FileHandleLinkProps): React.ReactNode => {\n const {\n fileHandleAssociation,\n showDownloadIcon,\n redirect = false,\n displayValue,\n } = props\n const { accessToken } = useSynapseContext()\n\n const [batchFileResult, setBatchFileResult] = useState<\n BatchFileResult | undefined\n >()\n\n useEffect(() => {\n if (displayValue === undefined) {\n const getFiles = async () => {\n const batchFileRequest: BatchFileRequest = {\n requestedFiles: [fileHandleAssociation],\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n }\n setBatchFileResult(\n await SynapseClient.getFiles(batchFileRequest, accessToken),\n )\n }\n getFiles()\n }\n }, [accessToken, displayValue, fileHandleAssociation])\n\n let fileName: string | undefined = undefined\n if (batchFileResult) {\n fileName = batchFileResult.requestedFiles[0].fileHandle?.fileName\n }\n\n return (\n <button\n onClick={() => {\n if (accessToken && fileHandleAssociation) {\n SynapseClient.getActualFileHandleByIdURL(\n fileHandleAssociation.fileHandleId,\n accessToken,\n fileHandleAssociation.associateObjectType,\n fileHandleAssociation.associateObjectId,\n redirect,\n )\n .then(url => {\n window.open(url, '_blank')\n })\n .catch(err => {\n console.error('Error on retrieving file handle url ', err)\n })\n }\n }}\n className={`SRC-primary-text-color ${SynapseConstants.SRC_SIGN_IN_CLASS}`}\n type=\"button\"\n style={{ padding: 0 }}\n >\n {displayValue ?? fileName ?? fileHandleAssociation.fileHandleId}\n {showDownloadIcon && <IconSvg icon=\"download\" />}\n </button>\n )\n}\n"],"mappings":";;;;;;;;AAkBA,IAAa,KAAkB,MAAgD;CAC7E,IAAM,EACJ,0BACA,qBACA,cAAW,IACX,oBACE,GACE,EAAE,mBAAgB,EAAkB,GAEpC,CAAC,GAAiB,KAAsB,EAE5C;CAEF,QAAgB;EACd,AAAI,MAAiB,KAAA,MAYnB,YAX6B;GAC3B,IAAM,IAAqC;IACzC,gBAAgB,CAAC,CAAqB;IACtC,oBAAoB;IACpB,sBAAsB;IACtB,6BAA6B;GAC/B;GACA,EACE,MAAM,EAAc,SAAS,GAAkB,CAAW,CAC5D;EACF,GACS;CAEb,GAAG;EAAC;EAAa;EAAc;CAAqB,CAAC;CAErD,IAAI;CAKJ,OAJI,MACF,IAAW,EAAgB,eAAe,GAAG,YAAY,WAIzD,kBAAC,UAAD;EACE,eAAe;GACb,AAAI,KAAe,KACjB,EAAc,2BACZ,EAAsB,cACtB,GACA,EAAsB,qBACtB,EAAsB,mBACtB,CACF,EACG,MAAK,MAAO;IACX,OAAO,KAAK,GAAK,QAAQ;GAC3B,CAAC,EACA,OAAM,MAAO;IACZ,QAAQ,MAAM,wCAAwC,CAAG;GAC3D,CAAC;EAEP;EACA,WAAW,0BAA0B;EACrC,MAAK;EACL,OAAO,EAAE,SAAS,EAAE;YApBtB,CAsBG,KAAgB,KAAY,EAAsB,cAClD,KAAoB,kBAAC,GAAD,EAAS,MAAK,WAAY,CAAA,CACzC;;AAEZ"}
1
+ {"version":3,"file":"FileHandleLink.js","names":[],"sources":["../../../src/components/widgets/FileHandleLink.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport SynapseClient from '@/synapse-client'\nimport { useGetCreatorFileHandle } from '@/synapse-queries/file/useFileHandle'\nimport { useGetFileBatch } from '@/synapse-queries/file/useFiles'\nimport { SynapseConstants } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n BatchFileRequest,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport { useMutation } from '@tanstack/react-query'\nimport IconSvg from '../IconSvg/IconSvg'\n\ntype FileHandleLinkProps = {\n redirect?: boolean\n showDownloadIcon: boolean\n displayValue?: string\n} & (\n | {\n /** Downloads the file handle as it is associated with a Synapse object. */\n fileHandleAssociation: FileHandleAssociation\n creatorFileHandleId?: never\n }\n | {\n fileHandleAssociation?: never\n /**\n * Downloads a file handle that is not associated with any object yet. Synapse only serves\n * such a file handle to the user that created it.\n */\n creatorFileHandleId: string\n }\n)\n\nexport const FileHandleLink = (props: FileHandleLinkProps): React.ReactNode => {\n const {\n fileHandleAssociation,\n creatorFileHandleId,\n showDownloadIcon,\n redirect = false,\n displayValue,\n } = props\n const { accessToken } = useSynapseContext()\n const fileHandleId =\n fileHandleAssociation?.fileHandleId ?? creatorFileHandleId\n const shouldLookUpFileName = displayValue === undefined\n\n const batchFileRequest = useMemo<BatchFileRequest>(\n () => ({\n requestedFiles: fileHandleAssociation ? [fileHandleAssociation] : [],\n includeFileHandles: true,\n includePreSignedURLs: false,\n includePreviewPreSignedURLs: false,\n }),\n [fileHandleAssociation],\n )\n const { data: batchFileResult } = useGetFileBatch(batchFileRequest, {\n enabled: shouldLookUpFileName && !!fileHandleAssociation,\n })\n const { data: creatorFileHandle } = useGetCreatorFileHandle(\n creatorFileHandleId ?? '',\n { enabled: shouldLookUpFileName && !!creatorFileHandleId },\n )\n const fileName = fileHandleAssociation\n ? batchFileResult?.requestedFiles[0].fileHandle?.fileName\n : creatorFileHandle?.fileName\n\n const { mutate: openFile } = useMutation({\n mutationFn: (): Promise<string> =>\n fileHandleAssociation\n ? SynapseClient.getActualFileHandleByIdURL(\n fileHandleAssociation.fileHandleId,\n accessToken,\n fileHandleAssociation.associateObjectType,\n fileHandleAssociation.associateObjectId,\n redirect,\n )\n : SynapseClient.getFileHandleByIdURL(creatorFileHandleId, accessToken),\n onSuccess: url => {\n window.open(url, '_blank')\n },\n onError: err => {\n console.error('Error on retrieving file handle url ', err)\n },\n })\n\n return (\n <button\n onClick={() => {\n if (accessToken) {\n openFile()\n }\n }}\n className={`SRC-primary-text-color ${SynapseConstants.SRC_SIGN_IN_CLASS}`}\n type=\"button\"\n style={{ padding: 0 }}\n >\n {displayValue ?? fileName ?? fileHandleId}\n {showDownloadIcon && <IconSvg icon=\"download\" />}\n </button>\n )\n}\n"],"mappings":";;;;;;;;;;;AAiCA,IAAa,KAAkB,MAAgD;CAC7E,IAAM,EACJ,0BACA,wBACA,qBACA,cAAW,IACX,oBACE,GACE,EAAE,mBAAgB,EAAkB,GACpC,IACJ,GAAuB,gBAAgB,GACnC,IAAuB,MAAiB,KAAA,GAWxC,EAAE,MAAM,MAAoB,EATT,SAChB;EACL,gBAAgB,IAAwB,CAAC,CAAqB,IAAI,CAAC;EACnE,oBAAoB;EACpB,sBAAsB;EACtB,6BAA6B;CAC/B,IACA,CAAC,CAAqB,CAE0B,GAAkB,EAClE,SAAS,KAAwB,CAAC,CAAC,EACrC,CAAC,GACK,EAAE,MAAM,MAAsB,EAClC,KAAuB,IACvB,EAAE,SAAS,KAAwB,CAAC,CAAC,EAAoB,CAC3D,GACM,IAAW,IACb,GAAiB,eAAe,GAAG,YAAY,WAC/C,GAAmB,UAEjB,EAAE,QAAQ,MAAa,EAAY;EACvC,kBACE,IACI,EAAc,2BACZ,EAAsB,cACtB,GACA,EAAsB,qBACtB,EAAsB,mBACtB,CACF,IACA,EAAc,qBAAqB,GAAqB,CAAW;EACzE,YAAW,MAAO;GAChB,OAAO,KAAK,GAAK,QAAQ;EAC3B;EACA,UAAS,MAAO;GACd,QAAQ,MAAM,wCAAwC,CAAG;EAC3D;CACF,CAAC;CAED,OACE,kBAAC,UAAD;EACE,eAAe;GACb,AAAI,KACF,EAAS;EAEb;EACA,WAAW,0BAA0B;EACrC,MAAK;EACL,OAAO,EAAE,SAAS,EAAE;YARtB,CAUG,KAAgB,KAAY,GAC5B,KAAoB,kBAAC,GAAD,EAAS,MAAK,WAAY,CAAA,CACzC;;AAEZ"}
@@ -13,4 +13,6 @@ export declare const mockGenomicsTemplate: FormTemplate;
13
13
  */
14
14
  export declare const mockClinicalTemplate: FormTemplate;
15
15
  export declare const mockFormTemplates: FormTemplate[];
16
+ /** A deprecated template. Not part of `mockFormTemplates`, which models the default (non-deprecated) list. */
17
+ export declare const mockDeprecatedTemplate: FormTemplate;
16
18
  //# sourceMappingURL=mockFormTemplates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockFormTemplates.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAI/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAmClC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAsClC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAG3C,CAAA"}
1
+ {"version":3,"file":"mockFormTemplates.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAI/D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAmClC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAsClC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAG3C,CAAA;AAED,8GAA8G;AAC9G,eAAO,MAAM,sBAAsB,EAAE,YAMpC,CAAA"}
@@ -56,8 +56,14 @@ var r = {
56
56
  }]
57
57
  }],
58
58
  deprecated: !1
59
- }, a = [r, i];
59
+ }, a = [r, i], o = {
60
+ ...r,
61
+ id: "template-3",
62
+ name: "Legacy Genomics DAR",
63
+ etag: "etag-template-3",
64
+ deprecated: !0
65
+ };
60
66
  //#endregion
61
- export { i as mockClinicalTemplate, a as mockFormTemplates, r as mockGenomicsTemplate };
67
+ export { i as mockClinicalTemplate, o as mockDeprecatedTemplate, a as mockFormTemplates, r as mockGenomicsTemplate };
62
68
 
63
69
  //# sourceMappingURL=mockFormTemplates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockFormTemplates.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"sourcesContent":["import { FormTemplate } from '@sage-bionetworks/synapse-client'\nimport { MOCK_FILE_HANDLE_ID } from '@/mocks/mock_file_handle'\nimport { mockClinicalSchema, mockGenomicsSchema } from './mockJsonSchemas'\n\n/**\n * Renders the a Data Access schema as a 2-step form:\n * Research Use → Agreements\n */\nexport const mockGenomicsTemplate: FormTemplate = {\n id: 'template-1',\n name: 'Genomics DAR',\n etag: 'etag-template-1',\n versionNumber: 1,\n schema$id: mockGenomicsSchema.$id as string,\n steps: [\n {\n title: 'Research Use',\n description:\n 'Describe your research project and how you intend to use the data.',\n fields: [\n {\n schemaPath: '/intendedDataUse',\n uiDefinition: {\n 'ui:widget': 'textarea',\n 'ui:options': { rows: 5 },\n },\n isPublic: true,\n },\n ],\n },\n {\n title: 'Agreements',\n description:\n 'Review and agree to the terms and conditions for accessing this data.',\n fields: [\n {\n schemaPath: '/agreeToTerms',\n uiDefinition: {},\n },\n ],\n },\n ],\n deprecated: false,\n}\n\n/**\n * Renders the Data Access schema as a 2-step form:\n * Project Details → Compliance.\n *\n * Demonstrates a file-upload field with a downloadable template, and a Renewal-only field\n * (`irbApprovalNumber`, gated in `mockClinicalSchema` via `x-synapse-submissionContext`).\n */\nexport const mockClinicalTemplate: FormTemplate = {\n id: 'template-2',\n name: 'Clinical Trial DAR',\n etag: 'etag-template-2',\n versionNumber: 1,\n schema$id: mockClinicalSchema.$id as string,\n steps: [\n {\n title: 'Project Details',\n fields: [\n {\n schemaPath: '/projectTitle',\n uiDefinition: {},\n isPublic: true,\n },\n {\n schemaPath: '/dataUsePurpose',\n uiDefinition: {},\n },\n ],\n },\n {\n title: 'Compliance',\n description: 'Provide any required compliance documentation.',\n fields: [\n {\n schemaPath: '/irbApprovalNumber',\n uiDefinition: {},\n },\n {\n schemaPath: '/signedDataUseAgreement',\n uiDefinition: {},\n templateFileHandleId: MOCK_FILE_HANDLE_ID,\n },\n ],\n },\n ],\n deprecated: false,\n}\n\nexport const mockFormTemplates: FormTemplate[] = [\n mockGenomicsTemplate,\n mockClinicalTemplate,\n]\n"],"mappings":";;;AAQA,IAAa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc;IACZ,aAAa;IACb,cAAc,EAAE,MAAM,EAAE;GAC1B;GACA,UAAU;EACZ,CACF;CACF,GACA;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,CACF;CACA,YAAY;AACd,GASa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,UAAU;EACZ,GACA;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,GACA;EACE,OAAO;EACP,aAAa;EACb,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,GACA;GACE,YAAY;GACZ,cAAc,CAAC;GACf,sBAAsB;EACxB,CACF;CACF,CACF;CACA,YAAY;AACd,GAEa,IAAoC,CAC/C,GACA,CACF"}
1
+ {"version":3,"file":"mockFormTemplates.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"sourcesContent":["import { FormTemplate } from '@sage-bionetworks/synapse-client'\nimport { MOCK_FILE_HANDLE_ID } from '@/mocks/mock_file_handle'\nimport { mockClinicalSchema, mockGenomicsSchema } from './mockJsonSchemas'\n\n/**\n * Renders the a Data Access schema as a 2-step form:\n * Research Use → Agreements\n */\nexport const mockGenomicsTemplate: FormTemplate = {\n id: 'template-1',\n name: 'Genomics DAR',\n etag: 'etag-template-1',\n versionNumber: 1,\n schema$id: mockGenomicsSchema.$id as string,\n steps: [\n {\n title: 'Research Use',\n description:\n 'Describe your research project and how you intend to use the data.',\n fields: [\n {\n schemaPath: '/intendedDataUse',\n uiDefinition: {\n 'ui:widget': 'textarea',\n 'ui:options': { rows: 5 },\n },\n isPublic: true,\n },\n ],\n },\n {\n title: 'Agreements',\n description:\n 'Review and agree to the terms and conditions for accessing this data.',\n fields: [\n {\n schemaPath: '/agreeToTerms',\n uiDefinition: {},\n },\n ],\n },\n ],\n deprecated: false,\n}\n\n/**\n * Renders the Data Access schema as a 2-step form:\n * Project Details → Compliance.\n *\n * Demonstrates a file-upload field with a downloadable template, and a Renewal-only field\n * (`irbApprovalNumber`, gated in `mockClinicalSchema` via `x-synapse-submissionContext`).\n */\nexport const mockClinicalTemplate: FormTemplate = {\n id: 'template-2',\n name: 'Clinical Trial DAR',\n etag: 'etag-template-2',\n versionNumber: 1,\n schema$id: mockClinicalSchema.$id as string,\n steps: [\n {\n title: 'Project Details',\n fields: [\n {\n schemaPath: '/projectTitle',\n uiDefinition: {},\n isPublic: true,\n },\n {\n schemaPath: '/dataUsePurpose',\n uiDefinition: {},\n },\n ],\n },\n {\n title: 'Compliance',\n description: 'Provide any required compliance documentation.',\n fields: [\n {\n schemaPath: '/irbApprovalNumber',\n uiDefinition: {},\n },\n {\n schemaPath: '/signedDataUseAgreement',\n uiDefinition: {},\n templateFileHandleId: MOCK_FILE_HANDLE_ID,\n },\n ],\n },\n ],\n deprecated: false,\n}\n\nexport const mockFormTemplates: FormTemplate[] = [\n mockGenomicsTemplate,\n mockClinicalTemplate,\n]\n\n/** A deprecated template. Not part of `mockFormTemplates`, which models the default (non-deprecated) list. */\nexport const mockDeprecatedTemplate: FormTemplate = {\n ...mockGenomicsTemplate,\n id: 'template-3',\n name: 'Legacy Genomics DAR',\n etag: 'etag-template-3',\n deprecated: true,\n}\n"],"mappings":";;;AAQA,IAAa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc;IACZ,aAAa;IACb,cAAc,EAAE,MAAM,EAAE;GAC1B;GACA,UAAU;EACZ,CACF;CACF,GACA;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,CACF;CACA,YAAY;AACd,GASa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,UAAU;EACZ,GACA;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,GACA;EACE,OAAO;EACP,aAAa;EACb,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,GACA;GACE,YAAY;GACZ,cAAc,CAAC;GACf,sBAAsB;EACxB,CACF;CACF,CACF;CACA,YAAY;AACd,GAEa,IAAoC,CAC/C,GACA,CACF,GAGa,IAAuC;CAClD,GAAG;CACH,IAAI;CACJ,MAAM;CACN,MAAM;CACN,YAAY;AACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"mockJsonSchemas.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,UAuBhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAsDhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAG7D,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,SAAS,CAExB"}
1
+ {"version":3,"file":"mockJsonSchemas.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAKxC,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,UAoBhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,UA+ChC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAG7D,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,SAAS,CAExB"}
@@ -1,8 +1,9 @@
1
1
  import { SUBMISSION_CONTEXT_PROPERTY as e } from "../../utils/jsonschema/submissionContext.js";
2
- import { DataAccessRequestType as t } from "@sage-bionetworks/synapse-client";
2
+ import { ACCESS_REQUIREMENT_BASE_SCHEMA_ID as t } from "../../components/FormTemplateEditor/formTemplateSchema.js";
3
+ import { DataAccessRequestType as n } from "@sage-bionetworks/synapse-client";
3
4
  //#region src/mocks/accessRequirement/mockJsonSchemas.ts
4
- var n = {
5
- $id: "org.sagebionetworks.dar.genomics-1.0.0",
5
+ var r = {
6
+ $id: "org.sagebionetworks.act-GenomicsDataAccessRequest-1.0.0",
6
7
  type: "object",
7
8
  title: "Genomics Data Access Request",
8
9
  properties: {
@@ -15,19 +16,12 @@ var n = {
15
16
  type: "boolean",
16
17
  title: "Terms and Conditions",
17
18
  description: "I agree to abide by all terms and conditions for accessing this data."
18
- },
19
- [e]: {
20
- type: "string",
21
- enum: [t.REQUEST, t.RENEWAL]
22
19
  }
23
20
  },
24
- required: [
25
- "intendedDataUse",
26
- "agreeToTerms",
27
- e
28
- ]
29
- }, r = {
30
- $id: "org.sagebionetworks.dar.clinical-1.0.0",
21
+ required: ["intendedDataUse", "agreeToTerms"],
22
+ allOf: [{ $ref: t }]
23
+ }, i = {
24
+ $id: "org.sagebionetworks.act-ClinicalTrialDataAccessRequest-1.0.0",
31
25
  type: "object",
32
26
  title: "Clinical Trial Data Access Request",
33
27
  properties: {
@@ -51,33 +45,25 @@ var n = {
51
45
  title: "Signed Data Use Agreement",
52
46
  description: "Upload a signed copy of the Data Use Agreement. A template is available for download.",
53
47
  format: "synapse-filehandle-id"
54
- },
55
- [e]: {
56
- type: "string",
57
- enum: [t.REQUEST, t.RENEWAL]
58
48
  }
59
49
  },
60
- required: [
61
- "projectTitle",
62
- "signedDataUseAgreement",
63
- e
64
- ],
65
- allOf: [{
66
- if: { properties: { [e]: { const: t.RENEWAL } } },
50
+ required: ["projectTitle", "signedDataUseAgreement"],
51
+ allOf: [{ $ref: t }, {
52
+ if: { properties: { [e]: { const: n.RENEWAL } } },
67
53
  then: { properties: { irbApprovalNumber: {
68
54
  type: "string",
69
55
  title: "IRB Approval Number",
70
56
  description: "If your institution requires IRB approval, provide the approval number."
71
57
  } } }
72
58
  }]
73
- }, i = {
74
- [n.$id]: n,
75
- [r.$id]: r
59
+ }, a = {
60
+ [r.$id]: r,
61
+ [i.$id]: i
76
62
  };
77
- function a(e) {
78
- return i[e];
63
+ function o(e) {
64
+ return a[e];
79
65
  }
80
66
  //#endregion
81
- export { a as getMockJsonSchemaById, r as mockClinicalSchema, n as mockGenomicsSchema, i as mockJsonSchemaRegistry };
67
+ export { o as getMockJsonSchemaById, i as mockClinicalSchema, r as mockGenomicsSchema, a as mockJsonSchemaRegistry };
82
68
 
83
69
  //# sourceMappingURL=mockJsonSchemas.js.map