synapse-react-client 4.0.26 → 4.0.27

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 (357) hide show
  1. package/dist/SWC.index.d.ts +3 -2
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +4 -3
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/assets/icons/FileCopy.d.ts +5 -0
  6. package/dist/assets/icons/FileCopy.d.ts.map +1 -0
  7. package/dist/assets/icons/FileCopy.js +13 -0
  8. package/dist/assets/icons/FileCopy.js.map +1 -0
  9. package/dist/assets/icons/NIHIcon.d.ts +4 -0
  10. package/dist/assets/icons/NIHIcon.d.ts.map +1 -0
  11. package/dist/assets/icons/NIHIcon.js +14 -0
  12. package/dist/assets/icons/NIHIcon.js.map +1 -0
  13. package/dist/assets/icons/fileCopy.svg +8 -0
  14. package/dist/assets/icons/fileCopy2.js +33 -0
  15. package/dist/assets/icons/fileCopy2.js.map +1 -0
  16. package/dist/assets/icons/nih.js +35 -0
  17. package/dist/assets/icons/nih.js.map +1 -0
  18. package/dist/assets/icons/nih.svg +9 -0
  19. package/dist/assets/illustrations/compute_illustration.js +485 -0
  20. package/dist/assets/illustrations/compute_illustration.js.map +1 -0
  21. package/dist/assets/illustrations/compute_illustration.svg +204 -0
  22. package/dist/assets/illustrations/curate_data_illustration.js +479 -0
  23. package/dist/assets/illustrations/curate_data_illustration.js.map +1 -0
  24. package/dist/assets/illustrations/curate_data_illustration.svg +91 -0
  25. package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js +1 -1
  26. package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js +1 -1
  27. package/dist/components/Authentication/AuthenticationMethodSelection.d.ts +1 -0
  28. package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
  29. package/dist/components/Authentication/AuthenticationMethodSelection.js +17 -10
  30. package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
  31. package/dist/components/Authentication/LastLoginInfo.d.ts +2 -2
  32. package/dist/components/Authentication/LoginForm.d.ts +1 -0
  33. package/dist/components/Authentication/LoginForm.d.ts.map +1 -1
  34. package/dist/components/Authentication/LoginForm.js +3 -2
  35. package/dist/components/Authentication/LoginForm.js.map +1 -1
  36. package/dist/components/Authentication/LoginMethod.d.ts +2 -2
  37. package/dist/components/Authentication/LoginMethod.d.ts.map +1 -1
  38. package/dist/components/Authentication/LoginMethod.js +10 -8
  39. package/dist/components/Authentication/LoginMethod.js.map +1 -1
  40. package/dist/components/Authentication/StandaloneLoginForm.d.ts +1 -0
  41. package/dist/components/Authentication/StandaloneLoginForm.d.ts.map +1 -1
  42. package/dist/components/Authentication/StandaloneLoginForm.js +16 -15
  43. package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
  44. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -2
  45. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  46. package/dist/components/Breadcrumbs/Breadcrumbs.js +24 -30
  47. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  48. package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +1 -1
  49. package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js +1 -1
  50. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
  51. package/dist/components/ChangePassword/ChangePassword.js +1 -1
  52. package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts +3 -2
  53. package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts.map +1 -1
  54. package/dist/components/CopyToClipboardString/CopyToClipboardString.js +27 -18
  55. package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
  56. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  57. package/dist/components/DataGrid/SynapseGrid.js +2 -5
  58. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  59. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +35 -0
  60. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -0
  61. package/dist/components/DataGrid/SyncGridWithSourceButton.js +115 -0
  62. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -0
  63. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +2 -0
  64. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +1 -1
  65. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  66. package/dist/components/DataGrid/useMergeGridWithSource.d.ts +12 -7
  67. package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
  68. package/dist/components/DataGrid/useMergeGridWithSource.js +31 -25
  69. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  70. package/dist/components/DownloadCart/DownloadListTable.js +1 -1
  71. package/dist/components/DynamicForm/DynamicForm.js +1 -1
  72. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  73. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js +1 -1
  74. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  75. package/dist/components/EntityFinder/EntityIdTextField.d.ts +1 -0
  76. package/dist/components/EntityFinder/EntityIdTextField.d.ts.map +1 -1
  77. package/dist/components/EntityFinder/EntityIdTextField.js +7 -6
  78. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  79. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
  80. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  81. package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
  82. package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
  83. package/dist/components/EntitySidebar/EntitySidebar.js +47 -39
  84. package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
  85. package/dist/components/EntitySidebar/EntitySidebar.module.js +11 -11
  86. package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
  87. package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -6
  88. package/dist/components/FieldDescription/FieldDescription.css +1 -0
  89. package/dist/components/FieldDescription/FieldDescription.d.ts +15 -0
  90. package/dist/components/FieldDescription/FieldDescription.d.ts.map +1 -0
  91. package/dist/components/FieldDescription/FieldDescription.js +13 -0
  92. package/dist/components/FieldDescription/FieldDescription.js.map +1 -0
  93. package/dist/components/FieldDescription/FieldDescription.module.js +5 -0
  94. package/dist/components/FieldDescription/FieldDescription.module.js.map +1 -0
  95. package/dist/components/FieldDescription/FieldDescription.module.scss +8 -0
  96. package/dist/components/FieldDescription/index.d.ts +3 -0
  97. package/dist/components/FieldDescription/index.d.ts.map +1 -0
  98. package/dist/components/FieldDescription/index.js +2 -0
  99. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  100. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  101. package/dist/components/IconSvg/IconSvg.js +216 -212
  102. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  103. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js +1 -1
  104. package/dist/components/OAuthClientManagement/OAuthManagement.js +1 -1
  105. package/dist/components/PortalAclEditor/PortalAclEditorModal.js +1 -1
  106. package/dist/components/PortalList/CreatePortalModal.js +1 -1
  107. package/dist/components/PortalList/PortalCard.js +1 -1
  108. package/dist/components/ProjectInfo/ProjectInfo.css +1 -0
  109. package/dist/components/ProjectInfo/ProjectInfo.d.ts +5 -0
  110. package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -0
  111. package/dist/components/ProjectInfo/ProjectInfo.js +50 -0
  112. package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -0
  113. package/dist/components/ProjectInfo/ProjectInfo.module.js +11 -0
  114. package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -0
  115. package/dist/components/ProjectInfo/ProjectInfo.module.scss +35 -0
  116. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts +10 -0
  117. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -0
  118. package/dist/components/ProjectInfo/ProjectInfoPopover.js +94 -0
  119. package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -0
  120. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts +2 -1
  121. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
  122. package/dist/components/ProjectStorage/ProjectDataAvailability.js +67 -75
  123. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  124. package/dist/components/StorybookComponentWrapper.js +1 -1
  125. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  126. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +1 -1
  127. package/dist/components/SynapseTable/table-top/DownloadOptions.js +1 -1
  128. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  129. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  130. package/dist/components/TextField/TextField.css +1 -1
  131. package/dist/components/TextField/TextField.d.ts.map +1 -1
  132. package/dist/components/TextField/TextField.js +27 -25
  133. package/dist/components/TextField/TextField.js.map +1 -1
  134. package/dist/components/TextField/TextField.module.js +3 -3
  135. package/dist/components/TextField/TextField.module.js.map +1 -1
  136. package/dist/components/TextField/TextField.module.scss +2 -5
  137. package/dist/components/Webhook/WebhookVerificationDialog.js +1 -1
  138. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js +1 -1
  139. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js +1 -1
  140. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +1 -1
  141. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  142. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +66 -49
  143. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  144. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  145. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  146. package/dist/components/error/SendMessageToEntityOwnerDialog.js +1 -1
  147. package/dist/components/index.js +1 -1
  148. package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
  149. package/dist/components/menu/ComplexMenu.js +1 -4
  150. package/dist/components/menu/ComplexMenu.js.map +1 -1
  151. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js +1 -1
  152. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  153. package/dist/features/curator/dashboard/CuratorDashboard.d.ts +1 -1
  154. package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
  155. package/dist/features/curator/dashboard/CuratorDashboard.js +36 -35
  156. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  157. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts +13 -0
  158. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -0
  159. package/dist/features/curator/dashboard/CuratorDashboardRouter.js +37 -0
  160. package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -0
  161. package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
  162. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +3 -1
  163. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
  164. package/dist/features/curator/dashboard/components/CurationTaskCard.js +26 -157
  165. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  166. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +10 -6
  167. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
  168. package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +31 -0
  169. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts +25 -0
  170. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -0
  171. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +134 -0
  172. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -0
  173. package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts +10 -0
  174. package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts.map +1 -0
  175. package/dist/features/curator/dashboard/components/ExecutableTaskCard.js +51 -0
  176. package/dist/features/curator/dashboard/components/ExecutableTaskCard.js.map +1 -0
  177. package/dist/features/curator/dashboard/components/GridTaskCard.d.ts +10 -0
  178. package/dist/features/curator/dashboard/components/GridTaskCard.d.ts.map +1 -0
  179. package/dist/features/curator/dashboard/components/GridTaskCard.js +35 -0
  180. package/dist/features/curator/dashboard/components/GridTaskCard.js.map +1 -0
  181. package/dist/features/curator/dashboard/components/NextStepButton.css +1 -1
  182. package/dist/features/curator/dashboard/components/NextStepButton.d.ts +3 -0
  183. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  184. package/dist/features/curator/dashboard/components/NextStepButton.js +56 -26
  185. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  186. package/dist/features/curator/dashboard/components/NextStepButton.module.js +6 -5
  187. package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -1
  188. package/dist/features/curator/dashboard/components/NextStepButton.module.scss +28 -0
  189. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts +31 -0
  190. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts.map +1 -0
  191. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js +32 -0
  192. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js.map +1 -0
  193. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  194. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +213 -204
  195. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  196. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -1
  197. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  198. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +19 -39
  199. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  200. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts +9 -3
  201. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  202. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -46
  203. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  204. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts +17 -0
  205. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -0
  206. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +43 -0
  207. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -0
  208. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
  209. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +27 -26
  210. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  211. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts +16 -0
  212. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts.map +1 -0
  213. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js +64 -0
  214. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js.map +1 -0
  215. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts +41 -0
  216. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts.map +1 -0
  217. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js +165 -0
  218. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js.map +1 -0
  219. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts +18 -0
  220. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts.map +1 -0
  221. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js +78 -0
  222. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js.map +1 -0
  223. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts +10 -0
  224. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts.map +1 -0
  225. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js +40 -0
  226. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js.map +1 -0
  227. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts +13 -0
  228. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts.map +1 -0
  229. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js +35 -0
  230. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js.map +1 -0
  231. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts +41 -0
  232. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts.map +1 -0
  233. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +198 -0
  234. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -0
  235. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts +8 -0
  236. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts.map +1 -0
  237. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js +29 -0
  238. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js.map +1 -0
  239. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts +13 -0
  240. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts.map +1 -0
  241. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js +65 -0
  242. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js.map +1 -0
  243. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts +11 -0
  244. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts.map +1 -0
  245. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js +33 -0
  246. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js.map +1 -0
  247. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts +13 -0
  248. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts.map +1 -0
  249. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js +38 -0
  250. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js.map +1 -0
  251. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts +13 -0
  252. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts.map +1 -0
  253. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js +72 -0
  254. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js.map +1 -0
  255. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts +11 -0
  256. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts.map +1 -0
  257. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js +42 -0
  258. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js.map +1 -0
  259. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts +17 -0
  260. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts.map +1 -0
  261. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +70 -0
  262. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -0
  263. package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts +23 -0
  264. package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts.map +1 -0
  265. package/dist/features/entity/metadata-task/create-task/TaskFormActions.js +68 -0
  266. package/dist/features/entity/metadata-task/create-task/TaskFormActions.js.map +1 -0
  267. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts +17 -0
  268. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts.map +1 -0
  269. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +33 -0
  270. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -0
  271. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts +50 -0
  272. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -0
  273. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +76 -0
  274. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -0
  275. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts +36 -0
  276. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts.map +1 -0
  277. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js +31 -0
  278. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js.map +1 -0
  279. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts +32 -0
  280. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts.map +1 -0
  281. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js +33 -0
  282. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js.map +1 -0
  283. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts +10 -0
  284. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts.map +1 -0
  285. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js +13 -0
  286. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js.map +1 -0
  287. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
  288. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +24 -24
  289. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  290. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -1
  291. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +2 -2
  292. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  293. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  294. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +33 -32
  295. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  296. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
  297. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +24 -21
  298. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  299. package/dist/features/entity/metadata-task/utils/constants.d.ts +84 -15
  300. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  301. package/dist/features/entity/metadata-task/utils/constants.js +47 -3
  302. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  303. package/dist/features/entity/metadata-task/utils/dueDate.d.ts +22 -0
  304. package/dist/features/entity/metadata-task/utils/dueDate.d.ts.map +1 -0
  305. package/dist/features/entity/metadata-task/utils/dueDate.js +24 -0
  306. package/dist/features/entity/metadata-task/utils/dueDate.js.map +1 -0
  307. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
  308. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
  309. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +5 -6
  310. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  311. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts +4 -4
  312. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts.map +1 -1
  313. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js +5 -6
  314. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  315. package/dist/features/entity/metadata-task/utils/types.d.ts +12 -0
  316. package/dist/features/entity/metadata-task/utils/types.d.ts.map +1 -0
  317. package/dist/features/entity/metadata-task/utils/types.js +18 -0
  318. package/dist/features/entity/metadata-task/utils/types.js.map +1 -0
  319. package/dist/mocks/curation/mockCurationTask.d.ts +6 -0
  320. package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -1
  321. package/dist/mocks/curation/mockCurationTask.js +20 -3
  322. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  323. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts +16 -0
  324. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts.map +1 -0
  325. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js +24 -0
  326. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js.map +1 -0
  327. package/dist/synapse-client/SynapseClient.d.ts +7 -1
  328. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  329. package/dist/synapse-client/SynapseClient.js +493 -482
  330. package/dist/synapse-client/SynapseClient.js.map +1 -1
  331. package/dist/synapse-client/index.js +3 -3
  332. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +8 -1
  333. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  334. package/dist/synapse-queries/curation/task/useCurationTask.js +48 -34
  335. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  336. package/dist/theme/palette/Palettes.js +2 -2
  337. package/dist/theme/palette/Palettes.js.map +1 -1
  338. package/dist/tsconfig.build.tsbuildinfo +1 -1
  339. package/dist/utils/AppUtils/session/useSessionManager.d.ts.map +1 -1
  340. package/dist/utils/AppUtils/session/useSessionManager.js +50 -48
  341. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  342. package/dist/utils/SynapseConstants.d.ts +4 -1
  343. package/dist/utils/SynapseConstants.d.ts.map +1 -1
  344. package/dist/utils/SynapseConstants.js +86 -83
  345. package/dist/utils/SynapseConstants.js.map +1 -1
  346. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -2
  347. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  348. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  349. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  350. package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
  351. package/dist/utils/hooks/useDetectSSOCode.js +37 -27
  352. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  353. package/package.json +5 -5
  354. package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts +0 -8
  355. package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts.map +0 -1
  356. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +0 -64
  357. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +0 -1
@@ -10,12 +10,13 @@ import { useCallback as o, useState as s } from "react";
10
10
  import { Alert as c, Box as l, IconButton as u, Stack as d, Typography as f } from "@mui/material";
11
11
  import { jsx as p, jsxs as m } from "react/jsx-runtime";
12
12
  import { TYPE_FILTER as h } from "@sage-bionetworks/synapse-types";
13
- import { EditTwoTone as g } from "@mui/icons-material";
13
+ import { instanceOfGridExecutionDetails as g } from "@sage-bionetworks/synapse-client";
14
+ import { EditTwoTone as _ } from "@mui/icons-material";
14
15
  //#region src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx
15
- function _(_) {
16
- let { taskBundle: v, canEdit: y } = _, b = v.task, { assigneePrincipalId: x } = b, [S, C] = s(!1), [w, T] = s(x ?? null), [E, D] = s(!1), { mutateAsync: O, isPending: k } = i({ onError: (t) => {
16
+ function v(v) {
17
+ let { taskBundle: y, canEdit: b } = v, x = y.task, { assigneePrincipalId: S } = x, [C, w] = s(!1), [T, E] = s(S ?? null), [D, O] = s(!1), { mutateAsync: k, isPending: A } = i({ onError: (t) => {
17
18
  e("Error updating task assignee: " + t.message, "danger");
18
- } }), A = /* @__PURE__ */ p(l, {
19
+ } }), j = /* @__PURE__ */ p(l, {
19
20
  component: "span",
20
21
  sx: {
21
22
  flexGrow: 1,
@@ -24,15 +25,15 @@ function _(_) {
24
25
  },
25
26
  children: "Unassigned"
26
27
  });
27
- a(b) && (A = /* @__PURE__ */ p(n, { principalId: x }));
28
- let j = o(async (e) => {
29
- await O({
30
- ...b,
28
+ a(x) && (j = /* @__PURE__ */ p(n, { principalId: S }));
29
+ let M = o(async (e) => {
30
+ await k({
31
+ ...x,
31
32
  assigneePrincipalId: e
32
- }), C(!1);
33
- }, [b, O]), M = /* @__PURE__ */ p(t, {
33
+ }), w(!1);
34
+ }, [x, k]), N = /* @__PURE__ */ p(t, {
34
35
  title: "Set Assignee",
35
- open: S,
36
+ open: C,
36
37
  content: /* @__PURE__ */ m(d, {
37
38
  gap: 2,
38
39
  children: [
@@ -42,11 +43,11 @@ function _(_) {
42
43
  children: "Use the Assignee field to organize work by assigning a task to a specific person or team. This field is only for task organization and filtering. It does not control project access or permission levels."
43
44
  }),
44
45
  /* @__PURE__ */ p(r, {
45
- defaultValue: x,
46
- onChange: (e) => T(e),
46
+ defaultValue: S,
47
+ onChange: (e) => E(e),
47
48
  typeFilter: h.ALL
48
- }, S.toString()),
49
- v.status?.executionDetails?.activeSessionId && /* @__PURE__ */ m(c, {
49
+ }, C.toString()),
50
+ y.status?.executionDetails && g(y.status?.executionDetails) && y.status?.executionDetails?.activeSessionId && /* @__PURE__ */ m(c, {
50
51
  severity: "warning",
51
52
  children: [
52
53
  "This task has an active Curator session. If you change the assignee, these effects could happen:",
@@ -58,12 +59,12 @@ function _(_) {
58
59
  }),
59
60
  confirmButtonProps: {
60
61
  children: "Save",
61
- loading: k
62
+ loading: A
62
63
  },
63
64
  onConfirm: () => {
64
- j(w ?? void 0);
65
+ M(T ?? void 0);
65
66
  },
66
- onCancel: () => C(!1)
67
+ onCancel: () => w(!1)
67
68
  });
68
69
  return /* @__PURE__ */ m(d, {
69
70
  direction: "row",
@@ -71,27 +72,27 @@ function _(_) {
71
72
  justifyContent: "space-between",
72
73
  spacing: 1,
73
74
  onMouseOver: () => {
74
- D(!0);
75
+ O(!0);
75
76
  },
76
77
  onMouseLeave: () => {
77
- D(!1);
78
+ O(!1);
78
79
  },
79
80
  children: [
80
81
  /* @__PURE__ */ p("span", {
81
82
  style: { overflow: "hidden" },
82
- children: A
83
+ children: j
83
84
  }),
84
- E && y && /* @__PURE__ */ p("div", { children: /* @__PURE__ */ p(u, {
85
+ D && b && /* @__PURE__ */ p("div", { children: /* @__PURE__ */ p(u, {
85
86
  "aria-label": "Edit assignee",
86
87
  size: "small",
87
- onClick: () => C(!0),
88
- children: /* @__PURE__ */ p(g, { fontSize: "inherit" })
88
+ onClick: () => w(!0),
89
+ children: /* @__PURE__ */ p(_, { fontSize: "inherit" })
89
90
  }) }),
90
- M
91
+ N
91
92
  ]
92
93
  });
93
94
  }
94
95
  //#endregion
95
- export { _ as default };
96
+ export { v as default };
96
97
 
97
98
  //# sourceMappingURL=MetadataTasksTableAssigneeCell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataTasksTableAssigneeCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport { displayToast } from '@/index'\nimport { useUpdateCurationTask } from '@/synapse-queries/curation/task/useCurationTask'\nimport { EditTwoTone } from '@mui/icons-material'\nimport { Alert, Box, IconButton, Stack, Typography } from '@mui/material'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport taskHasAssignee from '../utils/taskHasAssignee'\n\nexport type MetadataTasksTableAssigneeCellProps = {\n taskBundle: TaskBundle\n canEdit: boolean\n}\n\nexport default function MetadataTasksTableAssigneeCell(\n props: MetadataTasksTableAssigneeCellProps,\n) {\n const { taskBundle, canEdit } = props\n const curationTask = taskBundle.task!\n const { assigneePrincipalId } = curationTask\n const [showUserPicker, setShowUserPicker] = useState(false)\n const [selectedPrincipalId, setSelectedPrincipalId] = useState<string | null>(\n assigneePrincipalId ?? null,\n )\n const [isHoveringOnCell, setIsHoveringOnCell] = useState(false)\n\n const { mutateAsync: updateCurationTask, isPending: updateTaskIsPending } =\n useUpdateCurationTask({\n onError: error => {\n displayToast('Error updating task assignee: ' + error.message, 'danger')\n },\n })\n\n let assigneeDisplay = (\n <Box\n component=\"span\"\n sx={{ flexGrow: 1, fontStyle: 'italic', color: 'grey.700' }}\n >\n Unassigned\n </Box>\n )\n\n const hasAssignee = taskHasAssignee(curationTask)\n if (hasAssignee) {\n assigneeDisplay = <UserOrTeamBadge principalId={assigneePrincipalId} />\n }\n\n const onConfirmUpdateAssignee = useCallback(\n async (assigneeId: string | undefined) => {\n await updateCurationTask({\n ...curationTask,\n assigneePrincipalId: assigneeId,\n })\n setShowUserPicker(false)\n },\n [curationTask, updateCurationTask],\n )\n\n const editDialog = (\n <ConfirmationDialog\n title=\"Set Assignee\"\n open={showUserPicker}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\" gutterBottom>\n Use the Assignee field to organize work by assigning a task to a\n specific person or team. This field is only for task organization\n and filtering. It does not control project access or permission\n levels.\n </Typography>\n <UserSearchBox\n key={showUserPicker.toString()}\n defaultValue={assigneePrincipalId}\n onChange={principalId => setSelectedPrincipalId(principalId)}\n typeFilter={TYPE_FILTER.ALL}\n />\n {taskBundle.status?.executionDetails?.activeSessionId && (\n <Alert severity=\"warning\">\n This task has an active Curator session. If you change the\n assignee, these effects could happen:\n <ul>\n <li>\n Current assignee(s) may lose access to the session, unsaved\n changes will be lost, and they may not be able to complete\n their work.\n </li>\n <li>\n New assignee(s) may not have permission to access the current\n session\n </li>\n </ul>\n To avoid these issues, a data manager should create a new task.\n </Alert>\n )}\n </Stack>\n }\n confirmButtonProps={{\n children: 'Save',\n loading: updateTaskIsPending,\n }}\n onConfirm={() => {\n onConfirmUpdateAssignee(selectedPrincipalId ?? undefined)\n }}\n onCancel={() => setShowUserPicker(false)}\n />\n )\n\n const editButton = (\n <div>\n <IconButton\n aria-label=\"Edit assignee\"\n size=\"small\"\n onClick={() => setShowUserPicker(true)}\n >\n <EditTwoTone fontSize=\"inherit\" />\n </IconButton>\n </div>\n )\n\n return (\n <Stack\n direction={'row'}\n alignItems={'center'}\n justifyContent={'space-between'}\n spacing={1}\n onMouseOver={() => {\n setIsHoveringOnCell(true)\n }}\n onMouseLeave={() => {\n setIsHoveringOnCell(false)\n }}\n >\n <span style={{ overflow: 'hidden' }}>{assigneeDisplay}</span>\n {isHoveringOnCell && canEdit && editButton}\n {editDialog}\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;AAiBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,eAAY,GAC1B,IAAe,EAAW,MAC1B,EAAE,2BAAwB,GAC1B,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,CAAC,GAAqB,KAA0B,EACpD,KAAuB,IACzB,GACM,CAAC,GAAkB,KAAuB,EAAS,EAAK,GAExD,EAAE,aAAa,GAAoB,WAAW,MAClD,EAAsB,EACpB,UAAS,MAAS;EAChB,EAAa,mCAAmC,EAAM,SAAS,QAAQ;CACzE,EACF,CAAC,GAEC,IACF,kBAAC,GAAD;EACE,WAAU;EACV,IAAI;GAAE,UAAU;GAAG,WAAW;GAAU,OAAO;EAAW;YAC3D;CAEI,CAAA;CAIP,AADoB,EAAgB,CAChC,MACF,IAAkB,kBAAC,GAAD,EAAiB,aAAa,EAAsB,CAAA;CAGxE,IAAM,IAA0B,EAC9B,OAAO,MAAmC;EAKxC,AAJA,MAAM,EAAmB;GACvB,GAAG;GACH,qBAAqB;EACvB,CAAC,GACD,EAAkB,EAAK;CACzB,GACA,CAAC,GAAc,CAAkB,CACnC,GAEM,IACJ,kBAAC,GAAD;EACE,OAAM;EACN,MAAM;EACN,SACE,kBAAC,GAAD;GAAO,KAAK;aAAZ;IACE,kBAAC,GAAD;KAAY,SAAQ;KAAQ,cAAA;eAAa;IAK7B,CAAA;IACZ,kBAAC,GAAD;KAEE,cAAc;KACd,WAAU,MAAe,EAAuB,CAAW;KAC3D,YAAY,EAAY;IACzB,GAJM,EAAe,SAAS,CAI9B;IACA,EAAW,QAAQ,kBAAkB,mBACpC,kBAAC,GAAD;KAAO,UAAS;eAAhB;MAA0B;MAGxB,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UAAI,qIAIA,CAAA,GACJ,kBAAC,MAAD,EAAA,UAAI,wEAGA,CAAA,CACF,EAAA,CAAA;MAAC;KAEA;;GAEJ;;EAET,oBAAoB;GAClB,UAAU;GACV,SAAS;EACX;EACA,iBAAiB;GACf,EAAwB,KAAuB,KAAA,CAAS;EAC1D;EACA,gBAAgB,EAAkB,EAAK;CACxC,CAAA;CAeH,OACE,kBAAC,GAAD;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,SAAS;EACT,mBAAmB;GACjB,EAAoB,EAAI;EAC1B;EACA,oBAAoB;GAClB,EAAoB,EAAK;EAC3B;YAVF;GAYE,kBAAC,QAAD;IAAM,OAAO,EAAE,UAAU,SAAS;cAAI;GAAsB,CAAA;GAC3D,KAAoB,KAzBvB,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;IACE,cAAW;IACX,MAAK;IACL,eAAe,EAAkB,EAAI;cAErC,kBAAC,GAAD,EAAa,UAAS,UAAW,CAAA;GACvB,CAAA,EACT,CAiB6B;GAC/B;EACI;;AAEX"}
1
+ {"version":3,"file":"MetadataTasksTableAssigneeCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport { displayToast } from '@/index'\nimport { useUpdateCurationTask } from '@/synapse-queries/curation/task/useCurationTask'\nimport { EditTwoTone } from '@mui/icons-material'\nimport { Alert, Box, IconButton, Stack, Typography } from '@mui/material'\nimport {\n instanceOfGridExecutionDetails,\n TaskBundle,\n} from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useCallback, useState } from 'react'\nimport taskHasAssignee from '../utils/taskHasAssignee'\n\nexport type MetadataTasksTableAssigneeCellProps = {\n taskBundle: TaskBundle\n canEdit: boolean\n}\n\nexport default function MetadataTasksTableAssigneeCell(\n props: MetadataTasksTableAssigneeCellProps,\n) {\n const { taskBundle, canEdit } = props\n const curationTask = taskBundle.task!\n const { assigneePrincipalId } = curationTask\n const [showUserPicker, setShowUserPicker] = useState(false)\n const [selectedPrincipalId, setSelectedPrincipalId] = useState<string | null>(\n assigneePrincipalId ?? null,\n )\n const [isHoveringOnCell, setIsHoveringOnCell] = useState(false)\n\n const { mutateAsync: updateCurationTask, isPending: updateTaskIsPending } =\n useUpdateCurationTask({\n onError: error => {\n displayToast('Error updating task assignee: ' + error.message, 'danger')\n },\n })\n\n let assigneeDisplay = (\n <Box\n component=\"span\"\n sx={{ flexGrow: 1, fontStyle: 'italic', color: 'grey.700' }}\n >\n Unassigned\n </Box>\n )\n\n const hasAssignee = taskHasAssignee(curationTask)\n if (hasAssignee) {\n assigneeDisplay = <UserOrTeamBadge principalId={assigneePrincipalId} />\n }\n\n const onConfirmUpdateAssignee = useCallback(\n async (assigneeId: string | undefined) => {\n await updateCurationTask({\n ...curationTask,\n assigneePrincipalId: assigneeId,\n })\n setShowUserPicker(false)\n },\n [curationTask, updateCurationTask],\n )\n\n const editDialog = (\n <ConfirmationDialog\n title=\"Set Assignee\"\n open={showUserPicker}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\" gutterBottom>\n Use the Assignee field to organize work by assigning a task to a\n specific person or team. This field is only for task organization\n and filtering. It does not control project access or permission\n levels.\n </Typography>\n <UserSearchBox\n key={showUserPicker.toString()}\n defaultValue={assigneePrincipalId}\n onChange={principalId => setSelectedPrincipalId(principalId)}\n typeFilter={TYPE_FILTER.ALL}\n />\n {taskBundle.status?.executionDetails &&\n instanceOfGridExecutionDetails(\n taskBundle.status?.executionDetails,\n ) &&\n taskBundle.status?.executionDetails?.activeSessionId && (\n <Alert severity=\"warning\">\n This task has an active Curator session. If you change the\n assignee, these effects could happen:\n <ul>\n <li>\n Current assignee(s) may lose access to the session, unsaved\n changes will be lost, and they may not be able to complete\n their work.\n </li>\n <li>\n New assignee(s) may not have permission to access the\n current session\n </li>\n </ul>\n To avoid these issues, a data manager should create a new task.\n </Alert>\n )}\n </Stack>\n }\n confirmButtonProps={{\n children: 'Save',\n loading: updateTaskIsPending,\n }}\n onConfirm={() => {\n onConfirmUpdateAssignee(selectedPrincipalId ?? undefined)\n }}\n onCancel={() => setShowUserPicker(false)}\n />\n )\n\n const editButton = (\n <div>\n <IconButton\n aria-label=\"Edit assignee\"\n size=\"small\"\n onClick={() => setShowUserPicker(true)}\n >\n <EditTwoTone fontSize=\"inherit\" />\n </IconButton>\n </div>\n )\n\n return (\n <Stack\n direction={'row'}\n alignItems={'center'}\n justifyContent={'space-between'}\n spacing={1}\n onMouseOver={() => {\n setIsHoveringOnCell(true)\n }}\n onMouseLeave={() => {\n setIsHoveringOnCell(false)\n }}\n >\n <span style={{ overflow: 'hidden' }}>{assigneeDisplay}</span>\n {isHoveringOnCell && canEdit && editButton}\n {editDialog}\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoBA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,eAAY,GAC1B,IAAe,EAAW,MAC1B,EAAE,2BAAwB,GAC1B,CAAC,GAAgB,KAAqB,EAAS,EAAK,GACpD,CAAC,GAAqB,KAA0B,EACpD,KAAuB,IACzB,GACM,CAAC,GAAkB,KAAuB,EAAS,EAAK,GAExD,EAAE,aAAa,GAAoB,WAAW,MAClD,EAAsB,EACpB,UAAS,MAAS;EAChB,EAAa,mCAAmC,EAAM,SAAS,QAAQ;CACzE,EACF,CAAC,GAEC,IACF,kBAAC,GAAD;EACE,WAAU;EACV,IAAI;GAAE,UAAU;GAAG,WAAW;GAAU,OAAO;EAAW;YAC3D;CAEI,CAAA;CAIP,AADoB,EAAgB,CAChC,MACF,IAAkB,kBAAC,GAAD,EAAiB,aAAa,EAAsB,CAAA;CAGxE,IAAM,IAA0B,EAC9B,OAAO,MAAmC;EAKxC,AAJA,MAAM,EAAmB;GACvB,GAAG;GACH,qBAAqB;EACvB,CAAC,GACD,EAAkB,EAAK;CACzB,GACA,CAAC,GAAc,CAAkB,CACnC,GAEM,IACJ,kBAAC,GAAD;EACE,OAAM;EACN,MAAM;EACN,SACE,kBAAC,GAAD;GAAO,KAAK;aAAZ;IACE,kBAAC,GAAD;KAAY,SAAQ;KAAQ,cAAA;eAAa;IAK7B,CAAA;IACZ,kBAAC,GAAD;KAEE,cAAc;KACd,WAAU,MAAe,EAAuB,CAAW;KAC3D,YAAY,EAAY;IACzB,GAJM,EAAe,SAAS,CAI9B;IACA,EAAW,QAAQ,oBAClB,EACE,EAAW,QAAQ,gBACrB,KACA,EAAW,QAAQ,kBAAkB,mBACnC,kBAAC,GAAD;KAAO,UAAS;eAAhB;MAA0B;MAGxB,kBAAC,MAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UAAI,qIAIA,CAAA,GACJ,kBAAC,MAAD,EAAA,UAAI,wEAGA,CAAA,CACF,EAAA,CAAA;MAAC;KAEA;;GAEN;;EAET,oBAAoB;GAClB,UAAU;GACV,SAAS;EACX;EACA,iBAAiB;GACf,EAAwB,KAAuB,KAAA,CAAS;EAC1D;EACA,gBAAgB,EAAkB,EAAK;CACxC,CAAA;CAeH,OACE,kBAAC,GAAD;EACE,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,SAAS;EACT,mBAAmB;GACjB,EAAoB,EAAI;EAC1B;EACA,oBAAoB;GAClB,EAAoB,EAAK;EAC3B;YAVF;GAYE,kBAAC,QAAD;IAAM,OAAO,EAAE,UAAU,SAAS;cAAI;GAAsB,CAAA;GAC3D,KAAoB,KAzBvB,kBAAC,OAAD,EAAA,UACE,kBAAC,GAAD;IACE,cAAW;IACX,MAAK;IACL,eAAe,EAAkB,EAAI;cAErC,kBAAC,GAAD,EAAa,UAAS,UAAW,CAAA;GACvB,CAAA,EACT,CAiB6B;GAC/B;EACI;;AAEX"}
@@ -0,0 +1,16 @@
1
+ export type CommonTaskFieldsProps = {
2
+ dataType: string;
3
+ onDataTypeChange: (value: string) => void;
4
+ dueDate: string;
5
+ onDueDateChange: (value: string) => void;
6
+ instructions: string;
7
+ onInstructionsChange: (value: string) => void;
8
+ assigneePrincipalId: string | undefined;
9
+ onAssigneePrincipalIdChange: (value: string | undefined) => void;
10
+ };
11
+ /**
12
+ * The fields shared by every Curation Task category: task name, due date, instructions to the assignee,
13
+ * and the assignee themselves. Used by `ComputeTaskForm` and `CurateTaskForm`. Due date is optional.
14
+ */
15
+ export default function CommonTaskFields(props: CommonTaskFieldsProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=CommonTaskFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommonTaskFields.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/create-task/CommonTaskFields.tsx"],"names":[],"mappings":"AAeA,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,YAAY,EAAE,MAAM,CAAA;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,2BAA2B,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;CACjE,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAsDpE"}
@@ -0,0 +1,64 @@
1
+ import e from "../../../../components/FieldDescription/FieldDescription.js";
2
+ import "../../../../components/FieldDescription/index.js";
3
+ import t from "../../../../components/TextField/TextField.js";
4
+ import "../../../../components/TextField/index.js";
5
+ import n from "../../../../components/UserSearchBox/UserSearchBox.js";
6
+ import { ASSIGNEE_INPUT_DESCRIPTION as r, TASK_DUE_DATE_INPUT_DESCRIPTION as i, TASK_DUE_DATE_INPUT_LABEL as a, TASK_INSTRUCTIONS_INPUT_DESCRIPTION as o, TASK_NAME_INPUT_DESCRIPTION as s } from "../utils/constants.js";
7
+ import { Box as c, InputLabel as l, Stack as u } from "@mui/material";
8
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
+ import { TYPE_FILTER as p } from "@sage-bionetworks/synapse-types";
10
+ //#region src/features/entity/metadata-task/create-task/CommonTaskFields.tsx
11
+ var m = "create-task-assignee";
12
+ function h(h) {
13
+ let { dataType: g, onDataTypeChange: _, dueDate: v, onDueDateChange: y, instructions: b, onInstructionsChange: x, assigneePrincipalId: S, onAssigneePrincipalIdChange: C } = h;
14
+ return /* @__PURE__ */ f(u, {
15
+ gap: 2,
16
+ children: [
17
+ /* @__PURE__ */ d(t, {
18
+ label: "Task Name",
19
+ fullWidth: !0,
20
+ required: !0,
21
+ value: g,
22
+ onChange: (e) => _(e.target.value),
23
+ description: s,
24
+ placeholder: "Enter name"
25
+ }),
26
+ /* @__PURE__ */ d(t, {
27
+ label: a,
28
+ fullWidth: !0,
29
+ type: "date",
30
+ value: v,
31
+ onChange: (e) => y(e.target.value),
32
+ description: i,
33
+ slotProps: { inputLabel: { shrink: !0 } }
34
+ }),
35
+ /* @__PURE__ */ d(t, {
36
+ label: "Instructions",
37
+ fullWidth: !0,
38
+ required: !0,
39
+ multiline: !0,
40
+ minRows: 3,
41
+ value: b,
42
+ onChange: (e) => x(e.target.value),
43
+ description: o
44
+ }),
45
+ /* @__PURE__ */ f(c, { children: [
46
+ /* @__PURE__ */ d(l, {
47
+ htmlFor: m,
48
+ children: "Assignee"
49
+ }),
50
+ /* @__PURE__ */ d(e, { children: r }),
51
+ /* @__PURE__ */ d(n, {
52
+ inputId: m,
53
+ value: S ?? null,
54
+ onChange: (e) => C(e ?? void 0),
55
+ typeFilter: p.ALL
56
+ })
57
+ ] })
58
+ ]
59
+ });
60
+ }
61
+ //#endregion
62
+ export { h as default };
63
+
64
+ //# sourceMappingURL=CommonTaskFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommonTaskFields.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/CommonTaskFields.tsx"],"sourcesContent":["import FieldDescription from '@/components/FieldDescription'\nimport { TextField } from '@/components/TextField'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport { Box, InputLabel, Stack } from '@mui/material'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport {\n ASSIGNEE_INPUT_DESCRIPTION,\n TASK_DUE_DATE_INPUT_DESCRIPTION,\n TASK_DUE_DATE_INPUT_LABEL,\n TASK_INSTRUCTIONS_INPUT_DESCRIPTION,\n TASK_NAME_INPUT_DESCRIPTION,\n} from '../utils/constants'\n\nconst ASSIGNEE_INPUT_ID = 'create-task-assignee'\n\nexport type CommonTaskFieldsProps = {\n dataType: string\n onDataTypeChange: (value: string) => void\n dueDate: string\n onDueDateChange: (value: string) => void\n instructions: string\n onInstructionsChange: (value: string) => void\n assigneePrincipalId: string | undefined\n onAssigneePrincipalIdChange: (value: string | undefined) => void\n}\n\n/**\n * The fields shared by every Curation Task category: task name, due date, instructions to the assignee,\n * and the assignee themselves. Used by `ComputeTaskForm` and `CurateTaskForm`. Due date is optional.\n */\nexport default function CommonTaskFields(props: CommonTaskFieldsProps) {\n const {\n dataType,\n onDataTypeChange,\n dueDate,\n onDueDateChange,\n instructions,\n onInstructionsChange,\n assigneePrincipalId,\n onAssigneePrincipalIdChange,\n } = props\n\n return (\n <Stack gap={2}>\n <TextField\n label=\"Task Name\"\n fullWidth\n required\n value={dataType}\n onChange={e => onDataTypeChange(e.target.value)}\n description={TASK_NAME_INPUT_DESCRIPTION}\n placeholder=\"Enter name\"\n />\n <TextField\n label={TASK_DUE_DATE_INPUT_LABEL}\n fullWidth\n type=\"date\"\n value={dueDate}\n onChange={e => onDueDateChange(e.target.value)}\n description={TASK_DUE_DATE_INPUT_DESCRIPTION}\n slotProps={{ inputLabel: { shrink: true } }}\n />\n <TextField\n label=\"Instructions\"\n fullWidth\n required\n multiline\n minRows={3}\n value={instructions}\n onChange={e => onInstructionsChange(e.target.value)}\n description={TASK_INSTRUCTIONS_INPUT_DESCRIPTION}\n />\n <Box>\n <InputLabel htmlFor={ASSIGNEE_INPUT_ID}>Assignee</InputLabel>\n <FieldDescription>{ASSIGNEE_INPUT_DESCRIPTION}</FieldDescription>\n <UserSearchBox\n inputId={ASSIGNEE_INPUT_ID}\n value={assigneePrincipalId ?? null}\n onChange={id => onAssigneePrincipalIdChange(id ?? undefined)}\n typeFilter={TYPE_FILTER.ALL}\n />\n </Box>\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;AAaA,IAAM,IAAoB;AAiB1B,SAAwB,EAAiB,GAA8B;CACrE,IAAM,EACJ,aACA,qBACA,YACA,oBACA,iBACA,yBACA,wBACA,mCACE;CAEJ,OACE,kBAAC,GAAD;EAAO,KAAK;YAAZ;GACE,kBAAC,GAAD;IACE,OAAM;IACN,WAAA;IACA,UAAA;IACA,OAAO;IACP,WAAU,MAAK,EAAiB,EAAE,OAAO,KAAK;IAC9C,aAAa;IACb,aAAY;GACb,CAAA;GACD,kBAAC,GAAD;IACE,OAAO;IACP,WAAA;IACA,MAAK;IACL,OAAO;IACP,WAAU,MAAK,EAAgB,EAAE,OAAO,KAAK;IAC7C,aAAa;IACb,WAAW,EAAE,YAAY,EAAE,QAAQ,GAAK,EAAE;GAC3C,CAAA;GACD,kBAAC,GAAD;IACE,OAAM;IACN,WAAA;IACA,UAAA;IACA,WAAA;IACA,SAAS;IACT,OAAO;IACP,WAAU,MAAK,EAAqB,EAAE,OAAO,KAAK;IAClD,aAAa;GACd,CAAA;GACD,kBAAC,GAAD,EAAA,UAAA;IACE,kBAAC,GAAD;KAAY,SAAS;eAAmB;IAAoB,CAAA;IAC5D,kBAAC,GAAD,EAAA,UAAmB,EAA6C,CAAA;IAChE,kBAAC,GAAD;KACE,SAAS;KACT,OAAO,KAAuB;KAC9B,WAAU,MAAM,EAA4B,KAAM,KAAA,CAAS;KAC3D,YAAY,EAAY;IACzB,CAAA;GACE,EAAA,CAAA;EACA;;AAEX"}
@@ -0,0 +1,41 @@
1
+ import { CurationTask } from '@sage-bionetworks/synapse-client';
2
+ export type ComputeTaskFormProps = {
3
+ /**
4
+ * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).
5
+ * Absent when creating from a context without one (e.g. the Curator Dashboard), in which case the user
6
+ * is prompted to choose a project. Ignored in edit mode -- the project is always derived from `task`.
7
+ */
8
+ projectId?: string;
9
+ /** The task being edited. Undefined when creating a new task. */
10
+ task?: CurationTask;
11
+ /** Called after a new task is successfully created. */
12
+ onCreated?: (task: CurationTask) => void;
13
+ /** Called after an existing task is successfully saved. */
14
+ onSaved?: (task: CurationTask) => void;
15
+ /** Called after the task is successfully deleted (edit mode only). */
16
+ onDeleted?: () => void;
17
+ /** Shows a "Back" button (create mode) that returns to the category picker. */
18
+ onBack?: () => void;
19
+ /** Shows a "Cancel" button (edit mode) that exits the page without saving. */
20
+ onCancel?: () => void;
21
+ /**
22
+ * Shows a "Back to All Tasks" button in the top-left of the page, which exits the entire
23
+ * create/edit flow back to the task list (as opposed to `onBack`/`onCancel`, which only move
24
+ * between steps within the flow).
25
+ */
26
+ onExit?: () => void;
27
+ /**
28
+ * When present, rendered as a centered page title above the form (e.g. "Create New Compute Task" or
29
+ * "Edit Task"). The host page is responsible for supplying this rather than rendering its own
30
+ * heading, so the title and the single-column form below it share one centered layout.
31
+ */
32
+ pageTitle?: string;
33
+ /** When present, rendered as a centered subtitle below `pageTitle`. */
34
+ pageDescription?: string;
35
+ };
36
+ /**
37
+ * The create/edit form for a Compute Data curation task. Used as step 2 of the create wizard
38
+ * (`CreateCurationTaskFlow`) and directly by `EditCurationTaskPage`.
39
+ */
40
+ export default function ComputeTaskForm(props: ComputeTaskFormProps): import("react/jsx-runtime").JSX.Element;
41
+ //# sourceMappingURL=ComputeTaskForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComputeTaskForm.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/create-task/ComputeTaskForm.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAEb,MAAM,kCAAkC,CAAA;AA0CzC,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACxC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAmNlE"}
@@ -0,0 +1,165 @@
1
+ import { StyledFormControl as e } from "../../../../components/styled/StyledFormControl.js";
2
+ import "../../../../components/styled/index.js";
3
+ import { COMPUTE_TASK_TYPE_CONFIG as t, COMPUTE_TASK_TYPE_OPTIONS as n, DEFAULT_COMPUTE_TASK_TYPE as r, TASK_STATUS_CONFIG as i } from "../utils/constants.js";
4
+ import { getComputeTaskConcreteType as a, instanceOfGridSupportedTaskProperties as o } from "../utils/types.js";
5
+ import { useCurationTaskFormState as s } from "./useCurationTaskFormState.js";
6
+ import c from "./CommonTaskFields.js";
7
+ import l from "./ProjectSelectorField.js";
8
+ import { isValidTaskIdInput as u } from "./utils/taskIdValidation.js";
9
+ import d from "./RecordSetFields.js";
10
+ import f from "./SampleSheetFields.js";
11
+ import p from "./TaskFormActions.js";
12
+ import m from "./TaskFormHeader.js";
13
+ import { buildComputeTaskPayload as h } from "./utils/buildComputeTaskPayload.js";
14
+ import { useState as g } from "react";
15
+ import { Alert as _, InputLabel as v, MenuItem as y, Select as b, Stack as x } from "@mui/material";
16
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
17
+ import { TaskStatusStateEnum as w } from "@sage-bionetworks/synapse-client";
18
+ import T from "lodash-es/noop";
19
+ //#region src/features/entity/metadata-task/create-task/ComputeTaskForm.tsx
20
+ var E = {
21
+ inputTaskId: "",
22
+ destinationTaskId: ""
23
+ }, D = {
24
+ folderId: "",
25
+ instructions: "",
26
+ destinationTaskId: ""
27
+ };
28
+ function O(O) {
29
+ let { projectId: k, task: A, onCreated: j, onSaved: M, onDeleted: N, onBack: P, onCancel: F, onExit: I, pageTitle: L, pageDescription: R } = O, z = s({
30
+ projectId: k,
31
+ task: A,
32
+ onDeleted: N
33
+ }), { isEditMode: B } = z, V = a(A?.taskProperties), H = !B || V !== void 0, U = B && V === void 0 && !o(A?.taskProperties), [W, G] = g(() => V ?? r), [K, q] = g(() => {
34
+ let e = A?.taskProperties;
35
+ return e?.concreteType === n[0] ? {
36
+ inputTaskId: e.inputTaskId?.toString() ?? "",
37
+ destinationTaskId: e.destinationTaskId?.toString() ?? ""
38
+ } : E;
39
+ }), [J, Y] = g(() => {
40
+ let e = A?.taskProperties;
41
+ return e?.concreteType === n[1] ? {
42
+ folderId: e.folderId ?? "",
43
+ instructions: e.instructions ?? "",
44
+ destinationTaskId: e.destinationTaskId?.toString() ?? ""
45
+ } : D;
46
+ }), X = !H || (W === n[0] ? u(K.inputTaskId) && u(K.destinationTaskId) : !!J.folderId.trim() && !!J.instructions.trim() && u(J.destinationTaskId)), Z = z.isCommonFieldsValid && z.isProjectValid && X;
47
+ async function Q() {
48
+ let e = h({
49
+ existingTask: B ? A : void 0,
50
+ projectId: z.effectiveProjectId,
51
+ dataType: z.dataType,
52
+ instructions: z.instructions,
53
+ assigneePrincipalId: z.assigneePrincipalId,
54
+ computeTypeFields: H ? {
55
+ concreteType: W,
56
+ sampleSheet: K,
57
+ recordSet: J
58
+ } : void 0
59
+ }), t = await z.submitTaskAndStatus(e);
60
+ B ? M?.(t) : j?.(t);
61
+ }
62
+ return /* @__PURE__ */ C(x, {
63
+ gap: 3,
64
+ children: [
65
+ /* @__PURE__ */ S(m, {
66
+ onExit: I,
67
+ pageTitle: L,
68
+ pageDescription: R
69
+ }),
70
+ /* @__PURE__ */ C(x, {
71
+ gap: 3,
72
+ sx: {
73
+ width: "100%",
74
+ maxWidth: 700,
75
+ mx: "auto"
76
+ },
77
+ children: [
78
+ H && /* @__PURE__ */ C(e, {
79
+ fullWidth: !0,
80
+ children: [/* @__PURE__ */ S(v, {
81
+ id: "compute-task-type-label",
82
+ children: "Compute Task Type"
83
+ }), /* @__PURE__ */ S(b, {
84
+ labelId: "compute-task-type-label",
85
+ label: "Compute Task Type",
86
+ value: W,
87
+ disabled: B,
88
+ onChange: (e) => G(e.target.value),
89
+ children: n.map((e) => /* @__PURE__ */ S(y, {
90
+ value: e,
91
+ children: t[e].label
92
+ }, e))
93
+ })]
94
+ }),
95
+ z.showProjectSelector && /* @__PURE__ */ S(l, {
96
+ value: z.selectedProjectId,
97
+ onChange: z.setSelectedProjectId
98
+ }),
99
+ /* @__PURE__ */ S(c, {
100
+ dataType: z.dataType,
101
+ onDataTypeChange: z.setDataType,
102
+ dueDate: z.displayedDueDate,
103
+ onDueDateChange: z.setPendingDueDate,
104
+ instructions: z.instructions,
105
+ onInstructionsChange: z.setInstructions,
106
+ assigneePrincipalId: z.assigneePrincipalId,
107
+ onAssigneePrincipalIdChange: z.setAssigneePrincipalId
108
+ }),
109
+ B && /* @__PURE__ */ C(e, {
110
+ fullWidth: !0,
111
+ children: [/* @__PURE__ */ S(v, {
112
+ id: "compute-task-status-label",
113
+ children: "Status"
114
+ }), /* @__PURE__ */ S(b, {
115
+ labelId: "compute-task-status-label",
116
+ value: z.displayedStatusState ?? "",
117
+ label: "Status",
118
+ disabled: z.isStatusFetching || z.currentTaskStatus == null,
119
+ onChange: (e) => z.setPendingStatusState(e.target.value),
120
+ children: Object.values(w).map((e) => /* @__PURE__ */ S(y, {
121
+ value: e,
122
+ children: i[e].label
123
+ }, e))
124
+ })]
125
+ }),
126
+ H && (W === n[0] ? /* @__PURE__ */ S(f, {
127
+ value: K,
128
+ onChange: q
129
+ }) : /* @__PURE__ */ S(d, {
130
+ value: J,
131
+ onChange: Y
132
+ })),
133
+ U && /* @__PURE__ */ S(_, {
134
+ severity: "warning",
135
+ children: "This task has an unrecognized task type. Its category-specific fields cannot be edited here."
136
+ }),
137
+ z.error && /* @__PURE__ */ S(_, {
138
+ severity: "error",
139
+ children: z.error.reason ?? "An error occurred. Please try again."
140
+ })
141
+ ]
142
+ }),
143
+ /* @__PURE__ */ S(p, {
144
+ isEditMode: B,
145
+ isPending: z.isPending,
146
+ isValid: Z,
147
+ onSubmit: () => void Q().catch(T),
148
+ onBack: P,
149
+ onCancel: F,
150
+ canDelete: z.canDelete,
151
+ showDeleteConfirmation: z.showDeleteConfirmation,
152
+ onRequestDelete: () => z.setShowDeleteConfirmation(!0),
153
+ onConfirmDelete: () => {
154
+ A?.taskId != null && z.deleteTask(A.taskId);
155
+ },
156
+ onCancelDelete: () => z.setShowDeleteConfirmation(!1),
157
+ isDeletePending: z.isDeletePending
158
+ })
159
+ ]
160
+ });
161
+ }
162
+ //#endregion
163
+ export { O as default };
164
+
165
+ //# sourceMappingURL=ComputeTaskForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComputeTaskForm.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/ComputeTaskForm.tsx"],"sourcesContent":["import { StyledFormControl } from '@/components/styled'\nimport { Alert, InputLabel, MenuItem, Select, Stack } from '@mui/material'\nimport {\n CurationTask,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport noop from 'lodash-es/noop'\nimport { useState } from 'react'\nimport {\n COMPUTE_TASK_TYPE_CONFIG,\n COMPUTE_TASK_TYPE_INPUT_LABEL,\n COMPUTE_TASK_TYPE_OPTIONS,\n DEFAULT_COMPUTE_TASK_TYPE,\n EDIT_TASK_UNRECOGNIZED_TYPE_MESSAGE,\n GENERIC_SAVE_ERROR_MESSAGE,\n TASK_STATUS_CONFIG,\n TASK_STATUS_INPUT_LABEL,\n} from '../utils/constants'\nimport {\n ComputeTaskConcreteType,\n getComputeTaskConcreteType,\n instanceOfGridSupportedTaskProperties,\n} from '../utils/types'\nimport CommonTaskFields from './CommonTaskFields'\nimport ProjectSelectorField from './ProjectSelectorField'\nimport RecordSetFields from './RecordSetFields'\nimport SampleSheetFields from './SampleSheetFields'\nimport TaskFormActions from './TaskFormActions'\nimport TaskFormHeader from './TaskFormHeader'\nimport { useCurationTaskFormState } from './useCurationTaskFormState'\nimport {\n buildComputeTaskPayload,\n RecordSetFieldsValue,\n SampleSheetFieldsValue,\n} from './utils/buildComputeTaskPayload'\nimport { isValidTaskIdInput } from './utils/taskIdValidation'\n\nconst EMPTY_SAMPLE_SHEET_VALUE: SampleSheetFieldsValue = {\n inputTaskId: '',\n destinationTaskId: '',\n}\nconst EMPTY_RECORD_SET_VALUE: RecordSetFieldsValue = {\n folderId: '',\n instructions: '',\n destinationTaskId: '',\n}\n\nexport type ComputeTaskFormProps = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard), in which case the user\n * is prompted to choose a project. Ignored in edit mode -- the project is always derived from `task`.\n */\n projectId?: string\n /** The task being edited. Undefined when creating a new task. */\n task?: CurationTask\n /** Called after a new task is successfully created. */\n onCreated?: (task: CurationTask) => void\n /** Called after an existing task is successfully saved. */\n onSaved?: (task: CurationTask) => void\n /** Called after the task is successfully deleted (edit mode only). */\n onDeleted?: () => void\n /** Shows a \"Back\" button (create mode) that returns to the category picker. */\n onBack?: () => void\n /** Shows a \"Cancel\" button (edit mode) that exits the page without saving. */\n onCancel?: () => void\n /**\n * Shows a \"Back to All Tasks\" button in the top-left of the page, which exits the entire\n * create/edit flow back to the task list (as opposed to `onBack`/`onCancel`, which only move\n * between steps within the flow).\n */\n onExit?: () => void\n /**\n * When present, rendered as a centered page title above the form (e.g. \"Create New Compute Task\" or\n * \"Edit Task\"). The host page is responsible for supplying this rather than rendering its own\n * heading, so the title and the single-column form below it share one centered layout.\n */\n pageTitle?: string\n /** When present, rendered as a centered subtitle below `pageTitle`. */\n pageDescription?: string\n}\n\n/**\n * The create/edit form for a Compute Data curation task. Used as step 2 of the create wizard\n * (`CreateCurationTaskFlow`) and directly by `EditCurationTaskPage`.\n */\nexport default function ComputeTaskForm(props: ComputeTaskFormProps) {\n const {\n projectId,\n task,\n onCreated,\n onSaved,\n onDeleted,\n onBack,\n onCancel,\n onExit,\n pageTitle,\n pageDescription,\n } = props\n\n const form = useCurationTaskFormState({ projectId, task, onDeleted })\n const { isEditMode } = form\n\n const existingComputeConcreteType = getComputeTaskConcreteType(\n task?.taskProperties,\n )\n\n // Whether the type-specific fields (and type selector) should render at all. False when editing a task\n // whose category isn't one of the two Compute Data types (e.g. a legacy Curate Data task).\n const showTypeSection =\n !isEditMode || existingComputeConcreteType !== undefined\n const showUnrecognizedTypeWarning =\n isEditMode &&\n existingComputeConcreteType === undefined &&\n !instanceOfGridSupportedTaskProperties(task?.taskProperties)\n\n const [selectedConcreteType, setSelectedConcreteType] =\n useState<ComputeTaskConcreteType>(\n () => existingComputeConcreteType ?? DEFAULT_COMPUTE_TASK_TYPE,\n )\n\n const [sampleSheetValue, setSampleSheetValue] =\n useState<SampleSheetFieldsValue>(() => {\n const tp = task?.taskProperties\n if (tp?.concreteType === COMPUTE_TASK_TYPE_OPTIONS[0]) {\n return {\n inputTaskId: tp.inputTaskId?.toString() ?? '',\n destinationTaskId: tp.destinationTaskId?.toString() ?? '',\n }\n }\n return EMPTY_SAMPLE_SHEET_VALUE\n })\n const [recordSetValue, setRecordSetValue] = useState<RecordSetFieldsValue>(\n () => {\n const tp = task?.taskProperties\n if (tp?.concreteType === COMPUTE_TASK_TYPE_OPTIONS[1]) {\n return {\n folderId: tp.folderId ?? '',\n instructions: tp.instructions ?? '',\n destinationTaskId: tp.destinationTaskId?.toString() ?? '',\n }\n }\n return EMPTY_RECORD_SET_VALUE\n },\n )\n\n const isTypeSpecificValid =\n !showTypeSection ||\n (selectedConcreteType === COMPUTE_TASK_TYPE_OPTIONS[0]\n ? isValidTaskIdInput(sampleSheetValue.inputTaskId) &&\n isValidTaskIdInput(sampleSheetValue.destinationTaskId)\n : !!recordSetValue.folderId.trim() &&\n !!recordSetValue.instructions.trim() &&\n isValidTaskIdInput(recordSetValue.destinationTaskId))\n const isValid =\n form.isCommonFieldsValid && form.isProjectValid && isTypeSpecificValid\n\n async function handleSubmit() {\n const payload = buildComputeTaskPayload({\n existingTask: isEditMode ? task : undefined,\n projectId: form.effectiveProjectId,\n dataType: form.dataType,\n instructions: form.instructions,\n assigneePrincipalId: form.assigneePrincipalId,\n computeTypeFields: showTypeSection\n ? {\n concreteType: selectedConcreteType,\n sampleSheet: sampleSheetValue,\n recordSet: recordSetValue,\n }\n : undefined,\n })\n\n const result = await form.submitTaskAndStatus(payload)\n if (isEditMode) {\n onSaved?.(result)\n } else {\n onCreated?.(result)\n }\n }\n\n return (\n <Stack gap={3}>\n <TaskFormHeader\n onExit={onExit}\n pageTitle={pageTitle}\n pageDescription={pageDescription}\n />\n\n <Stack gap={3} sx={{ width: '100%', maxWidth: 700, mx: 'auto' }}>\n {showTypeSection && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"compute-task-type-label\">\n {COMPUTE_TASK_TYPE_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"compute-task-type-label\"\n label={COMPUTE_TASK_TYPE_INPUT_LABEL}\n value={selectedConcreteType}\n disabled={isEditMode}\n onChange={e => setSelectedConcreteType(e.target.value)}\n >\n {COMPUTE_TASK_TYPE_OPTIONS.map(concreteType => (\n <MenuItem key={concreteType} value={concreteType}>\n {COMPUTE_TASK_TYPE_CONFIG[concreteType].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n\n {form.showProjectSelector && (\n <ProjectSelectorField\n value={form.selectedProjectId}\n onChange={form.setSelectedProjectId}\n />\n )}\n\n <CommonTaskFields\n dataType={form.dataType}\n onDataTypeChange={form.setDataType}\n dueDate={form.displayedDueDate}\n onDueDateChange={form.setPendingDueDate}\n instructions={form.instructions}\n onInstructionsChange={form.setInstructions}\n assigneePrincipalId={form.assigneePrincipalId}\n onAssigneePrincipalIdChange={form.setAssigneePrincipalId}\n />\n\n {isEditMode && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"compute-task-status-label\">\n {TASK_STATUS_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"compute-task-status-label\"\n value={form.displayedStatusState ?? ''}\n label={TASK_STATUS_INPUT_LABEL}\n disabled={form.isStatusFetching || form.currentTaskStatus == null}\n onChange={e =>\n form.setPendingStatusState(\n e.target.value as TaskStatusStateEnum,\n )\n }\n >\n {Object.values(TaskStatusStateEnum).map(state => (\n <MenuItem key={state} value={state}>\n {TASK_STATUS_CONFIG[state].label}\n </MenuItem>\n ))}\n </Select>\n </StyledFormControl>\n )}\n\n {showTypeSection &&\n (selectedConcreteType === COMPUTE_TASK_TYPE_OPTIONS[0] ? (\n <SampleSheetFields\n value={sampleSheetValue}\n onChange={setSampleSheetValue}\n />\n ) : (\n <RecordSetFields\n value={recordSetValue}\n onChange={setRecordSetValue}\n />\n ))}\n\n {showUnrecognizedTypeWarning && (\n <Alert severity=\"warning\">\n {EDIT_TASK_UNRECOGNIZED_TYPE_MESSAGE}\n </Alert>\n )}\n {form.error && (\n <Alert severity=\"error\">\n {form.error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n\n <TaskFormActions\n isEditMode={isEditMode}\n isPending={form.isPending}\n isValid={isValid}\n onSubmit={() => void handleSubmit().catch(noop)}\n onBack={onBack}\n onCancel={onCancel}\n canDelete={form.canDelete}\n showDeleteConfirmation={form.showDeleteConfirmation}\n onRequestDelete={() => form.setShowDeleteConfirmation(true)}\n onConfirmDelete={() => {\n if (task?.taskId != null) form.deleteTask(task.taskId)\n }}\n onCancelDelete={() => form.setShowDeleteConfirmation(false)}\n isDeletePending={form.isDeletePending}\n />\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAqCA,IAAM,IAAmD;CACvD,aAAa;CACb,mBAAmB;AACrB,GACM,IAA+C;CACnD,UAAU;CACV,cAAc;CACd,mBAAmB;AACrB;AAyCA,SAAwB,EAAgB,GAA6B;CACnE,IAAM,EACJ,cACA,SACA,cACA,YACA,cACA,WACA,aACA,WACA,cACA,uBACE,GAEE,IAAO,EAAyB;EAAE;EAAW;EAAM;CAAU,CAAC,GAC9D,EAAE,kBAAe,GAEjB,IAA8B,EAClC,GAAM,cACR,GAIM,IACJ,CAAC,KAAc,MAAgC,KAAA,GAC3C,IACJ,KACA,MAAgC,KAAA,KAChC,CAAC,EAAsC,GAAM,cAAc,GAEvD,CAAC,GAAsB,KAC3B,QACQ,KAA+B,CACvC,GAEI,CAAC,GAAkB,KACvB,QAAuC;EACrC,IAAM,IAAK,GAAM;EAOjB,OANI,GAAI,iBAAiB,EAA0B,KAC1C;GACL,aAAa,EAAG,aAAa,SAAS,KAAK;GAC3C,mBAAmB,EAAG,mBAAmB,SAAS,KAAK;EACzD,IAEK;CACT,CAAC,GACG,CAAC,GAAgB,KAAqB,QACpC;EACJ,IAAM,IAAK,GAAM;EAQjB,OAPI,GAAI,iBAAiB,EAA0B,KAC1C;GACL,UAAU,EAAG,YAAY;GACzB,cAAc,EAAG,gBAAgB;GACjC,mBAAmB,EAAG,mBAAmB,SAAS,KAAK;EACzD,IAEK;CACT,CACF,GAEM,IACJ,CAAC,MACA,MAAyB,EAA0B,KAChD,EAAmB,EAAiB,WAAW,KAC/C,EAAmB,EAAiB,iBAAiB,IACrD,CAAC,CAAC,EAAe,SAAS,KAAK,KAC/B,CAAC,CAAC,EAAe,aAAa,KAAK,KACnC,EAAmB,EAAe,iBAAiB,IACnD,IACJ,EAAK,uBAAuB,EAAK,kBAAkB;CAErD,eAAe,IAAe;EAC5B,IAAM,IAAU,EAAwB;GACtC,cAAc,IAAa,IAAO,KAAA;GAClC,WAAW,EAAK;GAChB,UAAU,EAAK;GACf,cAAc,EAAK;GACnB,qBAAqB,EAAK;GAC1B,mBAAmB,IACf;IACE,cAAc;IACd,aAAa;IACb,WAAW;GACb,IACA,KAAA;EACN,CAAC,GAEK,IAAS,MAAM,EAAK,oBAAoB,CAAO;EACrD,AAAI,IACF,IAAU,CAAM,IAEhB,IAAY,CAAM;CAEtB;CAEA,OACE,kBAAC,GAAD;EAAO,KAAK;YAAZ;GACE,kBAAC,GAAD;IACU;IACG;IACM;GAClB,CAAA;GAED,kBAAC,GAAD;IAAO,KAAK;IAAG,IAAI;KAAE,OAAO;KAAQ,UAAU;KAAK,IAAI;IAAO;cAA9D;KACG,KACC,kBAAC,GAAD;MAAmB,WAAA;gBAAnB,CACE,kBAAC,GAAD;OAAY,IAAG;;MAEH,CAAA,GACZ,kBAAC,GAAD;OACE,SAAQ;OACR,OAAA;OACA,OAAO;OACP,UAAU;OACV,WAAU,MAAK,EAAwB,EAAE,OAAO,KAAK;iBAEpD,EAA0B,KAAI,MAC7B,kBAAC,GAAD;QAA6B,OAAO;kBACjC,EAAyB,GAAc;OAChC,GAFK,CAEL,CACX;MACK,CAAA,CACS;;KAGpB,EAAK,uBACJ,kBAAC,GAAD;MACE,OAAO,EAAK;MACZ,UAAU,EAAK;KAChB,CAAA;KAGH,kBAAC,GAAD;MACE,UAAU,EAAK;MACf,kBAAkB,EAAK;MACvB,SAAS,EAAK;MACd,iBAAiB,EAAK;MACtB,cAAc,EAAK;MACnB,sBAAsB,EAAK;MAC3B,qBAAqB,EAAK;MAC1B,6BAA6B,EAAK;KACnC,CAAA;KAEA,KACC,kBAAC,GAAD;MAAmB,WAAA;gBAAnB,CACE,kBAAC,GAAD;OAAY,IAAG;;MAEH,CAAA,GACZ,kBAAC,GAAD;OACE,SAAQ;OACR,OAAO,EAAK,wBAAwB;OACpC,OAAA;OACA,UAAU,EAAK,oBAAoB,EAAK,qBAAqB;OAC7D,WAAU,MACR,EAAK,sBACH,EAAE,OAAO,KACX;iBAGD,OAAO,OAAO,CAAmB,EAAE,KAAI,MACtC,kBAAC,GAAD;QAAsB,OAAO;kBAC1B,EAAmB,GAAO;OACnB,GAFK,CAEL,CACX;MACK,CAAA,CACS;;KAGpB,MACE,MAAyB,EAA0B,KAClD,kBAAC,GAAD;MACE,OAAO;MACP,UAAU;KACX,CAAA,IAED,kBAAC,GAAD;MACE,OAAO;MACP,UAAU;KACX,CAAA;KAGJ,KACC,kBAAC,GAAD;MAAO,UAAS;;KAET,CAAA;KAER,EAAK,SACJ,kBAAC,GAAD;MAAO,UAAS;gBACb,EAAK,MAAM,UAAA;KACP,CAAA;IAEJ;;GAEP,kBAAC,GAAD;IACc;IACZ,WAAW,EAAK;IACP;IACT,gBAAgB,KAAK,EAAa,EAAE,MAAM,CAAI;IACtC;IACE;IACV,WAAW,EAAK;IAChB,wBAAwB,EAAK;IAC7B,uBAAuB,EAAK,0BAA0B,EAAI;IAC1D,uBAAuB;KACrB,AAAI,GAAM,UAAU,QAAM,EAAK,WAAW,EAAK,MAAM;IACvD;IACA,sBAAsB,EAAK,0BAA0B,EAAK;IAC1D,iBAAiB,EAAK;GACvB,CAAA;EACI;;AAEX"}
@@ -0,0 +1,18 @@
1
+ export type CreateCurationTaskFlowProps = {
2
+ /**
3
+ * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).
4
+ * Absent when creating from a context without one (e.g. the Curator Dashboard).
5
+ */
6
+ projectId?: string;
7
+ /** Called when the user exits the flow, whether by canceling or finishing. */
8
+ onExit: () => void;
9
+ };
10
+ /**
11
+ * Hosts the 3-step "Create New Task" wizard: category picker -> compute form -> confirmation. The task
12
+ * itself is created on the step-2-to-step-3 transition (see `ComputeTaskForm`'s `onCreated`).
13
+ *
14
+ * Mounted at a wildcard path (e.g. `create/*`) inside a host page's own router (see
15
+ * `MetadataTasksPageRouter`), so the relative paths below are resolved against that mount point.
16
+ */
17
+ export default function CreateCurationTaskFlow(props: CreateCurationTaskFlowProps): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=CreateCurationTaskFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCurationTaskFlow.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/create-task/CreateCurationTaskFlow.tsx"],"names":[],"mappings":"AAsBA,MAAM,MAAM,2BAA2B,GAAG;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAsCD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,KAAK,EAAE,2BAA2B,2CAoDnC"}
@@ -0,0 +1,78 @@
1
+ import { CREATE_COMPUTE_TASK_PAGE_TITLE as e, CREATE_CURATE_TASK_PAGE_TITLE as t, FILL_IN_COMPUTE_TASK_DETAILS_DESCRIPTION as n, FILL_IN_CURATE_TASK_DETAILS_DESCRIPTION as r } from "../utils/constants.js";
2
+ import i from "./ComputeTaskForm.js";
3
+ import a from "./CreateTaskCategoryPicker.js";
4
+ import o from "./CreateTaskConfirmation.js";
5
+ import s from "./CurateTaskForm.js";
6
+ import { Button as c } from "@mui/material";
7
+ import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
8
+ import { ArrowBack as f } from "@mui/icons-material";
9
+ import { Navigate as p, Outlet as m, Route as h, Routes as g, useNavigate as _, useParams as v } from "react-router";
10
+ //#region src/features/entity/metadata-task/create-task/CreateCurationTaskFlow.tsx
11
+ function y(e) {
12
+ let { taskId: t } = v(), n = t ? Number(t) : void 0;
13
+ return n ? /* @__PURE__ */ u(o, {
14
+ taskId: n,
15
+ onDone: e.onExit
16
+ }) : /* @__PURE__ */ u(p, {
17
+ to: "..",
18
+ replace: !0
19
+ });
20
+ }
21
+ function b(e) {
22
+ let { onExit: t } = e;
23
+ return /* @__PURE__ */ d(l, { children: [t && /* @__PURE__ */ u(c, {
24
+ variant: "text",
25
+ startIcon: /* @__PURE__ */ u(f, {}),
26
+ onClick: t,
27
+ sx: { alignSelf: "flex-start" },
28
+ children: "Back to All Tasks"
29
+ }), /* @__PURE__ */ u(m, {})] });
30
+ }
31
+ function x(o) {
32
+ let { projectId: c, onExit: l } = o, f = _();
33
+ return /* @__PURE__ */ d(g, { children: [
34
+ /* @__PURE__ */ u(h, {
35
+ element: /* @__PURE__ */ u(b, { onExit: l }),
36
+ children: /* @__PURE__ */ u(h, {
37
+ index: !0,
38
+ element: /* @__PURE__ */ u(a, {
39
+ onSelectCompute: () => void f("compute"),
40
+ onSelectCurate: () => void f("curate")
41
+ })
42
+ })
43
+ }),
44
+ /* @__PURE__ */ u(h, {
45
+ element: /* @__PURE__ */ u(b, {}),
46
+ children: /* @__PURE__ */ u(h, {
47
+ path: "confirmation/:taskId",
48
+ element: /* @__PURE__ */ u(y, { onExit: l })
49
+ })
50
+ }),
51
+ /* @__PURE__ */ u(h, {
52
+ path: "compute",
53
+ element: /* @__PURE__ */ u(i, {
54
+ projectId: c,
55
+ pageTitle: e,
56
+ pageDescription: n,
57
+ onBack: () => void f(-1),
58
+ onExit: l,
59
+ onCreated: (e) => void f(`../confirmation/${e.taskId}`)
60
+ })
61
+ }),
62
+ /* @__PURE__ */ u(h, {
63
+ path: "curate",
64
+ element: /* @__PURE__ */ u(s, {
65
+ projectId: c,
66
+ pageTitle: t,
67
+ pageDescription: r,
68
+ onBack: () => void f(-1),
69
+ onExit: l,
70
+ onCreated: (e) => void f(`../confirmation/${e.taskId}`)
71
+ })
72
+ })
73
+ ] });
74
+ }
75
+ //#endregion
76
+ export { x as default };
77
+
78
+ //# sourceMappingURL=CreateCurationTaskFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCurationTaskFlow.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/create-task/CreateCurationTaskFlow.tsx"],"sourcesContent":["import {\n Navigate,\n Outlet,\n Route,\n Routes,\n useNavigate,\n useParams,\n} from 'react-router'\nimport {\n BACK_TO_ALL_TASKS_LABEL,\n CREATE_COMPUTE_TASK_PAGE_TITLE,\n CREATE_CURATE_TASK_PAGE_TITLE,\n FILL_IN_COMPUTE_TASK_DETAILS_DESCRIPTION,\n FILL_IN_CURATE_TASK_DETAILS_DESCRIPTION,\n} from '../utils/constants'\nimport { ArrowBack } from '@mui/icons-material'\nimport { Button } from '@mui/material'\nimport ComputeTaskForm from './ComputeTaskForm'\nimport CreateTaskCategoryPicker from './CreateTaskCategoryPicker'\nimport CreateTaskConfirmation from './CreateTaskConfirmation'\nimport CurateTaskForm from './CurateTaskForm'\n\nexport type CreateCurationTaskFlowProps = {\n /**\n * Present when the host page already has a project context (e.g. a project's Metadata Tasks page).\n * Absent when creating from a context without one (e.g. the Curator Dashboard).\n */\n projectId?: string\n /** Called when the user exits the flow, whether by canceling or finishing. */\n onExit: () => void\n}\n\nfunction ConfirmationRouteRenderer(props: { onExit: () => void }) {\n const { taskId } = useParams<{ taskId: string }>()\n const parsedTaskId = taskId ? Number(taskId) : undefined\n if (!parsedTaskId) {\n return <Navigate to=\"..\" replace />\n }\n return <CreateTaskConfirmation taskId={parsedTaskId} onDone={props.onExit} />\n}\n\n/**\n * Layout for the steps that share the generic \"Create New Task\" header (the category picker and the\n * confirmation screen). The compute form step renders its own more specific centered title/subtitle\n * instead (see `ComputeTaskForm`'s `pageTitle`/`pageDescription` props below), so it isn't nested here.\n *\n * When `onExit` is provided, a top-left \"Back to All Tasks\" button is shown above the title, matching\n * the one on the form steps (see `TaskFormHeader`).\n */\nfunction CreateTaskLayout(props: { onExit?: () => void }) {\n const { onExit } = props\n return (\n <>\n {onExit && (\n <Button\n variant=\"text\"\n startIcon={<ArrowBack />}\n onClick={onExit}\n sx={{ alignSelf: 'flex-start' }}\n >\n {BACK_TO_ALL_TASKS_LABEL}\n </Button>\n )}\n <Outlet />\n </>\n )\n}\n\n/**\n * Hosts the 3-step \"Create New Task\" wizard: category picker -> compute form -> confirmation. The task\n * itself is created on the step-2-to-step-3 transition (see `ComputeTaskForm`'s `onCreated`).\n *\n * Mounted at a wildcard path (e.g. `create/*`) inside a host page's own router (see\n * `MetadataTasksPageRouter`), so the relative paths below are resolved against that mount point.\n */\nexport default function CreateCurationTaskFlow(\n props: CreateCurationTaskFlowProps,\n) {\n const { projectId, onExit } = props\n const navigate = useNavigate()\n\n return (\n <Routes>\n <Route element={<CreateTaskLayout onExit={onExit} />}>\n <Route\n index\n element={\n <CreateTaskCategoryPicker\n onSelectCompute={() => void navigate('compute')}\n onSelectCurate={() => void navigate('curate')}\n />\n }\n />\n </Route>\n <Route element={<CreateTaskLayout />}>\n <Route\n path=\"confirmation/:taskId\"\n element={<ConfirmationRouteRenderer onExit={onExit} />}\n />\n </Route>\n <Route\n path=\"compute\"\n element={\n <ComputeTaskForm\n projectId={projectId}\n pageTitle={CREATE_COMPUTE_TASK_PAGE_TITLE}\n pageDescription={FILL_IN_COMPUTE_TASK_DETAILS_DESCRIPTION}\n onBack={() => void navigate(-1)}\n onExit={onExit}\n onCreated={task => void navigate(`../confirmation/${task.taskId}`)}\n />\n }\n />\n <Route\n path=\"curate\"\n element={\n <CurateTaskForm\n projectId={projectId}\n pageTitle={CREATE_CURATE_TASK_PAGE_TITLE}\n pageDescription={FILL_IN_CURATE_TASK_DETAILS_DESCRIPTION}\n onBack={() => void navigate(-1)}\n onExit={onExit}\n onCreated={task => void navigate(`../confirmation/${task.taskId}`)}\n />\n }\n />\n </Routes>\n )\n}\n"],"mappings":";;;;;;;;;;AAgCA,SAAS,EAA0B,GAA+B;CAChE,IAAM,EAAE,cAAW,EAA8B,GAC3C,IAAe,IAAS,OAAO,CAAM,IAAI,KAAA;CAI/C,OAHK,IAGE,kBAAC,GAAD;EAAwB,QAAQ;EAAc,QAAQ,EAAM;CAAS,CAAA,IAFnE,kBAAC,GAAD;EAAU,IAAG;EAAK,SAAA;CAAS,CAAA;AAGtC;AAUA,SAAS,EAAiB,GAAgC;CACxD,IAAM,EAAE,cAAW;CACnB,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,KACC,kBAAC,GAAD;EACE,SAAQ;EACR,WAAW,kBAAC,GAAD,CAAY,CAAA;EACvB,SAAS;EACT,IAAI,EAAE,WAAW,aAAa;;CAGxB,CAAA,GAEV,kBAAC,GAAD,CAAS,CAAA,CACT,EAAA,CAAA;AAEN;AASA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,cAAW,cAAW,GACxB,IAAW,EAAY;CAE7B,OACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAO,SAAS,kBAAC,GAAD,EAA0B,UAAS,CAAA;aACjD,kBAAC,GAAD;IACE,OAAA;IACA,SACE,kBAAC,GAAD;KACE,uBAAuB,KAAK,EAAS,SAAS;KAC9C,sBAAsB,KAAK,EAAS,QAAQ;IAC7C,CAAA;GAEJ,CAAA;EACI,CAAA;EACP,kBAAC,GAAD;GAAO,SAAS,kBAAC,GAAD,CAAmB,CAAA;aACjC,kBAAC,GAAD;IACE,MAAK;IACL,SAAS,kBAAC,GAAD,EAAmC,UAAS,CAAA;GACtD,CAAA;EACI,CAAA;EACP,kBAAC,GAAD;GACE,MAAK;GACL,SACE,kBAAC,GAAD;IACa;IACX,WAAW;IACX,iBAAiB;IACjB,cAAc,KAAK,EAAS,EAAE;IACtB;IACR,YAAW,MAAQ,KAAK,EAAS,mBAAmB,EAAK,QAAQ;GAClE,CAAA;EAEJ,CAAA;EACD,kBAAC,GAAD;GACE,MAAK;GACL,SACE,kBAAC,GAAD;IACa;IACX,WAAW;IACX,iBAAiB;IACjB,cAAc,KAAK,EAAS,EAAE;IACtB;IACR,YAAW,MAAQ,KAAK,EAAS,mBAAmB,EAAK,QAAQ;GAClE,CAAA;EAEJ,CAAA;CACK,EAAA,CAAA;AAEZ"}
@@ -0,0 +1,10 @@
1
+ export type CreateTaskCategoryPickerProps = {
2
+ onSelectCompute: () => void;
3
+ onSelectCurate: () => void;
4
+ };
5
+ /**
6
+ * Step 1 of the create-task flow: lets the user pick which category of task to create, Compute Data or
7
+ * Curate Data.
8
+ */
9
+ export default function CreateTaskCategoryPicker(props: CreateTaskCategoryPickerProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=CreateTaskCategoryPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateTaskCategoryPicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.tsx"],"names":[],"mappings":"AAUA,MAAM,MAAM,6BAA6B,GAAG;IAC1C,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAA;CAC3B,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,KAAK,EAAE,6BAA6B,2CA2BrC"}