synapse-react-client 4.0.25 → 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 (405) 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/DataExplorer/DataExplorer.css +1 -1
  57. package/dist/components/DataExplorer/DataExplorer.d.ts +16 -2
  58. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  59. package/dist/components/DataExplorer/DataExplorer.js +82 -75
  60. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  61. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  62. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  63. package/dist/components/DataExplorer/DataExplorer.module.scss +1 -1
  64. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  65. package/dist/components/DataGrid/SynapseGrid.js +2 -5
  66. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  67. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +35 -0
  68. package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -0
  69. package/dist/components/DataGrid/SyncGridWithSourceButton.js +115 -0
  70. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -0
  71. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  72. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +14 -1
  73. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  74. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +2 -0
  75. package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +1 -1
  76. package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
  77. package/dist/components/DataGrid/useMergeGridWithSource.d.ts +12 -7
  78. package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
  79. package/dist/components/DataGrid/useMergeGridWithSource.js +31 -25
  80. package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
  81. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  82. package/dist/components/DataGrid/utils/columnFactory.js +15 -19
  83. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  84. package/dist/components/DownloadCart/DownloadListTable.js +1 -1
  85. package/dist/components/DynamicForm/DynamicForm.js +1 -1
  86. package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
  87. package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js +1 -1
  88. package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
  89. package/dist/components/EntityFinder/EntityIdTextField.d.ts +1 -0
  90. package/dist/components/EntityFinder/EntityIdTextField.d.ts.map +1 -1
  91. package/dist/components/EntityFinder/EntityIdTextField.js +7 -6
  92. package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
  93. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
  94. package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
  95. package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
  96. package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
  97. package/dist/components/EntitySidebar/EntitySidebar.js +47 -39
  98. package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
  99. package/dist/components/EntitySidebar/EntitySidebar.module.js +11 -11
  100. package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
  101. package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -6
  102. package/dist/components/FieldDescription/FieldDescription.css +1 -0
  103. package/dist/components/FieldDescription/FieldDescription.d.ts +15 -0
  104. package/dist/components/FieldDescription/FieldDescription.d.ts.map +1 -0
  105. package/dist/components/FieldDescription/FieldDescription.js +13 -0
  106. package/dist/components/FieldDescription/FieldDescription.js.map +1 -0
  107. package/dist/components/FieldDescription/FieldDescription.module.js +5 -0
  108. package/dist/components/FieldDescription/FieldDescription.module.js.map +1 -0
  109. package/dist/components/FieldDescription/FieldDescription.module.scss +8 -0
  110. package/dist/components/FieldDescription/index.d.ts +3 -0
  111. package/dist/components/FieldDescription/index.d.ts.map +1 -0
  112. package/dist/components/FieldDescription/index.js +2 -0
  113. package/dist/components/GenericCard/TableRowGenericCard.d.ts +2 -1
  114. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  115. package/dist/components/GenericCard/TableRowGenericCard.js +3 -2
  116. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  117. package/dist/components/HeaderCard.d.ts.map +1 -1
  118. package/dist/components/HeaderCard.js +4 -0
  119. package/dist/components/HeaderCard.js.map +1 -1
  120. package/dist/components/HexGrid/HexGrid.d.ts +2 -1
  121. package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
  122. package/dist/components/HexGrid/HexGrid.js +13 -13
  123. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  124. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  125. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  126. package/dist/components/IconSvg/IconSvg.js +216 -212
  127. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  128. package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js +1 -1
  129. package/dist/components/OAuthClientManagement/OAuthManagement.js +1 -1
  130. package/dist/components/PortalAclEditor/PortalAclEditorModal.js +1 -1
  131. package/dist/components/PortalList/CreatePortalModal.js +1 -1
  132. package/dist/components/PortalList/PortalCard.js +1 -1
  133. package/dist/components/ProjectInfo/ProjectInfo.css +1 -0
  134. package/dist/components/ProjectInfo/ProjectInfo.d.ts +5 -0
  135. package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -0
  136. package/dist/components/ProjectInfo/ProjectInfo.js +50 -0
  137. package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -0
  138. package/dist/components/ProjectInfo/ProjectInfo.module.js +11 -0
  139. package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -0
  140. package/dist/components/ProjectInfo/ProjectInfo.module.scss +35 -0
  141. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts +10 -0
  142. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -0
  143. package/dist/components/ProjectInfo/ProjectInfoPopover.js +94 -0
  144. package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -0
  145. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts +2 -1
  146. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
  147. package/dist/components/ProjectStorage/ProjectDataAvailability.js +67 -75
  148. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  149. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts +3 -0
  150. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  151. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +140 -85
  152. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  153. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  154. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +3 -3
  155. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  156. package/dist/components/StorybookComponentWrapper.js +1 -1
  157. package/dist/components/SynapseChat/SynapseChat.js +1 -1
  158. package/dist/components/SynapseHomepageV2/HotdropsAndNews.css +1 -1
  159. package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js +9 -8
  160. package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js.map +1 -1
  161. package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.scss +4 -1
  162. package/dist/components/SynapseHomepageV2/WordPressNews.d.ts +2 -1
  163. package/dist/components/SynapseHomepageV2/WordPressNews.d.ts.map +1 -1
  164. package/dist/components/SynapseHomepageV2/WordPressNews.js +8 -7
  165. package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
  166. package/dist/components/SynapseHomepageV2/WordPressNewsItem.d.ts +5 -1
  167. package/dist/components/SynapseHomepageV2/WordPressNewsItem.d.ts.map +1 -1
  168. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js +19 -11
  169. package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
  170. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +1 -1
  171. package/dist/components/SynapseTable/table-top/DownloadOptions.js +1 -1
  172. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  173. package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
  174. package/dist/components/TextField/TextField.css +1 -1
  175. package/dist/components/TextField/TextField.d.ts.map +1 -1
  176. package/dist/components/TextField/TextField.js +27 -25
  177. package/dist/components/TextField/TextField.js.map +1 -1
  178. package/dist/components/TextField/TextField.module.js +3 -3
  179. package/dist/components/TextField/TextField.module.js.map +1 -1
  180. package/dist/components/TextField/TextField.module.scss +2 -5
  181. package/dist/components/Webhook/WebhookVerificationDialog.js +1 -1
  182. package/dist/components/WordPress/useWordPressPosts.js +1 -1
  183. package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
  184. package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js +1 -1
  185. package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js +1 -1
  186. package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +1 -1
  187. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  188. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +66 -49
  189. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  190. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
  191. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  192. package/dist/components/error/SendMessageToEntityOwnerDialog.js +1 -1
  193. package/dist/components/index.js +1 -1
  194. package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
  195. package/dist/components/menu/ComplexMenu.js +1 -4
  196. package/dist/components/menu/ComplexMenu.js.map +1 -1
  197. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js +1 -1
  198. package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
  199. package/dist/features/curator/dashboard/CuratorDashboard.d.ts +1 -1
  200. package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
  201. package/dist/features/curator/dashboard/CuratorDashboard.js +36 -35
  202. package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
  203. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts +13 -0
  204. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -0
  205. package/dist/features/curator/dashboard/CuratorDashboardRouter.js +37 -0
  206. package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -0
  207. package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
  208. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +3 -1
  209. package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
  210. package/dist/features/curator/dashboard/components/CurationTaskCard.js +26 -157
  211. package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
  212. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +10 -6
  213. package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
  214. package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +31 -0
  215. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts +25 -0
  216. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -0
  217. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +134 -0
  218. package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -0
  219. package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts +10 -0
  220. package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts.map +1 -0
  221. package/dist/features/curator/dashboard/components/ExecutableTaskCard.js +51 -0
  222. package/dist/features/curator/dashboard/components/ExecutableTaskCard.js.map +1 -0
  223. package/dist/features/curator/dashboard/components/GridTaskCard.d.ts +10 -0
  224. package/dist/features/curator/dashboard/components/GridTaskCard.d.ts.map +1 -0
  225. package/dist/features/curator/dashboard/components/GridTaskCard.js +35 -0
  226. package/dist/features/curator/dashboard/components/GridTaskCard.js.map +1 -0
  227. package/dist/features/curator/dashboard/components/NextStepButton.css +1 -1
  228. package/dist/features/curator/dashboard/components/NextStepButton.d.ts +3 -0
  229. package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
  230. package/dist/features/curator/dashboard/components/NextStepButton.js +56 -26
  231. package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
  232. package/dist/features/curator/dashboard/components/NextStepButton.module.js +6 -5
  233. package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -1
  234. package/dist/features/curator/dashboard/components/NextStepButton.module.scss +28 -0
  235. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts +31 -0
  236. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts.map +1 -0
  237. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js +32 -0
  238. package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js.map +1 -0
  239. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
  240. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +213 -204
  241. package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
  242. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -1
  243. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  244. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +19 -39
  245. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  246. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts +9 -3
  247. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  248. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -46
  249. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  250. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts +17 -0
  251. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -0
  252. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +43 -0
  253. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -0
  254. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
  255. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +27 -26
  256. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
  257. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts +16 -0
  258. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts.map +1 -0
  259. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js +64 -0
  260. package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js.map +1 -0
  261. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts +41 -0
  262. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts.map +1 -0
  263. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js +165 -0
  264. package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js.map +1 -0
  265. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts +18 -0
  266. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts.map +1 -0
  267. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js +78 -0
  268. package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js.map +1 -0
  269. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts +10 -0
  270. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts.map +1 -0
  271. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js +40 -0
  272. package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js.map +1 -0
  273. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts +13 -0
  274. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts.map +1 -0
  275. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js +35 -0
  276. package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js.map +1 -0
  277. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts +41 -0
  278. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts.map +1 -0
  279. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +198 -0
  280. package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -0
  281. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts +8 -0
  282. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts.map +1 -0
  283. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js +29 -0
  284. package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js.map +1 -0
  285. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts +13 -0
  286. package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts.map +1 -0
  287. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js +65 -0
  288. package/dist/features/entity/metadata-task/create-task/FileBasedFields.js.map +1 -0
  289. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts +11 -0
  290. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts.map +1 -0
  291. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js +33 -0
  292. package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js.map +1 -0
  293. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts +13 -0
  294. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts.map +1 -0
  295. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js +38 -0
  296. package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js.map +1 -0
  297. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts +13 -0
  298. package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts.map +1 -0
  299. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js +72 -0
  300. package/dist/features/entity/metadata-task/create-task/RecordSetFields.js.map +1 -0
  301. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts +11 -0
  302. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts.map +1 -0
  303. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js +42 -0
  304. package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js.map +1 -0
  305. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts +17 -0
  306. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts.map +1 -0
  307. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +70 -0
  308. package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -0
  309. package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts +23 -0
  310. package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts.map +1 -0
  311. package/dist/features/entity/metadata-task/create-task/TaskFormActions.js +68 -0
  312. package/dist/features/entity/metadata-task/create-task/TaskFormActions.js.map +1 -0
  313. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts +17 -0
  314. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts.map +1 -0
  315. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +33 -0
  316. package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -0
  317. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts +50 -0
  318. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -0
  319. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +76 -0
  320. package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -0
  321. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts +36 -0
  322. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts.map +1 -0
  323. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js +31 -0
  324. package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js.map +1 -0
  325. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts +32 -0
  326. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts.map +1 -0
  327. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js +33 -0
  328. package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js.map +1 -0
  329. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts +10 -0
  330. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts.map +1 -0
  331. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js +13 -0
  332. package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js.map +1 -0
  333. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
  334. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +24 -24
  335. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  336. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -1
  337. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +2 -2
  338. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
  339. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  340. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +33 -32
  341. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  342. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
  343. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +24 -21
  344. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  345. package/dist/features/entity/metadata-task/utils/constants.d.ts +84 -15
  346. package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
  347. package/dist/features/entity/metadata-task/utils/constants.js +47 -3
  348. package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
  349. package/dist/features/entity/metadata-task/utils/dueDate.d.ts +22 -0
  350. package/dist/features/entity/metadata-task/utils/dueDate.d.ts.map +1 -0
  351. package/dist/features/entity/metadata-task/utils/dueDate.js +24 -0
  352. package/dist/features/entity/metadata-task/utils/dueDate.js.map +1 -0
  353. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
  354. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
  355. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +5 -6
  356. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  357. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts +4 -4
  358. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts.map +1 -1
  359. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js +5 -6
  360. package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
  361. package/dist/features/entity/metadata-task/utils/types.d.ts +12 -0
  362. package/dist/features/entity/metadata-task/utils/types.d.ts.map +1 -0
  363. package/dist/features/entity/metadata-task/utils/types.js +18 -0
  364. package/dist/features/entity/metadata-task/utils/types.js.map +1 -0
  365. package/dist/mocks/curation/mockCurationTask.d.ts +6 -0
  366. package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -1
  367. package/dist/mocks/curation/mockCurationTask.js +20 -3
  368. package/dist/mocks/curation/mockCurationTask.js.map +1 -1
  369. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts +16 -0
  370. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts.map +1 -0
  371. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js +24 -0
  372. package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js.map +1 -0
  373. package/dist/style/components/_data-grid-extra.css +1 -1
  374. package/dist/style/components/_data-grid-extra.scss +0 -6
  375. package/dist/synapse-client/SynapseClient.d.ts +7 -1
  376. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  377. package/dist/synapse-client/SynapseClient.js +493 -482
  378. package/dist/synapse-client/SynapseClient.js.map +1 -1
  379. package/dist/synapse-client/index.js +3 -3
  380. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +8 -1
  381. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  382. package/dist/synapse-queries/curation/task/useCurationTask.js +48 -34
  383. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  384. package/dist/theme/palette/Palettes.js +2 -2
  385. package/dist/theme/palette/Palettes.js.map +1 -1
  386. package/dist/tsconfig.build.tsbuildinfo +1 -1
  387. package/dist/utils/AppUtils/session/useSessionManager.d.ts.map +1 -1
  388. package/dist/utils/AppUtils/session/useSessionManager.js +50 -48
  389. package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
  390. package/dist/utils/SynapseConstants.d.ts +4 -1
  391. package/dist/utils/SynapseConstants.d.ts.map +1 -1
  392. package/dist/utils/SynapseConstants.js +86 -83
  393. package/dist/utils/SynapseConstants.js.map +1 -1
  394. package/dist/utils/featureflag/FeatureFlags.d.ts +2 -2
  395. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  396. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  397. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  398. package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
  399. package/dist/utils/hooks/useDetectSSOCode.js +37 -27
  400. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  401. package/package.json +6 -6
  402. package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts +0 -8
  403. package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts.map +0 -1
  404. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +0 -64
  405. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CreateOrUpdateCurationTaskDialog.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { DialogBase } from '@/components/DialogBase'\nimport EntityIdTextField from '@/components/EntityFinder/EntityIdTextField'\nimport { FinderScope } from '@/components/EntityFinder/tree/EntityTree'\nimport { VersionSelectionType } from '@/components/EntityFinder/VersionSelectionType'\nimport { TextField } from '@/components/TextField'\nimport { displayToast } from '@/components/ToastMessage'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport WizardChoiceButton from '@/components/WizardChoiceButton/WizardChoiceButton'\nimport WizardChoiceButtonGroup from '@/components/WizardChoiceButton/WizardChoiceButtonGroup'\nimport {\n useCreateCurationTask,\n useDeleteCurationTask,\n useGetCurationTaskStatus,\n useUpdateCurationTask,\n useUpdateCurationTaskStatus,\n} from '@/synapse-queries/curation/task/useCurationTask'\nimport { EntityTypeGroup } from '@/utils/functions/EntityTypeUtils'\nimport { HelpTwoTone } from '@mui/icons-material'\nimport Close from '@mui/icons-material/Close'\nimport {\n Alert,\n Box,\n Button,\n FormControl,\n FormControlLabel,\n FormLabel,\n Grid,\n IconButton,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n CurationTask,\n CurationTaskProperties,\n EntityType,\n FileBasedMetadataTaskPropertiesConcreteTypeEnum,\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport {\n ASSIGNEE_TOOLTIP,\n AUTH_MODE_CHANGED_WARNING,\n AUTH_MODE_NONE_TITLE,\n AUTH_MODE_NONE_TOOLTIP,\n AUTH_MODE_SESSION_OWNER_TITLE,\n AUTH_MODE_SESSION_OWNER_TOOLTIP,\n AUTH_MODE_SOURCE_BENEFACTOR_TITLE,\n AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP,\n COLLABORATORS_TOOLTIP,\n CREATE_CURATION_TASK_DIALOG_TITLE,\n TASK_STATUS_CONFIG,\n TASK_STATUS_INPUT_LABEL,\n DELETE_CURATION_TASK_CONFIRMATION_PROMPT,\n DELETE_CURATION_TASK_DIALOG_TITLE,\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX,\n DELETE_CURATION_TASK_GRID_SESSION_WARNING,\n DELETE_CURATION_TASK_SUCCESS_TOAST,\n EDIT_CURATION_TASK_DIALOG_TITLE,\n FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION,\n FILE_BASED_TASK_DESCRIPTION,\n FILE_BASED_TASK_TITLE,\n FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION,\n FILE_VIEW_FINDER_PROMPT,\n FILE_VIEW_FINDER_TITLE,\n GENERIC_SAVE_ERROR_MESSAGE,\n RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION,\n RECORD_BASED_TASK_DESCRIPTION,\n RECORD_BASED_TASK_TITLE,\n RECORD_SET_FINDER_PROMPT,\n RECORD_SET_FINDER_TITLE,\n SELECT_TASK_TYPE_DESCRIPTION,\n TASK_INSTRUCTIONS_INPUT_DESCRIPTION,\n TASK_NAME_INPUT_DESCRIPTION,\n UNRECOGNIZED_TASK_TYPE_ERROR,\n UPLOAD_FOLDER_FINDER_PROMPT,\n UPLOAD_FOLDER_FINDER_TITLE,\n} from '../utils/constants'\nimport noop from 'lodash-es/noop'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { StyledFormControl } from '@/components/styled'\n\nexport type CreateOrUpdateCurationTaskDialogProps = {\n open: boolean\n onCancel: () => void\n onSuccess: (task: CurationTask) => void\n /**\n * Called after the task has been deleted from the dialog (edit mode only).\n * Parent is responsible for closing the dialog and any related cleanup.\n */\n onDeleteSuccess?: () => void\n projectId: string\n task?: CurationTask\n}\n\nconst FILE_BASED_CONCRETE_TYPE =\n FileBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties\nconst RECORD_BASED_CONCRETE_TYPE =\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_RecordBasedMetadataTaskProperties\n\n/** Null represents the \"Legacy\" / unset option for suggestedAuthorizationMode */\ntype AuthorizationModeOption = 'SESSION_OWNER' | 'SOURCE_BENEFACTOR' | 'NONE'\n\nfunction toAuthorizationModeOption(\n value: string | undefined,\n): AuthorizationModeOption {\n if (value === 'SESSION_OWNER' || value === 'SOURCE_BENEFACTOR') return value\n return 'NONE'\n}\n\ntype CreateOrUpdateCurationTaskDialogStep =\n | 'SELECT_TYPE'\n | 'TYPE_SPECIFIC_FIELDS'\n | 'COMMON_MUTABLE_FIELDS'\n\n/**\n * Dialog component that guides a user through creating a new CurationTask or editing an existing one.\n */\nexport default function CreateOrUpdateCurationTaskDialog(\n props: CreateOrUpdateCurationTaskDialogProps,\n) {\n const {\n open,\n onCancel,\n onSuccess,\n onDeleteSuccess = noop,\n projectId,\n task,\n } = props\n const isEditMode = task !== undefined\n const { data: permissions } = useGetEntityPermissions(projectId)\n const canDelete =\n permissions?.canDelete &&\n isEditMode &&\n task?.taskId != null &&\n props.onDeleteSuccess != null\n\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false)\n\n // In create mode: track which step we're on (1 = type selection, 2 = type-specific fields, 3 = common mutable fields)\n const [step, setStep] = useState<CreateOrUpdateCurationTaskDialogStep>(() =>\n task ? 'COMMON_MUTABLE_FIELDS' : 'SELECT_TYPE',\n )\n\n // Derive initial concrete type from the existing task (null in create mode\n // until the user picks a type in step 1)\n const [selectedConcreteType, setSelectedConcreteType] = useState<\n CurationTaskProperties['concreteType'] | null\n >(() => {\n const ct = task?.taskProperties?.concreteType\n if (ct === FILE_BASED_CONCRETE_TYPE || ct === RECORD_BASED_CONCRETE_TYPE)\n return ct\n return null\n })\n\n // Common task fields — lazily initialized from the existing task\n const [dataType, setDataType] = useState(() => task?.dataType ?? '')\n const [instructions, setInstructions] = useState(\n () => task?.instructions ?? '',\n )\n const [assigneePrincipalId, setAssigneePrincipalId] = useState<\n string | undefined\n >(() => task?.assigneePrincipalId)\n\n const initialAuthMode = toAuthorizationModeOption(\n task?.taskProperties?.suggestedAuthorizationMode,\n )\n const [authorizationMode, setAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n // Track the original value to detect unsaved changes\n const [originalAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n\n // FileBasedMetadataTaskProperties fields\n const [uploadFolderId, setUploadFolderId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.uploadFolderId ?? '')\n : ''\n })\n const [fileViewId, setFileViewId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.fileViewId ?? '')\n : ''\n })\n\n // RecordBasedMetadataTaskProperties fields\n const [recordSetId, setRecordSetId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === RECORD_BASED_CONCRETE_TYPE\n ? (tp.recordSetId ?? '')\n : ''\n })\n\n // Shared taskProperties fields\n const [collaboratorPrincipalIds, setCollaboratorPrincipalIds] = useState<\n string[]\n >(() => {\n const ids = task?.taskProperties?.collaboratorPrincipalIds\n return ids ?? []\n })\n const [pendingCollaboratorId, setPendingCollaboratorId] = useState<\n string | null\n >(null)\n\n // Task status (edit mode only)\n const { data: currentTaskStatus, isFetching: isStatusFetching } =\n useGetCurationTaskStatus(task?.taskId ?? 0, {\n enabled: isEditMode && task?.taskId != null,\n })\n // undefined = user hasn't changed the status yet\n const [pendingStatusState, setPendingStatusState] = useState<\n TaskStatusStateEnum | undefined\n >(undefined)\n const displayedStatusState = pendingStatusState ?? currentTaskStatus?.state\n\n const {\n mutateAsync: createTask,\n isPending: isCreatePending,\n error: createError,\n } = useCreateCurationTask()\n\n const {\n mutateAsync: updateTask,\n isPending: isUpdatePending,\n error: updateError,\n } = useUpdateCurationTask()\n\n const {\n mutateAsync: updateTaskStatus,\n isPending: isStatusUpdatePending,\n error: statusUpdateError,\n } = useUpdateCurationTaskStatus()\n\n const { mutate: deleteTask, isPending: isDeletePending } =\n useDeleteCurationTask({\n onSuccess: () => {\n displayToast(DELETE_CURATION_TASK_SUCCESS_TOAST, 'success')\n setShowDeleteConfirmation(false)\n onDeleteSuccess()\n },\n onError: err => {\n displayToast(\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX + err.message,\n 'danger',\n )\n },\n })\n\n const isPending =\n isCreatePending ||\n isUpdatePending ||\n isDeletePending ||\n isStatusUpdatePending\n const error = createError ?? updateError ?? statusUpdateError\n\n const isTaskPropertiesValid =\n (selectedConcreteType === FILE_BASED_CONCRETE_TYPE &&\n uploadFolderId &&\n fileViewId) ||\n (selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordSetId)\n\n function buildTaskPayload(): CurationTask {\n const suggestedAuthorizationMode =\n authorizationMode === 'NONE' ? undefined : authorizationMode\n\n const concreteType = selectedConcreteType!\n let taskProperties: CurationTask['taskProperties']\n const collaborators =\n collaboratorPrincipalIds.length > 0 ? collaboratorPrincipalIds : undefined\n\n if (concreteType === FILE_BASED_CONCRETE_TYPE) {\n taskProperties = {\n concreteType: FILE_BASED_CONCRETE_TYPE,\n uploadFolderId: uploadFolderId || undefined,\n fileViewId: fileViewId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n } else {\n taskProperties = {\n concreteType: RECORD_BASED_CONCRETE_TYPE,\n recordSetId: recordSetId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n }\n\n return {\n // Spread the existing task to carry over server-managed fields (taskId, etc.)\n ...(isEditMode ? task : {}),\n projectId,\n dataType: dataType || undefined,\n instructions: instructions || undefined,\n assigneePrincipalId: assigneePrincipalId || undefined,\n taskProperties,\n }\n }\n\n async function handleSave() {\n const payload = buildTaskPayload()\n if (isEditMode) {\n const latestTask = await updateTask(payload)\n\n if (\n pendingStatusState !== undefined &&\n pendingStatusState !== currentTaskStatus?.state &&\n currentTaskStatus != null\n ) {\n await updateTaskStatus({\n ...currentTaskStatus,\n state: pendingStatusState,\n etag: latestTask.etag,\n })\n }\n\n onSuccess(latestTask)\n } else {\n const created = await createTask(payload)\n onSuccess(created)\n }\n }\n\n const authModeChanged =\n isEditMode && authorizationMode !== originalAuthorizationMode\n\n // ── Authorization Mode radio group (shared between columns) ────────────\n const authModeField = (\n <FormControl>\n <FormLabel>Authorization Mode</FormLabel>\n <RadioGroup\n value={authorizationMode}\n onChange={(_e, v) => setAuthorizationMode(v as AuthorizationModeOption)}\n >\n <FormControlLabel\n value=\"NONE\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">{AUTH_MODE_NONE_TITLE}</Typography>\n <Tooltip title={AUTH_MODE_NONE_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SESSION_OWNER\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SESSION_OWNER_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SESSION_OWNER_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SOURCE_BENEFACTOR\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SOURCE_BENEFACTOR_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n </RadioGroup>\n </FormControl>\n )\n\n const assigneeField = (\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel htmlFor=\"dlg-set-task-assignee\">Assignee</InputLabel>\n <Tooltip title={ASSIGNEE_TOOLTIP}>\n <div>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </div>\n </Tooltip>\n </Box>\n <UserSearchBox\n inputId=\"dlg-set-task-assignee\"\n key={open.toString()}\n defaultValue={assigneePrincipalId}\n onChange={id => setAssigneePrincipalId(id ?? undefined)}\n typeFilter={TYPE_FILTER.ALL}\n />\n </Box>\n )\n\n // ── Form fields (used in both step 3 create and edit mode) ──────────────\n const commonFields = (\n <Stack gap={2}>\n <TextField\n label=\"Task Name\"\n fullWidth\n value={dataType}\n onChange={e => setDataType(e.target.value)}\n required\n description={TASK_NAME_INPUT_DESCRIPTION}\n />\n <TextField\n label=\"Instructions\"\n fullWidth\n multiline\n minRows={3}\n value={instructions}\n onChange={e => setInstructions(e.target.value)}\n description={TASK_INSTRUCTIONS_INPUT_DESCRIPTION}\n />\n {/* TODO: Display the below 'collaborators' once multiple owners are supported */}\n <Box display=\"none\">\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel>Collaborators</InputLabel>\n <Tooltip title={COLLABORATORS_TOOLTIP}>\n <div>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </div>\n </Tooltip>\n </Box>\n <Stack gap={1}>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Box flex={1}>\n <UserSearchBox\n value={pendingCollaboratorId}\n onChange={id => setPendingCollaboratorId(id)}\n typeFilter={TYPE_FILTER.ALL}\n placeholder=\"Search for a user or team\"\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (\n pendingCollaboratorId &&\n !collaboratorPrincipalIds.includes(pendingCollaboratorId)\n ) {\n setCollaboratorPrincipalIds(prev => [\n ...prev,\n pendingCollaboratorId,\n ])\n }\n setPendingCollaboratorId(null)\n }}\n disabled={!pendingCollaboratorId}\n >\n Add\n </Button>\n </Stack>\n {collaboratorPrincipalIds.map(id => (\n <Stack\n key={id}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <UserOrTeamBadge principalId={id} />\n <IconButton\n size=\"small\"\n onClick={() =>\n setCollaboratorPrincipalIds(prev =>\n prev.filter(x => x !== id),\n )\n }\n >\n <Close fontSize=\"small\" />\n </IconButton>\n </Stack>\n ))}\n </Stack>\n </Box>\n </Stack>\n )\n\n // ── TaskProperties fields ────────────────────────────────────────────────\n const fileBasedFields = (\n <Stack gap={2}>\n <EntityIdTextField\n label=\"Upload Folder ID\"\n value={uploadFolderId}\n description={FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION}\n onChange={setUploadFolderId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: UPLOAD_FOLDER_FINDER_TITLE,\n promptCopy: UPLOAD_FOLDER_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: EntityTypeGroup.CONTAINER,\n },\n }}\n />\n <EntityIdTextField\n label=\"File View ID\"\n value={fileViewId}\n description={FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION}\n onChange={setFileViewId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: FILE_VIEW_FINDER_TITLE,\n promptCopy: FILE_VIEW_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.entityview],\n },\n }}\n />\n </Stack>\n )\n\n const recordBasedFields = (\n <EntityIdTextField\n label=\"Record Set ID\"\n value={recordSetId}\n description={RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION}\n onChange={setRecordSetId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: RECORD_SET_FINDER_TITLE,\n promptCopy: RECORD_SET_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.recordset],\n },\n }}\n />\n )\n\n // ── Step 1: Type selection ───────────────────────────────────────────────\n const step1Content = (\n <Stack gap={2}>\n <Typography variant=\"body1\">{SELECT_TASK_TYPE_DESCRIPTION}</Typography>\n <WizardChoiceButtonGroup>\n <WizardChoiceButton\n title={FILE_BASED_TASK_TITLE}\n description={FILE_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(FILE_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n <WizardChoiceButton\n title={RECORD_BASED_TASK_TITLE}\n description={RECORD_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(RECORD_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n </WizardChoiceButtonGroup>\n </Stack>\n )\n\n // ── Step 2: Type-specific fields ───────────────────────────────────────────────\n const step2Content = (\n <Stack gap={2}>\n {selectedConcreteType === FILE_BASED_CONCRETE_TYPE && fileBasedFields}\n {selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordBasedFields}\n </Stack>\n )\n\n // ── Step 3 / edit form content ───────────────────────────────────────────\n const step3Content = (\n <Stack gap={3}>\n <Grid container spacing={3} alignItems=\"flex-start\">\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={2}>{commonFields}</Stack>\n </Grid>\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={3}>\n {isEditMode && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"dlg-task-status-label\">\n {TASK_STATUS_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"dlg-task-status-label\"\n value={displayedStatusState ?? ''}\n label={TASK_STATUS_INPUT_LABEL}\n disabled={isStatusFetching || currentTaskStatus == null}\n onChange={e =>\n setPendingStatusState(e.target.value as TaskStatusStateEnum)\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 {assigneeField}\n {authModeField}\n </Stack>\n </Grid>\n </Grid>\n\n {isEditMode && selectedConcreteType === null && (\n <Alert severity=\"error\">{UNRECOGNIZED_TASK_TYPE_ERROR}</Alert>\n )}\n {authModeChanged && (\n <Alert severity=\"warning\">{AUTH_MODE_CHANGED_WARNING}</Alert>\n )}\n {error && (\n <Alert severity=\"error\">\n {error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n )\n\n const title = isEditMode\n ? EDIT_CURATION_TASK_DIALOG_TITLE\n : CREATE_CURATION_TASK_DIALOG_TITLE\n\n let dialogContent = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogContent = step1Content\n break\n case 'TYPE_SPECIFIC_FIELDS':\n dialogContent = step2Content\n break\n case 'COMMON_MUTABLE_FIELDS':\n dialogContent = step3Content\n break\n }\n\n let dialogActions = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogActions = null\n break\n case 'TYPE_SPECIFIC_FIELDS': {\n dialogActions = (\n <>\n <Button\n variant=\"outlined\"\n onClick={() => setStep('SELECT_TYPE')}\n disabled={isPending}\n >\n Back\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => setStep('COMMON_MUTABLE_FIELDS')}\n disabled={isPending || !isTaskPropertiesValid}\n >\n Next\n </Button>\n </>\n )\n break\n }\n case 'COMMON_MUTABLE_FIELDS': {\n dialogActions = (\n <>\n {!isEditMode && (\n <Button\n variant=\"outlined\"\n onClick={() => setStep('TYPE_SPECIFIC_FIELDS')}\n disabled={isPending}\n >\n Back\n </Button>\n )}\n <Button\n variant=\"contained\"\n // errors surfaced via react-query error state\n onClick={() => void handleSave().catch(noop)}\n disabled={isPending || selectedConcreteType === null}\n >\n Save\n </Button>\n </>\n )\n break\n }\n }\n\n return (\n <>\n <DialogBase\n open={open}\n title={title}\n maxWidth=\"md\"\n fullWidth\n onCancel={onCancel}\n content={dialogContent}\n actions={\n <Stack\n direction=\"row\"\n gap={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Box>\n {canDelete && (\n <Button\n variant=\"outlined\"\n color=\"error\"\n onClick={() => setShowDeleteConfirmation(true)}\n disabled={isPending}\n >\n Delete\n </Button>\n )}\n </Box>\n <Stack direction=\"row\" gap={1}>\n {dialogActions}\n </Stack>\n </Stack>\n }\n />\n <ConfirmationDialog\n title={DELETE_CURATION_TASK_DIALOG_TITLE}\n open={showDeleteConfirmation}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\">\n {DELETE_CURATION_TASK_CONFIRMATION_PROMPT}\n </Typography>\n <Alert severity=\"warning\">\n {DELETE_CURATION_TASK_GRID_SESSION_WARNING}\n </Alert>\n </Stack>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n loading: isDeletePending,\n }}\n onConfirm={() => {\n if (task?.taskId != null) deleteTask(task.taskId)\n }}\n onCancel={() => setShowDeleteConfirmation(false)}\n />\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreateOrUpdateCurationTaskDialog.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { DialogBase } from '@/components/DialogBase'\nimport EntityIdTextField from '@/components/EntityFinder/EntityIdTextField'\nimport { FinderScope } from '@/components/EntityFinder/tree/EntityTree'\nimport { VersionSelectionType } from '@/components/EntityFinder/VersionSelectionType'\nimport { TextField } from '@/components/TextField'\nimport { displayToast } from '@/components/ToastMessage'\nimport UserOrTeamBadge from '@/components/UserOrTeamBadge/UserOrTeamBadge'\nimport UserSearchBox from '@/components/UserSearchBox/UserSearchBox'\nimport WizardChoiceButton from '@/components/WizardChoiceButton/WizardChoiceButton'\nimport WizardChoiceButtonGroup from '@/components/WizardChoiceButton/WizardChoiceButtonGroup'\nimport {\n useCreateCurationTask,\n useDeleteCurationTask,\n useGetCurationTaskStatus,\n useUpdateCurationTask,\n useUpdateCurationTaskStatus,\n} from '@/synapse-queries/curation/task/useCurationTask'\nimport { EntityTypeGroup } from '@/utils/functions/EntityTypeUtils'\nimport { HelpTwoTone } from '@mui/icons-material'\nimport Close from '@mui/icons-material/Close'\nimport {\n Alert,\n Box,\n Button,\n FormControl,\n FormControlLabel,\n FormLabel,\n Grid,\n IconButton,\n InputLabel,\n MenuItem,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n CurationTask,\n CurationTaskProperties,\n EntityType,\n FileBasedMetadataTaskPropertiesConcreteTypeEnum,\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum,\n TaskStatusStateEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { TYPE_FILTER } from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport {\n AUTH_MODE_CHANGED_WARNING,\n AUTH_MODE_NONE_TITLE,\n AUTH_MODE_NONE_TOOLTIP,\n AUTH_MODE_SESSION_OWNER_TITLE,\n AUTH_MODE_SESSION_OWNER_TOOLTIP,\n AUTH_MODE_SOURCE_BENEFACTOR_TITLE,\n AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP,\n COLLABORATORS_TOOLTIP,\n CREATE_CURATION_TASK_DIALOG_TITLE,\n TASK_STATUS_CONFIG,\n TASK_STATUS_INPUT_LABEL,\n DELETE_CURATION_TASK_CONFIRMATION_PROMPT,\n DELETE_CURATION_TASK_DIALOG_TITLE,\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX,\n DELETE_CURATION_TASK_GRID_SESSION_WARNING,\n DELETE_CURATION_TASK_SUCCESS_TOAST,\n EDIT_CURATION_TASK_DIALOG_TITLE,\n FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION,\n FILE_BASED_TASK_DESCRIPTION,\n FILE_BASED_TASK_TITLE,\n FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION,\n FILE_VIEW_FINDER_PROMPT,\n FILE_VIEW_FINDER_TITLE,\n GENERIC_SAVE_ERROR_MESSAGE,\n RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION,\n RECORD_BASED_TASK_DESCRIPTION,\n RECORD_BASED_TASK_TITLE,\n RECORD_SET_FINDER_PROMPT,\n RECORD_SET_FINDER_TITLE,\n SELECT_TASK_TYPE_DESCRIPTION,\n TASK_INSTRUCTIONS_INPUT_DESCRIPTION,\n TASK_NAME_INPUT_DESCRIPTION,\n UNRECOGNIZED_TASK_TYPE_ERROR,\n UPLOAD_FOLDER_FINDER_PROMPT,\n UPLOAD_FOLDER_FINDER_TITLE,\n} from '../utils/constants'\nimport noop from 'lodash-es/noop'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { StyledFormControl } from '@/components/styled'\nimport { instanceOfGridSupportedTaskProperties } from '../utils/types'\nimport { dueDateInputToIso, isoToDueDateInput } from '../utils/dueDate'\n\nexport type CreateOrUpdateCurationTaskDialogProps = {\n open: boolean\n onCancel: () => void\n onSuccess: (task: CurationTask) => void\n /**\n * Called after the task has been deleted from the dialog (edit mode only).\n * Parent is responsible for closing the dialog and any related cleanup.\n */\n onDeleteSuccess?: () => void\n projectId: string\n task?: CurationTask\n}\n\nconst FILE_BASED_CONCRETE_TYPE =\n FileBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_FileBasedMetadataTaskProperties\nconst RECORD_BASED_CONCRETE_TYPE =\n RecordBasedMetadataTaskPropertiesConcreteTypeEnum.org_sagebionetworks_repo_model_curation_metadata_RecordBasedMetadataTaskProperties\n\n/** Null represents the \"Legacy\" / unset option for suggestedAuthorizationMode */\ntype AuthorizationModeOption = 'SESSION_OWNER' | 'SOURCE_BENEFACTOR' | 'NONE'\n\nfunction toAuthorizationModeOption(\n value: string | undefined,\n): AuthorizationModeOption {\n if (value === 'SESSION_OWNER' || value === 'SOURCE_BENEFACTOR') return value\n return 'NONE'\n}\n\ntype CreateOrUpdateCurationTaskDialogStep =\n | 'SELECT_TYPE'\n | 'TYPE_SPECIFIC_FIELDS'\n | 'COMMON_MUTABLE_FIELDS'\n\n/**\n * Dialog component that guides a user through creating a new CurationTask or editing an existing one.\n */\nexport default function CreateOrUpdateCurationTaskDialog(\n props: CreateOrUpdateCurationTaskDialogProps,\n) {\n const {\n open,\n onCancel,\n onSuccess,\n onDeleteSuccess = noop,\n projectId,\n task,\n } = props\n const isEditMode = task !== undefined\n const { data: permissions } = useGetEntityPermissions(projectId)\n const canDelete =\n permissions?.canDelete &&\n isEditMode &&\n task?.taskId != null &&\n props.onDeleteSuccess != null\n\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false)\n\n // In create mode: track which step we're on (1 = type selection, 2 = type-specific fields, 3 = common mutable fields)\n const [step, setStep] = useState<CreateOrUpdateCurationTaskDialogStep>(() =>\n task ? 'COMMON_MUTABLE_FIELDS' : 'SELECT_TYPE',\n )\n\n // Derive initial concrete type from the existing task (null in create mode\n // until the user picks a type in step 1)\n const [selectedConcreteType, setSelectedConcreteType] = useState<\n CurationTaskProperties['concreteType'] | null\n >(() => {\n const ct = task?.taskProperties?.concreteType\n if (ct === FILE_BASED_CONCRETE_TYPE || ct === RECORD_BASED_CONCRETE_TYPE)\n return ct\n return null\n })\n\n // Common task fields — lazily initialized from the existing task\n const [dataType, setDataType] = useState(() => task?.dataType ?? '')\n const [instructions, setInstructions] = useState(\n () => task?.instructions ?? '',\n )\n const [assigneePrincipalId, setAssigneePrincipalId] = useState<\n string | undefined\n >(() => task?.assigneePrincipalId)\n\n const initialAuthMode =\n task?.taskProperties &&\n instanceOfGridSupportedTaskProperties(task?.taskProperties)\n ? toAuthorizationModeOption(\n task?.taskProperties?.suggestedAuthorizationMode,\n )\n : 'NONE'\n\n const [authorizationMode, setAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n // Track the original value to detect unsaved changes\n const [originalAuthorizationMode] =\n useState<AuthorizationModeOption>(initialAuthMode)\n\n // FileBasedMetadataTaskProperties fields\n const [uploadFolderId, setUploadFolderId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.uploadFolderId ?? '')\n : ''\n })\n const [fileViewId, setFileViewId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === FILE_BASED_CONCRETE_TYPE\n ? (tp.fileViewId ?? '')\n : ''\n })\n\n // RecordBasedMetadataTaskProperties fields\n const [recordSetId, setRecordSetId] = useState(() => {\n const tp = task?.taskProperties\n return tp?.concreteType === RECORD_BASED_CONCRETE_TYPE\n ? (tp.recordSetId ?? '')\n : ''\n })\n\n // Shared taskProperties fields\n const [collaboratorPrincipalIds, setCollaboratorPrincipalIds] = useState<\n string[]\n >(() => {\n const ids =\n task &&\n task.taskProperties &&\n instanceOfGridSupportedTaskProperties(task.taskProperties)\n ? task.taskProperties.collaboratorPrincipalIds\n : undefined\n return ids ?? []\n })\n const [pendingCollaboratorId, setPendingCollaboratorId] = useState<\n string | null\n >(null)\n\n // Task status (edit mode only)\n const { data: currentTaskStatus, isFetching: isStatusFetching } =\n useGetCurationTaskStatus(task?.taskId ?? 0, {\n enabled: isEditMode && task?.taskId != null,\n })\n // undefined = user hasn't changed the status yet\n const [pendingStatusState, setPendingStatusState] = useState<\n TaskStatusStateEnum | undefined\n >(undefined)\n const displayedStatusState = pendingStatusState ?? currentTaskStatus?.state\n\n // Due date (edit mode only, stored on TaskStatus)\n const [pendingDueDate, setPendingDueDate] = useState<string | undefined>(\n undefined,\n )\n const displayedDueDate =\n pendingDueDate ??\n (isEditMode ? isoToDueDateInput(currentTaskStatus?.dueDate) : '')\n const originalDueDateForComparison = isoToDueDateInput(\n currentTaskStatus?.dueDate,\n )\n\n const {\n mutateAsync: createTask,\n isPending: isCreatePending,\n error: createError,\n } = useCreateCurationTask()\n\n const {\n mutateAsync: updateTask,\n isPending: isUpdatePending,\n error: updateError,\n } = useUpdateCurationTask()\n\n const {\n mutateAsync: updateTaskStatus,\n isPending: isStatusUpdatePending,\n error: statusUpdateError,\n } = useUpdateCurationTaskStatus()\n\n const { mutate: deleteTask, isPending: isDeletePending } =\n useDeleteCurationTask({\n onSuccess: () => {\n displayToast(DELETE_CURATION_TASK_SUCCESS_TOAST, 'success')\n setShowDeleteConfirmation(false)\n onDeleteSuccess()\n },\n onError: err => {\n displayToast(\n DELETE_CURATION_TASK_ERROR_TOAST_PREFIX + err.message,\n 'danger',\n )\n },\n })\n\n const isPending =\n isCreatePending ||\n isUpdatePending ||\n isDeletePending ||\n isStatusUpdatePending\n const error = createError ?? updateError ?? statusUpdateError\n\n const isTaskPropertiesValid =\n (selectedConcreteType === FILE_BASED_CONCRETE_TYPE &&\n uploadFolderId &&\n fileViewId) ||\n (selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordSetId)\n\n function buildTaskPayload(): CurationTask {\n const suggestedAuthorizationMode =\n authorizationMode === 'NONE' ? undefined : authorizationMode\n\n const concreteType = selectedConcreteType!\n let taskProperties: CurationTask['taskProperties']\n const collaborators =\n collaboratorPrincipalIds.length > 0 ? collaboratorPrincipalIds : undefined\n\n if (concreteType === FILE_BASED_CONCRETE_TYPE) {\n taskProperties = {\n concreteType: FILE_BASED_CONCRETE_TYPE,\n uploadFolderId: uploadFolderId || undefined,\n fileViewId: fileViewId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n } else {\n taskProperties = {\n concreteType: RECORD_BASED_CONCRETE_TYPE,\n recordSetId: recordSetId || undefined,\n suggestedAuthorizationMode,\n collaboratorPrincipalIds: collaborators,\n }\n }\n\n return {\n // Spread the existing task to carry over server-managed fields (taskId, etc.)\n ...(isEditMode ? task : {}),\n projectId,\n dataType: dataType || undefined,\n instructions: instructions || undefined,\n assigneePrincipalId: assigneePrincipalId || undefined,\n taskProperties,\n }\n }\n\n async function handleSave() {\n const payload = buildTaskPayload()\n if (isEditMode) {\n const latestTask = await updateTask(payload)\n\n const statusStateChanged =\n pendingStatusState !== undefined &&\n pendingStatusState !== currentTaskStatus?.state\n const dueDateChanged =\n pendingDueDate !== undefined &&\n pendingDueDate !== originalDueDateForComparison\n\n if ((statusStateChanged || dueDateChanged) && currentTaskStatus != null) {\n await updateTaskStatus({\n ...currentTaskStatus,\n state: pendingStatusState ?? currentTaskStatus.state,\n dueDate:\n pendingDueDate !== undefined\n ? dueDateInputToIso(displayedDueDate)\n : currentTaskStatus.dueDate,\n etag: latestTask.etag,\n })\n }\n\n onSuccess(latestTask)\n } else {\n const created = await createTask(payload)\n onSuccess(created)\n }\n }\n\n const authModeChanged =\n isEditMode && authorizationMode !== originalAuthorizationMode\n\n // ── Authorization Mode radio group (shared between columns) ────────────\n const authModeField = (\n <FormControl>\n <FormLabel>Authorization Mode</FormLabel>\n <RadioGroup\n value={authorizationMode}\n onChange={(_e, v) => setAuthorizationMode(v as AuthorizationModeOption)}\n >\n <FormControlLabel\n value=\"NONE\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">{AUTH_MODE_NONE_TITLE}</Typography>\n <Tooltip title={AUTH_MODE_NONE_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SESSION_OWNER\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SESSION_OWNER_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SESSION_OWNER_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n <FormControlLabel\n value=\"SOURCE_BENEFACTOR\"\n control={<Radio />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography variant=\"body1\">\n {AUTH_MODE_SOURCE_BENEFACTOR_TITLE}\n </Typography>\n <Tooltip title={AUTH_MODE_SOURCE_BENEFACTOR_TOOLTIP}>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </Tooltip>\n </Box>\n }\n />\n </RadioGroup>\n </FormControl>\n )\n\n const assigneeField = (\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel htmlFor=\"dlg-set-task-assignee\">Assignee</InputLabel>\n </Box>\n <UserSearchBox\n inputId=\"dlg-set-task-assignee\"\n key={open.toString()}\n defaultValue={assigneePrincipalId}\n onChange={id => setAssigneePrincipalId(id ?? undefined)}\n typeFilter={TYPE_FILTER.ALL}\n />\n </Box>\n )\n\n // ── Form fields (used in both step 3 create and edit mode) ──────────────\n const commonFields = (\n <Stack gap={2}>\n <TextField\n label=\"Task Name\"\n fullWidth\n value={dataType}\n onChange={e => setDataType(e.target.value)}\n required\n description={TASK_NAME_INPUT_DESCRIPTION}\n />\n <TextField\n label=\"Instructions\"\n fullWidth\n multiline\n minRows={3}\n value={instructions}\n onChange={e => setInstructions(e.target.value)}\n description={TASK_INSTRUCTIONS_INPUT_DESCRIPTION}\n />\n {/* TODO: Display the below 'collaborators' once multiple owners are supported */}\n <Box display=\"none\">\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <InputLabel>Collaborators</InputLabel>\n <Tooltip title={COLLABORATORS_TOOLTIP}>\n <div>\n <HelpTwoTone sx={{ color: 'grey.700' }} />\n </div>\n </Tooltip>\n </Box>\n <Stack gap={1}>\n <Stack direction=\"row\" gap={1} alignItems=\"center\">\n <Box flex={1}>\n <UserSearchBox\n value={pendingCollaboratorId}\n onChange={id => setPendingCollaboratorId(id)}\n typeFilter={TYPE_FILTER.ALL}\n placeholder=\"Search for a user or team\"\n />\n </Box>\n <Button\n variant=\"outlined\"\n onClick={() => {\n if (\n pendingCollaboratorId &&\n !collaboratorPrincipalIds.includes(pendingCollaboratorId)\n ) {\n setCollaboratorPrincipalIds(prev => [\n ...prev,\n pendingCollaboratorId,\n ])\n }\n setPendingCollaboratorId(null)\n }}\n disabled={!pendingCollaboratorId}\n >\n Add\n </Button>\n </Stack>\n {collaboratorPrincipalIds.map(id => (\n <Stack\n key={id}\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <UserOrTeamBadge principalId={id} />\n <IconButton\n size=\"small\"\n onClick={() =>\n setCollaboratorPrincipalIds(prev =>\n prev.filter(x => x !== id),\n )\n }\n >\n <Close fontSize=\"small\" />\n </IconButton>\n </Stack>\n ))}\n </Stack>\n </Box>\n </Stack>\n )\n\n // ── TaskProperties fields ────────────────────────────────────────────────\n const fileBasedFields = (\n <Stack gap={2}>\n <EntityIdTextField\n label=\"Upload Folder ID\"\n value={uploadFolderId}\n description={FILE_BASED_UPLOAD_FOLDER_INPUT_DESCRIPTION}\n onChange={setUploadFolderId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: UPLOAD_FOLDER_FINDER_TITLE,\n promptCopy: UPLOAD_FOLDER_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: EntityTypeGroup.CONTAINER,\n },\n }}\n />\n <EntityIdTextField\n label=\"File View ID\"\n value={fileViewId}\n description={FILE_BASED_FILE_VIEW_INPUT_DESCRIPTION}\n onChange={setFileViewId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: FILE_VIEW_FINDER_TITLE,\n promptCopy: FILE_VIEW_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.entityview],\n },\n }}\n />\n </Stack>\n )\n\n const recordBasedFields = (\n <EntityIdTextField\n label=\"Record Set ID\"\n value={recordSetId}\n description={RECORD_BASED_RECORD_SET_INPUT_DESCRIPTION}\n onChange={setRecordSetId}\n disabled={isEditMode}\n entityFinderModalProps={{\n title: RECORD_SET_FINDER_TITLE,\n promptCopy: RECORD_SET_FINDER_PROMPT,\n confirmButtonCopy: 'Select',\n configuration: {\n initialScope: FinderScope.ALL_PROJECTS,\n initialContainer: 'root',\n selectMultiple: false,\n treeOnly: false,\n versionSelection: VersionSelectionType.DISALLOWED,\n selectableTypes: [EntityType.recordset],\n },\n }}\n />\n )\n\n // ── Step 1: Type selection ───────────────────────────────────────────────\n const step1Content = (\n <Stack gap={2}>\n <Typography variant=\"body1\">{SELECT_TASK_TYPE_DESCRIPTION}</Typography>\n <WizardChoiceButtonGroup>\n <WizardChoiceButton\n title={FILE_BASED_TASK_TITLE}\n description={FILE_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(FILE_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n <WizardChoiceButton\n title={RECORD_BASED_TASK_TITLE}\n description={RECORD_BASED_TASK_DESCRIPTION}\n onClick={() => {\n setSelectedConcreteType(RECORD_BASED_CONCRETE_TYPE)\n setStep('TYPE_SPECIFIC_FIELDS')\n }}\n />\n </WizardChoiceButtonGroup>\n </Stack>\n )\n\n // ── Step 2: Type-specific fields ───────────────────────────────────────────────\n const step2Content = (\n <Stack gap={2}>\n {selectedConcreteType === FILE_BASED_CONCRETE_TYPE && fileBasedFields}\n {selectedConcreteType === RECORD_BASED_CONCRETE_TYPE && recordBasedFields}\n </Stack>\n )\n\n // ── Step 3 / edit form content ───────────────────────────────────────────\n const step3Content = (\n <Stack gap={3}>\n <Grid container spacing={3} alignItems=\"flex-start\">\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={2}>{commonFields}</Stack>\n </Grid>\n <Grid size={{ xs: 12, sm: 6 }}>\n <Stack gap={3}>\n {isEditMode && (\n <StyledFormControl fullWidth>\n <InputLabel id=\"dlg-task-status-label\">\n {TASK_STATUS_INPUT_LABEL}\n </InputLabel>\n <Select\n labelId=\"dlg-task-status-label\"\n value={displayedStatusState ?? ''}\n label={TASK_STATUS_INPUT_LABEL}\n disabled={isStatusFetching || currentTaskStatus == null}\n onChange={e =>\n setPendingStatusState(e.target.value as TaskStatusStateEnum)\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 {isEditMode && (\n <Box>\n <TextField\n label=\"Due Date\"\n fullWidth\n type=\"date\"\n value={displayedDueDate}\n onChange={e => setPendingDueDate(e.target.value)}\n disabled={isStatusFetching}\n slotProps={{ inputLabel: { shrink: true } }}\n />\n </Box>\n )}\n {assigneeField}\n {authModeField}\n </Stack>\n </Grid>\n </Grid>\n\n {isEditMode && selectedConcreteType === null && (\n <Alert severity=\"error\">{UNRECOGNIZED_TASK_TYPE_ERROR}</Alert>\n )}\n {authModeChanged && (\n <Alert severity=\"warning\">{AUTH_MODE_CHANGED_WARNING}</Alert>\n )}\n {error && (\n <Alert severity=\"error\">\n {error.reason ?? GENERIC_SAVE_ERROR_MESSAGE}\n </Alert>\n )}\n </Stack>\n )\n\n const title = isEditMode\n ? EDIT_CURATION_TASK_DIALOG_TITLE\n : CREATE_CURATION_TASK_DIALOG_TITLE\n\n let dialogContent = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogContent = step1Content\n break\n case 'TYPE_SPECIFIC_FIELDS':\n dialogContent = step2Content\n break\n case 'COMMON_MUTABLE_FIELDS':\n dialogContent = step3Content\n break\n }\n\n let dialogActions = null\n switch (step) {\n case 'SELECT_TYPE':\n dialogActions = null\n break\n case 'TYPE_SPECIFIC_FIELDS': {\n dialogActions = (\n <>\n <Button\n variant=\"outlined\"\n onClick={() => setStep('SELECT_TYPE')}\n disabled={isPending}\n >\n Back\n </Button>\n <Button\n variant=\"contained\"\n onClick={() => setStep('COMMON_MUTABLE_FIELDS')}\n disabled={isPending || !isTaskPropertiesValid}\n >\n Next\n </Button>\n </>\n )\n break\n }\n case 'COMMON_MUTABLE_FIELDS': {\n dialogActions = (\n <>\n {!isEditMode && (\n <Button\n variant=\"outlined\"\n onClick={() => setStep('TYPE_SPECIFIC_FIELDS')}\n disabled={isPending}\n >\n Back\n </Button>\n )}\n <Button\n variant=\"contained\"\n // errors surfaced via react-query error state\n onClick={() => void handleSave().catch(noop)}\n disabled={isPending || selectedConcreteType === null}\n >\n Save\n </Button>\n </>\n )\n break\n }\n }\n\n return (\n <>\n <DialogBase\n open={open}\n title={title}\n maxWidth=\"md\"\n fullWidth\n onCancel={onCancel}\n content={dialogContent}\n actions={\n <Stack\n direction=\"row\"\n gap={1}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Box>\n {canDelete && (\n <Button\n variant=\"outlined\"\n color=\"error\"\n onClick={() => setShowDeleteConfirmation(true)}\n disabled={isPending}\n >\n Delete\n </Button>\n )}\n </Box>\n <Stack direction=\"row\" gap={1}>\n {dialogActions}\n </Stack>\n </Stack>\n }\n />\n <ConfirmationDialog\n title={DELETE_CURATION_TASK_DIALOG_TITLE}\n open={showDeleteConfirmation}\n content={\n <Stack gap={2}>\n <Typography variant=\"body1\">\n {DELETE_CURATION_TASK_CONFIRMATION_PROMPT}\n </Typography>\n <Alert severity=\"warning\">\n {DELETE_CURATION_TASK_GRID_SESSION_WARNING}\n </Alert>\n </Stack>\n }\n confirmButtonProps={{\n children: 'Delete',\n color: 'error',\n loading: isDeletePending,\n }}\n onConfirm={() => {\n if (task?.taskId != null) deleteTask(task.taskId)\n }}\n onCancel={() => setShowDeleteConfirmation(false)}\n />\n </>\n )\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { TaskBundle } from '@sage-bionetworks/synapse-client';
2
- export declare const NO_TASK_ASSIGNEE_WARNING_DIALOG_TITLE = "Task is Unassigned";
3
2
  /**
4
3
  * Handles rendering the 'Actions' cell in the Metadata Task table, which provides buttons for the user
5
4
  * to accomplish the actions they can take on a Metadata Task, such as opening a data grid for the entity referenced
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataTaskTableActionCell.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAU7D,eAAO,MAAM,qCAAqC,uBAAuB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,KAAK,EAAE;IACzD,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,2CAoEA"}
1
+ {"version":3,"file":"MetadataTaskTableActionCell.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAQ7D;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,KAAK,EAAE;IACzD,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,2CA0CA"}
@@ -1,58 +1,38 @@
1
- import { displayToast as e } from "../../../../components/ToastMessage/ToastMessage.js";
2
- import { useGlobalIsEditingContext as t } from "../../../../utils/context/GlobalIsEditingContext.js";
3
- import "../../../../components/ToastMessage/index.js";
4
- import { OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE as n, OPEN_CURATOR_TOOLTIP_TITLE as r } from "../utils/constants.js";
5
- import i from "../hooks/useOpenCuratorButton.js";
6
- import a from "./CreateOrUpdateCurationTaskDialog.js";
7
- import { useState as o } from "react";
8
- import { Box as s, Button as c, Tooltip as l } from "@mui/material";
9
- import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
10
- import { StickyNote2Outlined as p } from "@mui/icons-material";
1
+ import { OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE as e, OPEN_CURATOR_TOOLTIP_TITLE as t } from "../utils/constants.js";
2
+ import n from "../hooks/useOpenCuratorButton.js";
3
+ import { Box as r, Button as i, Tooltip as a } from "@mui/material";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ import { StickyNote2Outlined as c } from "@mui/icons-material";
6
+ import { useNavigate as l } from "react-router";
11
7
  //#region src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx
12
- var m = "Task is Unassigned";
13
- function h(m) {
14
- let { canEdit: h, taskBundle: g } = m, [_, v] = o(!1), { setIsEditing: y } = t(), { hasPermission: b, isLoading: x, isPending: S, onClick: C } = i(g), w = S || x || !b, T;
15
- return b === !0 ? T = r : b === !1 && (T = n), /* @__PURE__ */ f(s, {
8
+ function u(u) {
9
+ let { canEdit: d, taskBundle: f } = u, p = l(), { hasPermission: m, isLoading: h, isPending: g, onClick: _ } = n(f), v = g || h || !m, y;
10
+ return m === !0 ? y = t : m === !1 && (y = e), /* @__PURE__ */ s(r, {
16
11
  sx: {
17
12
  display: "flex",
18
13
  flexDirection: "row",
19
14
  gap: 1
20
15
  },
21
- children: [h && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(a, {
22
- projectId: g.task.projectId,
23
- open: _,
24
- task: g.task,
25
- onSuccess: () => {
26
- e("Curation task updated successfully", "success"), v(!1), y(!1);
27
- },
28
- onCancel: () => {
29
- v(!1), y(!1);
30
- },
31
- onDeleteSuccess: () => {
32
- v(!1), y(!1);
33
- }
34
- }, String(_)), /* @__PURE__ */ d(c, {
16
+ children: [d && /* @__PURE__ */ o(i, {
35
17
  variant: "outlined",
36
- onClick: () => {
37
- v(!0), y(!0);
38
- },
18
+ onClick: () => void p(`edit/${f.task.taskId}`),
39
19
  size: "small",
40
20
  children: "Edit"
41
- })] }), /* @__PURE__ */ d(l, {
42
- title: T,
43
- children: /* @__PURE__ */ d("span", { children: /* @__PURE__ */ d(c, {
21
+ }), /* @__PURE__ */ o(a, {
22
+ title: y,
23
+ children: /* @__PURE__ */ o("span", { children: /* @__PURE__ */ o(i, {
44
24
  variant: "contained",
45
25
  size: "small",
46
- startIcon: /* @__PURE__ */ d(p, {}),
47
- loading: S,
48
- disabled: w,
49
- onClick: C,
26
+ startIcon: /* @__PURE__ */ o(c, {}),
27
+ loading: g,
28
+ disabled: v,
29
+ onClick: _,
50
30
  children: "Open Curator"
51
31
  }) })
52
32
  })]
53
33
  });
54
34
  }
55
35
  //#endregion
56
- export { m as NO_TASK_ASSIGNEE_WARNING_DIALOG_TITLE, h as default };
36
+ export { u as default };
57
37
 
58
38
  //# sourceMappingURL=MetadataTaskTableActionCell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataTaskTableActionCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx"],"sourcesContent":["import { displayToast } from '@/components/ToastMessage'\nimport { StickyNote2Outlined } from '@mui/icons-material'\nimport { Box, Button, Tooltip } from '@mui/material'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport { useState } from 'react'\nimport useOpenCuratorFromTaskButton from '../hooks/useOpenCuratorButton'\nimport {\n OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE,\n OPEN_CURATOR_TOOLTIP_TITLE,\n} from '../utils/constants'\nimport CreateOrUpdateCurationTaskDialog from './CreateOrUpdateCurationTaskDialog'\nimport { useGlobalIsEditingContext } from '@/utils/context/GlobalIsEditingContext'\n\nexport const NO_TASK_ASSIGNEE_WARNING_DIALOG_TITLE = 'Task is Unassigned'\n\n/**\n * Handles rendering the 'Actions' cell in the Metadata Task table, which provides buttons for the user\n * to accomplish the actions they can take on a Metadata Task, such as opening a data grid for the entity referenced\n * by the task.\n */\nexport default function MetadataTaskTableActionCell(props: {\n taskBundle: TaskBundle\n canEdit: boolean\n}) {\n const { canEdit, taskBundle } = props\n\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const { setIsEditing } = useGlobalIsEditingContext()\n\n const { hasPermission, isLoading, isPending, onClick } =\n useOpenCuratorFromTaskButton(taskBundle)\n\n const disableButton = isPending || isLoading || !hasPermission\n let tooltipTitle: string | undefined = undefined\n if (hasPermission === true) {\n tooltipTitle = OPEN_CURATOR_TOOLTIP_TITLE\n } else if (hasPermission === false) {\n tooltipTitle = OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE\n }\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: 1 }}>\n {canEdit && (\n <>\n <CreateOrUpdateCurationTaskDialog\n key={String(isDialogOpen)}\n projectId={taskBundle.task!.projectId!}\n open={isDialogOpen}\n task={taskBundle.task}\n onSuccess={() => {\n displayToast('Curation task updated successfully', 'success')\n setIsDialogOpen(false)\n setIsEditing(false)\n }}\n onCancel={() => {\n setIsDialogOpen(false)\n setIsEditing(false)\n }}\n onDeleteSuccess={() => {\n setIsDialogOpen(false)\n setIsEditing(false)\n }}\n />\n <Button\n variant=\"outlined\"\n onClick={() => {\n setIsDialogOpen(true)\n setIsEditing(true)\n }}\n size={'small'}\n >\n Edit\n </Button>\n </>\n )}\n <Tooltip title={tooltipTitle}>\n <span>\n <Button\n variant=\"contained\"\n size={'small'}\n startIcon={<StickyNote2Outlined />}\n loading={isPending}\n disabled={disableButton}\n onClick={onClick}\n >\n Open Curator\n </Button>\n </span>\n </Tooltip>\n </Box>\n )\n}\n"],"mappings":";;;;;;;;;;;AAaA,IAAa,IAAwC;AAOrD,SAAwB,EAA4B,GAGjD;CACD,IAAM,EAAE,YAAS,kBAAe,GAE1B,CAAC,GAAc,KAAmB,EAAS,EAAK,GAChD,EAAE,oBAAiB,EAA0B,GAE7C,EAAE,kBAAe,cAAW,cAAW,eAC3C,EAA6B,CAAU,GAEnC,IAAgB,KAAa,KAAa,CAAC,GAC7C;CAOJ,OANI,MAAkB,KACpB,IAAe,IACN,MAAkB,OAC3B,IAAe,IAIf,kBAAC,GAAD;EAAK,IAAI;GAAE,SAAS;GAAQ,eAAe;GAAO,KAAK;EAAE;YAAzD,CACG,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAEE,WAAW,EAAW,KAAM;GAC5B,MAAM;GACN,MAAM,EAAW;GACjB,iBAAiB;IAGf,AAFA,EAAa,sCAAsC,SAAS,GAC5D,EAAgB,EAAK,GACrB,EAAa,EAAK;GACpB;GACA,gBAAgB;IAEd,AADA,EAAgB,EAAK,GACrB,EAAa,EAAK;GACpB;GACA,uBAAuB;IAErB,AADA,EAAgB,EAAK,GACrB,EAAa,EAAK;GACpB;EACD,GAjBM,OAAO,CAAY,CAiBzB,GACD,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe;IAEb,AADA,EAAgB,EAAI,GACpB,EAAa,EAAI;GACnB;GACA,MAAM;aACP;EAEO,CAAA,CACR,EAAA,CAAA,GAEJ,kBAAC,GAAD;GAAS,OAAO;aACd,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IACE,SAAQ;IACR,MAAM;IACN,WAAW,kBAAC,GAAD,CAAsB,CAAA;IACjC,SAAS;IACT,UAAU;IACD;cACV;GAEO,CAAA,EACJ,CAAA;EACC,CAAA,CACN;;AAET"}
1
+ {"version":3,"file":"MetadataTaskTableActionCell.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTaskTableActionCell.tsx"],"sourcesContent":["import { StickyNote2Outlined } from '@mui/icons-material'\nimport { Box, Button, Tooltip } from '@mui/material'\nimport { TaskBundle } from '@sage-bionetworks/synapse-client'\nimport { useNavigate } from 'react-router'\nimport useOpenCuratorFromTaskButton from '../hooks/useOpenCuratorButton'\nimport {\n OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE,\n OPEN_CURATOR_TOOLTIP_TITLE,\n} from '../utils/constants'\n\n/**\n * Handles rendering the 'Actions' cell in the Metadata Task table, which provides buttons for the user\n * to accomplish the actions they can take on a Metadata Task, such as opening a data grid for the entity referenced\n * by the task.\n */\nexport default function MetadataTaskTableActionCell(props: {\n taskBundle: TaskBundle\n canEdit: boolean\n}) {\n const { canEdit, taskBundle } = props\n const navigate = useNavigate()\n\n const { hasPermission, isLoading, isPending, onClick } =\n useOpenCuratorFromTaskButton(taskBundle)\n\n const disableButton = isPending || isLoading || !hasPermission\n let tooltipTitle: string | undefined = undefined\n if (hasPermission === true) {\n tooltipTitle = OPEN_CURATOR_TOOLTIP_TITLE\n } else if (hasPermission === false) {\n tooltipTitle = OPEN_CURATOR_NO_PERMISSION_ON_SOURCE_ERROR_MESSAGE\n }\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'row', gap: 1 }}>\n {canEdit && (\n <Button\n variant=\"outlined\"\n onClick={() => void navigate(`edit/${taskBundle.task!.taskId}`)}\n size={'small'}\n >\n Edit\n </Button>\n )}\n <Tooltip title={tooltipTitle}>\n <span>\n <Button\n variant=\"contained\"\n size={'small'}\n startIcon={<StickyNote2Outlined />}\n loading={isPending}\n disabled={disableButton}\n onClick={onClick}\n >\n Open Curator\n </Button>\n </span>\n </Tooltip>\n </Box>\n )\n}\n"],"mappings":";;;;;;;AAeA,SAAwB,EAA4B,GAGjD;CACD,IAAM,EAAE,YAAS,kBAAe,GAC1B,IAAW,EAAY,GAEvB,EAAE,kBAAe,cAAW,cAAW,eAC3C,EAA6B,CAAU,GAEnC,IAAgB,KAAa,KAAa,CAAC,GAC7C;CAOJ,OANI,MAAkB,KACpB,IAAe,IACN,MAAkB,OAC3B,IAAe,IAIf,kBAAC,GAAD;EAAK,IAAI;GAAE,SAAS;GAAQ,eAAe;GAAO,KAAK;EAAE;YAAzD,CACG,KACC,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe,KAAK,EAAS,QAAQ,EAAW,KAAM,QAAQ;GAC9D,MAAM;aACP;EAEO,CAAA,GAEV,kBAAC,GAAD;GAAS,OAAO;aACd,kBAAC,QAAD,EAAA,UACE,kBAAC,GAAD;IACE,SAAQ;IACR,MAAM;IACN,WAAW,kBAAC,GAAD,CAAsB,CAAA;IACjC,SAAS;IACT,UAAU;IACD;cACV;GAEO,CAAA,EACJ,CAAA;EACC,CAAA,CACN;;AAET"}
@@ -1,10 +1,16 @@
1
+ import { MetadataTasksPageRouterProps } from './MetadataTasksPageRouter';
1
2
  export type MetadataTaskTableProps = {
2
3
  projectId: string;
3
4
  };
4
5
  /**
5
6
  * Displays a list of metadata curation tasks for a particular project, with actions that can be performed on each task.
6
- * @param props
7
- * @constructor
8
7
  */
9
- export default function MetadataTasksPage(props: MetadataTaskTableProps): import("react/jsx-runtime").JSX.Element;
8
+ declare function MetadataTasksPageInternal(props: MetadataTaskTableProps): import("react/jsx-runtime").JSX.Element;
9
+ export type MetadataTasksPageProps = MetadataTaskTableProps & Omit<MetadataTasksPageRouterProps, 'projectId'>;
10
+ /**
11
+ * A page that displays a project's metadata curation tasks, with included routing logic for the
12
+ * create/edit task pages.
13
+ */
14
+ export default function MetadataTasksPage(props: MetadataTasksPageProps): import("react/jsx-runtime").JSX.Element;
15
+ export { MetadataTasksPageInternal };
10
16
  //# sourceMappingURL=MetadataTasksPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataTasksPage.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"names":[],"mappings":"AAcA,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAqFtE"}
1
+ {"version":3,"file":"MetadataTasksPage.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"names":[],"mappings":"AAWA,OAAgC,EAC9B,4BAA4B,EAC7B,MAAM,2BAA2B,CAAA;AAElC,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;GAEG;AACH,iBAAS,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,2CAgE/D;AAED,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GACzD,IAAI,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAEtE;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAA"}
@@ -1,69 +1,60 @@
1
- import { displayToast as e } from "../../../../components/ToastMessage/ToastMessage.js";
2
- import { useGlobalIsEditingContext as t } from "../../../../utils/context/GlobalIsEditingContext.js";
3
- import { useGetEntityPermissions as n } from "../../../../synapse-queries/entity/useEntity.js";
4
- import { useGetFeatureFlag as r } from "../../../../synapse-queries/featureflags/useGetFeatureFlag.js";
1
+ import { useGetEntityPermissions as e } from "../../../../synapse-queries/entity/useEntity.js";
2
+ import { useGetFeatureFlag as t } from "../../../../synapse-queries/featureflags/useGetFeatureFlag.js";
5
3
  import "../../../../synapse-queries/index.js";
6
- import { FeatureFlagEnum as i } from "../../../../utils/featureflag/FeatureFlags.js";
7
- import a from "../../../../components/TanStackTable/StyledTanStackTable.js";
8
- import o from "../../../../components/layout/InfiniteTableLayout.js";
9
- import s from "./CreateOrUpdateCurationTaskDialog.js";
10
- import { useMetadataTaskTable as c } from "../hooks/useMetadataTaskTable.js";
11
- import { useState as l } from "react";
12
- import { Button as u, FormControlLabel as d, Stack as f, Switch as p } from "@mui/material";
13
- import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
14
- import { AddCircleTwoTone as _ } from "@mui/icons-material";
4
+ import { FeatureFlagEnum as n } from "../../../../utils/featureflag/FeatureFlags.js";
5
+ import r from "../../../../components/TanStackTable/StyledTanStackTable.js";
6
+ import i from "../../../../components/layout/InfiniteTableLayout.js";
7
+ import { useMetadataTaskTable as a } from "../hooks/useMetadataTaskTable.js";
8
+ import o from "./MetadataTasksPageRouter.js";
9
+ import { useState as s } from "react";
10
+ import { Button as c, FormControlLabel as l, Stack as u, Switch as d } from "@mui/material";
11
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
12
+ import { AddCircleTwoTone as m } from "@mui/icons-material";
13
+ import { useNavigate as h } from "react-router";
15
14
  //#region src/features/entity/metadata-task/components/MetadataTasksPage.tsx
16
- function v(v) {
17
- let { projectId: y } = v, [b, x] = l({
18
- projectId: y,
15
+ function g(o) {
16
+ let { projectId: g } = o, _ = h(), [v, y] = s({
17
+ projectId: g,
19
18
  assignedToMe: !1
20
- }), [S, C] = l(!1), { setIsEditing: w } = t(), { data: T } = n(y), { table: E, isLoading: D, hasNextPage: O, fetchNextPage: k, isFetchingNextPage: A } = c({ listCurationTaskRequest: b }), j = r(i.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON);
21
- return /* @__PURE__ */ g(f, { children: [/* @__PURE__ */ g(f, {
19
+ }), { data: b } = e(g), { table: x, isLoading: S, hasNextPage: C, fetchNextPage: w, isFetchingNextPage: T } = a({ listCurationTaskRequest: v }), E = t(n.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON);
20
+ return /* @__PURE__ */ p(u, { children: [/* @__PURE__ */ p(u, {
22
21
  direction: "row",
23
22
  justifyContent: "flex-end",
24
- children: [/* @__PURE__ */ h(d, {
25
- control: /* @__PURE__ */ h(p, {
26
- checked: !!b.assignedToMe,
23
+ children: [/* @__PURE__ */ f(l, {
24
+ control: /* @__PURE__ */ f(d, {
25
+ checked: !!v.assignedToMe,
27
26
  onChange: (e, t) => {
28
- x((e) => ({
27
+ y((e) => ({
29
28
  ...e,
30
29
  assignedToMe: t
31
30
  }));
32
31
  }
33
32
  }),
34
33
  label: "View only tasks assigned to me"
35
- }), j && T?.canAddChild && /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(s, {
36
- projectId: y,
37
- open: S,
38
- onSuccess: () => {
39
- e("Curation task created successfully", "success"), C(!1), w(!1);
40
- },
41
- onCancel: () => {
42
- C(!1), w(!1);
43
- }
44
- }, String(S)), /* @__PURE__ */ h(u, {
34
+ }), E && b?.canAddChild && /* @__PURE__ */ f(c, {
45
35
  variant: "outlined",
46
- onClick: () => {
47
- C(!0), w(!0);
48
- },
49
- startIcon: /* @__PURE__ */ h(_, {}),
36
+ onClick: () => void _("create"),
37
+ startIcon: /* @__PURE__ */ f(m, {}),
50
38
  children: "New Task"
51
- })] })]
52
- }), /* @__PURE__ */ h(o, {
53
- table: /* @__PURE__ */ h(a, {
54
- table: E,
39
+ })]
40
+ }), /* @__PURE__ */ f(i, {
41
+ table: /* @__PURE__ */ f(r, {
42
+ table: x,
55
43
  styledTableContainerProps: { sx: { my: 2 } }
56
44
  }),
57
- isLoading: D,
58
- isEmpty: !D && E.getRowModel().rows.length === 0,
59
- hasNextPage: O,
45
+ isLoading: S,
46
+ isEmpty: !S && x.getRowModel().rows.length === 0,
47
+ hasNextPage: C,
60
48
  onFetchNextPageClicked: () => {
61
- k();
49
+ w();
62
50
  },
63
- isFetchingNextPage: A
51
+ isFetchingNextPage: T
64
52
  })] });
65
53
  }
54
+ function _(e) {
55
+ return /* @__PURE__ */ f(o, { ...e });
56
+ }
66
57
  //#endregion
67
- export { v as default };
58
+ export { g as MetadataTasksPageInternal, _ as default };
68
59
 
69
60
  //# sourceMappingURL=MetadataTasksPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataTasksPage.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport StyledTanStackTable from '@/components/TanStackTable/StyledTanStackTable'\nimport { useMetadataTaskTable } from '@/features/entity/metadata-task/hooks/useMetadataTaskTable'\nimport { useGetFeatureFlag } from '@/synapse-queries/index'\nimport { Button, FormControlLabel, Stack, Switch } from '@mui/material'\nimport { useState } from 'react'\nimport { ListCurationTaskRequest } from '@sage-bionetworks/synapse-client'\nimport CreateOrUpdateCurationTaskDialog from './CreateOrUpdateCurationTaskDialog'\nimport { displayToast } from '@/components/ToastMessage/ToastMessage'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { useGlobalIsEditingContext } from '@/utils/context/GlobalIsEditingContext'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\n\nexport type MetadataTaskTableProps = {\n projectId: string\n}\n\n/**\n * Displays a list of metadata curation tasks for a particular project, with actions that can be performed on each task.\n * @param props\n * @constructor\n */\nexport default function MetadataTasksPage(props: MetadataTaskTableProps) {\n const { projectId } = props\n const [listCurationTaskRequest, setListCurationTaskRequest] =\n useState<ListCurationTaskRequest>({\n projectId,\n assignedToMe: false,\n })\n\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n const { setIsEditing } = useGlobalIsEditingContext()\n\n const { data: permissions } = useGetEntityPermissions(projectId)\n\n const { table, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useMetadataTaskTable({\n listCurationTaskRequest,\n })\n\n const showNewTaskButton = useGetFeatureFlag(\n FeatureFlagEnum.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON,\n )\n\n return (\n <Stack>\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n <FormControlLabel\n control={\n <Switch\n checked={!!listCurationTaskRequest.assignedToMe}\n onChange={(_e, checked) => {\n setListCurationTaskRequest(prev => ({\n ...prev,\n assignedToMe: checked,\n }))\n }}\n />\n }\n label=\"View only tasks assigned to me\"\n />\n {showNewTaskButton && permissions?.canAddChild && (\n <>\n <CreateOrUpdateCurationTaskDialog\n key={String(isDialogOpen)}\n projectId={projectId}\n open={isDialogOpen}\n onSuccess={() => {\n displayToast('Curation task created successfully', 'success')\n setIsDialogOpen(false)\n setIsEditing(false)\n }}\n onCancel={() => {\n setIsDialogOpen(false)\n setIsEditing(false)\n }}\n />\n <Button\n variant=\"outlined\"\n onClick={() => {\n setIsDialogOpen(true)\n setIsEditing(true)\n }}\n startIcon={<AddCircleTwoTone />}\n >\n New Task\n </Button>\n </>\n )}\n </Stack>\n <InfiniteTableLayout\n table={\n <StyledTanStackTable\n table={table}\n styledTableContainerProps={{ sx: { my: 2 } }}\n />\n }\n isLoading={isLoading}\n isEmpty={!isLoading && table.getRowModel().rows.length === 0}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n </Stack>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;AAuBA,SAAwB,EAAkB,GAA+B;CACvE,IAAM,EAAE,iBAAc,GAChB,CAAC,GAAyB,KAC9B,EAAkC;EAChC;EACA,cAAc;CAChB,CAAC,GAEG,CAAC,GAAc,KAAmB,EAAS,EAAK,GAChD,EAAE,oBAAiB,EAA0B,GAE7C,EAAE,MAAM,MAAgB,EAAwB,CAAS,GAEzD,EAAE,UAAO,cAAW,gBAAa,kBAAe,0BACpD,EAAqB,EACnB,2BACF,CAAC,GAEG,IAAoB,EACxB,EAAgB,uCAClB;CAEA,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAO,WAAU;EAAM,gBAAe;YAAtC,CACE,kBAAC,GAAD;GACE,SACE,kBAAC,GAAD;IACE,SAAS,CAAC,CAAC,EAAwB;IACnC,WAAW,GAAI,MAAY;KACzB,GAA2B,OAAS;MAClC,GAAG;MACH,cAAc;KAChB,EAAE;IACJ;GACD,CAAA;GAEH,OAAM;EACP,CAAA,GACA,KAAqB,GAAa,eACjC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;GAEa;GACX,MAAM;GACN,iBAAiB;IAGf,AAFA,EAAa,sCAAsC,SAAS,GAC5D,EAAgB,EAAK,GACrB,EAAa,EAAK;GACpB;GACA,gBAAgB;IAEd,AADA,EAAgB,EAAK,GACrB,EAAa,EAAK;GACpB;EACD,GAZM,OAAO,CAAY,CAYzB,GACD,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe;IAEb,AADA,EAAgB,EAAI,GACpB,EAAa,EAAI;GACnB;GACA,WAAW,kBAAC,GAAD,CAAmB,CAAA;aAC/B;EAEO,CAAA,CACR,EAAA,CAAA,CAEC;KACP,kBAAC,GAAD;EACE,OACE,kBAAC,GAAD;GACS;GACP,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;EAC5C,CAAA;EAEQ;EACX,SAAS,CAAC,KAAa,EAAM,YAAY,EAAE,KAAK,WAAW;EAC9C;EACb,8BAA8B;GAC5B,EAAc;EAChB;EACoB;CACrB,CAAA,CACI,EAAA,CAAA;AAEX"}
1
+ {"version":3,"file":"MetadataTasksPage.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPage.tsx"],"sourcesContent":["import InfiniteTableLayout from '@/components/layout/InfiniteTableLayout'\nimport StyledTanStackTable from '@/components/TanStackTable/StyledTanStackTable'\nimport { useMetadataTaskTable } from '@/features/entity/metadata-task/hooks/useMetadataTaskTable'\nimport { useGetFeatureFlag } from '@/synapse-queries/index'\nimport { Button, FormControlLabel, Stack, Switch } from '@mui/material'\nimport { useState } from 'react'\nimport { ListCurationTaskRequest } from '@sage-bionetworks/synapse-client'\nimport { useGetEntityPermissions } from '@/synapse-queries/entity/useEntity'\nimport { AddCircleTwoTone } from '@mui/icons-material'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { useNavigate } from 'react-router'\nimport MetadataTasksPageRouter, {\n MetadataTasksPageRouterProps,\n} from './MetadataTasksPageRouter'\n\nexport type MetadataTaskTableProps = {\n projectId: string\n}\n\n/**\n * Displays a list of metadata curation tasks for a particular project, with actions that can be performed on each task.\n */\nfunction MetadataTasksPageInternal(props: MetadataTaskTableProps) {\n const { projectId } = props\n const navigate = useNavigate()\n const [listCurationTaskRequest, setListCurationTaskRequest] =\n useState<ListCurationTaskRequest>({\n projectId,\n assignedToMe: false,\n })\n\n const { data: permissions } = useGetEntityPermissions(projectId)\n\n const { table, isLoading, hasNextPage, fetchNextPage, isFetchingNextPage } =\n useMetadataTaskTable({\n listCurationTaskRequest,\n })\n\n const showNewTaskButton = useGetFeatureFlag(\n FeatureFlagEnum.CURATION_TASK_PAGE_SHOW_NEW_TASK_BUTTON,\n )\n\n return (\n <Stack>\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n <FormControlLabel\n control={\n <Switch\n checked={!!listCurationTaskRequest.assignedToMe}\n onChange={(_e, checked) => {\n setListCurationTaskRequest(prev => ({\n ...prev,\n assignedToMe: checked,\n }))\n }}\n />\n }\n label=\"View only tasks assigned to me\"\n />\n {showNewTaskButton && permissions?.canAddChild && (\n <Button\n variant=\"outlined\"\n onClick={() => void navigate('create')}\n startIcon={<AddCircleTwoTone />}\n >\n New Task\n </Button>\n )}\n </Stack>\n <InfiniteTableLayout\n table={\n <StyledTanStackTable\n table={table}\n styledTableContainerProps={{ sx: { my: 2 } }}\n />\n }\n isLoading={isLoading}\n isEmpty={!isLoading && table.getRowModel().rows.length === 0}\n hasNextPage={hasNextPage}\n onFetchNextPageClicked={() => {\n fetchNextPage()\n }}\n isFetchingNextPage={isFetchingNextPage}\n />\n </Stack>\n )\n}\n\nexport type MetadataTasksPageProps = MetadataTaskTableProps &\n Omit<MetadataTasksPageRouterProps, 'projectId'>\n\n/**\n * A page that displays a project's metadata curation tasks, with included routing logic for the\n * create/edit task pages.\n */\nexport default function MetadataTasksPage(props: MetadataTasksPageProps) {\n return <MetadataTasksPageRouter {...props} />\n}\n\nexport { MetadataTasksPageInternal }\n"],"mappings":";;;;;;;;;;;;;;AAsBA,SAAS,EAA0B,GAA+B;CAChE,IAAM,EAAE,iBAAc,GAChB,IAAW,EAAY,GACvB,CAAC,GAAyB,KAC9B,EAAkC;EAChC;EACA,cAAc;CAChB,CAAC,GAEG,EAAE,MAAM,MAAgB,EAAwB,CAAS,GAEzD,EAAE,UAAO,cAAW,gBAAa,kBAAe,0BACpD,EAAqB,EACnB,2BACF,CAAC,GAEG,IAAoB,EACxB,EAAgB,uCAClB;CAEA,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EAAO,WAAU;EAAM,gBAAe;YAAtC,CACE,kBAAC,GAAD;GACE,SACE,kBAAC,GAAD;IACE,SAAS,CAAC,CAAC,EAAwB;IACnC,WAAW,GAAI,MAAY;KACzB,GAA2B,OAAS;MAClC,GAAG;MACH,cAAc;KAChB,EAAE;IACJ;GACD,CAAA;GAEH,OAAM;EACP,CAAA,GACA,KAAqB,GAAa,eACjC,kBAAC,GAAD;GACE,SAAQ;GACR,eAAe,KAAK,EAAS,QAAQ;GACrC,WAAW,kBAAC,GAAD,CAAmB,CAAA;aAC/B;EAEO,CAAA,CAEL;KACP,kBAAC,GAAD;EACE,OACE,kBAAC,GAAD;GACS;GACP,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;EAC5C,CAAA;EAEQ;EACX,SAAS,CAAC,KAAa,EAAM,YAAY,EAAE,KAAK,WAAW;EAC9C;EACb,8BAA8B;GAC5B,EAAc;EAChB;EACoB;CACrB,CAAA,CACI,EAAA,CAAA;AAEX;AASA,SAAwB,EAAkB,GAA+B;CACvE,OAAO,kBAAC,GAAD,EAAyB,GAAI,EAAQ,CAAA;AAC9C"}
@@ -0,0 +1,17 @@
1
+ import { PropsWithChildren } from 'react';
2
+ export type MetadataTasksPageRouterProps = PropsWithChildren<{
3
+ projectId: string;
4
+ /**
5
+ * Used to determine the base path for the component. In SWC, this should be /Synapse:syn123/metadata/
6
+ * (replacing syn123 with the project ID).
7
+ */
8
+ routerBaseName: string;
9
+ /** If true use a MemoryRouter, which prevents the browser URL from updating. For testing purposes only. */
10
+ useMemoryRouter?: boolean;
11
+ }>;
12
+ /**
13
+ * A router wrapper for `MetadataTasksPage`, which applies a router around the page content to support
14
+ * page-based create/edit flows for curation tasks, mirroring `GridPageRouter`.
15
+ */
16
+ export default function MetadataTasksPageRouter(props: MetadataTasksPageRouterProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=MetadataTasksPageRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataTasksPageRouter.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPageRouter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAA;AAWlD,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,2GAA2G;IAC3G,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAC,CAAA;AAYF;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,KAAK,EAAE,4BAA4B,2CA4CpC"}
@@ -0,0 +1,43 @@
1
+ import e from "../create-task/CreateCurationTaskFlow.js";
2
+ import t from "../create-task/EditCurationTaskPage.js";
3
+ import { MetadataTasksPageInternal as n } from "./MetadataTasksPage.js";
4
+ import { useMemo as r } from "react";
5
+ import { jsx as i } from "react/jsx-runtime";
6
+ import { RouterProvider as a, createBrowserRouter as o, createMemoryRouter as s, useNavigate as c } from "react-router";
7
+ import { RouterProvider as l } from "react-router/dom";
8
+ //#region src/features/entity/metadata-task/components/MetadataTasksPageRouter.tsx
9
+ function u(t) {
10
+ let n = c();
11
+ return /* @__PURE__ */ i(e, {
12
+ projectId: t.projectId,
13
+ onExit: () => void n("/")
14
+ });
15
+ }
16
+ function d(e) {
17
+ let { projectId: c, routerBaseName: d, useMemoryRouter: f = !1 } = e, p = r(() => [{
18
+ path: "/",
19
+ children: [
20
+ {
21
+ index: !0,
22
+ element: /* @__PURE__ */ i(n, { projectId: c })
23
+ },
24
+ {
25
+ path: "create/*",
26
+ element: /* @__PURE__ */ i(u, { projectId: c })
27
+ },
28
+ {
29
+ path: "edit/:taskId",
30
+ element: /* @__PURE__ */ i(t, {})
31
+ }
32
+ ]
33
+ }], [c]), m = r(() => f ? s(p, { basename: d }) : o(p, { basename: d }), [
34
+ f,
35
+ p,
36
+ d
37
+ ]);
38
+ return i(f ? a : l, { router: m });
39
+ }
40
+ //#endregion
41
+ export { d as default };
42
+
43
+ //# sourceMappingURL=MetadataTasksPageRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataTasksPageRouter.js","names":[],"sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksPageRouter.tsx"],"sourcesContent":["import CreateCurationTaskFlow from '@/features/entity/metadata-task/create-task/CreateCurationTaskFlow'\nimport EditCurationTaskPage from '@/features/entity/metadata-task/create-task/EditCurationTaskPage'\nimport { PropsWithChildren, useMemo } from 'react'\nimport {\n createBrowserRouter,\n createMemoryRouter,\n RouteObject,\n RouterProvider,\n useNavigate,\n} from 'react-router'\nimport { RouterProvider as DOMRouterProvider } from 'react-router/dom'\nimport { MetadataTasksPageInternal } from './MetadataTasksPage'\n\nexport type MetadataTasksPageRouterProps = PropsWithChildren<{\n projectId: string\n /**\n * Used to determine the base path for the component. In SWC, this should be /Synapse:syn123/metadata/\n * (replacing syn123 with the project ID).\n */\n routerBaseName: string\n /** If true use a MemoryRouter, which prevents the browser URL from updating. For testing purposes only. */\n useMemoryRouter?: boolean\n}>\n\nfunction CreateRouteRenderer(props: { projectId: string }) {\n const navigate = useNavigate()\n return (\n <CreateCurationTaskFlow\n projectId={props.projectId}\n onExit={() => void navigate('/')}\n />\n )\n}\n\n/**\n * A router wrapper for `MetadataTasksPage`, which applies a router around the page content to support\n * page-based create/edit flows for curation tasks, mirroring `GridPageRouter`.\n */\nexport default function MetadataTasksPageRouter(\n props: MetadataTasksPageRouterProps,\n) {\n const { projectId, routerBaseName, useMemoryRouter = false } = props\n\n const routes: RouteObject[] = useMemo(\n () => [\n {\n path: '/',\n children: [\n {\n index: true,\n element: <MetadataTasksPageInternal projectId={projectId} />,\n },\n {\n path: 'create/*',\n element: <CreateRouteRenderer projectId={projectId} />,\n },\n {\n path: 'edit/:taskId',\n element: <EditCurationTaskPage />,\n },\n ],\n },\n ],\n [projectId],\n )\n\n const router = useMemo(() => {\n if (useMemoryRouter) {\n return createMemoryRouter(routes, {\n basename: routerBaseName,\n })\n } else {\n return createBrowserRouter(routes, {\n basename: routerBaseName,\n })\n }\n }, [useMemoryRouter, routes, routerBaseName])\n\n if (useMemoryRouter) {\n return <RouterProvider router={router} />\n }\n\n return <DOMRouterProvider router={router} />\n}\n"],"mappings":";;;;;;;;AAwBA,SAAS,EAAoB,GAA8B;CACzD,IAAM,IAAW,EAAY;CAC7B,OACE,kBAAC,GAAD;EACE,WAAW,EAAM;EACjB,cAAc,KAAK,EAAS,GAAG;CAChC,CAAA;AAEL;AAMA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,cAAW,mBAAgB,qBAAkB,OAAU,GAEzD,IAAwB,QACtB,CACJ;EACE,MAAM;EACN,UAAU;GACR;IACE,OAAO;IACP,SAAS,kBAAC,GAAD,EAAsC,aAAY,CAAA;GAC7D;GACA;IACE,MAAM;IACN,SAAS,kBAAC,GAAD,EAAgC,aAAY,CAAA;GACvD;GACA;IACE,MAAM;IACN,SAAS,kBAAC,GAAD,CAAuB,CAAA;GAClC;EACF;CACF,CACF,GACA,CAAC,CAAS,CACZ,GAEM,IAAS,QACT,IACK,EAAmB,GAAQ,EAChC,UAAU,EACZ,CAAC,IAEM,EAAoB,GAAQ,EACjC,UAAU,EACZ,CAAC,GAEF;EAAC;EAAiB;EAAQ;CAAc,CAAC;CAM5C,OAHS,EADL,IACM,IAGF,GAHC,EAAwB,UAAS,CAAA;AAI5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataTasksTableAssigneeCell.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAK7D,MAAM,MAAM,mCAAmC,GAAG;IAChD,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,KAAK,EAAE,mCAAmC,2CA0H3C"}
1
+ {"version":3,"file":"MetadataTasksTableAssigneeCell.d.ts","sourceRoot":"","sources":["../../../../../src/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.tsx"],"names":[],"mappings":"AAOA,OAAO,EAEL,UAAU,EACX,MAAM,kCAAkC,CAAA;AAKzC,MAAM,MAAM,mCAAmC,GAAG;IAChD,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,KAAK,EAAE,mCAAmC,2CA8H3C"}