synapse-react-client 4.0.45 → 4.0.47

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 (842) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +1 -0
  3. package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -1
  4. package/dist/aridhia-queries/AridhiaKeyFactory.js +3 -0
  5. package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -1
  6. package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
  7. package/dist/aridhia-queries/index.d.ts +1 -0
  8. package/dist/aridhia-queries/index.d.ts.map +1 -1
  9. package/dist/aridhia-queries/index.js +11 -10
  10. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts +19 -0
  11. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.d.ts.map +1 -0
  12. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js +14 -0
  13. package/dist/aridhia-queries/useGetAridhiaVocabularyTerm.js.map +1 -0
  14. package/dist/aridhia-queries/useSubmitAridhiaDar.js +2 -2
  15. package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
  16. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.d.ts.map +1 -1
  17. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js +6 -4
  18. package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
  19. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +1 -1
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -1
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +1 -1
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +1 -1
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -1
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +11 -8
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  29. package/dist/components/AccessTokenPage/AccessTokenPage.js +1 -1
  30. package/dist/components/AccessTokenPage/AccessTokenPage.js.map +1 -1
  31. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
  32. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  33. package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
  34. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  35. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +1 -1
  36. package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
  37. package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
  38. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  39. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  40. package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
  41. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  42. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
  43. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
  44. package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
  45. package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
  46. package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -1
  47. package/dist/components/Aridhia/DarWizard/DarSectionForm.js +17 -13
  48. package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -1
  49. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +3 -3
  50. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -1
  51. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +33 -34
  52. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
  53. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
  54. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
  55. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
  56. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  57. package/dist/components/Aridhia/fairFormToRjsf.js +1 -1
  58. package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -1
  59. package/dist/components/Authentication/LastLoginInfo.js +3 -3
  60. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  61. package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
  62. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  63. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  64. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  65. package/dist/components/Authentication/TOTPForm.js +3 -3
  66. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  67. package/dist/components/Authentication/index.d.ts +6 -6
  68. package/dist/components/Authentication/index.d.ts.map +1 -1
  69. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
  70. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  71. package/dist/components/CardContainer/CardContainer.js +7 -7
  72. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  73. package/dist/components/CertificationQuiz/CertificationQuiz.js +1 -1
  74. package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
  75. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
  76. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  77. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +1 -1
  78. package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js.map +1 -1
  79. package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
  80. package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
  81. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  82. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js +1 -1
  83. package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
  84. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +6 -6
  85. package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
  86. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.d.ts.map +1 -1
  87. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js +4 -4
  88. package/dist/components/ChallengeTeamWizard/ChallengeTeamTable.js.map +1 -1
  89. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +4 -4
  90. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  91. package/dist/components/CitationPopover/CitationPopoverContent.js +4 -4
  92. package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
  93. package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
  94. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  95. package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
  96. package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
  97. package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
  98. package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
  99. package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
  100. package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
  101. package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
  102. package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
  103. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
  104. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
  105. package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
  106. package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
  107. package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
  108. package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
  109. package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
  110. package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
  111. package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
  112. package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
  113. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  114. package/dist/components/ComponentCollapse.d.ts.map +1 -1
  115. package/dist/components/ComponentCollapse.js +2 -1
  116. package/dist/components/ComponentCollapse.js.map +1 -1
  117. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  118. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  119. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  120. package/dist/components/DataGrid/SynapseGrid.js +231 -219
  121. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  122. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
  123. package/dist/components/DataGrid/SyncGridWithSourceButton.js +5 -4
  124. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  125. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
  126. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  127. package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
  128. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  129. package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
  130. package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
  131. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
  132. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
  133. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
  134. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
  135. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  136. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +7 -5
  137. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  138. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js +4 -4
  139. package/dist/components/DataGrid/components/ExportCsvFromGridButton.js.map +1 -1
  140. package/dist/components/DataGrid/components/ReorderColumnsButton.js +4 -4
  141. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
  142. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  143. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +12 -8
  144. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  145. package/dist/components/DataGrid/components/UploadCsvToGridButton.js +1 -1
  146. package/dist/components/DataGrid/components/UploadCsvToGridButton.js.map +1 -1
  147. package/dist/components/DataGrid/components/contextMenu.js +3 -3
  148. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  149. package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
  150. package/dist/components/DataGrid/hooks/useGridUndoRedo.js +14 -12
  151. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  152. package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
  153. package/dist/components/DataGrid/hooks/useStack.js +2 -2
  154. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  155. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  156. package/dist/components/DataGrid/utils/applyModelChange.js +14 -14
  157. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  158. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  159. package/dist/components/DataGrid/utils/columnFactory.js +47 -42
  160. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  161. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
  162. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  163. package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
  164. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  165. package/dist/components/DataGrid/utils/splitPatch.d.ts.map +1 -1
  166. package/dist/components/DataGrid/utils/splitPatch.js +22 -13
  167. package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
  168. package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
  169. package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
  170. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
  171. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +3 -2
  172. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  173. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -1
  174. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +1 -3
  175. package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
  176. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  177. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
  178. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +16 -10
  179. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
  180. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  181. package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
  182. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
  183. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  184. package/dist/components/EntityFinder/EntityFinder.js +4 -4
  185. package/dist/components/EntityFinder/EntityIdTextField.js +1 -1
  186. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  187. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  188. package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
  189. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  190. package/dist/components/EntityFinder/tree/VirtualizedTree.d.ts.map +1 -1
  191. package/dist/components/EntityFinder/tree/VirtualizedTree.js +5 -4
  192. package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
  193. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
  194. package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
  195. package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
  196. package/dist/components/EntityHeaderTable/Filter.js +1 -1
  197. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  198. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  199. package/dist/components/EntityTreeTable/components/EntityNameCell.js +2 -1
  200. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  201. package/dist/components/EntityUpload/FileUploadProgress.d.ts.map +1 -1
  202. package/dist/components/EntityUpload/FileUploadProgress.js +11 -7
  203. package/dist/components/EntityUpload/FileUploadProgress.js.map +1 -1
  204. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  205. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.d.ts.map +1 -1
  206. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js +4 -3
  207. package/dist/components/Evaluation/round_limits/EvaluationRoundLimitOptionsList.js.map +1 -1
  208. package/dist/components/ExperimentalMode/ExperimentalMode.js +1 -1
  209. package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
  210. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js +1 -1
  211. package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
  212. package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
  213. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
  214. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  215. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -1
  216. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +2 -1
  217. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -1
  218. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  219. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +2 -1
  220. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  221. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -1
  222. package/dist/components/FormTemplateEditor/FieldLibrary.js +2 -1
  223. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -1
  224. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +4 -4
  225. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -1
  226. package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
  227. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -1
  228. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +1 -1
  229. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -1
  230. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -1
  231. package/dist/components/FormTemplateEditor/StepCard.js +15 -10
  232. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -1
  233. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -1
  234. package/dist/components/FormTemplateEditor/StepFieldRow.js +11 -6
  235. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -1
  236. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -1
  237. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +2 -1
  238. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -1
  239. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
  240. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  241. package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
  242. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  243. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +46 -46
  244. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
  245. package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
  246. package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
  247. package/dist/components/GenericCard/PortalDOI/PortalDOI.js +5 -5
  248. package/dist/components/GenericCard/PortalDOI/PortalDOI.js.map +1 -1
  249. package/dist/components/GenericCard/TableRowGenericCard.js +38 -38
  250. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  251. package/dist/components/GoalsV3/GoalsV3.js +1 -1
  252. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  253. package/dist/components/HelpPopover/HelpPopover.js +1 -1
  254. package/dist/components/HelpPopover/HelpPopover.js.map +1 -1
  255. package/dist/components/HexGrid/HexGrid.d.ts +3 -1
  256. package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
  257. package/dist/components/HexGrid/HexGrid.js +14 -13
  258. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  259. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  260. package/dist/components/IconSvg/IconSvg.js +154 -47
  261. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  262. package/dist/components/IconSvg/index.d.ts +1 -1
  263. package/dist/components/IconSvg/index.d.ts.map +1 -1
  264. package/dist/components/IconSvg/index.js.map +1 -1
  265. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
  266. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
  267. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  268. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.d.ts.map +1 -1
  269. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js +19 -16
  270. package/dist/components/JsonSchemaForm/templates/ButtonTemplate.js.map +1 -1
  271. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  272. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +2 -1
  273. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  274. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts +9 -0
  275. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.d.ts.map +1 -0
  276. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js +21 -0
  277. package/dist/components/JsonSchemaForm/widgets/PhoneWidget.js.map +1 -0
  278. package/dist/components/Markdown/MarkdownCollapse.d.ts.map +1 -1
  279. package/dist/components/Markdown/MarkdownCollapse.js +3 -1
  280. package/dist/components/Markdown/MarkdownCollapse.js.map +1 -1
  281. package/dist/components/Markdown/MarkdownEditor.js +1 -1
  282. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  283. package/dist/components/Markdown/widget/index.d.ts +1 -1
  284. package/dist/components/Markdown/widget/index.d.ts.map +1 -1
  285. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +1 -1
  286. package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
  287. package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
  288. package/dist/components/ModalDownload/ModalDownload.js +2 -1
  289. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  290. package/dist/components/OAuthClientManagement/OAuthManagement.js +14 -13
  291. package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
  292. package/dist/components/Plot/BarPlot.js +1 -1
  293. package/dist/components/Plot/BarPlot.js.map +1 -1
  294. package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
  295. package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
  296. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  297. package/dist/components/PortalList/PortalCard.d.ts.map +1 -1
  298. package/dist/components/PortalList/PortalCard.js +6 -5
  299. package/dist/components/PortalList/PortalCard.js.map +1 -1
  300. package/dist/components/PortalList/PortalList.js +4 -4
  301. package/dist/components/PortalList/PortalList.js.map +1 -1
  302. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
  303. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  304. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +6 -6
  305. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
  306. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  307. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  308. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
  309. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  310. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  311. package/dist/components/QueryBuilder/FilterConditionRow.js +31 -30
  312. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  313. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  314. package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
  315. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  316. package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
  317. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  318. package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
  319. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  320. package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
  321. package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
  322. package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
  323. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
  324. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  325. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  326. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
  327. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
  328. package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
  329. package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
  330. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
  331. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  332. package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
  333. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  334. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
  335. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
  336. package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
  337. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
  338. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
  339. package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
  340. package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
  341. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
  342. package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
  343. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
  344. package/dist/components/QueryCountButton/QueryCountButton.js +5 -5
  345. package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
  346. package/dist/components/QuerySortSelector.js +5 -5
  347. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
  348. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  349. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
  350. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
  351. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
  352. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
  353. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
  354. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
  355. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
  356. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  357. package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
  358. package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
  359. package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
  360. package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
  361. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
  362. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
  363. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
  364. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
  365. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
  366. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
  367. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
  368. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  369. package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
  370. package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
  371. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  372. package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
  373. package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
  374. package/dist/components/QueryWrapperErrorBoundary.js +26 -21
  375. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  376. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
  377. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
  378. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  379. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
  380. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  381. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
  382. package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
  383. package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
  384. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  385. package/dist/components/ReleaseCard/ReleaseCardLarge.js +5 -5
  386. package/dist/components/ReleaseCard/ReleaseCardLarge.js.map +1 -1
  387. package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
  388. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
  389. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
  390. package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
  391. package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
  392. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
  393. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
  394. package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
  395. package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
  396. package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
  397. package/dist/components/RowDataTable/RowDataTable.js +25 -8
  398. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  399. package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
  400. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  401. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
  402. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
  403. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  404. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
  405. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  406. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
  407. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  408. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
  409. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  410. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
  411. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  412. package/dist/components/ShareThisPage/ShareThisPage.js +4 -4
  413. package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
  414. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
  415. package/dist/components/SustainabilityScorecard/DialLayout.js +1 -1
  416. package/dist/components/SustainabilityScorecard/DialLayout.js.map +1 -1
  417. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js +1 -1
  418. package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
  419. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  420. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  421. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  422. package/dist/components/SynapseChat/SynapseChatInteraction.js +2 -1
  423. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  424. package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
  425. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  426. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js +1 -1
  427. package/dist/components/SynapseChat/components/ChatInputArea/ChatInputArea.js.map +1 -1
  428. package/dist/components/SynapseFooter/SynapseFooter.js +1 -1
  429. package/dist/components/SynapseFooter/SynapseFooter.js.map +1 -1
  430. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  431. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  432. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js +1 -1
  433. package/dist/components/SynapseHomepageV2/SynapseFeaturedDatasetItem.js.map +1 -1
  434. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.d.ts.map +1 -1
  435. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +2 -1
  436. package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js.map +1 -1
  437. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js +4 -4
  438. package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
  439. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js +1 -1
  440. package/dist/components/SynapseHomepageV2/SynapseTrendingProjectsItem.js.map +1 -1
  441. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
  442. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +4 -1
  443. package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
  444. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js +1 -1
  445. package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
  446. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
  447. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  448. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
  449. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
  450. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  451. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js +1 -1
  452. package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
  453. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
  454. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +12 -9
  455. package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
  456. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
  457. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
  458. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  459. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
  460. package/dist/components/SynapseTable/SqlEditor.js +7 -7
  461. package/dist/components/SynapseTable/SynapseTable.js +8 -8
  462. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  463. package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
  464. package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
  465. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  466. package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
  467. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  468. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  469. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
  470. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  471. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
  472. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  473. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
  474. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +6 -6
  475. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  476. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
  477. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
  478. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  479. package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
  480. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
  481. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
  482. package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
  483. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  484. package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
  485. package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
  486. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  487. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +2 -2
  488. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  489. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  490. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
  491. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
  492. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  493. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  494. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
  495. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  496. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +59 -59
  497. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  498. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.d.ts.map +1 -1
  499. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js +6 -4
  500. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormActions.js.map +1 -1
  501. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
  502. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  503. package/dist/components/TanStackTable/ColumnHeader.js +1 -1
  504. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  505. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
  506. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  507. package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
  508. package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
  509. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  510. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js +1 -1
  511. package/dist/components/TeamSubjectsSelector/TeamBadgeOrError.js.map +1 -1
  512. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.d.ts.map +1 -1
  513. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js +4 -3
  514. package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
  515. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  516. package/dist/components/TotalQueryResults.js +14 -14
  517. package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
  518. package/dist/components/Webhook/WebhookDashboard.js +3 -3
  519. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  520. package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
  521. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  522. package/dist/components/dataaccess/AccessRequirementTable.js +1 -1
  523. package/dist/components/dataaccess/AccessRequirementTable.js.map +1 -1
  524. package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -1
  525. package/dist/components/dataaccess/EDucTemplateTable.js +13 -11
  526. package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -1
  527. package/dist/components/dataaccess/FormTemplateTable.js +6 -6
  528. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -1
  529. package/dist/components/dataaccess/ReviewerDashboard.js +17 -17
  530. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  531. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +4 -4
  532. package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
  533. package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
  534. package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
  535. package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
  536. package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
  537. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  538. package/dist/components/download_list/DownloadDetails.d.ts.map +1 -1
  539. package/dist/components/download_list/DownloadDetails.js +12 -10
  540. package/dist/components/download_list/DownloadDetails.js.map +1 -1
  541. package/dist/components/entity/metadata/AnnotationsTable.js +1 -1
  542. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  543. package/dist/components/entity/page/CreatedByModifiedBy.js +1 -1
  544. package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
  545. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  546. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  547. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  548. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  549. package/dist/components/error/ErrorBanner.d.ts.map +1 -1
  550. package/dist/components/error/ErrorBanner.js +49 -46
  551. package/dist/components/error/ErrorBanner.js.map +1 -1
  552. package/dist/components/error/ErrorChip.d.ts.map +1 -1
  553. package/dist/components/error/ErrorChip.js +2 -1
  554. package/dist/components/error/ErrorChip.js.map +1 -1
  555. package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
  556. package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
  557. package/dist/components/row_renderers/Dataset.js +6 -6
  558. package/dist/components/row_renderers/Dataset.js.map +1 -1
  559. package/dist/components/row_renderers/Funder.js +1 -1
  560. package/dist/components/row_renderers/Funder.js.map +1 -1
  561. package/dist/components/table/CsvPreview/CreateTableFromCsvDialog.js +14 -14
  562. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js +4 -4
  563. package/dist/components/table/CsvPreview/CsvPreviewWithOptions.js.map +1 -1
  564. package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
  565. package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
  566. package/dist/components/widgets/ElementWithTooltip.js +22 -14
  567. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  568. package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
  569. package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
  570. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  571. package/dist/components/widgets/SynapseImage.js +1 -1
  572. package/dist/components/widgets/SynapseImage.js.map +1 -1
  573. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
  574. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  575. package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
  576. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  577. package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
  578. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
  579. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  580. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
  581. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  582. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
  583. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
  584. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  585. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
  586. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  587. package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
  588. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  589. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
  590. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
  591. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  592. package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
  593. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  594. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
  595. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
  596. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
  597. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
  598. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  599. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
  600. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
  601. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
  602. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  603. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
  604. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
  605. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
  606. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  607. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
  608. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
  609. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  610. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
  611. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
  612. package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
  613. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  614. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
  615. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
  616. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  617. package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
  618. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  619. package/dist/features/curator/dashboard/components/NextStepButton.js +7 -6
  620. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  621. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +8 -8
  622. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  623. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +4 -4
  624. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  625. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +4 -4
  626. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  627. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
  628. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  629. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +4 -4
  630. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -1
  631. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +1 -1
  632. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -1
  633. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +1 -1
  634. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -1
  635. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js +10 -10
  636. package/dist/features/entity/metadata-task/create-task/curationTaskFlowRoutes.js.map +1 -1
  637. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js +1 -1
  638. package/dist/features/team/invitation/components/OpenInvitationsToUserCard.js.map +1 -1
  639. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
  640. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
  641. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
  642. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
  643. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
  644. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
  645. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
  646. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
  647. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
  648. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
  649. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
  650. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
  651. package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
  652. package/dist/mocks/mockAnnotationColumns.js +1 -1
  653. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  654. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +17 -0
  655. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  656. package/dist/mocks/msw/handlers/aridhiaHandlers.js +62 -42
  657. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  658. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
  659. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  660. package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
  661. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  662. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
  663. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
  664. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
  665. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
  666. package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
  667. package/dist/mocks/msw/handlers/entityHandlers.js +70 -67
  668. package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
  669. package/dist/mocks/msw/handlers/gridHandlers.js +2 -2
  670. package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
  671. package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
  672. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  673. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  674. package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
  675. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  676. package/dist/mocks/msw/server.d.ts.map +1 -1
  677. package/dist/mocks/msw/server.js +4 -2
  678. package/dist/mocks/msw/server.js.map +1 -1
  679. package/dist/mocks/query/mockColumnCategoryTable.d.ts +19 -0
  680. package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
  681. package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
  682. package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
  683. package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
  684. package/dist/stories/ColorPaletteInspector.js +2 -2
  685. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  686. package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
  687. package/dist/style/main.css +1 -1
  688. package/dist/synapse-queries/auth/useOIDC.js +2 -2
  689. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  690. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
  691. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
  692. package/dist/synapse-queries/challenge/useChallenge.js +2 -2
  693. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  694. package/dist/synapse-queries/chat/useChat.js +8 -8
  695. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  696. package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
  697. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  698. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
  699. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  700. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
  701. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  702. package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
  703. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  704. package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
  705. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  706. package/dist/synapse-queries/download/index.js +2 -2
  707. package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
  708. package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
  709. package/dist/synapse-queries/download/useDownloadList.js +14 -13
  710. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  711. package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
  712. package/dist/synapse-queries/entity/useEntity.js +20 -20
  713. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  714. package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
  715. package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
  716. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  717. package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
  718. package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
  719. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  720. package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
  721. package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
  722. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  723. package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
  724. package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
  725. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  726. package/dist/synapse-queries/forum/useReply.js +6 -6
  727. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  728. package/dist/synapse-queries/forum/useThread.js +14 -14
  729. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  730. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  731. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  732. package/dist/synapse-queries/grid/useGridSession.js +4 -4
  733. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  734. package/dist/synapse-queries/index.js +177 -176
  735. package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
  736. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  737. package/dist/synapse-queries/portal/usePortal.js +7 -7
  738. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  739. package/dist/synapse-queries/subscription/useSubscription.js +4 -4
  740. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  741. package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
  742. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  743. package/dist/synapse-queries/team/useTeam.js +2 -2
  744. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  745. package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
  746. package/dist/synapse-queries/team/useTeamList.js +3 -3
  747. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  748. package/dist/synapse-queries/team/useTeamMembers.js +8 -8
  749. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  750. package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
  751. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  752. package/dist/synapse-queries/trash/useTrashCan.js +4 -4
  753. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  754. package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
  755. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  756. package/dist/synapse-queries/user/useFavorites.js +4 -4
  757. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  758. package/dist/synapse-queries/user/useGetUserChallenges.d.ts.map +1 -1
  759. package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
  760. package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
  761. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  762. package/dist/synapse-queries/wiki/useWiki.js +10 -10
  763. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  764. package/dist/theme/DefaultTheme.d.ts.map +1 -1
  765. package/dist/theme/DefaultTheme.js +4 -1
  766. package/dist/theme/DefaultTheme.js.map +1 -1
  767. package/dist/tsconfig.build.tsbuildinfo +1 -1
  768. package/dist/utils/APIConstants.d.ts.map +1 -1
  769. package/dist/utils/APIConstants.js.map +1 -1
  770. package/dist/utils/AppUtils/AppUtils.js +1 -1
  771. package/dist/utils/AppUtils/AppUtils.js.map +1 -1
  772. package/dist/utils/ContentTypeUtils.js +4 -4
  773. package/dist/utils/ContentTypeUtils.js.map +1 -1
  774. package/dist/utils/PermissionLevelToAccessType.js +1 -1
  775. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  776. package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
  777. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  778. package/dist/utils/context/DocumentMetadataContext.js +1 -1
  779. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  780. package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
  781. package/dist/utils/functions/AccessControlListUtils.js +3 -3
  782. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  783. package/dist/utils/functions/ArrayUtils.js +2 -2
  784. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  785. package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
  786. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  787. package/dist/utils/functions/FileHandleUtils.js +1 -1
  788. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  789. package/dist/utils/functions/RegularExpressions.js +1 -1
  790. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  791. package/dist/utils/functions/StringUtils.d.ts.map +1 -1
  792. package/dist/utils/functions/StringUtils.js +1 -2
  793. package/dist/utils/functions/StringUtils.js.map +1 -1
  794. package/dist/utils/functions/deepLinkingUtils.js +2 -2
  795. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  796. package/dist/utils/functions/enumerationFacet.d.ts +26 -0
  797. package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
  798. package/dist/utils/functions/enumerationFacet.js +27 -0
  799. package/dist/utils/functions/enumerationFacet.js.map +1 -0
  800. package/dist/utils/functions/facetCountUtils.d.ts +12 -0
  801. package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
  802. package/dist/utils/functions/facetCountUtils.js +9 -0
  803. package/dist/utils/functions/facetCountUtils.js.map +1 -0
  804. package/dist/utils/functions/getEndpoint.js.map +1 -1
  805. package/dist/utils/functions/getUserData.js +1 -1
  806. package/dist/utils/functions/getUserData.js.map +1 -1
  807. package/dist/utils/functions/queryUtils.d.ts +1 -1
  808. package/dist/utils/functions/queryUtils.d.ts.map +1 -1
  809. package/dist/utils/functions/queryUtils.js +26 -22
  810. package/dist/utils/functions/queryUtils.js.map +1 -1
  811. package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
  812. package/dist/utils/functions/testDownloadSpeed.js +17 -26
  813. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  814. package/dist/utils/functions/unCamelCase.js +1 -1
  815. package/dist/utils/functions/unCamelCase.js.map +1 -1
  816. package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
  817. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  818. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
  819. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  820. package/dist/utils/hooks/useLogin.d.ts.map +1 -1
  821. package/dist/utils/hooks/useLogin.js +5 -5
  822. package/dist/utils/hooks/useLogin.js.map +1 -1
  823. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  824. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
  825. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
  826. package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
  827. package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
  828. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
  829. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
  830. package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
  831. package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
  832. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
  833. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
  834. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
  835. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  836. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
  837. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
  838. package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
  839. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  840. package/dist/utils/jsonschema/submissionContext.js +2 -2
  841. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  842. package/package.json +7 -6
@@ -1 +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 &amp; 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"}
1
+ {"version":3,"file":"ReviewCollaboratorsAndSigningOfficialAccordion.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.tsx"],"sourcesContent":["import ExpandMore from '@mui/icons-material/ExpandMore'\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 &amp; 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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureStatusStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx"],"names":[],"mappings":"AAkCA,OAAO,EAEL,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAYlE,MAAM,MAAM,wBAAwB,GAAG;IACrC,2BAA2B,EAAE,4BAA4B,CAAA;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,sBAAsB,CAAA;IACnC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,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,2CA0P1E"}
1
+ {"version":3,"file":"SignatureStatusStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx"],"names":[],"mappings":"AAgCA,OAAO,EAEL,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAYlE,MAAM,MAAM,wBAAwB,GAAG;IACrC,2BAA2B,EAAE,4BAA4B,CAAA;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,sBAAsB,CAAA;IACnC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,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,2CA0P1E"}
@@ -12,8 +12,11 @@ import { Alert as u, Box as d, Button as f, DialogActions as p, DialogContent as
12
12
  import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
13
13
  import { FileHandleAssociateType as x } from "@sage-bionetworks/synapse-types";
14
14
  import { EDucSignerStatusStatusEnum as S } from "@sage-bionetworks/synapse-client";
15
- import { CheckCircleOutline as C, HourglassEmpty as w, OpenInNew as T, Refresh as E } from "@mui/icons-material";
16
- import D from "dayjs";
15
+ import C from "dayjs";
16
+ import w from "@mui/icons-material/OpenInNew";
17
+ import T from "@mui/icons-material/CheckCircleOutline";
18
+ import E from "@mui/icons-material/HourglassEmpty";
19
+ import D from "@mui/icons-material/Refresh";
17
20
  //#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx
18
21
  var O = {
19
22
  mx: 0,
@@ -24,7 +27,7 @@ var O = {
24
27
  color: "grey.700"
25
28
  };
26
29
  function k(e) {
27
- let { managedACTAccessRequirement: s, subjectId: S, subjectType: D, onHide: O, onBackClicked: k, onSubmissionCreated: A, viewDucHrefOverride: j } = e, { data: M, isLoading: ae } = r(String(s.id), {
30
+ let { managedACTAccessRequirement: s, subjectId: S, subjectType: C, onHide: O, onBackClicked: k, onSubmissionCreated: A, viewDucHrefOverride: j } = e, { data: M, isLoading: ae } = r(String(s.id), {
28
31
  staleTime: Infinity,
29
32
  throwOnError: !0
30
33
  }), N = M?.id ?? "", { data: P, isLoading: F, isRefetching: I, error: L, refetch: R } = te(N, { enabled: !!N }), z = P?.signerStatus ?? [], B = z.filter((e) => e.status === "done").length, V = z.length, H = V > 0 && B === V, U = z.filter((e) => e.status !== "done"), { data: W } = ne(N, { enabled: !!N && !H }), { data: G } = ee(N, { enabled: !!N && !j }), K = j ?? (G?.fileHandleId && N ? t.getPortalFileHandleServletUrl(G.fileHandleId, N, x.DataAccessRequestAttachment) : void 0), { data: q } = a(N, { enabled: !!N && H }), [J, Y] = l(), [X, Z] = l(), { mutateAsync: oe, isPending: se } = i({ onError: (e) => Y(e.reason) }), { mutate: ce, isPending: Q } = n({
@@ -42,7 +45,7 @@ function k(e) {
42
45
  requestId: e.id,
43
46
  requestEtag: e.etag,
44
47
  subjectId: S,
45
- subjectType: D
48
+ subjectType: C
46
49
  },
47
50
  accessRequirementId: String(s.id)
48
51
  });
@@ -102,7 +105,7 @@ function k(e) {
102
105
  mb: 1
103
106
  },
104
107
  children: [
105
- H ? /* @__PURE__ */ y(C, { color: "success" }) : /* @__PURE__ */ y(w, { sx: { color: "grey.700" } }),
108
+ H ? /* @__PURE__ */ y(T, { color: "success" }) : /* @__PURE__ */ y(E, { sx: { color: "grey.700" } }),
106
109
  /* @__PURE__ */ y(_, {
107
110
  variant: "body1",
108
111
  sx: { fontWeight: 700 },
@@ -118,7 +121,7 @@ function k(e) {
118
121
  alignItems: "center",
119
122
  gap: .5
120
123
  },
121
- children: ["View DUC", /* @__PURE__ */ y(T, { fontSize: "small" })]
124
+ children: ["View DUC", /* @__PURE__ */ y(w, { fontSize: "small" })]
122
125
  })
123
126
  ]
124
127
  }),
@@ -137,7 +140,7 @@ function k(e) {
137
140
  })] }),
138
141
  /* @__PURE__ */ y(f, {
139
142
  variant: "outlined",
140
- startIcon: /* @__PURE__ */ y(E, {}),
143
+ startIcon: /* @__PURE__ */ y(D, {}),
141
144
  loading: I,
142
145
  onClick: () => {
143
146
  R();
@@ -184,7 +187,7 @@ function k(e) {
184
187
  ] });
185
188
  }
186
189
  function A(e) {
187
- return !e.status || e.status === S.pending || e.status === S.done ? "" : e.status === S.declined && e.declinedOn ? ` (declined ${s(D(e.declinedOn))})` : ` (${e.status})`;
190
+ return !e.status || e.status === S.pending || e.status === S.done ? "" : e.status === S.declined && e.declinedOn ? ` (declined ${s(C(e.declinedOn))})` : ` (${e.status})`;
188
191
  }
189
192
  function ie(t) {
190
193
  let { signer: n } = t, r = n.name ?? "Unnamed signer";
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureStatusStep.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx"],"sourcesContent":["import {\n useGetDataAccessRequestForUpdate,\n useGetDataAccessRequestPreview,\n useGetDataAccessRequestSignatureStatus,\n useGetDataAccessRequestSignatureUpdatable,\n useGetDataAccessRequestSignedFileHandleId,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '@/synapse-queries'\nimport SynapseClient from '@/synapse-client'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport {\n CheckCircleOutline,\n HourglassEmpty,\n OpenInNew,\n Refresh,\n} from '@mui/icons-material'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n Link,\n Skeleton,\n Stack,\n SxProps,\n Typography,\n} from '@mui/material'\nimport {\n EDucSignerStatus,\n EDucSignerStatusStatusEnum,\n} from '@sage-bionetworks/synapse-client'\nimport {\n FileHandleAssociateType,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { useState } from 'react'\nimport { DialogBaseTitle } from '../../../DialogBase'\nimport { longFieldLabelSx } from '../styles'\nimport { RequestFlowAccessRequirement } from '../requestFlowTypes'\n\n/** Browser defaults indent a blockquote far too much for a nested list item. */\nconst declinedReasonSx: SxProps = {\n mx: 0,\n my: 0.5,\n pl: 1.5,\n borderLeft: '3px solid',\n borderColor: 'grey.300',\n color: 'grey.700',\n}\n\nexport type SignatureStatusStepProps = {\n managedACTAccessRequirement: RequestFlowAccessRequirement\n subjectId: string\n subjectType: RestrictableObjectType\n onHide: () => void\n /**\n * Called when the user clicks the Back button. When omitted, the Back button is hidden —\n * used when the step is reached via direct entry (e.g. a deep-link route) rather than\n * through the wizard flow, so there is no meaningful previous step to return to.\n */\n onBackClicked?: () => void\n onSubmissionCreated: (submissionId: string) => void\n /**\n * Optional href override for the \"View DUC\" link. When set, the preview file handle fetch\n * is skipped and this URL is used directly. Used by stories and tests where the portal\n * servlet is not available.\n */\n viewDucHrefOverride?: string\n}\n\n/**\n * Wizard step shown after the user has routed the eDUC for electronic signature\n * (PORTALS-4380). Polls the DocuSign envelope status, lists the pending signers,\n * and enables submission once every signer has signed.\n */\nexport default function SignatureStatusStep(props: SignatureStatusStepProps) {\n const {\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n onHide,\n onBackClicked,\n onSubmissionCreated,\n viewDucHrefOverride,\n } = props\n\n const { data: dataAccessRequest, isLoading: isLoadingDar } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n staleTime: Infinity,\n throwOnError: true,\n })\n\n const requestId = dataAccessRequest?.id ?? ''\n\n const {\n data: signatureStatus,\n isLoading: isLoadingStatus,\n isRefetching: isRefetchingStatus,\n error: statusError,\n refetch: refetchStatus,\n } = useGetDataAccessRequestSignatureStatus(requestId, {\n enabled: Boolean(requestId),\n })\n\n const signers: EDucSignerStatus[] = signatureStatus?.signerStatus ?? []\n const collectedCount = signers.filter(s => s.status === 'done').length\n const totalCount = signers.length\n const allCollected = totalCount > 0 && collectedCount === totalCount\n const outstandingSigners = signers.filter(s => s.status !== 'done')\n\n // Whether going Back could still deliver edits to this envelope is the server's call -- it knows\n // every state DocuSign will refuse to correct. Only the copy below depends on it, so a stale or\n // failed answer simply withholds the guidance rather than blocking the step.\n const { data: isEnvelopeUpdatable } =\n useGetDataAccessRequestSignatureUpdatable(requestId, {\n enabled: Boolean(requestId) && !allCollected,\n })\n\n const { data: previewFileHandle } = useGetDataAccessRequestPreview(\n requestId,\n { enabled: Boolean(requestId) && !viewDucHrefOverride },\n )\n const viewDucHref =\n viewDucHrefOverride ??\n (previewFileHandle?.fileHandleId && requestId\n ? SynapseClient.getPortalFileHandleServletUrl(\n previewFileHandle.fileHandleId,\n requestId,\n FileHandleAssociateType.DataAccessRequestAttachment,\n )\n : undefined)\n\n const { data: signedFileHandle } = useGetDataAccessRequestSignedFileHandleId(\n requestId,\n { enabled: Boolean(requestId) && allCollected },\n )\n\n const [updateDarError, setUpdateDarError] = useState<string | undefined>()\n const [submitDarError, setSubmitDarError] = useState<string | undefined>()\n\n const { mutateAsync: updateDarAsync, isPending: isUpdating } =\n useUpdateDataAccessRequest({\n onError: e => setUpdateDarError(e.reason),\n })\n\n const { mutate: submit, isPending: isSubmitting } =\n useSubmitDataAccessRequest({\n onSuccess: submission => onSubmissionCreated(submission.submissionId),\n onError: e => setSubmitDarError(e.reason),\n })\n\n const isSubmitDisabled =\n isLoadingDar ||\n isLoadingStatus ||\n isRefetchingStatus ||\n !dataAccessRequest ||\n !allCollected ||\n !signedFileHandle?.fileHandleId ||\n isUpdating ||\n isSubmitting\n\n const handleSubmit = async () => {\n if (!dataAccessRequest || !signedFileHandle?.fileHandleId) return\n setUpdateDarError(undefined)\n setSubmitDarError(undefined)\n const updated = await updateDarAsync({\n ...dataAccessRequest,\n ducFileHandleId: signedFileHandle.fileHandleId,\n }).catch(() => null)\n if (!updated) return\n submit({\n request: {\n requestId: updated.id,\n requestEtag: updated.etag,\n subjectId,\n subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n\n return (\n <>\n <DialogBaseTitle title={'Request Access'} onCancel={onHide} />\n <DialogContent>\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 Your DUC has been emailed to your Collaborators. Once all signatures\n (including the Signing Official) have been collected, you can submit\n the Data Access Request.\n </Typography>\n {/* Editing is only worth offering while signatures are still outstanding -- once every\n signer is done the user should simply submit. Withheld until both the status and the\n precheck resolve, so the copy neither appears and then vanishes nor promises that\n existing signatures carry over when the server has already ruled that out. */}\n {onBackClicked &&\n signatureStatus &&\n !allCollected &&\n isEnvelopeUpdatable && (\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 3 }}>\n You can update the list of Collaborators by pressing{' '}\n <strong>Back</strong>. Your changes will be applied to this\n signature request, so anyone who has already signed will not need\n to sign again.\n </Typography>\n )}\n\n {isLoadingStatus && (\n <Skeleton\n variant={'rectangular'}\n width={'100%'}\n height={120}\n data-testid={'SignatureStatusStep-loading'}\n />\n )}\n\n {statusError && (\n <Alert severity={'error'}>\n <strong>\n Sorry, we couldn&apos;t load the current signature status.\n </strong>\n <br />\n {statusError.reason}\n </Alert>\n )}\n\n {!isLoadingStatus && !statusError && signatureStatus && (\n <>\n <Stack\n direction={'row'}\n sx={{ alignItems: 'center', gap: 1, mb: 1 }}\n >\n {allCollected ? (\n <CheckCircleOutline color={'success'} />\n ) : (\n <HourglassEmpty sx={{ color: 'grey.700' }} />\n )}\n <Typography variant={'body1'} sx={{ fontWeight: 700 }}>\n {allCollected\n ? 'All signatures collected.'\n : `${collectedCount} out of ${totalCount} signatures collected.`}\n </Typography>\n <Box sx={{ flexGrow: 1 }} />\n {viewDucHref && (\n <Link\n href={viewDucHref}\n target={'_blank'}\n rel={'noopener'}\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n View DUC\n <OpenInNew fontSize={'small'} />\n </Link>\n )}\n </Stack>\n\n {outstandingSigners.length > 0 && (\n <>\n <Typography variant={'body1'} sx={{ mb: 1 }}>\n You&apos;re still waiting for signatures from\n </Typography>\n <Box component={'ul'} sx={{ mt: 0, mb: 2, pl: 3 }}>\n {outstandingSigners.map((signer, index) => (\n <li key={signer.userId ?? `${signer.name}-${index}`}>\n <SignerLine signer={signer} />\n </li>\n ))}\n </Box>\n </>\n )}\n\n <Button\n variant={'outlined'}\n startIcon={<Refresh />}\n loading={isRefetchingStatus}\n onClick={() => {\n refetchStatus()\n }}\n >\n Refresh\n </Button>\n </>\n )}\n\n {updateDarError && (\n <Alert severity={'error'} sx={{ mt: 2 }}>\n <strong>Sorry, we couldn&apos;t save your change.</strong>\n <br />\n {updateDarError}\n </Alert>\n )}\n {submitDarError && (\n <Alert severity={'error'} sx={{ mt: 2 }}>\n <strong>Sorry, we couldn&apos;t submit your request.</strong>\n <br />\n {submitDarError}\n </Alert>\n )}\n </DialogContent>\n <DialogActions>\n {onBackClicked && (\n <Button variant={'outlined'} onClick={onBackClicked}>\n Back\n </Button>\n )}\n <Box sx={{ flexGrow: 1 }} />\n <Button\n variant={'contained'}\n disabled={isSubmitDisabled}\n loading={isSubmitting}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </>\n )\n}\n\n/**\n * Only surface non-pending problem states inline; pending is implied by the section header. A\n * decline carries a timestamp, which folds into the label so the row doesn't read \"(declined)\"\n * and then repeat itself underneath.\n */\nfunction getSignerStatusLabel(signer: EDucSignerStatus): string {\n if (\n !signer.status ||\n signer.status === EDucSignerStatusStatusEnum.pending ||\n signer.status === EDucSignerStatusStatusEnum.done\n ) {\n return ''\n }\n if (\n signer.status === EDucSignerStatusStatusEnum.declined &&\n signer.declinedOn\n ) {\n return ` (declined ${formatDate(dayjs(signer.declinedOn))})`\n }\n return ` (${signer.status})`\n}\n\nfunction SignerLine(props: { signer: EDucSignerStatus }) {\n const { signer } = props\n const displayName = signer.name ?? 'Unnamed signer'\n const nameNode = signer.userId ? (\n <Link\n href={`${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Profile:${signer.userId}`}\n target={'_blank'}\n rel={'noopener'}\n >\n {displayName}\n </Link>\n ) : (\n <>{displayName}</>\n )\n return (\n <>\n <Typography variant={'body1'} component={'span'}>\n {nameNode}\n {getSignerStatusLabel(signer)}\n </Typography>\n {/* The reason is the signer's own words, so it is quoted rather than restated as UI copy. */}\n {signer.declinedReason && (\n <Typography\n variant={'body1'}\n component={'blockquote'}\n sx={declinedReasonSx}\n >\n {signer.declinedReason}\n </Typography>\n )}\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SignatureStatusStep.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.tsx"],"sourcesContent":["import {\n useGetDataAccessRequestForUpdate,\n useGetDataAccessRequestPreview,\n useGetDataAccessRequestSignatureStatus,\n useGetDataAccessRequestSignatureUpdatable,\n useGetDataAccessRequestSignedFileHandleId,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '@/synapse-queries'\nimport SynapseClient from '@/synapse-client'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport { PRODUCTION_ENDPOINT_CONFIG } from '@/utils/functions/getEndpoint'\nimport CheckCircleOutline from '@mui/icons-material/CheckCircleOutline'\nimport HourglassEmpty from '@mui/icons-material/HourglassEmpty'\nimport OpenInNew from '@mui/icons-material/OpenInNew'\nimport Refresh from '@mui/icons-material/Refresh'\nimport {\n Alert,\n Box,\n Button,\n DialogActions,\n DialogContent,\n Link,\n Skeleton,\n Stack,\n SxProps,\n Typography,\n} from '@mui/material'\nimport {\n EDucSignerStatus,\n EDucSignerStatusStatusEnum,\n} from '@sage-bionetworks/synapse-client'\nimport {\n FileHandleAssociateType,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { useState } from 'react'\nimport { DialogBaseTitle } from '../../../DialogBase'\nimport { longFieldLabelSx } from '../styles'\nimport { RequestFlowAccessRequirement } from '../requestFlowTypes'\n\n/** Browser defaults indent a blockquote far too much for a nested list item. */\nconst declinedReasonSx: SxProps = {\n mx: 0,\n my: 0.5,\n pl: 1.5,\n borderLeft: '3px solid',\n borderColor: 'grey.300',\n color: 'grey.700',\n}\n\nexport type SignatureStatusStepProps = {\n managedACTAccessRequirement: RequestFlowAccessRequirement\n subjectId: string\n subjectType: RestrictableObjectType\n onHide: () => void\n /**\n * Called when the user clicks the Back button. When omitted, the Back button is hidden —\n * used when the step is reached via direct entry (e.g. a deep-link route) rather than\n * through the wizard flow, so there is no meaningful previous step to return to.\n */\n onBackClicked?: () => void\n onSubmissionCreated: (submissionId: string) => void\n /**\n * Optional href override for the \"View DUC\" link. When set, the preview file handle fetch\n * is skipped and this URL is used directly. Used by stories and tests where the portal\n * servlet is not available.\n */\n viewDucHrefOverride?: string\n}\n\n/**\n * Wizard step shown after the user has routed the eDUC for electronic signature\n * (PORTALS-4380). Polls the DocuSign envelope status, lists the pending signers,\n * and enables submission once every signer has signed.\n */\nexport default function SignatureStatusStep(props: SignatureStatusStepProps) {\n const {\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n onHide,\n onBackClicked,\n onSubmissionCreated,\n viewDucHrefOverride,\n } = props\n\n const { data: dataAccessRequest, isLoading: isLoadingDar } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n staleTime: Infinity,\n throwOnError: true,\n })\n\n const requestId = dataAccessRequest?.id ?? ''\n\n const {\n data: signatureStatus,\n isLoading: isLoadingStatus,\n isRefetching: isRefetchingStatus,\n error: statusError,\n refetch: refetchStatus,\n } = useGetDataAccessRequestSignatureStatus(requestId, {\n enabled: Boolean(requestId),\n })\n\n const signers: EDucSignerStatus[] = signatureStatus?.signerStatus ?? []\n const collectedCount = signers.filter(s => s.status === 'done').length\n const totalCount = signers.length\n const allCollected = totalCount > 0 && collectedCount === totalCount\n const outstandingSigners = signers.filter(s => s.status !== 'done')\n\n // Whether going Back could still deliver edits to this envelope is the server's call -- it knows\n // every state DocuSign will refuse to correct. Only the copy below depends on it, so a stale or\n // failed answer simply withholds the guidance rather than blocking the step.\n const { data: isEnvelopeUpdatable } =\n useGetDataAccessRequestSignatureUpdatable(requestId, {\n enabled: Boolean(requestId) && !allCollected,\n })\n\n const { data: previewFileHandle } = useGetDataAccessRequestPreview(\n requestId,\n { enabled: Boolean(requestId) && !viewDucHrefOverride },\n )\n const viewDucHref =\n viewDucHrefOverride ??\n (previewFileHandle?.fileHandleId && requestId\n ? SynapseClient.getPortalFileHandleServletUrl(\n previewFileHandle.fileHandleId,\n requestId,\n FileHandleAssociateType.DataAccessRequestAttachment,\n )\n : undefined)\n\n const { data: signedFileHandle } = useGetDataAccessRequestSignedFileHandleId(\n requestId,\n { enabled: Boolean(requestId) && allCollected },\n )\n\n const [updateDarError, setUpdateDarError] = useState<string | undefined>()\n const [submitDarError, setSubmitDarError] = useState<string | undefined>()\n\n const { mutateAsync: updateDarAsync, isPending: isUpdating } =\n useUpdateDataAccessRequest({\n onError: e => setUpdateDarError(e.reason),\n })\n\n const { mutate: submit, isPending: isSubmitting } =\n useSubmitDataAccessRequest({\n onSuccess: submission => onSubmissionCreated(submission.submissionId),\n onError: e => setSubmitDarError(e.reason),\n })\n\n const isSubmitDisabled =\n isLoadingDar ||\n isLoadingStatus ||\n isRefetchingStatus ||\n !dataAccessRequest ||\n !allCollected ||\n !signedFileHandle?.fileHandleId ||\n isUpdating ||\n isSubmitting\n\n const handleSubmit = async () => {\n if (!dataAccessRequest || !signedFileHandle?.fileHandleId) return\n setUpdateDarError(undefined)\n setSubmitDarError(undefined)\n const updated = await updateDarAsync({\n ...dataAccessRequest,\n ducFileHandleId: signedFileHandle.fileHandleId,\n }).catch(() => null)\n if (!updated) return\n submit({\n request: {\n requestId: updated.id,\n requestEtag: updated.etag,\n subjectId,\n subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n\n return (\n <>\n <DialogBaseTitle title={'Request Access'} onCancel={onHide} />\n <DialogContent>\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 Your DUC has been emailed to your Collaborators. Once all signatures\n (including the Signing Official) have been collected, you can submit\n the Data Access Request.\n </Typography>\n {/* Editing is only worth offering while signatures are still outstanding -- once every\n signer is done the user should simply submit. Withheld until both the status and the\n precheck resolve, so the copy neither appears and then vanishes nor promises that\n existing signatures carry over when the server has already ruled that out. */}\n {onBackClicked &&\n signatureStatus &&\n !allCollected &&\n isEnvelopeUpdatable && (\n <Typography variant={'body1'} sx={{ ...longFieldLabelSx, mb: 3 }}>\n You can update the list of Collaborators by pressing{' '}\n <strong>Back</strong>. Your changes will be applied to this\n signature request, so anyone who has already signed will not need\n to sign again.\n </Typography>\n )}\n\n {isLoadingStatus && (\n <Skeleton\n variant={'rectangular'}\n width={'100%'}\n height={120}\n data-testid={'SignatureStatusStep-loading'}\n />\n )}\n\n {statusError && (\n <Alert severity={'error'}>\n <strong>\n Sorry, we couldn&apos;t load the current signature status.\n </strong>\n <br />\n {statusError.reason}\n </Alert>\n )}\n\n {!isLoadingStatus && !statusError && signatureStatus && (\n <>\n <Stack\n direction={'row'}\n sx={{ alignItems: 'center', gap: 1, mb: 1 }}\n >\n {allCollected ? (\n <CheckCircleOutline color={'success'} />\n ) : (\n <HourglassEmpty sx={{ color: 'grey.700' }} />\n )}\n <Typography variant={'body1'} sx={{ fontWeight: 700 }}>\n {allCollected\n ? 'All signatures collected.'\n : `${collectedCount} out of ${totalCount} signatures collected.`}\n </Typography>\n <Box sx={{ flexGrow: 1 }} />\n {viewDucHref && (\n <Link\n href={viewDucHref}\n target={'_blank'}\n rel={'noopener'}\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n View DUC\n <OpenInNew fontSize={'small'} />\n </Link>\n )}\n </Stack>\n\n {outstandingSigners.length > 0 && (\n <>\n <Typography variant={'body1'} sx={{ mb: 1 }}>\n You&apos;re still waiting for signatures from\n </Typography>\n <Box component={'ul'} sx={{ mt: 0, mb: 2, pl: 3 }}>\n {outstandingSigners.map((signer, index) => (\n <li key={signer.userId ?? `${signer.name}-${index}`}>\n <SignerLine signer={signer} />\n </li>\n ))}\n </Box>\n </>\n )}\n\n <Button\n variant={'outlined'}\n startIcon={<Refresh />}\n loading={isRefetchingStatus}\n onClick={() => {\n refetchStatus()\n }}\n >\n Refresh\n </Button>\n </>\n )}\n\n {updateDarError && (\n <Alert severity={'error'} sx={{ mt: 2 }}>\n <strong>Sorry, we couldn&apos;t save your change.</strong>\n <br />\n {updateDarError}\n </Alert>\n )}\n {submitDarError && (\n <Alert severity={'error'} sx={{ mt: 2 }}>\n <strong>Sorry, we couldn&apos;t submit your request.</strong>\n <br />\n {submitDarError}\n </Alert>\n )}\n </DialogContent>\n <DialogActions>\n {onBackClicked && (\n <Button variant={'outlined'} onClick={onBackClicked}>\n Back\n </Button>\n )}\n <Box sx={{ flexGrow: 1 }} />\n <Button\n variant={'contained'}\n disabled={isSubmitDisabled}\n loading={isSubmitting}\n onClick={() => {\n handleSubmit()\n }}\n >\n Submit\n </Button>\n </DialogActions>\n </>\n )\n}\n\n/**\n * Only surface non-pending problem states inline; pending is implied by the section header. A\n * decline carries a timestamp, which folds into the label so the row doesn't read \"(declined)\"\n * and then repeat itself underneath.\n */\nfunction getSignerStatusLabel(signer: EDucSignerStatus): string {\n if (\n !signer.status ||\n signer.status === EDucSignerStatusStatusEnum.pending ||\n signer.status === EDucSignerStatusStatusEnum.done\n ) {\n return ''\n }\n if (\n signer.status === EDucSignerStatusStatusEnum.declined &&\n signer.declinedOn\n ) {\n return ` (declined ${formatDate(dayjs(signer.declinedOn))})`\n }\n return ` (${signer.status})`\n}\n\nfunction SignerLine(props: { signer: EDucSignerStatus }) {\n const { signer } = props\n const displayName = signer.name ?? 'Unnamed signer'\n const nameNode = signer.userId ? (\n <Link\n href={`${PRODUCTION_ENDPOINT_CONFIG.PORTAL}Profile:${signer.userId}`}\n target={'_blank'}\n rel={'noopener'}\n >\n {displayName}\n </Link>\n ) : (\n <>{displayName}</>\n )\n return (\n <>\n <Typography variant={'body1'} component={'span'}>\n {nameNode}\n {getSignerStatusLabel(signer)}\n </Typography>\n {/* The reason is the signer's own words, so it is quoted rather than restated as UI copy. */}\n {signer.declinedReason && (\n <Typography\n variant={'body1'}\n component={'blockquote'}\n sx={declinedReasonSx}\n >\n {signer.declinedReason}\n </Typography>\n )}\n </>\n )\n}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { CreateAccessTokenModal as a } from "./CreateAccessTokenModal.js";
6
6
  import { useState as o } from "react";
7
7
  import { Box as s, Button as c, Typography as l } from "@mui/material";
8
8
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
- import { AddCircleTwoTone as f } from "@mui/icons-material";
9
+ import f from "@mui/icons-material/AddCircleTwoTone";
10
10
  //#region src/components/AccessTokenPage/AccessTokenPage.tsx
11
11
  function p({ title: p, body: m }) {
12
12
  let [h, g] = o(!1), { data: _, isLoading: v, error: y, fetchNextPage: b, hasNextPage: x } = r(), S = _?.pages.flatMap((e) => e.results) ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"AccessTokenPage.js","names":[],"sources":["../../../src/components/AccessTokenPage/AccessTokenPage.tsx"],"sourcesContent":["import { useGetPersonalAccessTokensInfinite } from '@/synapse-queries/user/usePersonalAccessToken'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { Box, Button, Typography } from '@mui/material'\nimport { ReactNode, useState } from 'react'\nimport { ErrorBanner, SynapseErrorBoundary } from '../error/ErrorBanner'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { AccessTokenCard } from './AccessTokenCard/AccessTokenCard'\nimport { CreateAccessTokenModal } from './CreateAccessTokenModal'\n\nexport type AccessTokenPageProps = {\n title: string\n body: ReactNode\n}\n\nexport function AccessTokenPage({ title, body }: AccessTokenPageProps) {\n const [showCreateTokenModal, setShowCreateTokenModal] = useState(false)\n\n const {\n data: infiniteData,\n isLoading,\n error,\n fetchNextPage,\n hasNextPage,\n } = useGetPersonalAccessTokensInfinite()\n\n const tokenRecords = infiniteData?.pages.flatMap(page => page.results) ?? []\n\n return (\n <div>\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n justifyContent: 'space-between',\n flexDirection: { xs: 'column', md: 'row' },\n }}\n >\n <Box\n sx={{\n flexGrow: 1,\n }}\n >\n <h1>{title}</h1>\n {body}\n </Box>\n <Box\n sx={theme => ({\n flexShrink: 0,\n alignSelf: 'end',\n [theme.breakpoints.down('md')]: { width: '100%' },\n })}\n >\n <Button\n sx={theme => ({\n [theme.breakpoints.down('md')]: { width: '100%' },\n })}\n variant=\"contained\"\n color=\"primary\"\n onClick={() => setShowCreateTokenModal(true)}\n startIcon={<AddCircleTwoTone />}\n >\n Create New Token\n </Button>\n </Box>\n </Box>\n <SynapseErrorBoundary>\n {showCreateTokenModal && (\n <CreateAccessTokenModal\n onClose={() => setShowCreateTokenModal(false)}\n />\n )}\n\n <div>\n {!isLoading && !error && tokenRecords.length === 0 && (\n <Typography\n variant={'headline2'}\n sx={{\n m: 5,\n textAlign: 'center',\n }}\n >\n You currently have no personal access tokens.\n </Typography>\n )}\n <Box\n sx={{\n maxWidth: '800px',\n mx: 'auto',\n my: 2.5,\n }}\n >\n {tokenRecords.map(accessToken => {\n return (\n <AccessTokenCard\n key={accessToken.id}\n accessToken={accessToken}\n />\n )\n })}\n {isLoading && loadingScreen}\n {!isLoading && hasNextPage && !error && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n fetchNextPage()\n }}\n >\n Load More\n </Button>\n </Box>\n )}\n </Box>\n {error && <ErrorBanner error={error}></ErrorBanner>}\n </div>\n </SynapseErrorBoundary>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,EAAgB,EAAE,UAAO,WAA8B;CACrE,IAAM,CAAC,GAAsB,KAA2B,EAAS,EAAK,GAEhE,EACJ,MAAM,GACN,cACA,UACA,kBACA,mBACE,EAAmC,GAEjC,IAAe,GAAc,MAAM,SAAQ,MAAQ,EAAK,OAAO,KAAK,CAAC;CAE3E,OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,gBAAgB;GAChB,eAAe;IAAE,IAAI;IAAU,IAAI;GAAM;EAC3C;YANF,CAQE,kBAAC,GAAD;GACE,IAAI,EACF,UAAU,EACZ;aAHF,CAKE,kBAAC,MAAD,EAAA,UAAK,EAAU,CAAA,GACd,CACE;MACL,kBAAC,GAAD;GACE,KAAI,OAAU;IACZ,YAAY;IACZ,WAAW;KACV,EAAM,YAAY,KAAK,IAAI,IAAI,EAAE,OAAO,OAAO;GAClD;aAEA,kBAAC,GAAD;IACE,KAAI,OAAU,GACX,EAAM,YAAY,KAAK,IAAI,IAAI,EAAE,OAAO,OAAO,EAClD;IACA,SAAQ;IACR,OAAM;IACN,eAAe,EAAwB,EAAI;IAC3C,WAAW,kBAAC,GAAD,CAAmB,CAAA;cAC/B;GAEO,CAAA;EACL,CAAA,CACF;KACL,kBAAC,GAAD,EAAA,UAAA,CACG,KACC,kBAAC,GAAD,EACE,eAAe,EAAwB,EAAK,EAC7C,CAAA,GAGH,kBAAC,OAAD,EAAA,UAAA;EACG,CAAC,KAAa,CAAC,KAAS,EAAa,WAAW,KAC/C,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,GAAG;IACH,WAAW;GACb;aACD;EAEW,CAAA;EAEd,kBAAC,GAAD;GACE,IAAI;IACF,UAAU;IACV,IAAI;IACJ,IAAI;GACN;aALF;IAOG,EAAa,KAAI,MAEd,kBAAC,GAAD,EAEe,eACd,GAFM,EAAY,EAElB,CAEJ;IACA,KAAa;IACb,CAAC,KAAa,KAAe,CAAC,KAC7B,kBAAC,GAAD;KACE,IAAI;MACF,SAAS;MACT,gBAAgB;KAClB;eAEA,kBAAC,GAAD;MACE,SAAQ;MACR,OAAM;MACN,eAAe;OACb,EAAc;MAChB;gBACD;KAEO,CAAA;IACL,CAAA;GAEJ;;EACJ,KAAS,kBAAC,GAAD,EAAoB,SAAoB,CAAA;CAC/C,EAAA,CAAA,CACe,EAAA,CAAA,CACnB,EAAA,CAAA;AAET"}
1
+ {"version":3,"file":"AccessTokenPage.js","names":[],"sources":["../../../src/components/AccessTokenPage/AccessTokenPage.tsx"],"sourcesContent":["import { useGetPersonalAccessTokensInfinite } from '@/synapse-queries/user/usePersonalAccessToken'\nimport AddCircleTwoTone from '@mui/icons-material/AddCircleTwoTone'\nimport { Box, Button, Typography } from '@mui/material'\nimport { ReactNode, useState } from 'react'\nimport { ErrorBanner, SynapseErrorBoundary } from '../error/ErrorBanner'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport { AccessTokenCard } from './AccessTokenCard/AccessTokenCard'\nimport { CreateAccessTokenModal } from './CreateAccessTokenModal'\n\nexport type AccessTokenPageProps = {\n title: string\n body: ReactNode\n}\n\nexport function AccessTokenPage({ title, body }: AccessTokenPageProps) {\n const [showCreateTokenModal, setShowCreateTokenModal] = useState(false)\n\n const {\n data: infiniteData,\n isLoading,\n error,\n fetchNextPage,\n hasNextPage,\n } = useGetPersonalAccessTokensInfinite()\n\n const tokenRecords = infiniteData?.pages.flatMap(page => page.results) ?? []\n\n return (\n <div>\n <Box\n sx={{\n display: 'flex',\n gap: 2,\n justifyContent: 'space-between',\n flexDirection: { xs: 'column', md: 'row' },\n }}\n >\n <Box\n sx={{\n flexGrow: 1,\n }}\n >\n <h1>{title}</h1>\n {body}\n </Box>\n <Box\n sx={theme => ({\n flexShrink: 0,\n alignSelf: 'end',\n [theme.breakpoints.down('md')]: { width: '100%' },\n })}\n >\n <Button\n sx={theme => ({\n [theme.breakpoints.down('md')]: { width: '100%' },\n })}\n variant=\"contained\"\n color=\"primary\"\n onClick={() => setShowCreateTokenModal(true)}\n startIcon={<AddCircleTwoTone />}\n >\n Create New Token\n </Button>\n </Box>\n </Box>\n <SynapseErrorBoundary>\n {showCreateTokenModal && (\n <CreateAccessTokenModal\n onClose={() => setShowCreateTokenModal(false)}\n />\n )}\n\n <div>\n {!isLoading && !error && tokenRecords.length === 0 && (\n <Typography\n variant={'headline2'}\n sx={{\n m: 5,\n textAlign: 'center',\n }}\n >\n You currently have no personal access tokens.\n </Typography>\n )}\n <Box\n sx={{\n maxWidth: '800px',\n mx: 'auto',\n my: 2.5,\n }}\n >\n {tokenRecords.map(accessToken => {\n return (\n <AccessTokenCard\n key={accessToken.id}\n accessToken={accessToken}\n />\n )\n })}\n {isLoading && loadingScreen}\n {!isLoading && hasNextPage && !error && (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n fetchNextPage()\n }}\n >\n Load More\n </Button>\n </Box>\n )}\n </Box>\n {error && <ErrorBanner error={error}></ErrorBanner>}\n </div>\n </SynapseErrorBoundary>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,EAAgB,EAAE,UAAO,WAA8B;CACrE,IAAM,CAAC,GAAsB,KAA2B,EAAS,EAAK,GAEhE,EACJ,MAAM,GACN,cACA,UACA,kBACA,mBACE,EAAmC,GAEjC,IAAe,GAAc,MAAM,SAAQ,MAAQ,EAAK,OAAO,KAAK,CAAC;CAE3E,OACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,gBAAgB;GAChB,eAAe;IAAE,IAAI;IAAU,IAAI;GAAM;EAC3C;YANF,CAQE,kBAAC,GAAD;GACE,IAAI,EACF,UAAU,EACZ;aAHF,CAKE,kBAAC,MAAD,EAAA,UAAK,EAAU,CAAA,GACd,CACE;MACL,kBAAC,GAAD;GACE,KAAI,OAAU;IACZ,YAAY;IACZ,WAAW;KACV,EAAM,YAAY,KAAK,IAAI,IAAI,EAAE,OAAO,OAAO;GAClD;aAEA,kBAAC,GAAD;IACE,KAAI,OAAU,GACX,EAAM,YAAY,KAAK,IAAI,IAAI,EAAE,OAAO,OAAO,EAClD;IACA,SAAQ;IACR,OAAM;IACN,eAAe,EAAwB,EAAI;IAC3C,WAAW,kBAAC,GAAD,CAAmB,CAAA;cAC/B;GAEO,CAAA;EACL,CAAA,CACF;KACL,kBAAC,GAAD,EAAA,UAAA,CACG,KACC,kBAAC,GAAD,EACE,eAAe,EAAwB,EAAK,EAC7C,CAAA,GAGH,kBAAC,OAAD,EAAA,UAAA;EACG,CAAC,KAAa,CAAC,KAAS,EAAa,WAAW,KAC/C,kBAAC,GAAD;GACE,SAAS;GACT,IAAI;IACF,GAAG;IACH,WAAW;GACb;aACD;EAEW,CAAA;EAEd,kBAAC,GAAD;GACE,IAAI;IACF,UAAU;IACV,IAAI;IACJ,IAAI;GACN;aALF;IAOG,EAAa,KAAI,MAEd,kBAAC,GAAD,EAEe,eACd,GAFM,EAAY,EAElB,CAEJ;IACA,KAAa;IACb,CAAC,KAAa,KAAe,CAAC,KAC7B,kBAAC,GAAD;KACE,IAAI;MACF,SAAS;MACT,gBAAgB;KAClB;eAEA,kBAAC,GAAD;MACE,SAAQ;MACR,OAAM;MACN,eAAe;OACb,EAAc;MAChB;gBACD;KAEO,CAAA;IACL,CAAA;GAEJ;;EACJ,KAAS,kBAAC,GAAD,EAAoB,SAAoB,CAAA;CAC/C,EAAA,CAAA,CACe,EAAA,CAAA,CACnB,EAAA,CAAA;AAET"}
@@ -14,7 +14,7 @@ var g = "You must provide a token name and at least one permission.";
14
14
  function _(_) {
15
15
  let { onClose: v = s, onCreate: y = s } = _, [b, x] = o(""), [S, C] = o(!0), [w, T] = o(!1), [E, D] = o(!1), [O, k] = o(null), { mutate: A, isPending: j, error: M, data: N } = r(), P = (e) => {
16
16
  x(e.target.value);
17
- }, F = (e, t) => !!e && t.some((e) => e), I = () => {
17
+ }, F = (e, t) => !!e && t.some(Boolean), I = () => {
18
18
  if (F(b, [
19
19
  S,
20
20
  w,
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAccessTokenModal.js","names":[],"sources":["../../../src/components/AccessTokenPage/CreateAccessTokenModal.tsx"],"sourcesContent":["import { useCreatePersonalAccessToken } from '@/synapse-queries/user/usePersonalAccessToken'\nimport { Checkbox, FormControlLabel, Stack, Typography } from '@mui/material'\nimport {\n AccessTokenGenerationRequest,\n scopeDescriptions,\n} from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { ChangeEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { CopyToClipboardInput } from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport TextField from '../TextField/TextField'\n\nconst INVALID_INPUT_MSG =\n 'You must provide a token name and at least one permission.'\n\nexport type CreateAccessTokenModalProps = {\n onClose?: () => void\n onCreate?: () => void\n}\n\nexport function CreateAccessTokenModal(props: CreateAccessTokenModalProps) {\n const { onClose = noop, onCreate = noop } = props\n const [tokenName, setTokenName] = useState('')\n const [viewAccess, setViewAccess] = useState(true)\n const [downloadAccess, setDownloadAccess] = useState(false)\n const [modifyAccess, setModifyAccess] = useState(false)\n\n const [validationError, setValidationError] = useState<string | null>(null)\n\n const {\n mutate,\n isPending: createIsPending,\n error: mutationError,\n data: createdTokenResponse,\n } = useCreatePersonalAccessToken()\n\n const handleTokenNameChange = (event: ChangeEvent) => {\n setTokenName((event.target as HTMLInputElement).value)\n }\n\n const validateInput = (tokenName: string, access: boolean[]): boolean => {\n return !!tokenName && access.some(x => x)\n }\n\n const onSubmit = () => {\n if (validateInput(tokenName, [viewAccess, downloadAccess, modifyAccess])) {\n setValidationError(null)\n\n const request: AccessTokenGenerationRequest = {\n scope: [],\n name: tokenName,\n }\n if (viewAccess) request.scope.push('view')\n if (downloadAccess) request.scope.push('download')\n if (modifyAccess) request.scope.push('modify')\n\n mutate(request)\n\n onCreate()\n } else {\n setValidationError(INVALID_INPUT_MSG)\n }\n }\n\n const dialogContent = createdTokenResponse ? (\n <>\n <Typography variant={'body1'}>\n <Typography\n variant={'body1'}\n component={'span'}\n sx={{\n fontWeight: 700,\n }}\n >\n This token will not be able to be retrieved again.\n </Typography>{' '}\n If needed, generate a new personal access token, and delete this one.\n </Typography>\n <div>\n <CopyToClipboardInput\n value={createdTokenResponse.token}\n inputWidth={'350px'}\n />\n </div>\n <Typography variant={'body1'}>\n This token grants access to your account functions and should be treated\n like a password.\n </Typography>\n </>\n ) : (\n <Stack gap={2}>\n <TextField\n autoFocus\n label=\"Token Name\"\n value={tokenName}\n onChange={handleTokenNameChange}\n placeholder=\"e.g. Synapse command line access on my laptop\"\n sx={{ mb: 2 }}\n />\n <div>\n <Typography variant=\"label\">Token Permissions</Typography>\n <Stack\n sx={{\n gap: 2,\n my: 1,\n }}\n >\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.view.displayName}\n checked={viewAccess}\n onChange={() => setViewAccess(!viewAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.view.description}. Required to use Synapse\n programmatic clients.\n </Typography>\n </div>\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.download.displayName}\n checked={downloadAccess}\n onChange={() => setDownloadAccess(!downloadAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.download.description}\n </Typography>\n </div>\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.modify.displayName}\n checked={modifyAccess}\n onChange={() => setModifyAccess(!modifyAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.modify.description}\n </Typography>\n </div>\n </Stack>\n </div>\n {validationError && <ErrorBanner error={validationError} />}\n {mutationError && <ErrorBanner error={mutationError.reason} />}\n </Stack>\n )\n\n return (\n <ConfirmationDialog\n open={true}\n title=\"Create New Personal Access Token\"\n content={createIsPending ? loadingScreen : dialogContent}\n confirmButtonProps={{\n children: createdTokenResponse ? 'Close' : 'Create Token',\n variant: createdTokenResponse ? 'outlined' : 'contained',\n }}\n hasCancelButton={!createdTokenResponse}\n onCancel={onClose}\n onConfirm={\n createdTokenResponse\n ? () => onClose()\n : () => {\n void onSubmit()\n }\n }\n />\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreateAccessTokenModal.js","names":[],"sources":["../../../src/components/AccessTokenPage/CreateAccessTokenModal.tsx"],"sourcesContent":["import { useCreatePersonalAccessToken } from '@/synapse-queries/user/usePersonalAccessToken'\nimport { Checkbox, FormControlLabel, Stack, Typography } from '@mui/material'\nimport {\n AccessTokenGenerationRequest,\n scopeDescriptions,\n} from '@sage-bionetworks/synapse-types'\nimport { noop } from 'lodash-es'\nimport { ChangeEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport { CopyToClipboardInput } from '../CopyToClipboardInput/CopyToClipboardInput'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport loadingScreen from '../LoadingScreen/LoadingScreen'\nimport TextField from '../TextField/TextField'\n\nconst INVALID_INPUT_MSG =\n 'You must provide a token name and at least one permission.'\n\nexport type CreateAccessTokenModalProps = {\n onClose?: () => void\n onCreate?: () => void\n}\n\nexport function CreateAccessTokenModal(props: CreateAccessTokenModalProps) {\n const { onClose = noop, onCreate = noop } = props\n const [tokenName, setTokenName] = useState('')\n const [viewAccess, setViewAccess] = useState(true)\n const [downloadAccess, setDownloadAccess] = useState(false)\n const [modifyAccess, setModifyAccess] = useState(false)\n\n const [validationError, setValidationError] = useState<string | null>(null)\n\n const {\n mutate,\n isPending: createIsPending,\n error: mutationError,\n data: createdTokenResponse,\n } = useCreatePersonalAccessToken()\n\n const handleTokenNameChange = (event: ChangeEvent) => {\n setTokenName((event.target as HTMLInputElement).value)\n }\n\n const validateInput = (tokenName: string, access: boolean[]): boolean => {\n return !!tokenName && access.some(Boolean)\n }\n\n const onSubmit = () => {\n if (validateInput(tokenName, [viewAccess, downloadAccess, modifyAccess])) {\n setValidationError(null)\n\n const request: AccessTokenGenerationRequest = {\n scope: [],\n name: tokenName,\n }\n if (viewAccess) request.scope.push('view')\n if (downloadAccess) request.scope.push('download')\n if (modifyAccess) request.scope.push('modify')\n\n mutate(request)\n\n onCreate()\n } else {\n setValidationError(INVALID_INPUT_MSG)\n }\n }\n\n const dialogContent = createdTokenResponse ? (\n <>\n <Typography variant={'body1'}>\n <Typography\n variant={'body1'}\n component={'span'}\n sx={{\n fontWeight: 700,\n }}\n >\n This token will not be able to be retrieved again.\n </Typography>{' '}\n If needed, generate a new personal access token, and delete this one.\n </Typography>\n <div>\n <CopyToClipboardInput\n value={createdTokenResponse.token}\n inputWidth={'350px'}\n />\n </div>\n <Typography variant={'body1'}>\n This token grants access to your account functions and should be treated\n like a password.\n </Typography>\n </>\n ) : (\n <Stack gap={2}>\n <TextField\n autoFocus\n label=\"Token Name\"\n value={tokenName}\n onChange={handleTokenNameChange}\n placeholder=\"e.g. Synapse command line access on my laptop\"\n sx={{ mb: 2 }}\n />\n <div>\n <Typography variant=\"label\">Token Permissions</Typography>\n <Stack\n sx={{\n gap: 2,\n my: 1,\n }}\n >\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.view.displayName}\n checked={viewAccess}\n onChange={() => setViewAccess(!viewAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.view.description}. Required to use Synapse\n programmatic clients.\n </Typography>\n </div>\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.download.displayName}\n checked={downloadAccess}\n onChange={() => setDownloadAccess(!downloadAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.download.description}\n </Typography>\n </div>\n <div>\n <FormControlLabel\n control={<Checkbox />}\n label={scopeDescriptions.modify.displayName}\n checked={modifyAccess}\n onChange={() => setModifyAccess(!modifyAccess)}\n />\n <Typography\n variant={'smallText1'}\n sx={{\n color: 'grey.700',\n }}\n >\n {scopeDescriptions.modify.description}\n </Typography>\n </div>\n </Stack>\n </div>\n {validationError && <ErrorBanner error={validationError} />}\n {mutationError && <ErrorBanner error={mutationError.reason} />}\n </Stack>\n )\n\n return (\n <ConfirmationDialog\n open={true}\n title=\"Create New Personal Access Token\"\n content={createIsPending ? loadingScreen : dialogContent}\n confirmButtonProps={{\n children: createdTokenResponse ? 'Close' : 'Create Token',\n variant: createdTokenResponse ? 'outlined' : 'contained',\n }}\n hasCancelButton={!createdTokenResponse}\n onCancel={onClose}\n onConfirm={\n createdTokenResponse\n ? () => onClose()\n : () => {\n void onSubmit()\n }\n }\n />\n )\n}\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ function u({ userId: u }) {
15
15
  certified: d?.isCertified || !1,
16
16
  validated: d?.isVerified || !1,
17
17
  enabledMFA: d?.userProfile?.twoFactorAuthEnabled || !1
18
- }, h = Object.values(m).some((e) => e), { showButton: g, buttonProps: _, confirmationDialogProps: v } = i({
18
+ }, h = Object.values(m).some(Boolean), { showButton: g, buttonProps: _, confirmationDialogProps: v } = i({
19
19
  userId: u,
20
20
  buttonProps: { variant: "outlined" }
21
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AccountLevelBadges.js","names":[],"sources":["../../../src/components/AccountLevelBadges/AccountLevelBadges.tsx"],"sourcesContent":["import { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { Box } from '@mui/material'\nimport {\n AccountLevelBadge,\n AccountLevelBadgeType,\n} from '../AccountLevelBadge/AccountLevelBadge'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport useRevokeCertificationUI from './useRevokeCertificationUI'\n\nexport type AccountLevelBadgesProps = {\n userId: string\n}\n\nconst CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK =\n SynapseConstants.USER_BUNDLE_MASK_IS_CERTIFIED |\n SynapseConstants.USER_BUNDLE_MASK_IS_VERIFIED |\n SynapseConstants.USER_BUNDLE_MASK_USER_PROFILE\n\nexport function AccountLevelBadges({ userId }: AccountLevelBadgesProps) {\n const {\n data: userBundle,\n isLoading,\n error,\n } = useGetUserBundle(\n userId,\n CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK,\n )\n\n const badgeStatuses: Record<AccountLevelBadgeType, boolean> = {\n certified: userBundle?.isCertified || false,\n validated: userBundle?.isVerified || false,\n enabledMFA: userBundle?.userProfile?.twoFactorAuthEnabled || false,\n }\n const hasBadges = Object.values(badgeStatuses).some(value => value)\n\n const {\n showButton: showRevokeCertificationButton,\n buttonProps: revokeCertificationButtonProps,\n confirmationDialogProps: revokeCertificationConfirmationDialogProps,\n } = useRevokeCertificationUI({\n userId,\n buttonProps: {\n variant: 'outlined',\n },\n })\n\n if (isLoading) {\n return <></>\n }\n if (error) {\n return <ErrorBanner error={error} />\n }\n\n return (\n <>\n <ConfirmationDialog {...revokeCertificationConfirmationDialogProps} />\n {hasBadges && (\n <Box\n sx={{\n display: 'flex',\n gap: '10px',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n }}\n >\n {Object.entries(badgeStatuses).map(([key, value]) => {\n const badgeType = key as AccountLevelBadgeType\n const buttonProps =\n badgeType === 'certified' && showRevokeCertificationButton\n ? revokeCertificationButtonProps\n : undefined\n return (\n value && (\n <AccountLevelBadge\n key={badgeType}\n badgeType={badgeType}\n buttonProps={buttonProps}\n />\n )\n )\n })}\n </Box>\n )}\n </>\n )\n}\n\nexport default AccountLevelBadges\n"],"mappings":";;;;;;;;;;;AAeA,IAAM,IACJ;AAIF,SAAgB,EAAmB,EAAE,aAAmC;CACtE,IAAM,EACJ,MAAM,GACN,cACA,aACE,EACF,GACA,CACF,GAEM,IAAwD;EAC5D,WAAW,GAAY,eAAe;EACtC,WAAW,GAAY,cAAc;EACrC,YAAY,GAAY,aAAa,wBAAwB;CAC/D,GACM,IAAY,OAAO,OAAO,CAAa,EAAE,MAAK,MAAS,CAAK,GAE5D,EACJ,YAAY,GACZ,aAAa,GACb,yBAAyB,MACvB,EAAyB;EAC3B;EACA,aAAa,EACX,SAAS,WACX;CACF,CAAC;CASD,OAPI,IACK,kBAAA,GAAA,CAAI,CAAA,IAET,IACK,kBAAC,GAAD,EAAoB,SAAQ,CAAA,IAInC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAoB,GAAI,EAA6C,CAAA,GACpE,KACC,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,gBAAgB;GAChB,UAAU;EACZ;YAEC,OAAO,QAAQ,CAAa,EAAE,KAAK,CAAC,GAAK,OAAW;GACnD,IAAM,IAAY;GAKlB,OACE,KACE,kBAAC,GAAD;IAEa;IACE,aARjB,MAAc,eAAe,IACzB,IACA,KAAA;GAOD,GAHM,CAGN;EAGP,CAAC;CACE,CAAA,CAEP,EAAA,CAAA;AAEN"}
1
+ {"version":3,"file":"AccountLevelBadges.js","names":[],"sources":["../../../src/components/AccountLevelBadges/AccountLevelBadges.tsx"],"sourcesContent":["import { useGetUserBundle } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { Box } from '@mui/material'\nimport {\n AccountLevelBadge,\n AccountLevelBadgeType,\n} from '../AccountLevelBadge/AccountLevelBadge'\nimport { ConfirmationDialog } from '../ConfirmationDialog'\nimport { ErrorBanner } from '../error/ErrorBanner'\nimport useRevokeCertificationUI from './useRevokeCertificationUI'\n\nexport type AccountLevelBadgesProps = {\n userId: string\n}\n\nconst CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK =\n SynapseConstants.USER_BUNDLE_MASK_IS_CERTIFIED |\n SynapseConstants.USER_BUNDLE_MASK_IS_VERIFIED |\n SynapseConstants.USER_BUNDLE_MASK_USER_PROFILE\n\nexport function AccountLevelBadges({ userId }: AccountLevelBadgesProps) {\n const {\n data: userBundle,\n isLoading,\n error,\n } = useGetUserBundle(\n userId,\n CERTIFICATION_VERIFICATION_AND_USERPROFILE_BUNDLE_MASK,\n )\n\n const badgeStatuses: Record<AccountLevelBadgeType, boolean> = {\n certified: userBundle?.isCertified || false,\n validated: userBundle?.isVerified || false,\n enabledMFA: userBundle?.userProfile?.twoFactorAuthEnabled || false,\n }\n const hasBadges = Object.values(badgeStatuses).some(Boolean)\n\n const {\n showButton: showRevokeCertificationButton,\n buttonProps: revokeCertificationButtonProps,\n confirmationDialogProps: revokeCertificationConfirmationDialogProps,\n } = useRevokeCertificationUI({\n userId,\n buttonProps: {\n variant: 'outlined',\n },\n })\n\n if (isLoading) {\n return <></>\n }\n if (error) {\n return <ErrorBanner error={error} />\n }\n\n return (\n <>\n <ConfirmationDialog {...revokeCertificationConfirmationDialogProps} />\n {hasBadges && (\n <Box\n sx={{\n display: 'flex',\n gap: '10px',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n }}\n >\n {Object.entries(badgeStatuses).map(([key, value]) => {\n const badgeType = key as AccountLevelBadgeType\n const buttonProps =\n badgeType === 'certified' && showRevokeCertificationButton\n ? revokeCertificationButtonProps\n : undefined\n return (\n value && (\n <AccountLevelBadge\n key={badgeType}\n badgeType={badgeType}\n buttonProps={buttonProps}\n />\n )\n )\n })}\n </Box>\n )}\n </>\n )\n}\n\nexport default AccountLevelBadges\n"],"mappings":";;;;;;;;;;;AAeA,IAAM,IACJ;AAIF,SAAgB,EAAmB,EAAE,aAAmC;CACtE,IAAM,EACJ,MAAM,GACN,cACA,aACE,EACF,GACA,CACF,GAEM,IAAwD;EAC5D,WAAW,GAAY,eAAe;EACtC,WAAW,GAAY,cAAc;EACrC,YAAY,GAAY,aAAa,wBAAwB;CAC/D,GACM,IAAY,OAAO,OAAO,CAAa,EAAE,KAAK,OAAO,GAErD,EACJ,YAAY,GACZ,aAAa,GACb,yBAAyB,MACvB,EAAyB;EAC3B;EACA,aAAa,EACX,SAAS,WACX;CACF,CAAC;CASD,OAPI,IACK,kBAAA,GAAA,CAAI,CAAA,IAET,IACK,kBAAC,GAAD,EAAoB,SAAQ,CAAA,IAInC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,EAAoB,GAAI,EAA6C,CAAA,GACpE,KACC,kBAAC,GAAD;EACE,IAAI;GACF,SAAS;GACT,KAAK;GACL,gBAAgB;GAChB,UAAU;EACZ;YAEC,OAAO,QAAQ,CAAa,EAAE,KAAK,CAAC,GAAK,OAAW;GACnD,IAAM,IAAY;GAKlB,OACE,KACE,kBAAC,GAAD;IAEa;IACE,aARjB,MAAc,eAAe,IACzB,IACA,KAAA;GAOD,GAHM,CAGN;EAGP,CAAC;CACE,CAAA,CAEP,EAAA,CAAA;AAEN"}
@@ -6,7 +6,7 @@ import { StudyAcknowledgements as i } from "./StudyAcknowledgements.js";
6
6
  import { useCallback as a, useState as o } from "react";
7
7
  import { Box as s, Button as c, Container as l, Link as u, Typography as d } from "@mui/material";
8
8
  import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
9
- import { LaunchTwoTone as h } from "@mui/icons-material";
9
+ import h from "@mui/icons-material/LaunchTwoTone";
10
10
  //#region src/components/AcknowledgementsPage/AcknowledgementsPage.tsx
11
11
  function g(g) {
12
12
  let { portalName: _, createDoiHelpUrl: v, portalAcknowledgementProps: y, dataAvailabilityProps: b, studyAcknowledgementSql: x } = g, [S, C] = o(!1), [w, T] = o(), [E, D] = o(), [O, k] = o([]), A = a(() => C(!1), []);
@@ -1 +1 @@
1
- {"version":3,"file":"AcknowledgementsPage.js","names":[],"sources":["../../../src/components/AcknowledgementsPage/AcknowledgementsPage.tsx"],"sourcesContent":["import { Box, Button, Container, Link, Typography } from '@mui/material'\nimport { useCallback, useState } from 'react'\nimport { ReactComponent as AcknowledgementStatementsIllustration } from '../../assets/illustrations/acknowledgement_statements_illustration.svg'\nimport TextToComponentCollapse from '../TextToComponentCollapse'\nimport AcknowledgementsDialog from './AcknowledgementsDialog'\nimport { MarkdownSynapseProps } from '../Markdown/MarkdownSynapse'\nimport MarkdownCollapse from '../Markdown/MarkdownCollapse'\nimport { StudyAcknowledgements } from './StudyAcknowledgements'\nimport { LaunchTwoTone } from '@mui/icons-material'\nexport type AcknowledgementPageProps = {\n portalName: string\n createDoiHelpUrl: string\n portalAcknowledgementProps?: MarkdownSynapseProps\n dataAvailabilityProps?: MarkdownSynapseProps\n studyAcknowledgementSql: string\n}\n\nexport type AcknowledgementItem = {\n title: string\n statement: string\n}\n\nexport function AcknowledgementPage(props: AcknowledgementPageProps) {\n const {\n portalName,\n createDoiHelpUrl,\n portalAcknowledgementProps,\n dataAvailabilityProps,\n studyAcknowledgementSql,\n } = props\n const [isAcknowledgementsDialogOpen, setAcknowledgementsDialogOpen] =\n useState<boolean>(false)\n\n const [portalAcknowledgement, setPortalAcknowledgement] = useState<string>()\n const [dataAvailabilityStatement, setDataAvailabilityStatement] =\n useState<string>()\n const [acknowledgementItems, setAcknowledgementItems] = useState<\n AcknowledgementItem[]\n >([])\n const handleCloseDialog = useCallback(\n () => setAcknowledgementsDialogOpen(false),\n [],\n )\n return (\n <>\n <Container maxWidth={'lg'} sx={{ mt: '2em', mb: '2em' }}>\n <Typography variant=\"h5\" sx={{ fontWeight: 'bold' }}>\n How to acknowledge data from this portal\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n The data available in the {portalName} would not be possible without\n the participation of research volunteers and the contribution of data\n by collaborating researchers. All use of data from the {portalName}{' '}\n must be acknowledged and referenced appropriately.\n </Typography>\n <Typography variant=\"body1\" sx={{ fontWeight: 'bold', mb: '1em' }}>\n All publications using {portalName} data must include the provided\n statements:\n </Typography>\n <Box sx={{ mb: '2em', svg: { maxWidth: '100%' } }}>\n <AcknowledgementStatementsIllustration />\n </Box>\n <Typography variant=\"h5\" sx={{ fontWeight: 'bold' }}>\n How to use this page:\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ mb: '.5em' }}>\n This page will guide you through creating the acknowledgement\n statements required when publishing with {portalName} data.\n </Typography>\n <Typography\n variant=\"body1\"\n component={'div'}\n sx={{\n mb: '2em',\n '& li::marker': {\n fontWeight: 'bold', // bold the number\n },\n }}\n >\n <ol>\n <li>\n <strong>Select study acknowledgement statements</strong>\n <br />\n From the list below, select all the studies whose data you used.\n Each study has a pre-written acknowledgement statement that must\n be included in your publication.\n </li>\n <li>\n <strong>Generate compiled statement</strong>\n <br />\n Click the Generate Compiled Statement button at the bottom of the\n page. This will compile:\n <ul>\n <li>The Portal Acknowledgement Statement</li>\n <li>The acknowledgement(s) for the studies you selected</li>\n <li>A template data availability statement</li>\n </ul>\n <i>\n Important: You will need to edit the compiled statement to add a\n brief description of the data used in your manuscript and a DOI\n that points to your dataset.\n </i>\n </li>\n <li>\n <strong>Create a DOI for your dataset</strong>\n <br />\n As part of the data availability statement, you will need to\n create a dataset that captures all files used in your publication\n and mint the dataset with a persistent Digital Object Identifier\n (DOI). For more instructions read&nbsp;\n <Link\n href={createDoiHelpUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n How to get a DOI for your Publication\n </Link>\n </li>\n </ol>\n </Typography>\n <Typography component={'div'} variant=\"h5\" sx={{ fontWeight: 'bold' }}>\n <ol start={1} style={{ paddingInlineStart: '20px' }}>\n <li>Select study acknowledgement statements</li>\n </ol>\n </Typography>\n <hr />\n <Typography variant=\"body1\">\n From the list below, select all studies whose data you used. Each\n study has a pre-written acknowledgement statement that must be\n included in your publication.\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '2em' }}>\n You can also expand each section for detailed information or click\n \"Copy full statement to clipboard\" to save the text.\n </Typography>\n <StudyAcknowledgements\n sql={studyAcknowledgementSql}\n onSelectChange={(item, checked) => {\n if (checked) {\n // add\n acknowledgementItems.push(item)\n } else {\n // remove\n const index = acknowledgementItems.findIndex(\n i => i.title === item.title && i.statement === item.statement,\n )\n if (index > -1) {\n acknowledgementItems.splice(index, 1)\n }\n }\n setAcknowledgementItems([...acknowledgementItems])\n }}\n />\n <Typography variant=\"h5\" component={'div'} sx={{ fontWeight: 'bold' }}>\n <ol start={2} style={{ paddingInlineStart: '25px' }}>\n <li>Generate compiled statement</li>\n </ol>\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ fontWeight: 'bold', mb: '1em' }}>\n Click to generate a compiled statement for your publication.\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n The generated text will include your selected study acknowledgement\n statements and all other required statements listed below.\n </Typography>\n <Button\n variant=\"contained\"\n onClick={() => setAcknowledgementsDialogOpen(true)}\n sx={{ mb: '3em' }}\n >\n Generate compiled statement\n </Button>\n <TextToComponentCollapse\n text={'Click to see other text included in the compiled statement'}\n textVariant=\"h5\"\n textSx={{ fontSize: '16px', fontWeight: 'bold' }}\n textContainerSx={{ backgroundColor: 'unset', p: 0 }}\n collapseBoxSx={{ backgroundColor: 'unset', p: '20px 0px' }}\n iconSx={{ width: '20px', height: '20px' }}\n >\n {portalAcknowledgementProps && (\n <>\n <Typography variant=\"h5\" sx={{ fontSize: '18px', mb: '1em' }}>\n Portal Acknowledgement Statement (Required)\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n This statement is required and automatically included in the\n compiled statement\n </Typography>\n <MarkdownCollapse\n {...portalAcknowledgementProps}\n setPlainTextResult={setPortalAcknowledgement}\n textDescription=\"full statement\"\n showCopyPlainText={true}\n />\n </>\n )}\n {dataAvailabilityProps && (\n <>\n <Typography variant=\"h5\" sx={{ fontSize: '18px', m: '1em 0' }}>\n Data Availability Statement (Required)\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n This statement is required and automatically included in the\n compiled statement\n </Typography>\n <MarkdownCollapse\n {...dataAvailabilityProps}\n setPlainTextResult={setDataAvailabilityStatement}\n textDescription=\"full statement\"\n showCopyPlainText={true}\n />\n </>\n )}\n </TextToComponentCollapse>\n <hr />\n <Typography variant=\"h5\" component={'div'} sx={{ fontWeight: 'bold' }}>\n <ol start={3} style={{ paddingInlineStart: '25px' }}>\n <li>Create a DOI for your dataset</li>\n </ol>\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n A digital object identifier (DOI) provides a persistent identifier\n that allows readers to find the data cited in your publication.\n Creating a DOI in the Synapse platform is free and required as part of\n the data availability statement.\n </Typography>\n\n <Button\n variant=\"outlined\"\n href={createDoiHelpUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <LaunchTwoTone sx={{ mr: '0.5em' }} />\n Learn how to get a DOI for your publication\n </Button>\n </Container>\n\n <AcknowledgementsDialog\n open={isAcknowledgementsDialogOpen}\n onClose={handleCloseDialog}\n createDoiHelpUrl={createDoiHelpUrl}\n portalAcknowledgement={portalAcknowledgement}\n dataAvailabilityStatement={dataAvailabilityStatement}\n studyAcknowledgements={acknowledgementItems}\n />\n </>\n )\n}\n\nexport default AcknowledgementPage\n"],"mappings":"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"}
1
+ {"version":3,"file":"AcknowledgementsPage.js","names":[],"sources":["../../../src/components/AcknowledgementsPage/AcknowledgementsPage.tsx"],"sourcesContent":["import { Box, Button, Container, Link, Typography } from '@mui/material'\nimport { useCallback, useState } from 'react'\nimport { ReactComponent as AcknowledgementStatementsIllustration } from '../../assets/illustrations/acknowledgement_statements_illustration.svg'\nimport TextToComponentCollapse from '../TextToComponentCollapse'\nimport AcknowledgementsDialog from './AcknowledgementsDialog'\nimport { MarkdownSynapseProps } from '../Markdown/MarkdownSynapse'\nimport MarkdownCollapse from '../Markdown/MarkdownCollapse'\nimport { StudyAcknowledgements } from './StudyAcknowledgements'\nimport LaunchTwoTone from '@mui/icons-material/LaunchTwoTone'\nexport type AcknowledgementPageProps = {\n portalName: string\n createDoiHelpUrl: string\n portalAcknowledgementProps?: MarkdownSynapseProps\n dataAvailabilityProps?: MarkdownSynapseProps\n studyAcknowledgementSql: string\n}\n\nexport type AcknowledgementItem = {\n title: string\n statement: string\n}\n\nexport function AcknowledgementPage(props: AcknowledgementPageProps) {\n const {\n portalName,\n createDoiHelpUrl,\n portalAcknowledgementProps,\n dataAvailabilityProps,\n studyAcknowledgementSql,\n } = props\n const [isAcknowledgementsDialogOpen, setAcknowledgementsDialogOpen] =\n useState<boolean>(false)\n\n const [portalAcknowledgement, setPortalAcknowledgement] = useState<string>()\n const [dataAvailabilityStatement, setDataAvailabilityStatement] =\n useState<string>()\n const [acknowledgementItems, setAcknowledgementItems] = useState<\n AcknowledgementItem[]\n >([])\n const handleCloseDialog = useCallback(\n () => setAcknowledgementsDialogOpen(false),\n [],\n )\n return (\n <>\n <Container maxWidth={'lg'} sx={{ mt: '2em', mb: '2em' }}>\n <Typography variant=\"h5\" sx={{ fontWeight: 'bold' }}>\n How to acknowledge data from this portal\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n The data available in the {portalName} would not be possible without\n the participation of research volunteers and the contribution of data\n by collaborating researchers. All use of data from the {portalName}{' '}\n must be acknowledged and referenced appropriately.\n </Typography>\n <Typography variant=\"body1\" sx={{ fontWeight: 'bold', mb: '1em' }}>\n All publications using {portalName} data must include the provided\n statements:\n </Typography>\n <Box sx={{ mb: '2em', svg: { maxWidth: '100%' } }}>\n <AcknowledgementStatementsIllustration />\n </Box>\n <Typography variant=\"h5\" sx={{ fontWeight: 'bold' }}>\n How to use this page:\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ mb: '.5em' }}>\n This page will guide you through creating the acknowledgement\n statements required when publishing with {portalName} data.\n </Typography>\n <Typography\n variant=\"body1\"\n component={'div'}\n sx={{\n mb: '2em',\n '& li::marker': {\n fontWeight: 'bold', // bold the number\n },\n }}\n >\n <ol>\n <li>\n <strong>Select study acknowledgement statements</strong>\n <br />\n From the list below, select all the studies whose data you used.\n Each study has a pre-written acknowledgement statement that must\n be included in your publication.\n </li>\n <li>\n <strong>Generate compiled statement</strong>\n <br />\n Click the Generate Compiled Statement button at the bottom of the\n page. This will compile:\n <ul>\n <li>The Portal Acknowledgement Statement</li>\n <li>The acknowledgement(s) for the studies you selected</li>\n <li>A template data availability statement</li>\n </ul>\n <i>\n Important: You will need to edit the compiled statement to add a\n brief description of the data used in your manuscript and a DOI\n that points to your dataset.\n </i>\n </li>\n <li>\n <strong>Create a DOI for your dataset</strong>\n <br />\n As part of the data availability statement, you will need to\n create a dataset that captures all files used in your publication\n and mint the dataset with a persistent Digital Object Identifier\n (DOI). For more instructions read&nbsp;\n <Link\n href={createDoiHelpUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n How to get a DOI for your Publication\n </Link>\n </li>\n </ol>\n </Typography>\n <Typography component={'div'} variant=\"h5\" sx={{ fontWeight: 'bold' }}>\n <ol start={1} style={{ paddingInlineStart: '20px' }}>\n <li>Select study acknowledgement statements</li>\n </ol>\n </Typography>\n <hr />\n <Typography variant=\"body1\">\n From the list below, select all studies whose data you used. Each\n study has a pre-written acknowledgement statement that must be\n included in your publication.\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '2em' }}>\n You can also expand each section for detailed information or click\n \"Copy full statement to clipboard\" to save the text.\n </Typography>\n <StudyAcknowledgements\n sql={studyAcknowledgementSql}\n onSelectChange={(item, checked) => {\n if (checked) {\n // add\n acknowledgementItems.push(item)\n } else {\n // remove\n const index = acknowledgementItems.findIndex(\n i => i.title === item.title && i.statement === item.statement,\n )\n if (index > -1) {\n acknowledgementItems.splice(index, 1)\n }\n }\n setAcknowledgementItems([...acknowledgementItems])\n }}\n />\n <Typography variant=\"h5\" component={'div'} sx={{ fontWeight: 'bold' }}>\n <ol start={2} style={{ paddingInlineStart: '25px' }}>\n <li>Generate compiled statement</li>\n </ol>\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ fontWeight: 'bold', mb: '1em' }}>\n Click to generate a compiled statement for your publication.\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n The generated text will include your selected study acknowledgement\n statements and all other required statements listed below.\n </Typography>\n <Button\n variant=\"contained\"\n onClick={() => setAcknowledgementsDialogOpen(true)}\n sx={{ mb: '3em' }}\n >\n Generate compiled statement\n </Button>\n <TextToComponentCollapse\n text={'Click to see other text included in the compiled statement'}\n textVariant=\"h5\"\n textSx={{ fontSize: '16px', fontWeight: 'bold' }}\n textContainerSx={{ backgroundColor: 'unset', p: 0 }}\n collapseBoxSx={{ backgroundColor: 'unset', p: '20px 0px' }}\n iconSx={{ width: '20px', height: '20px' }}\n >\n {portalAcknowledgementProps && (\n <>\n <Typography variant=\"h5\" sx={{ fontSize: '18px', mb: '1em' }}>\n Portal Acknowledgement Statement (Required)\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n This statement is required and automatically included in the\n compiled statement\n </Typography>\n <MarkdownCollapse\n {...portalAcknowledgementProps}\n setPlainTextResult={setPortalAcknowledgement}\n textDescription=\"full statement\"\n showCopyPlainText={true}\n />\n </>\n )}\n {dataAvailabilityProps && (\n <>\n <Typography variant=\"h5\" sx={{ fontSize: '18px', m: '1em 0' }}>\n Data Availability Statement (Required)\n </Typography>\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n This statement is required and automatically included in the\n compiled statement\n </Typography>\n <MarkdownCollapse\n {...dataAvailabilityProps}\n setPlainTextResult={setDataAvailabilityStatement}\n textDescription=\"full statement\"\n showCopyPlainText={true}\n />\n </>\n )}\n </TextToComponentCollapse>\n <hr />\n <Typography variant=\"h5\" component={'div'} sx={{ fontWeight: 'bold' }}>\n <ol start={3} style={{ paddingInlineStart: '25px' }}>\n <li>Create a DOI for your dataset</li>\n </ol>\n </Typography>\n <hr />\n <Typography variant=\"body1\" sx={{ mb: '1em' }}>\n A digital object identifier (DOI) provides a persistent identifier\n that allows readers to find the data cited in your publication.\n Creating a DOI in the Synapse platform is free and required as part of\n the data availability statement.\n </Typography>\n\n <Button\n variant=\"outlined\"\n href={createDoiHelpUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <LaunchTwoTone sx={{ mr: '0.5em' }} />\n Learn how to get a DOI for your publication\n </Button>\n </Container>\n\n <AcknowledgementsDialog\n open={isAcknowledgementsDialogOpen}\n onClose={handleCloseDialog}\n createDoiHelpUrl={createDoiHelpUrl}\n portalAcknowledgement={portalAcknowledgement}\n dataAvailabilityStatement={dataAvailabilityStatement}\n studyAcknowledgements={acknowledgementItems}\n />\n </>\n )\n}\n\nexport default AcknowledgementPage\n"],"mappings":"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"}
@@ -44,9 +44,7 @@ async function m(e, t) {
44
44
  let n = p();
45
45
  expect(n).toBeInTheDocument(), await e.clear(n), await e.type(n, t);
46
46
  let r = await a.findByText(RegExp(`\\(@${t}\\)`));
47
- await e.click(r), await o(() => expect(r).not.toBeInTheDocument());
48
- let i = a.getAllByRole("row");
49
- return i[i.length - 1];
47
+ return await e.click(r), await o(() => expect(r).not.toBeInTheDocument()), a.getAllByRole("row").at(-1);
50
48
  }
51
49
  async function h(n) {
52
50
  let r = a.getByRole("button", { name: i });
@@ -55,8 +53,8 @@ async function h(n) {
55
53
  return await o(() => {
56
54
  s = a.getAllByRole("row"), l = c(s, t), u = c(s, e), expect(l).toBeInTheDocument(), expect(u).toBeInTheDocument();
57
55
  }), {
58
- publicRow: s[s.length - 2],
59
- authenticatedUsersRow: s[s.length - 1]
56
+ publicRow: s.at(-2),
57
+ authenticatedUsersRow: s.at(-1)
60
58
  };
61
59
  }
62
60
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"AclEditor.test-utils.js","names":[],"sources":["../../../src/components/AclEditor/AclEditor.test-utils.ts"],"sourcesContent":["import userEvent from '@testing-library/user-event'\nimport { screen, waitFor, within } from '@testing-library/react'\nimport { REMOVE_BUTTON_LABEL } from './ResourceAccessItem'\nimport {\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n PUBLIC_GROUP_DISPLAY_TEXT,\n} from '../TeamBadge'\nimport {\n ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n} from './AclEditor'\n\n/**\n * Find a row in the ACL editor that contains the specified principal name.\n * @param rows\n * @param principalName\n */\nexport function queryForRowWithPrincipalName(\n rows: HTMLElement[],\n principalName: string,\n) {\n return rows.find(row => {\n return within(row).queryByText(principalName, { exact: false })\n })\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param rows\n * @param principalName\n * @param accessTypeLabel\n */\nexport async function confirmItemViaQuery(\n rows: HTMLElement[],\n principalName: string,\n accessTypeLabel: string,\n) {\n let row: HTMLElement | undefined\n try {\n await waitFor(() => {\n row = queryForRowWithPrincipalName(rows, principalName)!\n expect(row).toBeInTheDocument()\n })\n } catch (e) {\n screen.debug()\n throw new Error(`Principal ${principalName} not found in ACL`, { cause: e })\n }\n\n const editorCombobox = within(row!).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row!).getByText(accessTypeLabel)\n }\n return row!\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param row\n * @param principalName\n * @param accessTypeLabel\n */\nexport function confirmItem(\n row: HTMLElement,\n principalName: string,\n accessTypeLabel: string,\n) {\n expect(within(row).queryByRole('link') ?? row).toHaveTextContent(\n principalName,\n )\n const editorCombobox = within(row).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row).getByText(accessTypeLabel)\n }\n}\n\n/**\n * Remove a particular row from the HTML editor.\n * @param row\n * @param user\n * @param verifyRemoval\n */\nexport async function removeItem(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n verifyRemoval = true,\n) {\n const removeButton = within(row).getByRole('button', {\n name: REMOVE_BUTTON_LABEL,\n })\n await user.click(removeButton)\n if (verifyRemoval) {\n await waitFor(() => {\n expect(removeButton).not.toBeInTheDocument()\n expect(row).not.toBeInTheDocument()\n })\n }\n}\n\n/**\n * Updates the permission level of a particular row in the ACL editor.\n * @param row\n * @param user\n * @param updatedPermissionLevelLabel\n */\nexport async function updatePermissionLevel(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n updatedPermissionLevelLabel: string,\n) {\n const menu = within(row).getByRole('combobox')\n await user.click(menu)\n\n const option = screen.getByRole('option', {\n name: updatedPermissionLevelLabel,\n })\n await user.click(option)\n\n await waitFor(() => {\n expect(option).not.toBeInTheDocument()\n })\n}\n\nexport function queryForAddUserCombobox() {\n return screen.queryByRole('combobox', {\n name: ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n })\n}\n\n/**\n * Adds a user to the ACL editor.\n * @param user\n * @param userName\n */\nexport async function addUserToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n userName: string,\n) {\n const userInput = queryForAddUserCombobox()!\n expect(userInput).toBeInTheDocument()\n await user.clear(userInput)\n await user.type(userInput, userName)\n\n const option = await screen.findByText(new RegExp(`\\\\(@${userName}\\\\)`))\n await user.click(option)\n\n await waitFor(() => expect(option).not.toBeInTheDocument())\n const rows = screen.getAllByRole('row')\n return rows[rows.length - 1]\n}\n\n/**\n * Adds public / authenticated groups to the ACL editor.\n * @param user\n */\nexport async function addPublicToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n) {\n const makePublicButton = screen.getByRole('button', {\n name: ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n })\n await user.click(makePublicButton)\n\n let rows: HTMLElement[] = []\n let publicRow: HTMLElement | undefined = undefined\n let authenticatedUsersRow: HTMLElement | undefined = undefined\n await waitFor(() => {\n rows = screen.getAllByRole('row')\n publicRow = queryForRowWithPrincipalName(rows, PUBLIC_GROUP_DISPLAY_TEXT)\n authenticatedUsersRow = queryForRowWithPrincipalName(\n rows,\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n )\n expect(publicRow).toBeInTheDocument()\n expect(authenticatedUsersRow).toBeInTheDocument()\n })\n\n return {\n publicRow: rows[rows.length - 2],\n authenticatedUsersRow: rows[rows.length - 1],\n }\n}\n"],"mappings":";;;;;AAiBA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,MAAK,MACR,EAAO,CAAG,EAAE,YAAY,GAAe,EAAE,OAAO,GAAM,CAAC,CAC/D;AACH;AAQA,eAAsB,EACpB,GACA,GACA,GACA;CACA,IAAI;CACJ,IAAI;EACF,MAAM,QAAc;GAElB,AADA,IAAM,EAA6B,GAAM,CAAa,GACtD,OAAO,CAAG,EAAE,kBAAkB;EAChC,CAAC;CACH,SAAS,GAAG;EAEV,MADA,EAAO,MAAM,GACH,MAAM,aAAa,EAAc,oBAAoB,EAAE,OAAO,EAAE,CAAC;CAC7E;CAEA,IAAM,IAAiB,EAAO,CAAI,EAAE,YAAY,UAAU;CAM1D,OALI,IACF,OAAO,CAAc,EAAE,kBAAkB,CAAe,IAExD,EAAO,CAAI,EAAE,UAAU,CAAe,GAEjC;AACT;AAQA,SAAgB,EACd,GACA,GACA,GACA;CACA,OAAO,EAAO,CAAG,EAAE,YAAY,MAAM,KAAK,CAAG,EAAE,kBAC7C,CACF;CACA,IAAM,IAAiB,EAAO,CAAG,EAAE,YAAY,UAAU;CACzD,AAAI,IACF,OAAO,CAAc,EAAE,kBAAkB,CAAe,IAExD,EAAO,CAAG,EAAE,UAAU,CAAe;AAEzC;AAQA,eAAsB,EACpB,GACA,GACA,IAAgB,IAChB;CACA,IAAM,IAAe,EAAO,CAAG,EAAE,UAAU,UAAU,EACnD,MAAM,EACR,CAAC;CAED,AADA,MAAM,EAAK,MAAM,CAAY,GACzB,KACF,MAAM,QAAc;EAElB,AADA,OAAO,CAAY,EAAE,IAAI,kBAAkB,GAC3C,OAAO,CAAG,EAAE,IAAI,kBAAkB;CACpC,CAAC;AAEL;AAQA,eAAsB,EACpB,GACA,GACA,GACA;CACA,IAAM,IAAO,EAAO,CAAG,EAAE,UAAU,UAAU;CAC7C,MAAM,EAAK,MAAM,CAAI;CAErB,IAAM,IAAS,EAAO,UAAU,UAAU,EACxC,MAAM,EACR,CAAC;CAGD,AAFA,MAAM,EAAK,MAAM,CAAM,GAEvB,MAAM,QAAc;EAClB,OAAO,CAAM,EAAE,IAAI,kBAAkB;CACvC,CAAC;AACH;AAEA,SAAgB,IAA0B;CACxC,OAAO,EAAO,YAAY,YAAY,EACpC,MAAM,EACR,CAAC;AACH;AAOA,eAAsB,EACpB,GACA,GACA;CACA,IAAM,IAAY,EAAwB;CAG1C,AAFA,OAAO,CAAS,EAAE,kBAAkB,GACpC,MAAM,EAAK,MAAM,CAAS,GAC1B,MAAM,EAAK,KAAK,GAAW,CAAQ;CAEnC,IAAM,IAAS,MAAM,EAAO,WAAe,OAAO,OAAO,EAAS,IAAI,CAAC;CAGvE,AAFA,MAAM,EAAK,MAAM,CAAM,GAEvB,MAAM,QAAc,OAAO,CAAM,EAAE,IAAI,kBAAkB,CAAC;CAC1D,IAAM,IAAO,EAAO,aAAa,KAAK;CACtC,OAAO,EAAK,EAAK,SAAS;AAC5B;AAMA,eAAsB,EACpB,GACA;CACA,IAAM,IAAmB,EAAO,UAAU,UAAU,EAClD,MAAM,EACR,CAAC;CACD,MAAM,EAAK,MAAM,CAAgB;CAEjC,IAAI,IAAsB,CAAC,GACvB,GACA;CAYJ,OAXA,MAAM,QAAc;EAQlB,AAPA,IAAO,EAAO,aAAa,KAAK,GAChC,IAAY,EAA6B,GAAM,CAAyB,GACxE,IAAwB,EACtB,GACA,CACF,GACA,OAAO,CAAS,EAAE,kBAAkB,GACpC,OAAO,CAAqB,EAAE,kBAAkB;CAClD,CAAC,GAEM;EACL,WAAW,EAAK,EAAK,SAAS;EAC9B,uBAAuB,EAAK,EAAK,SAAS;CAC5C;AACF"}
1
+ {"version":3,"file":"AclEditor.test-utils.js","names":[],"sources":["../../../src/components/AclEditor/AclEditor.test-utils.ts"],"sourcesContent":["import userEvent from '@testing-library/user-event'\nimport { screen, waitFor, within } from '@testing-library/react'\nimport { REMOVE_BUTTON_LABEL } from './ResourceAccessItem'\nimport {\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n PUBLIC_GROUP_DISPLAY_TEXT,\n} from '../TeamBadge'\nimport {\n ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n} from './AclEditor'\n\n/**\n * Find a row in the ACL editor that contains the specified principal name.\n * @param rows\n * @param principalName\n */\nexport function queryForRowWithPrincipalName(\n rows: HTMLElement[],\n principalName: string,\n) {\n return rows.find(row => {\n return within(row).queryByText(principalName, { exact: false })\n })\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param rows\n * @param principalName\n * @param accessTypeLabel\n */\nexport async function confirmItemViaQuery(\n rows: HTMLElement[],\n principalName: string,\n accessTypeLabel: string,\n) {\n let row: HTMLElement | undefined\n try {\n await waitFor(() => {\n row = queryForRowWithPrincipalName(rows, principalName)!\n expect(row).toBeInTheDocument()\n })\n } catch (e) {\n screen.debug()\n throw new Error(`Principal ${principalName} not found in ACL`, { cause: e })\n }\n\n const editorCombobox = within(row!).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row!).getByText(accessTypeLabel)\n }\n return row!\n}\n\n/**\n * Verify that a row in the ACL editor contains the expected principal name and access type.\n * @param row\n * @param principalName\n * @param accessTypeLabel\n */\nexport function confirmItem(\n row: HTMLElement,\n principalName: string,\n accessTypeLabel: string,\n) {\n expect(within(row).queryByRole('link') ?? row).toHaveTextContent(\n principalName,\n )\n const editorCombobox = within(row).queryByRole('combobox')\n if (editorCombobox) {\n expect(editorCombobox).toHaveTextContent(accessTypeLabel)\n } else {\n within(row).getByText(accessTypeLabel)\n }\n}\n\n/**\n * Remove a particular row from the HTML editor.\n * @param row\n * @param user\n * @param verifyRemoval\n */\nexport async function removeItem(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n verifyRemoval = true,\n) {\n const removeButton = within(row).getByRole('button', {\n name: REMOVE_BUTTON_LABEL,\n })\n await user.click(removeButton)\n if (verifyRemoval) {\n await waitFor(() => {\n expect(removeButton).not.toBeInTheDocument()\n expect(row).not.toBeInTheDocument()\n })\n }\n}\n\n/**\n * Updates the permission level of a particular row in the ACL editor.\n * @param row\n * @param user\n * @param updatedPermissionLevelLabel\n */\nexport async function updatePermissionLevel(\n row: HTMLElement,\n user: ReturnType<(typeof userEvent)['setup']>,\n updatedPermissionLevelLabel: string,\n) {\n const menu = within(row).getByRole('combobox')\n await user.click(menu)\n\n const option = screen.getByRole('option', {\n name: updatedPermissionLevelLabel,\n })\n await user.click(option)\n\n await waitFor(() => {\n expect(option).not.toBeInTheDocument()\n })\n}\n\nexport function queryForAddUserCombobox() {\n return screen.queryByRole('combobox', {\n name: ADD_PRINCIPAL_TO_ACL_COMBOBOX_LABEL,\n })\n}\n\n/**\n * Adds a user to the ACL editor.\n * @param user\n * @param userName\n */\nexport async function addUserToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n userName: string,\n) {\n const userInput = queryForAddUserCombobox()!\n expect(userInput).toBeInTheDocument()\n await user.clear(userInput)\n await user.type(userInput, userName)\n\n const option = await screen.findByText(new RegExp(`\\\\(@${userName}\\\\)`))\n await user.click(option)\n\n await waitFor(() => expect(option).not.toBeInTheDocument())\n const rows = screen.getAllByRole('row')\n return rows.at(-1)!\n}\n\n/**\n * Adds public / authenticated groups to the ACL editor.\n * @param user\n */\nexport async function addPublicToAcl(\n user: ReturnType<(typeof userEvent)['setup']>,\n) {\n const makePublicButton = screen.getByRole('button', {\n name: ADD_PUBLIC_PRINCIPALS_BUTTON_TEXT,\n })\n await user.click(makePublicButton)\n\n let rows: HTMLElement[] = []\n let publicRow: HTMLElement | undefined = undefined\n let authenticatedUsersRow: HTMLElement | undefined = undefined\n await waitFor(() => {\n rows = screen.getAllByRole('row')\n publicRow = queryForRowWithPrincipalName(rows, PUBLIC_GROUP_DISPLAY_TEXT)\n authenticatedUsersRow = queryForRowWithPrincipalName(\n rows,\n AUTHENTICATED_GROUP_DISPLAY_TEXT,\n )\n expect(publicRow).toBeInTheDocument()\n expect(authenticatedUsersRow).toBeInTheDocument()\n })\n\n return {\n publicRow: rows.at(-2)!,\n authenticatedUsersRow: rows.at(-1)!,\n }\n}\n"],"mappings":";;;;;AAiBA,SAAgB,EACd,GACA,GACA;CACA,OAAO,EAAK,MAAK,MACR,EAAO,CAAG,EAAE,YAAY,GAAe,EAAE,OAAO,GAAM,CAAC,CAC/D;AACH;AAQA,eAAsB,EACpB,GACA,GACA,GACA;CACA,IAAI;CACJ,IAAI;EACF,MAAM,QAAc;GAElB,AADA,IAAM,EAA6B,GAAM,CAAa,GACtD,OAAO,CAAG,EAAE,kBAAkB;EAChC,CAAC;CACH,SAAS,GAAG;EAEV,MADA,EAAO,MAAM,GACH,MAAM,aAAa,EAAc,oBAAoB,EAAE,OAAO,EAAE,CAAC;CAC7E;CAEA,IAAM,IAAiB,EAAO,CAAI,EAAE,YAAY,UAAU;CAM1D,OALI,IACF,OAAO,CAAc,EAAE,kBAAkB,CAAe,IAExD,EAAO,CAAI,EAAE,UAAU,CAAe,GAEjC;AACT;AAQA,SAAgB,EACd,GACA,GACA,GACA;CACA,OAAO,EAAO,CAAG,EAAE,YAAY,MAAM,KAAK,CAAG,EAAE,kBAC7C,CACF;CACA,IAAM,IAAiB,EAAO,CAAG,EAAE,YAAY,UAAU;CACzD,AAAI,IACF,OAAO,CAAc,EAAE,kBAAkB,CAAe,IAExD,EAAO,CAAG,EAAE,UAAU,CAAe;AAEzC;AAQA,eAAsB,EACpB,GACA,GACA,IAAgB,IAChB;CACA,IAAM,IAAe,EAAO,CAAG,EAAE,UAAU,UAAU,EACnD,MAAM,EACR,CAAC;CAED,AADA,MAAM,EAAK,MAAM,CAAY,GACzB,KACF,MAAM,QAAc;EAElB,AADA,OAAO,CAAY,EAAE,IAAI,kBAAkB,GAC3C,OAAO,CAAG,EAAE,IAAI,kBAAkB;CACpC,CAAC;AAEL;AAQA,eAAsB,EACpB,GACA,GACA,GACA;CACA,IAAM,IAAO,EAAO,CAAG,EAAE,UAAU,UAAU;CAC7C,MAAM,EAAK,MAAM,CAAI;CAErB,IAAM,IAAS,EAAO,UAAU,UAAU,EACxC,MAAM,EACR,CAAC;CAGD,AAFA,MAAM,EAAK,MAAM,CAAM,GAEvB,MAAM,QAAc;EAClB,OAAO,CAAM,EAAE,IAAI,kBAAkB;CACvC,CAAC;AACH;AAEA,SAAgB,IAA0B;CACxC,OAAO,EAAO,YAAY,YAAY,EACpC,MAAM,EACR,CAAC;AACH;AAOA,eAAsB,EACpB,GACA,GACA;CACA,IAAM,IAAY,EAAwB;CAG1C,AAFA,OAAO,CAAS,EAAE,kBAAkB,GACpC,MAAM,EAAK,MAAM,CAAS,GAC1B,MAAM,EAAK,KAAK,GAAW,CAAQ;CAEnC,IAAM,IAAS,MAAM,EAAO,WAAe,OAAO,OAAO,EAAS,IAAI,CAAC;CAKvE,OAJA,MAAM,EAAK,MAAM,CAAM,GAEvB,MAAM,QAAc,OAAO,CAAM,EAAE,IAAI,kBAAkB,CAAC,GAC7C,EAAO,aAAa,KAC1B,EAAK,GAAG,EAAE;AACnB;AAMA,eAAsB,EACpB,GACA;CACA,IAAM,IAAmB,EAAO,UAAU,UAAU,EAClD,MAAM,EACR,CAAC;CACD,MAAM,EAAK,MAAM,CAAgB;CAEjC,IAAI,IAAsB,CAAC,GACvB,GACA;CAYJ,OAXA,MAAM,QAAc;EAQlB,AAPA,IAAO,EAAO,aAAa,KAAK,GAChC,IAAY,EAA6B,GAAM,CAAyB,GACxE,IAAwB,EACtB,GACA,CACF,GACA,OAAO,CAAS,EAAE,kBAAkB,GACpC,OAAO,CAAqB,EAAE,kBAAkB;CAClD,CAAC,GAEM;EACL,WAAW,EAAK,GAAG,EAAE;EACrB,uBAAuB,EAAK,GAAG,EAAE;CACnC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"AridhiaAccessStatus.d.ts","sourceRoot":"","sources":["../../../src/components/Aridhia/AridhiaAccessStatus.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAkK1E"}
1
+ {"version":3,"file":"AridhiaAccessStatus.d.ts","sourceRoot":"","sources":["../../../src/components/Aridhia/AridhiaAccessStatus.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAqK1E"}
@@ -6,7 +6,7 @@ import "../../synapse-queries/index.js";
6
6
  import { DialogBase as r } from "../DialogBase.js";
7
7
  import i, { RestrictionUiType as a } from "../HasAccess/AccessIcon.js";
8
8
  import { FeatureFlagEnum as o } from "../../utils/featureflag/FeatureFlags.js";
9
- import { findRequestForDataset as s, getRestrictionUiTypeFromAridhiaRequest as c } from "./aridhiaAccessStatusUtils.js";
9
+ import { findRequestsForDataset as s, getRestrictionUiTypeFromAridhiaRequests as c } from "./aridhiaAccessStatusUtils.js";
10
10
  import { getAridhiaFairPortalDatasetUrl as l } from "./aridhiaFairPortalUrls.js";
11
11
  import { useGetAridhiaRequests as u } from "../../aridhia-queries/useGetAridhiaRequests.js";
12
12
  import "../../aridhia-queries/index.js";
@@ -21,12 +21,12 @@ var y = {
21
21
  p: "0px",
22
22
  minWidth: "unset"
23
23
  };
24
- function b(b) {
25
- let { datasetCode: x, fairPortalUrl: S } = b, { isAuthenticated: C } = t(), w = n(o.AMPALS_RDCA_DAP_FORM_ENABLED), { data: T, isLoading: E, isError: D, error: O } = u(), [k, A] = m(null), [j, M] = m(!1), [N, P] = m(!1), { content: F, actions: I } = p({ datasetCode: x }, {
26
- enabled: N,
27
- onClose: () => P(!1)
28
- });
29
- if (!C) return /* @__PURE__ */ _(h, {
24
+ function b(r) {
25
+ let { datasetCode: p, fairPortalUrl: b } = r, { isAuthenticated: S } = t(), C = n(o.AMPALS_RDCA_DAP_FORM_ENABLED), { data: w, isLoading: T, isError: E, error: D } = u(), [O, k] = m(null), [A, j] = m(!1), [M, N] = m(!1), [P, F] = m(0);
26
+ function I() {
27
+ k(null), F((e) => e + 1), N(!0);
28
+ }
29
+ if (!S) return /* @__PURE__ */ _(h, {
30
30
  sx: y,
31
31
  className: e,
32
32
  onClick: (e) => {
@@ -38,48 +38,61 @@ function b(b) {
38
38
  children: /* @__PURE__ */ _(i, { restrictionUiType: a.AccessBlockedToAnonymous })
39
39
  });
40
40
  let L = null;
41
- if (!E) if (D && O.isEligibilityFailure) L = /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(h, {
41
+ if (!T) if (E && D.isEligibilityFailure) L = /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(h, {
42
42
  sx: y,
43
- onClick: () => M(!0),
43
+ onClick: () => j(!0),
44
44
  "aria-label": "Link your RDCA-DAP account",
45
45
  children: /* @__PURE__ */ _(i, { restrictionUiType: a.AccessBlockedByRDCADAPAccountNotLinked })
46
46
  }), /* @__PURE__ */ _(f, {
47
- open: j,
48
- onClose: () => M(!1)
47
+ open: A,
48
+ onClose: () => j(!1)
49
49
  })] });
50
50
  else {
51
- let e = s(T?.items ?? [], x), t = c(e), n = /* @__PURE__ */ _(i, { restrictionUiType: t });
52
- t === a.AccessibleOnRDCADAP || !e && !w ? L = S ? /* @__PURE__ */ _("a", {
53
- href: l(S, x),
51
+ let e = s(w?.items ?? [], p), t = c(e), n = /* @__PURE__ */ _(i, { restrictionUiType: t });
52
+ L = !C && (e.length === 0 || t === a.AccessibleOnRDCADAP) ? b ? /* @__PURE__ */ _("a", {
53
+ href: l(b, p),
54
54
  target: "_blank",
55
55
  rel: "noopener noreferrer",
56
56
  children: n
57
- }) : n : e ? L = /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(h, {
57
+ }) : n : e.length > 0 ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(h, {
58
58
  sx: y,
59
- onClick: (e) => A(e.currentTarget),
59
+ onClick: (e) => k(e.currentTarget),
60
60
  "aria-label": "View data access request status",
61
61
  children: n
62
62
  }), /* @__PURE__ */ _(d, {
63
- open: !!k,
64
- anchorEl: k,
65
- onClose: () => A(null),
66
- request: e,
67
- fairPortalUrl: S
68
- })] }) : w && (L = /* @__PURE__ */ _(h, {
63
+ open: !!O,
64
+ anchorEl: O,
65
+ onClose: () => k(null),
66
+ datasetCode: p,
67
+ requests: e,
68
+ fairPortalUrl: b,
69
+ onNewRequest: C ? I : void 0
70
+ })] }) : /* @__PURE__ */ _(h, {
69
71
  sx: y,
70
- onClick: () => P(!0),
72
+ onClick: I,
71
73
  "aria-label": "Request data access",
72
74
  children: n
73
- }));
75
+ });
74
76
  }
75
- return /* @__PURE__ */ v(g, { children: [L, /* @__PURE__ */ _(r, {
76
- open: N,
77
- onCancel: () => P(!1),
77
+ return /* @__PURE__ */ v(g, { children: [L, /* @__PURE__ */ _(x, {
78
+ datasetCode: p,
79
+ open: M,
80
+ onClose: () => N(!1)
81
+ }, P)] });
82
+ }
83
+ function x(e) {
84
+ let { datasetCode: t, open: n, onClose: i } = e, { content: a, actions: o } = p({ datasetCode: t }, {
85
+ enabled: n,
86
+ onClose: i
87
+ });
88
+ return /* @__PURE__ */ _(r, {
89
+ open: n,
90
+ onCancel: i,
78
91
  maxWidth: "md",
79
92
  title: "Request Data Access",
80
- content: F,
81
- actions: I
82
- })] });
93
+ content: a,
94
+ actions: o
95
+ });
83
96
  }
84
97
  //#endregion
85
98
  export { b as default };