@gen-epix/ui-client-casedb 4.0.0 → 4.0.1

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 (393) hide show
  1. package/dist/@types/mui.d.ts +1 -1
  2. package/dist/@types/{ui-casedb.d.ts → ui-client-casedb.d.ts} +1 -1
  3. package/dist/_chunks/AddCasesToEventDialog.js +74 -74
  4. package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
  5. package/dist/_chunks/CaseContentForm.js +2 -2
  6. package/dist/_chunks/CaseContentForm.js.map +1 -1
  7. package/dist/_chunks/CaseDbDownloadUtil.js +40 -35
  8. package/dist/_chunks/CaseDbDownloadUtil.js.map +1 -1
  9. package/dist/_chunks/CaseInfoDialog.js +195 -195
  10. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  11. package/dist/_chunks/CaseSetInfoDialog.js +131 -131
  12. package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
  13. package/dist/_chunks/CaseTypeInfoDialog.js +63 -61
  14. package/dist/_chunks/CaseTypeInfoDialog.js.map +1 -1
  15. package/dist/_chunks/CasesAlreadyInCaseSetWarning.js +6 -6
  16. package/dist/_chunks/CasesAlreadyInCaseSetWarning.js.map +1 -1
  17. package/dist/_chunks/CompletCaseTypeLoader.js +3 -3
  18. package/dist/_chunks/CompletCaseTypeLoader.js.map +1 -1
  19. package/dist/_chunks/CreateEventDialogSuccessNotificationMessage.js +1 -1
  20. package/dist/_chunks/CreateEventDialogSuccessNotificationMessage.js.map +1 -1
  21. package/dist/_chunks/CustomTabPanel.js.map +1 -1
  22. package/dist/_chunks/Dashboard.js +399 -386
  23. package/dist/_chunks/Dashboard.js.map +1 -1
  24. package/dist/_chunks/DashboardStoreLoader.js +5 -5
  25. package/dist/_chunks/DashboardStoreLoader.js.map +1 -1
  26. package/dist/_chunks/DataCollectionAccessInfo.js +21 -21
  27. package/dist/_chunks/DataCollectionAccessInfo.js.map +1 -1
  28. package/dist/_chunks/EpiCurveUtil.js +4 -4
  29. package/dist/_chunks/EpiCurveUtil.js.map +1 -1
  30. package/dist/_chunks/EpiCurveWidget.js +189 -183
  31. package/dist/_chunks/EpiCurveWidget.js.map +1 -1
  32. package/dist/_chunks/FilterUtil.js +103 -101
  33. package/dist/_chunks/FilterUtil.js.map +1 -1
  34. package/dist/_chunks/FindSimilarCasesDialog.js +16 -16
  35. package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
  36. package/dist/_chunks/FindSimilarCasesUtil.js +9 -9
  37. package/dist/_chunks/FindSimilarCasesUtil.js.map +1 -1
  38. package/dist/_chunks/HomePageTrends.js +8 -8
  39. package/dist/_chunks/HomePageTrends.js.map +1 -1
  40. package/dist/_chunks/LegendaItem.js +3 -3
  41. package/dist/_chunks/LegendaItem.js.map +1 -1
  42. package/dist/_chunks/LineListWidget.js +23 -21
  43. package/dist/_chunks/LineListWidget.js.map +1 -1
  44. package/dist/_chunks/PanelSeparator.js +374 -384
  45. package/dist/_chunks/PanelSeparator.js.map +1 -1
  46. package/dist/_chunks/Upload.js +222 -207
  47. package/dist/_chunks/Upload.js.map +1 -1
  48. package/dist/_chunks/UploadUtil.js +1970 -841
  49. package/dist/_chunks/UploadUtil.js.map +1 -1
  50. package/dist/_chunks/UserRightsDialog.js +12 -12
  51. package/dist/_chunks/UserRightsDialog.js.map +1 -1
  52. package/dist/_chunks/_MapCache.js +2 -2
  53. package/dist/_chunks/_baseGet.js +1 -1
  54. package/dist/_chunks/_baseGet.js.map +1 -1
  55. package/dist/_chunks/_baseIteratee.js +1 -1
  56. package/dist/_chunks/_baseIteratee.js.map +1 -1
  57. package/dist/_chunks/_setToString.js.map +1 -1
  58. package/dist/_chunks/{chunk-KS7C4IRE.js → chunk-BV7QT456.js} +330 -495
  59. package/dist/_chunks/chunk-BV7QT456.js.map +1 -0
  60. package/dist/_chunks/cloneDeep.js +11 -9
  61. package/dist/_chunks/cloneDeep.js.map +1 -1
  62. package/dist/_chunks/dashboardStore.js +259 -261
  63. package/dist/_chunks/dashboardStore.js.map +1 -1
  64. package/dist/_chunks/esm.js +2900 -2868
  65. package/dist/_chunks/esm.js.map +1 -1
  66. package/dist/_chunks/format.js +8 -8
  67. package/dist/_chunks/format.js.map +1 -1
  68. package/dist/_chunks/index.esm.js +919 -796
  69. package/dist/_chunks/index.esm.js.map +1 -1
  70. package/dist/_chunks/index.module.js +1 -1
  71. package/dist/_chunks/index.module.js.map +1 -1
  72. package/dist/_chunks/protectedTokens.js +79 -81
  73. package/dist/_chunks/protectedTokens.js.map +1 -1
  74. package/dist/_chunks/react.js +1 -1
  75. package/dist/_chunks/react.js.map +1 -1
  76. package/dist/_chunks/round.js +1 -1
  77. package/dist/_chunks/round.js.map +1 -1
  78. package/dist/_chunks/shallow.js +2 -2
  79. package/dist/_chunks/shallow.js.map +1 -1
  80. package/dist/_chunks/sync.js +198 -161
  81. package/dist/_chunks/sync.js.map +1 -1
  82. package/dist/_chunks/toDate.js +1 -1
  83. package/dist/_chunks/toDate.js.map +1 -1
  84. package/dist/_chunks/toString.js +1 -1
  85. package/dist/_chunks/toString.js.map +1 -1
  86. package/dist/_chunks/useUnit.js.map +1 -1
  87. package/dist/_chunks/vanilla.js +1 -1
  88. package/dist/_chunks/vanilla.js.map +1 -1
  89. package/dist/_chunks/yup.js +5 -5
  90. package/dist/_chunks/yup.js.map +1 -1
  91. package/dist/classes/filters/SelectionFilter.d.ts +2 -2
  92. package/dist/classes/filters/TreeFilter.d.ts +2 -2
  93. package/dist/classes/services/DataService/index.js +3 -3
  94. package/dist/classes/services/DataService/index.js.map +1 -1
  95. package/dist/classes/services/EventBusService/EventBusService.d.ts +1 -1
  96. package/dist/classes/services/EventBusService/index.js.map +1 -1
  97. package/dist/classes/services/LineListService/LineListServiceAbstract/index.js +1 -1
  98. package/dist/classes/services/LineListService/LineListServiceAbstract/index.js.map +1 -1
  99. package/dist/components/app/CaseDbApp/index.js +8 -5
  100. package/dist/components/app/CaseDbApp/index.js.map +1 -1
  101. package/dist/components/form/fields/ArrangementEditor/index.js +83 -83
  102. package/dist/components/form/fields/ArrangementEditor/index.js.map +1 -1
  103. package/dist/components/ui/AddCasesToEventDialog/AddCasesToEventDialog.d.ts +2 -2
  104. package/dist/components/ui/CaseContentFormDialog/CaseContentFormDialog.d.ts +2 -2
  105. package/dist/components/ui/CaseContentFormDialog/index.js +1 -1
  106. package/dist/components/ui/CaseContentFormDialog/index.js.map +1 -1
  107. package/dist/components/ui/CaseInfoDialog/CaseInfoDialog.d.ts +2 -2
  108. package/dist/components/ui/CaseSetInfoDialog/CaseSetInfoDialog.d.ts +2 -2
  109. package/dist/components/ui/CaseSummary/index.js +1 -1
  110. package/dist/components/ui/CaseSummary/index.js.map +1 -1
  111. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialog.d.ts +2 -2
  112. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogContent.d.ts +1 -1
  113. package/dist/components/ui/CaseTypeInfoDialog/CaseTypeInfoDialogWithLoader.d.ts +2 -2
  114. package/dist/components/ui/ContextMenu/index.js.map +1 -1
  115. package/dist/components/ui/CreateEventDialog/CreateEventDialog.d.ts +2 -2
  116. package/dist/components/ui/CreateEventDialog/index.js +9 -9
  117. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  118. package/dist/components/ui/Dashboard/DashboardDownloadSidebarItem.d.ts +1 -1
  119. package/dist/components/ui/Dashboard/DashboardSettingsSidebarItem.d.ts +1 -1
  120. package/dist/components/ui/Dashboard/DashboardWidget.d.ts +1 -1
  121. package/dist/components/ui/DashboardEditCases/index.js +1 -1
  122. package/dist/components/ui/DashboardEditCases/index.js.map +1 -1
  123. package/dist/components/ui/FileSelector/index.js +46 -46
  124. package/dist/components/ui/FileSelector/index.js.map +1 -1
  125. package/dist/components/ui/FindSimilarCasesDialog/FindSimilarCasesDialog.d.ts +2 -2
  126. package/dist/components/ui/Grouping/index.js +50 -50
  127. package/dist/components/ui/Grouping/index.js.map +1 -1
  128. package/dist/components/ui/HistogramWidget/index.js +1 -1
  129. package/dist/components/ui/HistogramWidget/index.js.map +1 -1
  130. package/dist/components/ui/MapWidget/index.js +7 -3
  131. package/dist/components/ui/MapWidget/index.js.map +1 -1
  132. package/dist/components/ui/RemoveCasesFromEventDialog/RemoveCasesFromEventDialog.d.ts +2 -2
  133. package/dist/components/ui/RemoveCasesFromEventDialog/index.js +6 -6
  134. package/dist/components/ui/RemoveCasesFromEventDialog/index.js.map +1 -1
  135. package/dist/components/ui/RemoveFindSimilarCasesResultDialog/RemoveFindSimilarCasesResultDialog.d.ts +2 -2
  136. package/dist/components/ui/SequenceDownloadDialog/SequenceDownloadDialog.d.ts +2 -2
  137. package/dist/components/ui/SequenceDownloadDialog/index.js +22 -22
  138. package/dist/components/ui/SequenceDownloadDialog/index.js.map +1 -1
  139. package/dist/components/ui/TreeDescription/index.js.map +1 -1
  140. package/dist/components/ui/TreeWidget/index.js +11 -11
  141. package/dist/components/ui/TreeWidget/index.js.map +1 -1
  142. package/dist/components/ui/Upload/UploadCaseResultTable.d.ts +2 -2
  143. package/dist/components/ui/Upload/UploadEditColumnValuesDialog.d.ts +2 -2
  144. package/dist/components/ui/UserRightsDialog/UserRightsDialog.d.ts +2 -2
  145. package/dist/components/ui/UsersEffectiveRightsDetailsDialog/UsersEffectiveRightsDetailsDialog.d.ts +2 -2
  146. package/dist/components/ui/UsersEffectiveRightsDetailsDialog/index.js +25 -11
  147. package/dist/components/ui/UsersEffectiveRightsDetailsDialog/index.js.map +1 -1
  148. package/dist/components/ui/Warning/index.js.map +1 -1
  149. package/dist/components/ui/WidgetHeaderIconButton/index.js.map +1 -1
  150. package/dist/components/ui/WidgetMenu/WidgetMenu.d.ts +1 -1
  151. package/dist/components/ui/WidgetMenu/index.js +2 -2
  152. package/dist/components/ui/WidgetMenu/index.js.map +1 -1
  153. package/dist/components/ui/WidgetUnavailable/index.js.map +1 -1
  154. package/dist/constants/query.d.ts +1 -1
  155. package/dist/constants/query.js +1 -1
  156. package/dist/constants/query.js.map +1 -1
  157. package/dist/context/caseAbac/CaseAbacContext.d.ts +1 -1
  158. package/dist/dataHooks/useAssemblyProtocolsQuery/index.js +3 -3
  159. package/dist/dataHooks/useAssemblyProtocolsQuery/index.js.map +1 -1
  160. package/dist/dataHooks/useAssemblyProtocolsQuery/useAssemblyProtocolsQuery.d.ts +1 -1
  161. package/dist/dataHooks/useCaseRightsQuery/index.js +2 -2
  162. package/dist/dataHooks/useCaseRightsQuery/index.js.map +1 -1
  163. package/dist/dataHooks/useCaseSetCategoriesQuery/index.js +3 -3
  164. package/dist/dataHooks/useCaseSetCategoriesQuery/index.js.map +1 -1
  165. package/dist/dataHooks/useCaseSetCategoriesQuery/useCaseSetCategoriesQuery.d.ts +1 -1
  166. package/dist/dataHooks/useCaseSetRightsQuery/index.js +2 -2
  167. package/dist/dataHooks/useCaseSetRightsQuery/index.js.map +1 -1
  168. package/dist/dataHooks/useCaseSetStatsQuery/index.js +3 -3
  169. package/dist/dataHooks/useCaseSetStatsQuery/index.js.map +1 -1
  170. package/dist/dataHooks/useCaseSetStatsQuery/useCaseSetStatsQuery.d.ts +1 -1
  171. package/dist/dataHooks/useCaseSetStatusesQuery/index.js +3 -3
  172. package/dist/dataHooks/useCaseSetStatusesQuery/index.js.map +1 -1
  173. package/dist/dataHooks/useCaseSetStatusesQuery/useCaseSetStatusesQuery.d.ts +1 -1
  174. package/dist/dataHooks/useCaseSetsQuery/index.js +3 -3
  175. package/dist/dataHooks/useCaseSetsQuery/index.js.map +1 -1
  176. package/dist/dataHooks/useCaseSetsQuery/useCaseSetsQuery.d.ts +1 -1
  177. package/dist/dataHooks/useCaseTypeSetCategoriesQuery/index.js +3 -3
  178. package/dist/dataHooks/useCaseTypeSetCategoriesQuery/index.js.map +1 -1
  179. package/dist/dataHooks/useCaseTypeSetCategoriesQuery/useCaseTypeSetCategoriesQuery.d.ts +1 -1
  180. package/dist/dataHooks/useCaseTypeSetCategoryPurposeQuery/index.js.map +1 -1
  181. package/dist/dataHooks/useCaseTypeSetCategoryPurposeQuery/useCaseTypeSetCategoryPurposeQuery.d.ts +1 -1
  182. package/dist/dataHooks/useCaseTypeSetMembersQuery/index.js +2 -2
  183. package/dist/dataHooks/useCaseTypeSetMembersQuery/index.js.map +1 -1
  184. package/dist/dataHooks/useCaseTypeSetsQuery/index.js +3 -3
  185. package/dist/dataHooks/useCaseTypeSetsQuery/index.js.map +1 -1
  186. package/dist/dataHooks/useCaseTypeSetsQuery/useCaseTypeSetsQuery.d.ts +1 -1
  187. package/dist/dataHooks/useCaseTypeStatsQuery/index.js +2 -2
  188. package/dist/dataHooks/useCaseTypeStatsQuery/index.js.map +1 -1
  189. package/dist/dataHooks/useCaseTypesQuery/index.js +3 -3
  190. package/dist/dataHooks/useCaseTypesQuery/index.js.map +1 -1
  191. package/dist/dataHooks/useCaseTypesQuery/useCaseTypesQuery.d.ts +1 -1
  192. package/dist/dataHooks/useColSetMembersQuery/index.js +2 -2
  193. package/dist/dataHooks/useColSetMembersQuery/index.js.map +1 -1
  194. package/dist/dataHooks/useColSetsQuery/index.js +3 -3
  195. package/dist/dataHooks/useColSetsQuery/index.js.map +1 -1
  196. package/dist/dataHooks/useColSetsQuery/useColSetsQuery.d.ts +1 -1
  197. package/dist/dataHooks/useColTypesQuery/index.js.map +1 -1
  198. package/dist/dataHooks/useColTypesQuery/useColTypesQuery.d.ts +1 -1
  199. package/dist/dataHooks/useColsQuery/index.js +3 -3
  200. package/dist/dataHooks/useColsQuery/index.js.map +1 -1
  201. package/dist/dataHooks/useColsQuery/useColsQuery.d.ts +1 -1
  202. package/dist/dataHooks/useConceptQuery/index.js +3 -3
  203. package/dist/dataHooks/useConceptQuery/index.js.map +1 -1
  204. package/dist/dataHooks/useConceptQuery/useConceptQuery.d.ts +1 -1
  205. package/dist/dataHooks/useConceptRelationTypeQuery/index.js.map +1 -1
  206. package/dist/dataHooks/useConceptRelationTypeQuery/useConceptRelationTypeQuery.d.ts +1 -1
  207. package/dist/dataHooks/useConceptSetTypeQuery/index.js.map +1 -1
  208. package/dist/dataHooks/useConceptSetTypeQuery/useConceptSetTypeQuery.d.ts +1 -1
  209. package/dist/dataHooks/useConceptSetsQuery/index.js +3 -3
  210. package/dist/dataHooks/useConceptSetsQuery/index.js.map +1 -1
  211. package/dist/dataHooks/useConceptSetsQuery/useConceptSetsQuery.d.ts +1 -1
  212. package/dist/dataHooks/useDataCollectionSetMembersQuery/index.js +2 -2
  213. package/dist/dataHooks/useDataCollectionSetMembersQuery/index.js.map +1 -1
  214. package/dist/dataHooks/useDataCollectionsQuery/index.js +3 -3
  215. package/dist/dataHooks/useDataCollectionsQuery/index.js.map +1 -1
  216. package/dist/dataHooks/useDataCollectionsQuery/useDataCollectionsQuery.d.ts +1 -1
  217. package/dist/dataHooks/useDimTypesQuery/index.js.map +1 -1
  218. package/dist/dataHooks/useDimTypesQuery/useDimTypesQuery.d.ts +1 -1
  219. package/dist/dataHooks/useDimsQuery/index.js +3 -3
  220. package/dist/dataHooks/useDimsQuery/index.js.map +1 -1
  221. package/dist/dataHooks/useDimsQuery/useDimsQuery.d.ts +1 -1
  222. package/dist/dataHooks/useDiseasesQuery/index.js +3 -3
  223. package/dist/dataHooks/useDiseasesQuery/index.js.map +1 -1
  224. package/dist/dataHooks/useDiseasesQuery/useDiseasesQuery.d.ts +1 -1
  225. package/dist/dataHooks/useEtiologicalAgentsQuery/index.js +3 -3
  226. package/dist/dataHooks/useEtiologicalAgentsQuery/index.js.map +1 -1
  227. package/dist/dataHooks/useEtiologicalAgentsQuery/useEtiologicalAgentsQuery.d.ts +1 -1
  228. package/dist/dataHooks/useGeneticDistanceProtocolsQuery/index.js +3 -3
  229. package/dist/dataHooks/useGeneticDistanceProtocolsQuery/index.js.map +1 -1
  230. package/dist/dataHooks/useGeneticDistanceProtocolsQuery/useGeneticDistanceProtocolsQuery.d.ts +1 -1
  231. package/dist/dataHooks/useOrganizationAccessCasePoliciesQuery/index.js +2 -2
  232. package/dist/dataHooks/useOrganizationAccessCasePoliciesQuery/index.js.map +1 -1
  233. package/dist/dataHooks/useOrganizationShareCasePoliciesQuery/index.js +2 -2
  234. package/dist/dataHooks/useOrganizationShareCasePoliciesQuery/index.js.map +1 -1
  235. package/dist/dataHooks/useRefColsQuery/index.js +3 -3
  236. package/dist/dataHooks/useRefColsQuery/index.js.map +1 -1
  237. package/dist/dataHooks/useRefColsQuery/useRefColsQuery.d.ts +1 -1
  238. package/dist/dataHooks/useRefColsValidationRulesQuery/index.js +2 -2
  239. package/dist/dataHooks/useRefColsValidationRulesQuery/index.js.map +1 -1
  240. package/dist/dataHooks/useRefDimsQuery/index.js +3 -3
  241. package/dist/dataHooks/useRefDimsQuery/index.js.map +1 -1
  242. package/dist/dataHooks/useRefDimsQuery/useRefDimsQuery.d.ts +1 -1
  243. package/dist/dataHooks/useRegionQuery/index.js +3 -3
  244. package/dist/dataHooks/useRegionQuery/index.js.map +1 -1
  245. package/dist/dataHooks/useRegionQuery/useRegionQuery.d.ts +1 -1
  246. package/dist/dataHooks/useRegionRelationTypeQuery/index.js.map +1 -1
  247. package/dist/dataHooks/useRegionRelationTypeQuery/useRegionRelationTypeQuery.d.ts +1 -1
  248. package/dist/dataHooks/useRegionSetsQuery/index.js +3 -3
  249. package/dist/dataHooks/useRegionSetsQuery/index.js.map +1 -1
  250. package/dist/dataHooks/useRegionSetsQuery/useRegionSetsQuery.d.ts +1 -1
  251. package/dist/dataHooks/useSequencingProtocolsQuery/index.js +3 -3
  252. package/dist/dataHooks/useSequencingProtocolsQuery/index.js.map +1 -1
  253. package/dist/dataHooks/useSequencingProtocolsQuery/useSequencingProtocolsQuery.d.ts +1 -1
  254. package/dist/dataHooks/useTreeAlgorithmCodesQuery/index.js.map +1 -1
  255. package/dist/dataHooks/useTreeAlgorithmCodesQuery/useTreeAlgorithmCodesQuery.d.ts +1 -1
  256. package/dist/dataHooks/useUnitQuery/useUnit.d.ts +1 -1
  257. package/dist/dataHooks/useUserAccessCasePoliciesQuery/index.js +2 -2
  258. package/dist/dataHooks/useUserAccessCasePoliciesQuery/index.js.map +1 -1
  259. package/dist/dataHooks/useUserEffectiveRightsQuery/index.js +3 -3
  260. package/dist/dataHooks/useUserEffectiveRightsQuery/index.js.map +1 -1
  261. package/dist/dataHooks/useUserEffectiveRightsQuery/useUserEffectiveRightsQuery.d.ts +1 -1
  262. package/dist/dataHooks/useUserShareCasePoliciesQuery/index.js +2 -2
  263. package/dist/dataHooks/useUserShareCasePoliciesQuery/index.js.map +1 -1
  264. package/dist/hooks/useOrganizationCasePolicyNameFactory/index.js +2 -2
  265. package/dist/hooks/useOrganizationCasePolicyNameFactory/index.js.map +1 -1
  266. package/dist/hooks/useOrganizationCasePolicyNameFactory/useOrganizationCasePolicyNameFactory.d.ts +1 -1
  267. package/dist/hooks/useUserCasePolicyNameFactory/index.js +3 -3
  268. package/dist/hooks/useUserCasePolicyNameFactory/index.js.map +1 -1
  269. package/dist/hooks/useUserCasePolicyNameFactory/useUserCasePolicyNameFactory.d.ts +1 -1
  270. package/dist/locale/nl.json +1 -1
  271. package/dist/models/config.d.ts +1 -1
  272. package/dist/models/dashboard.d.ts +1 -1
  273. package/dist/models/dashboard.js.map +1 -1
  274. package/dist/models/theme.d.ts +2 -2
  275. package/dist/pages/CaseDbUsersAdminPage/index.js +5 -5
  276. package/dist/pages/CaseDbUsersAdminPage/index.js.map +1 -1
  277. package/dist/pages/CaseSetCategoryAdminPage/index.js +4 -4
  278. package/dist/pages/CaseSetCategoryAdminPage/index.js.map +1 -1
  279. package/dist/pages/CaseSetStatusAdminPage/index.js +4 -4
  280. package/dist/pages/CaseSetStatusAdminPage/index.js.map +1 -1
  281. package/dist/pages/CaseTypeSetCategoriesAdminPage/index.js +4 -4
  282. package/dist/pages/CaseTypeSetCategoriesAdminPage/index.js.map +1 -1
  283. package/dist/pages/CaseTypeSetsAdminPage/index.js +6 -6
  284. package/dist/pages/CaseTypeSetsAdminPage/index.js.map +1 -1
  285. package/dist/pages/CaseTypesAdminPage/index.js +5 -5
  286. package/dist/pages/CaseTypesAdminPage/index.js.map +1 -1
  287. package/dist/pages/CasesDetailPage/index.js +5 -5
  288. package/dist/pages/CasesDetailPage/index.js.map +1 -1
  289. package/dist/pages/CasesPage/index.js +10 -10
  290. package/dist/pages/CasesPage/index.js.map +1 -1
  291. package/dist/pages/ColSetsAdminPage/index.js +6 -6
  292. package/dist/pages/ColSetsAdminPage/index.js.map +1 -1
  293. package/dist/pages/ColsAdminPage/index.js +5 -5
  294. package/dist/pages/ColsAdminPage/index.js.map +1 -1
  295. package/dist/pages/ConceptRelationsAdminPage/index.js +19 -19
  296. package/dist/pages/ConceptRelationsAdminPage/index.js.map +1 -1
  297. package/dist/pages/ConceptSetsAdminPage/index.js +5 -5
  298. package/dist/pages/ConceptSetsAdminPage/index.js.map +1 -1
  299. package/dist/pages/ConceptsAdminPage/index.js +5 -5
  300. package/dist/pages/ConceptsAdminPage/index.js.map +1 -1
  301. package/dist/pages/DataCollectionSetsAdminPage/index.js +12 -12
  302. package/dist/pages/DataCollectionSetsAdminPage/index.js.map +1 -1
  303. package/dist/pages/DataCollectionVisualizationPage/index.js +4 -4
  304. package/dist/pages/DataCollectionVisualizationPage/index.js.map +1 -1
  305. package/dist/pages/DataCollectionsAdminPage/index.js +4 -4
  306. package/dist/pages/DataCollectionsAdminPage/index.js.map +1 -1
  307. package/dist/pages/DimsAdminPage/index.js +6 -6
  308. package/dist/pages/DimsAdminPage/index.js.map +1 -1
  309. package/dist/pages/DiseasesAdminPage/index.js +4 -4
  310. package/dist/pages/DiseasesAdminPage/index.js.map +1 -1
  311. package/dist/pages/EtiologicalAgentsAdminPage/index.js +4 -4
  312. package/dist/pages/EtiologicalAgentsAdminPage/index.js.map +1 -1
  313. package/dist/pages/EtiologiesAdminPage/index.js +3 -3
  314. package/dist/pages/EtiologiesAdminPage/index.js.map +1 -1
  315. package/dist/pages/EventsDetailPage/index.js +5 -5
  316. package/dist/pages/EventsDetailPage/index.js.map +1 -1
  317. package/dist/pages/EventsPage/index.js +11 -11
  318. package/dist/pages/EventsPage/index.js.map +1 -1
  319. package/dist/pages/HomePage/index.js +2 -2
  320. package/dist/pages/HomePage/index.js.map +1 -1
  321. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js +4 -4
  322. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js.map +1 -1
  323. package/dist/pages/OrganizationShareCasePoliciesAdminPage/index.js +4 -4
  324. package/dist/pages/OrganizationShareCasePoliciesAdminPage/index.js.map +1 -1
  325. package/dist/pages/RefColsAdminPage/index.js +7 -7
  326. package/dist/pages/RefColsAdminPage/index.js.map +1 -1
  327. package/dist/pages/RefDimsAdminPage/index.js +5 -5
  328. package/dist/pages/RefDimsAdminPage/index.js.map +1 -1
  329. package/dist/pages/RegionRelationsAdminPage/index.js +3 -3
  330. package/dist/pages/RegionRelationsAdminPage/index.js.map +1 -1
  331. package/dist/pages/RegionSetShapesAdminPage/index.js +4 -4
  332. package/dist/pages/RegionSetShapesAdminPage/index.js.map +1 -1
  333. package/dist/pages/RegionSetsAdminPage/index.js +5 -5
  334. package/dist/pages/RegionSetsAdminPage/index.js.map +1 -1
  335. package/dist/pages/RegionsAdminPage/index.js +5 -5
  336. package/dist/pages/RegionsAdminPage/index.js.map +1 -1
  337. package/dist/pages/TrendsPage/index.js +1 -1
  338. package/dist/pages/TrendsPage/index.js.map +1 -1
  339. package/dist/pages/UploadPage/index.js +1 -1
  340. package/dist/pages/UploadPage/index.js.map +1 -1
  341. package/dist/pages/UserAccessCasePoliciesAdminPage/index.js +4 -4
  342. package/dist/pages/UserAccessCasePoliciesAdminPage/index.js.map +1 -1
  343. package/dist/pages/UserEffectiveRightsAdminPage/index.js +12 -12
  344. package/dist/pages/UserEffectiveRightsAdminPage/index.js.map +1 -1
  345. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +8 -8
  346. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  347. package/dist/pages/UserShareCasePoliciesAdminPage/index.js +4 -4
  348. package/dist/pages/UserShareCasePoliciesAdminPage/index.js.map +1 -1
  349. package/dist/routes/adminRoutes.d.ts +1 -1
  350. package/dist/routes/index.js +11 -8
  351. package/dist/routes/index.js.map +1 -1
  352. package/dist/routes/routes.d.ts +1 -1
  353. package/dist/setup/setup.js +5 -5
  354. package/dist/setup/setup.js.map +1 -1
  355. package/dist/stores/dashboardStore/dashboardStore.d.ts +1 -1
  356. package/dist/stores/uploadStore/index.js +2 -2
  357. package/dist/stores/uploadStore/index.js.map +1 -1
  358. package/dist/stores/uploadStore/uploadStore.d.ts +1 -1
  359. package/dist/stores/userProfileStore/index.js +2 -2
  360. package/dist/stores/userProfileStore/index.js.map +1 -1
  361. package/dist/theme/demoTheme/index.js +2 -2
  362. package/dist/theme/demoTheme/index.js.map +1 -1
  363. package/dist/utils/CaseDbDataUtil/CaseDbDataUtil.d.ts +1 -1
  364. package/dist/utils/CaseDbDataUtil/index.js +1 -1
  365. package/dist/utils/CaseDbDataUtil/index.js.map +1 -1
  366. package/dist/utils/CaseDbStandardConfigUtil/index.js +2488 -1408
  367. package/dist/utils/CaseDbStandardConfigUtil/index.js.map +1 -1
  368. package/dist/utils/CaseDbTableUtil/CaseDbTableUtil.d.ts +1 -1
  369. package/dist/utils/CaseDbTableUtil/index.js +1 -1
  370. package/dist/utils/CaseDbTableUtil/index.js.map +1 -1
  371. package/dist/utils/CaseSelectionUtil/index.js.map +1 -1
  372. package/dist/utils/CaseTypeFormUtil/CaseTypeFormUtil.d.ts +1 -1
  373. package/dist/utils/CaseTypeFormUtil/index.js +7 -10
  374. package/dist/utils/CaseTypeFormUtil/index.js.map +1 -1
  375. package/dist/utils/CaseTypeUtil/index.js +1 -1
  376. package/dist/utils/CaseTypeUtil/index.js.map +1 -1
  377. package/dist/utils/CaseUtil/index.js +3 -3
  378. package/dist/utils/CaseUtil/index.js.map +1 -1
  379. package/dist/utils/DashboardUtil/index.js +1 -1
  380. package/dist/utils/DashboardUtil/index.js.map +1 -1
  381. package/dist/utils/DataSetUtil/index.js.map +1 -1
  382. package/dist/utils/FileUtil/index.js +1 -1
  383. package/dist/utils/FileUtil/index.js.map +1 -1
  384. package/dist/utils/FilterUtil/FilterUtil.d.ts +2 -2
  385. package/dist/utils/HistogramUtil/index.js +1 -1
  386. package/dist/utils/HistogramUtil/index.js.map +1 -1
  387. package/dist/utils/MapUtil/index.js +1 -1
  388. package/dist/utils/MapUtil/index.js.map +1 -1
  389. package/dist/utils/StratificationUtil/index.js +3 -2
  390. package/dist/utils/StratificationUtil/index.js.map +1 -1
  391. package/dist/utils/UploadUtil/UploadUtil.d.ts +1 -1
  392. package/package.json +11 -11
  393. package/dist/_chunks/chunk-KS7C4IRE.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/form/fields/ArrangementEditor/ArrangementEditor.tsx"],"sourcesContent":["/* eslint-disable react-hooks/immutability */\nimport type {\n ChangeEvent,\n ReactElement,\n} from 'react';\nimport {\n Fragment,\n useCallback,\n useId,\n} from 'react';\nimport {\n Box,\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n RadioGroup as MuiRadioGroup,\n Radio,\n useTheme,\n} from '@mui/material';\nimport type {\n FieldValues,\n Path,\n PathValue,\n UseControllerReturn,\n} from 'react-hook-form';\nimport {\n Controller,\n useFormContext,\n} from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { StringUtil } from '@gen-epix/ui-core/utils/StringUtil';\nimport { FormFieldHelperText } from '@gen-epix/ui-form/components/helpers/FormFieldHelperText';\nimport { FormFieldLoadingIndicator } from '@gen-epix/ui-form/components/helpers/FormFieldLoadingIndicator';\nimport { FormUtil } from '@gen-epix/ui-form/utils/FormUtil';\n\nimport { DASHBOARD_ARRANGEMENT_ORIENTATION } from '../../../../models/dashboard';\nimport type { DashboardArrangement } from '../../../../models/dashboard';\n\nexport type ArrangementEditorProps<TFieldValues extends FieldValues, TName extends Path<TFieldValues> = Path<TFieldValues>> = {\n readonly disabled?: boolean;\n readonly infoMessage?: string;\n readonly label: string;\n readonly loading?: boolean;\n readonly name: TName;\n readonly onChange?: (value: string) => void;\n readonly options: { [key: string]: DashboardArrangement };\n readonly required?: boolean;\n readonly warningMessage?: string;\n};\n\nexport const ArrangementEditor = <TFieldValues extends FieldValues, TName extends Path<TFieldValues> = Path<TFieldValues>>({\n disabled,\n infoMessage,\n label,\n loading,\n name,\n onChange: onChangeProp,\n options,\n required,\n warningMessage,\n}: ArrangementEditorProps<TFieldValues, TName>): ReactElement => {\n const { t } = useTranslation();\n const theme = useTheme();\n const id = useId();\n const { control, formState: { errors } } = useFormContext<TFieldValues>();\n const errorMessage = FormUtil.getFieldErrorMessage(errors, name);\n const hasError = !!errorMessage;\n\n const renderArrangement = useCallback((option: DashboardArrangement) => {\n const direction: 'column' | 'row' = option.orientation === DASHBOARD_ARRANGEMENT_ORIENTATION.HORIZONTAL ? 'row' : 'column';\n const gridTemplate = option.cells.map((cell) => `${cell.size}fr`).join(' ');\n\n return (\n <Box\n data-direction={direction}\n sx={{\n display: 'grid',\n gap: theme.spacing(0.5),\n gridTemplateColumns: direction === 'row' ? gridTemplate : undefined,\n gridTemplateRows: direction === 'column' ? gridTemplate : undefined,\n height: '100%',\n width: '100%',\n }}\n >\n {option.cells.map((subOption, subIndex) => (\n <Fragment\n key={StringUtil.createHash(JSON.stringify({ subIndex, subOption }))}\n >\n {'name' in subOption\n ? (\n <Box\n sx={{\n backgroundColor: theme.palette.primary.main,\n borderRadius: 0.5,\n height: '100%',\n width: '100%',\n }}\n />\n )\n : renderArrangement(subOption)}\n </Fragment>\n ))}\n </Box>\n );\n }, [theme]);\n\n const onRadioGroupChange = useCallback(\n (onChange: UseControllerReturn<TFieldValues, TName>['field']['onChange']) =>\n (_event: ChangeEvent<HTMLInputElement>, newValue: string) => {\n if (options[newValue] !== undefined) {\n if (onChangeProp) {\n onChangeProp(newValue);\n }\n onChange(newValue);\n }\n },\n [options, onChangeProp],\n );\n\n const renderController = useCallback(({ field: { onBlur, onChange, value } }: UseControllerReturn<TFieldValues, TName>) => {\n return (\n <FormControl\n component={'fieldset'}\n error={hasError}\n {...TestIdUtil.createAttributes('ArrangementEditor', { label, name })}\n fullWidth\n sx={{\n '&:hover legend button, &:focus-within legend button': {\n display: 'initial',\n },\n 'legend button': {\n display: 'none',\n },\n }}\n >\n <FormLabel\n component={'legend'}\n disabled={disabled || loading}\n id={id}\n required={required}\n >\n {label}\n </FormLabel>\n {!loading && (\n <MuiRadioGroup\n aria-labelledby={id}\n onBlur={onBlur}\n onChange={onRadioGroupChange(onChange)}\n row\n value={typeof value === 'string' ? value : ''}\n >\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 1,\n marginTop: 1,\n }}\n >\n {Object.entries(options).map(([key, option], index) => (\n <Box\n key={key}\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <Box\n aria-hidden\n sx={{\n height: '90px',\n width: '160px',\n }}\n >\n {renderArrangement(option)}\n </Box>\n <FormControlLabel\n control={<Radio />}\n label={t('Option {{n}}', { n: index + 1 })}\n sx={{ m: 0 }}\n value={key}\n />\n </Box>\n ))}\n </Box>\n </MuiRadioGroup>\n )}\n {!!loading && <FormFieldLoadingIndicator inline />}\n <FormHelperText sx={{ ml: 0 }}>\n <FormFieldHelperText\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n noIndent\n warningMessage={warningMessage}\n />\n </FormHelperText>\n </FormControl>\n );\n }, [hasError, label, name, disabled, loading, id, required, t, options, errorMessage, infoMessage, warningMessage, renderArrangement, onRadioGroupChange]);\n\n return (\n <Controller\n control={control}\n defaultValue={'' as PathValue<TFieldValues, TName>}\n name={name}\n render={renderController}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/form/fields/ArrangementEditor/ArrangementEditor.tsx"],"sourcesContent":["/* eslint-disable react-hooks/immutability */\nimport type {\n ChangeEvent,\n ReactElement,\n} from 'react';\nimport {\n Fragment,\n useCallback,\n useId,\n} from 'react';\nimport {\n Box,\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormLabel,\n RadioGroup as MuiRadioGroup,\n Radio,\n useTheme,\n} from '@mui/material';\nimport type {\n FieldValues,\n Path,\n PathValue,\n UseControllerReturn,\n} from 'react-hook-form';\nimport {\n Controller,\n useFormContext,\n} from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { StringUtil } from '@gen-epix/ui-core/utils/StringUtil';\nimport { FormFieldHelperText } from '@gen-epix/ui-core-form/components/helpers/FormFieldHelperText';\nimport { FormFieldLoadingIndicator } from '@gen-epix/ui-core-form/components/helpers/FormFieldLoadingIndicator';\nimport { FormUtil } from '@gen-epix/ui-core-form/utils/FormUtil';\n\nimport { DASHBOARD_ARRANGEMENT_ORIENTATION } from '../../../../models/dashboard';\nimport type { DashboardArrangement } from '../../../../models/dashboard';\n\nexport type ArrangementEditorProps<TFieldValues extends FieldValues, TName extends Path<TFieldValues> = Path<TFieldValues>> = {\n readonly disabled?: boolean;\n readonly infoMessage?: string;\n readonly label: string;\n readonly loading?: boolean;\n readonly name: TName;\n readonly onChange?: (value: string) => void;\n readonly options: { [key: string]: DashboardArrangement };\n readonly required?: boolean;\n readonly warningMessage?: string;\n};\n\nexport const ArrangementEditor = <TFieldValues extends FieldValues, TName extends Path<TFieldValues> = Path<TFieldValues>>({\n disabled,\n infoMessage,\n label,\n loading,\n name,\n onChange: onChangeProp,\n options,\n required,\n warningMessage,\n}: ArrangementEditorProps<TFieldValues, TName>): ReactElement => {\n const { t } = useTranslation();\n const theme = useTheme();\n const id = useId();\n const { control, formState: { errors } } = useFormContext<TFieldValues>();\n const errorMessage = FormUtil.getFieldErrorMessage(errors, name);\n const hasError = !!errorMessage;\n\n const renderArrangement = useCallback((option: DashboardArrangement) => {\n const direction: 'column' | 'row' = option.orientation === DASHBOARD_ARRANGEMENT_ORIENTATION.HORIZONTAL ? 'row' : 'column';\n const gridTemplate = option.cells.map((cell) => `${cell.size}fr`).join(' ');\n\n return (\n <Box\n data-direction={direction}\n sx={{\n display: 'grid',\n gap: theme.spacing(0.5),\n gridTemplateColumns: direction === 'row' ? gridTemplate : undefined,\n gridTemplateRows: direction === 'column' ? gridTemplate : undefined,\n height: '100%',\n width: '100%',\n }}\n >\n {option.cells.map((subOption, subIndex) => (\n <Fragment\n key={StringUtil.createHash(JSON.stringify({ subIndex, subOption }))}\n >\n {'name' in subOption\n ? (\n <Box\n sx={{\n backgroundColor: theme.palette.primary.main,\n borderRadius: 0.5,\n height: '100%',\n width: '100%',\n }}\n />\n )\n : renderArrangement(subOption)}\n </Fragment>\n ))}\n </Box>\n );\n }, [theme]);\n\n const onRadioGroupChange = useCallback(\n (onChange: UseControllerReturn<TFieldValues, TName>['field']['onChange']) =>\n (_event: ChangeEvent<HTMLInputElement>, newValue: string) => {\n if (options[newValue] !== undefined) {\n if (onChangeProp) {\n onChangeProp(newValue);\n }\n onChange(newValue);\n }\n },\n [options, onChangeProp],\n );\n\n const renderController = useCallback(({ field: { onBlur, onChange, value } }: UseControllerReturn<TFieldValues, TName>) => {\n return (\n <FormControl\n component={'fieldset'}\n error={hasError}\n {...TestIdUtil.createAttributes('ArrangementEditor', { label, name })}\n fullWidth\n sx={{\n '&:hover legend button, &:focus-within legend button': {\n display: 'initial',\n },\n 'legend button': {\n display: 'none',\n },\n }}\n >\n <FormLabel\n component={'legend'}\n disabled={disabled || loading}\n id={id}\n required={required}\n >\n {label}\n </FormLabel>\n {!loading && (\n <MuiRadioGroup\n aria-labelledby={id}\n onBlur={onBlur}\n onChange={onRadioGroupChange(onChange)}\n row\n value={typeof value === 'string' ? value : ''}\n >\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 1,\n marginTop: 1,\n }}\n >\n {Object.entries(options).map(([key, option], index) => (\n <Box\n key={key}\n sx={{\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <Box\n aria-hidden\n sx={{\n height: '90px',\n width: '160px',\n }}\n >\n {renderArrangement(option)}\n </Box>\n <FormControlLabel\n control={<Radio />}\n label={t('Option {{n}}', { n: index + 1 })}\n sx={{ m: 0 }}\n value={key}\n />\n </Box>\n ))}\n </Box>\n </MuiRadioGroup>\n )}\n {!!loading && <FormFieldLoadingIndicator inline />}\n <FormHelperText sx={{ ml: 0 }}>\n <FormFieldHelperText\n errorMessage={errorMessage}\n infoMessage={infoMessage}\n noIndent\n warningMessage={warningMessage}\n />\n </FormHelperText>\n </FormControl>\n );\n }, [hasError, label, name, disabled, loading, id, required, t, options, errorMessage, infoMessage, warningMessage, renderArrangement, onRadioGroupChange]);\n\n return (\n <Controller\n control={control}\n defaultValue={'' as PathValue<TFieldValues, TName>}\n name={name}\n render={renderController}\n />\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { CaseDbCase, CaseDbCaseSet } from '@gen-epix/api-casedb';
2
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
2
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
3
3
  export interface AddCasesToEventDialogOpenProps {
4
4
  currentCaseSet: CaseDbCaseSet;
5
5
  rows: CaseDbCase[];
@@ -7,4 +7,4 @@ export interface AddCasesToEventDialogOpenProps {
7
7
  export interface AddCasesToEventDialogProps extends WithDialogRenderProps<AddCasesToEventDialogOpenProps> {
8
8
  }
9
9
  export type AddCasesToEventDialogRefMethods = WithDialogRefMethods<AddCasesToEventDialogProps, AddCasesToEventDialogOpenProps>;
10
- export declare const AddCasesToEventDialog: import('react').ComponentClass<AddCasesToEventDialogProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<AddCasesToEventDialogOpenProps>>;
10
+ export declare const AddCasesToEventDialog: import('react').ComponentClass<AddCasesToEventDialogProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<AddCasesToEventDialogOpenProps>>;
@@ -1,4 +1,4 @@
1
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
1
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
2
2
  import { CaseDbCase } from '@gen-epix/api-casedb';
3
3
  import { CaseContentFormProps } from '../CaseContentForm/CaseContentForm';
4
4
  export interface CaseContentFormDialogProps extends WithDialogRenderProps<CaseFormDialogOpenProps> {
@@ -6,4 +6,4 @@ export interface CaseContentFormDialogProps extends WithDialogRenderProps<CaseFo
6
6
  }
7
7
  export type CaseContentFormDialogRefMethods = WithDialogRefMethods<CaseContentFormDialogProps, CaseFormDialogOpenProps>;
8
8
  export type CaseFormDialogOpenProps = Omit<CaseContentFormProps, 'onSubmit'>;
9
- export declare const CaseContentFormDialog: import('react').ComponentClass<CaseContentFormDialogProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<CaseFormDialogOpenProps>>;
9
+ export declare const CaseContentFormDialog: import('react').ComponentClass<CaseContentFormDialogProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<CaseFormDialogOpenProps>>;
@@ -2,7 +2,7 @@ import { t as e } from "../../../_chunks/CaseContentForm.js";
2
2
  import { useCallback as t, useEffect as n } from "react";
3
3
  import { useTranslation as r } from "react-i18next";
4
4
  import { jsx as i } from "react/jsx-runtime";
5
- import { withDialog as a } from "@gen-epix/ui/hoc/withDialog";
5
+ import { withDialog as a } from "@gen-epix/ui-core-components/hoc/withDialog";
6
6
  import { TestIdUtil as o } from "@gen-epix/ui-core/utils/TestIdUtil";
7
7
  import s from "@mui/icons-material/Save";
8
8
  //#region src/components/ui/CaseContentFormDialog/CaseContentFormDialog.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CaseContentFormDialog/CaseContentFormDialog.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { DialogAction } from '@gen-epix/ui/components/ui/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui/hoc/withDialog';\nimport { withDialog } from '@gen-epix/ui/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport SaveIcon from '@mui/icons-material/Save';\nimport type { CaseDbCase } from '@gen-epix/api-casedb';\n\nimport { CaseContentForm } from '../CaseContentForm/CaseContentForm';\nimport type { CaseContentFormProps } from '../CaseContentForm/CaseContentForm';\n\n\nexport interface CaseContentFormDialogProps extends WithDialogRenderProps<CaseFormDialogOpenProps> {\n readonly onSubmit: (caseId: string, content: CaseDbCase['content']) => void;\n}\n\nexport type CaseContentFormDialogRefMethods = WithDialogRefMethods<CaseContentFormDialogProps, CaseFormDialogOpenProps>;\n\nexport type CaseFormDialogOpenProps = Omit<CaseContentFormProps, 'onSubmit'>;\n\nexport const CaseContentFormDialog = withDialog<CaseContentFormDialogProps, CaseFormDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onSubmit,\n onTitleChange,\n openProps,\n }: CaseContentFormDialogProps,\n): ReactElement => {\n const { t } = useTranslation();\n useEffect(() => {\n onTitleChange(t`Edit case`);\n }, [t, onTitleChange]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseInfoDialog-closeButton'),\n color: 'secondary',\n label: t`Close`,\n onClick: onClose,\n variant: 'outlined',\n },\n {\n ...TestIdUtil.createAttributes('CaseInfoDialog-saveButton'),\n autoFocus: true,\n color: 'primary',\n form: openProps.formId,\n label: t`Save`,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n },\n );\n onActionsChange(actions);\n }, [onActionsChange, onClose, t, openProps.formId]);\n\n const onEpiCaseContentFormSubmit = useCallback((caseId: string, content: CaseDbCase['content']) => {\n onSubmit(caseId, content);\n onClose();\n }, [onClose, onSubmit]);\n\n\n return (\n <CaseContentForm\n caseContent={openProps.caseContent}\n caseId={openProps.caseId}\n completeCaseType={openProps.completeCaseType}\n enabledColIds={openProps.enabledColIds}\n formId={openProps.formId}\n onSubmit={onEpiCaseContentFormSubmit}\n />\n );\n}, {\n defaultTitle: '',\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CaseFormDialog',\n});\n"],"mappings":";;;;;;;;AA4BA,IAAa,IAAwB,GACnC,EACE,oBACA,YACA,aACA,kBACA,mBAEe;CACjB,IAAM,EAAE,SAAM,EAAe;CAK7B,AAJA,QAAgB;EACd,EAAc,CAAC,WAAW;CAC5B,GAAG,CAAC,GAAG,CAAa,CAAC,GAErB,QAAgB;EACd,IAAM,IAA0B,CAAC;EAoBjC,AAnBA,EAAQ,KACN;GACE,GAAG,EAAW,iBAAiB,4BAA4B;GAC3D,OAAO;GACP,OAAO,CAAC;GACR,SAAS;GACT,SAAS;EACX,GACA;GACE,GAAG,EAAW,iBAAiB,2BAA2B;GAC1D,WAAW;GACX,OAAO;GACP,MAAM,EAAU;GAChB,OAAO,CAAC;GACR,WAAW,kBAAC,GAAD,CAAW,CAAA;GACtB,MAAM;GACN,SAAS;EACX,CACF,GACA,EAAgB,CAAO;CACzB,GAAG;EAAC;EAAiB;EAAS;EAAG,EAAU;CAAM,CAAC;CAElD,IAAM,IAA6B,GAAa,GAAgB,MAAmC;EAEjG,AADA,EAAS,GAAQ,CAAO,GACxB,EAAQ;CACV,GAAG,CAAC,GAAS,CAAQ,CAAC;CAGtB,OACE,kBAAC,GAAD;EACE,aAAa,EAAU;EACvB,QAAQ,EAAU;EAClB,kBAAkB,EAAU;EAC5B,eAAe,EAAU;EACzB,QAAQ,EAAU;EAClB,UAAU;CACX,CAAA;AAEL,GAAG;CACD,cAAc;CACd,WAAW;CACX,UAAU;CACV,QAAQ;AACV,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CaseContentFormDialog/CaseContentFormDialog.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { DialogAction } from '@gen-epix/ui-core-components/components/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { withDialog } from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport SaveIcon from '@mui/icons-material/Save';\nimport type { CaseDbCase } from '@gen-epix/api-casedb';\n\nimport { CaseContentForm } from '../CaseContentForm/CaseContentForm';\nimport type { CaseContentFormProps } from '../CaseContentForm/CaseContentForm';\n\n\nexport interface CaseContentFormDialogProps extends WithDialogRenderProps<CaseFormDialogOpenProps> {\n readonly onSubmit: (caseId: string, content: CaseDbCase['content']) => void;\n}\n\nexport type CaseContentFormDialogRefMethods = WithDialogRefMethods<CaseContentFormDialogProps, CaseFormDialogOpenProps>;\n\nexport type CaseFormDialogOpenProps = Omit<CaseContentFormProps, 'onSubmit'>;\n\nexport const CaseContentFormDialog = withDialog<CaseContentFormDialogProps, CaseFormDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onSubmit,\n onTitleChange,\n openProps,\n }: CaseContentFormDialogProps,\n): ReactElement => {\n const { t } = useTranslation();\n useEffect(() => {\n onTitleChange(t`Edit case`);\n }, [t, onTitleChange]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n actions.push(\n {\n ...TestIdUtil.createAttributes('CaseInfoDialog-closeButton'),\n color: 'secondary',\n label: t`Close`,\n onClick: onClose,\n variant: 'outlined',\n },\n {\n ...TestIdUtil.createAttributes('CaseInfoDialog-saveButton'),\n autoFocus: true,\n color: 'primary',\n form: openProps.formId,\n label: t`Save`,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n },\n );\n onActionsChange(actions);\n }, [onActionsChange, onClose, t, openProps.formId]);\n\n const onEpiCaseContentFormSubmit = useCallback((caseId: string, content: CaseDbCase['content']) => {\n onSubmit(caseId, content);\n onClose();\n }, [onClose, onSubmit]);\n\n\n return (\n <CaseContentForm\n caseContent={openProps.caseContent}\n caseId={openProps.caseId}\n completeCaseType={openProps.completeCaseType}\n enabledColIds={openProps.enabledColIds}\n formId={openProps.formId}\n onSubmit={onEpiCaseContentFormSubmit}\n />\n );\n}, {\n defaultTitle: '',\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CaseFormDialog',\n});\n"],"mappings":";;;;;;;;AA4BA,IAAa,IAAwB,GACnC,EACE,oBACA,YACA,aACA,kBACA,mBAEe;CACjB,IAAM,EAAE,SAAM,EAAe;CAK7B,AAJA,QAAgB;EACd,EAAc,CAAC,WAAW;CAC5B,GAAG,CAAC,GAAG,CAAa,CAAC,GAErB,QAAgB;EACd,IAAM,IAA0B,CAAC;EAoBjC,AAnBA,EAAQ,KACN;GACE,GAAG,EAAW,iBAAiB,4BAA4B;GAC3D,OAAO;GACP,OAAO,CAAC;GACR,SAAS;GACT,SAAS;EACX,GACA;GACE,GAAG,EAAW,iBAAiB,2BAA2B;GAC1D,WAAW;GACX,OAAO;GACP,MAAM,EAAU;GAChB,OAAO,CAAC;GACR,WAAW,kBAAC,GAAD,CAAW,CAAA;GACtB,MAAM;GACN,SAAS;EACX,CACF,GACA,EAAgB,CAAO;CACzB,GAAG;EAAC;EAAiB;EAAS;EAAG,EAAU;CAAM,CAAC;CAElD,IAAM,IAA6B,GAAa,GAAgB,MAAmC;EAEjG,AADA,EAAS,GAAQ,CAAO,GACxB,EAAQ;CACV,GAAG,CAAC,GAAS,CAAQ,CAAC;CAGtB,OACE,kBAAC,GAAD;EACE,aAAa,EAAU;EACvB,QAAQ,EAAU;EAClB,kBAAkB,EAAU;EAC5B,eAAe,EAAU;EACzB,QAAQ,EAAU;EAClB,UAAU;CACX,CAAA;AAEL,GAAG;CACD,cAAc;CACd,WAAW;CACX,UAAU;CACV,QAAQ;AACV,CAAC"}
@@ -1,4 +1,4 @@
1
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
1
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
2
2
  export declare enum CASE_INFO_DIALOG_TAB_NAME {
3
3
  EDIT = "EDIT",
4
4
  INFO = "INFO",
@@ -12,4 +12,4 @@ export interface CaseInfoDialogOpenProps {
12
12
  export interface CaseInfoDialogProps extends WithDialogRenderProps<CaseInfoDialogOpenProps> {
13
13
  }
14
14
  export type CaseInfoDialogRefMethods = WithDialogRefMethods<CaseInfoDialogProps, CaseInfoDialogOpenProps>;
15
- export declare const CaseInfoDialog: import('react').ComponentClass<CaseInfoDialogProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<CaseInfoDialogOpenProps>>;
15
+ export declare const CaseInfoDialog: import('react').ComponentClass<CaseInfoDialogProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<CaseInfoDialogOpenProps>>;
@@ -1,4 +1,4 @@
1
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
1
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
2
2
  export interface CaseSetInfoDialogOpenProps {
3
3
  readonly caseSetId: string;
4
4
  readonly caseTypeId: string;
@@ -7,4 +7,4 @@ export interface CaseSetInfoDialogProps extends WithDialogRenderProps<CaseSetInf
7
7
  readonly showNavigationButton?: boolean;
8
8
  }
9
9
  export type CaseSetInfoDialogRefMethods = WithDialogRefMethods<CaseSetInfoDialogProps, CaseSetInfoDialogOpenProps>;
10
- export declare const CaseSetInfoDialog: import('react').ComponentClass<CaseSetInfoDialogProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<CaseSetInfoDialogOpenProps>>;
10
+ export declare const CaseSetInfoDialog: import('react').ComponentClass<CaseSetInfoDialogProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<CaseSetInfoDialogOpenProps>>;
@@ -5,7 +5,7 @@ import { t as r } from "../../../_chunks/shallow.js";
5
5
  import { Box as i, IconButton as a, Tooltip as o } from "@mui/material";
6
6
  import { Fragment as s, use as c, useCallback as l, useMemo as u } from "react";
7
7
  import { useTranslation as d } from "react-i18next";
8
- import { useTableStoreContext as f } from "@gen-epix/ui/stores/tableStore";
8
+ import { useTableStoreContext as f } from "@gen-epix/ui-client-common/stores/tableStore";
9
9
  import { jsx as p, jsxs as m } from "react/jsx-runtime";
10
10
  import h from "@mui/icons-material/Add";
11
11
  import g from "@mui/icons-material/Remove";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CaseSummary/CaseSummary.tsx"],"sourcesContent":["import {\n Fragment,\n use,\n useCallback,\n useMemo,\n} from 'react';\nimport { useStore } from 'zustand';\nimport { useShallow } from 'zustand/shallow';\nimport {\n Box,\n IconButton,\n Tooltip,\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport RemoveIcon from '@mui/icons-material/Remove';\nimport { useTranslation } from 'react-i18next';\nimport type { CaseDbCase } from '@gen-epix/api-casedb';\nimport type { TableColumnText } from '@gen-epix/ui/models/table';\nimport { useTableStoreContext } from '@gen-epix/ui/stores/tableStore';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseUtil } from '../../../utils/CaseUtil';\n\nexport type CaseSummaryProps = {\n readonly caseDbCase: CaseDbCase;\n};\n\nexport const CaseSummary = ({ caseDbCase }: CaseSummaryProps) => {\n const { t } = useTranslation();\n const dashboardStore = use(DashboardStoreContext);\n const tableStore = useTableStoreContext<CaseDbCase>();\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const numVisibleAttributesInSummary = useStore(dashboardStore, (state) => state.numVisibleAttributesInSummary);\n const setNumVisibleAttributesInSummary = useStore(dashboardStore, (state) => state.setNumVisibleAttributesInSummary);\n const tableColumns = useStore(tableStore, useShallow((state) => state.columns));\n const columnVisualSettings = useStore(tableStore, useShallow((state) => state.getCurrentColumnVisualSettings()));\n const columnVisualSettingsVisibleColumnIds = useStore(tableStore, useShallow((state) => state.getCurrentColumnVisualSettings().filter(c => c.isVisible).map(c => c.id)));\n\n const visibleCaseTypeTableColumns = useMemo(() => columnVisualSettings.map(x => tableColumns.find(c => c.id === x.id)).filter(c => c.columnContext && columnVisualSettingsVisibleColumnIds.includes(c.id)) as TableColumnText<CaseDbCase>[], [columnVisualSettings, tableColumns, columnVisualSettingsVisibleColumnIds]);\n\n const visibleAttributes = useMemo(() => {\n return visibleCaseTypeTableColumns.slice(0, numVisibleAttributesInSummary);\n }, [visibleCaseTypeTableColumns, numVisibleAttributesInSummary]);\n\n const onRemoveAttributeClick = useCallback(() => {\n if (numVisibleAttributesInSummary <= 1) {\n return;\n }\n if (numVisibleAttributesInSummary > visibleCaseTypeTableColumns.length) {\n setNumVisibleAttributesInSummary(visibleCaseTypeTableColumns.length);\n }\n if (numVisibleAttributesInSummary > 1) {\n setNumVisibleAttributesInSummary(numVisibleAttributesInSummary - 1);\n }\n }, [numVisibleAttributesInSummary, setNumVisibleAttributesInSummary, visibleCaseTypeTableColumns.length]);\n\n const onAddAttributeClick = useCallback(() => {\n setNumVisibleAttributesInSummary(Math.min(visibleCaseTypeTableColumns.length, numVisibleAttributesInSummary + 1));\n }, [numVisibleAttributesInSummary, setNumVisibleAttributesInSummary, visibleCaseTypeTableColumns.length]);\n\n return (\n <Box>\n <Box\n component={'dl'}\n sx={{\n '& dd': {\n display: 'inline-block',\n float: 'left',\n margin: 0,\n marginLeft: 0.5,\n },\n '& dt': {\n '&:after': {\n content: '\":\"',\n },\n clear: 'left',\n display: 'inline-block',\n float: 'left',\n fontWeight: 'bold',\n margin: 0,\n },\n clear: 'both',\n margin: 0,\n }}\n >\n {visibleAttributes.map(tableColumn => {\n try {\n const value = CaseUtil.getRowValue(caseDbCase.content, tableColumn.columnContext, completeCaseType);\n return (\n <Fragment key={tableColumn.id}>\n <dt>\n {tableColumn.headerName}\n </dt>\n <dd>\n {value.short}\n </dd>\n </Fragment>\n );\n } catch {\n return null;\n }\n })}\n </Box>\n <Box\n sx={{\n clear: 'both',\n float: 'right',\n }}\n >\n <Tooltip\n arrow\n title={t`Show one less attribute`}\n >\n <IconButton\n aria-label={t`Show one less attribute`}\n color={'primary'}\n disabled={numVisibleAttributesInSummary <= 1}\n onClick={onRemoveAttributeClick}\n size={'small'}\n >\n <RemoveIcon fontSize={'inherit'} />\n </IconButton>\n </Tooltip>\n <Tooltip\n arrow\n title={t`Show one more attribute`}\n >\n <IconButton\n aria-label={t`Show one more attribute`}\n color={'primary'}\n disabled={numVisibleAttributesInSummary >= visibleCaseTypeTableColumns.length - 1}\n onClick={onAddAttributeClick}\n size={'small'}\n >\n <AddIcon fontSize={'inherit'} />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;;AA2BA,IAAa,KAAe,EAAE,oBAAmC;CAC/D,IAAM,EAAE,SAAM,EAAe,GACvB,IAAiB,EAAI,CAAqB,GAC1C,IAAa,EAAiC,GAC9C,IAAmB,EAAS,IAAiB,MAAU,EAAM,gBAAgB,GAC7E,IAAgC,EAAS,IAAiB,MAAU,EAAM,6BAA6B,GACvG,IAAmC,EAAS,IAAiB,MAAU,EAAM,gCAAgC,GAC7G,IAAe,EAAS,GAAY,GAAY,MAAU,EAAM,OAAO,CAAC,GACxE,IAAuB,EAAS,GAAY,GAAY,MAAU,EAAM,+BAA+B,CAAC,CAAC,GACzG,IAAuC,EAAS,GAAY,GAAY,MAAU,EAAM,+BAA+B,CAAC,CAAC,QAAO,MAAK,EAAE,SAAS,CAAC,CAAC,KAAI,MAAK,EAAE,EAAE,CAAC,CAAC,GAEjK,IAA8B,QAAc,EAAqB,KAAI,MAAK,EAAa,MAAK,MAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,QAAO,MAAK,EAAE,iBAAiB,EAAqC,SAAS,EAAE,EAAE,CAAC,GAAoC;EAAC;EAAsB;EAAc;CAAoC,CAAC,GAEjT,IAAoB,QACjB,EAA4B,MAAM,GAAG,CAA6B,GACxE,CAAC,GAA6B,CAA6B,CAAC,GAEzD,IAAyB,QAAkB;EAC3C,KAAiC,MAGjC,IAAgC,EAA4B,UAC9D,EAAiC,EAA4B,MAAM,GAEjE,IAAgC,KAClC,EAAiC,IAAgC,CAAC;CAEtE,GAAG;EAAC;EAA+B;EAAkC,EAA4B;CAAM,CAAC,GAElG,IAAsB,QAAkB;EAC5C,EAAiC,KAAK,IAAI,EAA4B,QAAQ,IAAgC,CAAC,CAAC;CAClH,GAAG;EAAC;EAA+B;EAAkC,EAA4B;CAAM,CAAC;CAExG,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,WAAW;EACX,IAAI;GACF,QAAQ;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,YAAY;GACd;GACA,QAAQ;IACN,WAAW,EACT,SAAS,QACX;IACA,OAAO;IACP,SAAS;IACT,OAAO;IACP,YAAY;IACZ,QAAQ;GACV;GACA,OAAO;GACP,QAAQ;EACV;YAEC,EAAkB,KAAI,MAAe;GACpC,IAAI;IACF,IAAM,IAAQ,EAAS,YAAY,EAAW,SAAS,EAAY,eAAe,CAAgB;IAClG,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UACG,EAAY,WACX,CAAA,GACJ,kBAAC,MAAD,EAAA,UACG,EAAM,MACL,CAAA,CACI,EAAA,GAPK,EAAY,EAOjB;GAEd,QAAQ;IACN,OAAO;GACT;EACF,CAAC;CACE,CAAA,GACL,kBAAC,GAAD;EACE,IAAI;GACF,OAAO;GACP,OAAO;EACT;YAJF,CAME,kBAAC,GAAD;GACE,OAAA;GACA,OAAO,CAAC;aAER,kBAAC,GAAD;IACE,cAAY,CAAC;IACb,OAAO;IACP,UAAU,KAAiC;IAC3C,SAAS;IACT,MAAM;cAEN,kBAAC,GAAD,EAAY,UAAU,UAAY,CAAA;GACxB,CAAA;EACL,CAAA,GACT,kBAAC,GAAD;GACE,OAAA;GACA,OAAO,CAAC;aAER,kBAAC,GAAD;IACE,cAAY,CAAC;IACb,OAAO;IACP,UAAU,KAAiC,EAA4B,SAAS;IAChF,SAAS;IACT,MAAM;cAEN,kBAAC,GAAD,EAAS,UAAU,UAAY,CAAA;GACrB,CAAA;EACL,CAAA,CACN;GACF,EAAA,CAAA;AAET"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CaseSummary/CaseSummary.tsx"],"sourcesContent":["import {\n Fragment,\n use,\n useCallback,\n useMemo,\n} from 'react';\nimport { useStore } from 'zustand';\nimport { useShallow } from 'zustand/shallow';\nimport {\n Box,\n IconButton,\n Tooltip,\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport RemoveIcon from '@mui/icons-material/Remove';\nimport { useTranslation } from 'react-i18next';\nimport type { CaseDbCase } from '@gen-epix/api-casedb';\nimport type { TableColumnText } from '@gen-epix/ui-client-common/models/table';\nimport { useTableStoreContext } from '@gen-epix/ui-client-common/stores/tableStore';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseUtil } from '../../../utils/CaseUtil';\n\nexport type CaseSummaryProps = {\n readonly caseDbCase: CaseDbCase;\n};\n\nexport const CaseSummary = ({ caseDbCase }: CaseSummaryProps) => {\n const { t } = useTranslation();\n const dashboardStore = use(DashboardStoreContext);\n const tableStore = useTableStoreContext<CaseDbCase>();\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const numVisibleAttributesInSummary = useStore(dashboardStore, (state) => state.numVisibleAttributesInSummary);\n const setNumVisibleAttributesInSummary = useStore(dashboardStore, (state) => state.setNumVisibleAttributesInSummary);\n const tableColumns = useStore(tableStore, useShallow((state) => state.columns));\n const columnVisualSettings = useStore(tableStore, useShallow((state) => state.getCurrentColumnVisualSettings()));\n const columnVisualSettingsVisibleColumnIds = useStore(tableStore, useShallow((state) => state.getCurrentColumnVisualSettings().filter(c => c.isVisible).map(c => c.id)));\n\n const visibleCaseTypeTableColumns = useMemo(() => columnVisualSettings.map(x => tableColumns.find(c => c.id === x.id)).filter(c => c.columnContext && columnVisualSettingsVisibleColumnIds.includes(c.id)) as TableColumnText<CaseDbCase>[], [columnVisualSettings, tableColumns, columnVisualSettingsVisibleColumnIds]);\n\n const visibleAttributes = useMemo(() => {\n return visibleCaseTypeTableColumns.slice(0, numVisibleAttributesInSummary);\n }, [visibleCaseTypeTableColumns, numVisibleAttributesInSummary]);\n\n const onRemoveAttributeClick = useCallback(() => {\n if (numVisibleAttributesInSummary <= 1) {\n return;\n }\n if (numVisibleAttributesInSummary > visibleCaseTypeTableColumns.length) {\n setNumVisibleAttributesInSummary(visibleCaseTypeTableColumns.length);\n }\n if (numVisibleAttributesInSummary > 1) {\n setNumVisibleAttributesInSummary(numVisibleAttributesInSummary - 1);\n }\n }, [numVisibleAttributesInSummary, setNumVisibleAttributesInSummary, visibleCaseTypeTableColumns.length]);\n\n const onAddAttributeClick = useCallback(() => {\n setNumVisibleAttributesInSummary(Math.min(visibleCaseTypeTableColumns.length, numVisibleAttributesInSummary + 1));\n }, [numVisibleAttributesInSummary, setNumVisibleAttributesInSummary, visibleCaseTypeTableColumns.length]);\n\n return (\n <Box>\n <Box\n component={'dl'}\n sx={{\n '& dd': {\n display: 'inline-block',\n float: 'left',\n margin: 0,\n marginLeft: 0.5,\n },\n '& dt': {\n '&:after': {\n content: '\":\"',\n },\n clear: 'left',\n display: 'inline-block',\n float: 'left',\n fontWeight: 'bold',\n margin: 0,\n },\n clear: 'both',\n margin: 0,\n }}\n >\n {visibleAttributes.map(tableColumn => {\n try {\n const value = CaseUtil.getRowValue(caseDbCase.content, tableColumn.columnContext, completeCaseType);\n return (\n <Fragment key={tableColumn.id}>\n <dt>\n {tableColumn.headerName}\n </dt>\n <dd>\n {value.short}\n </dd>\n </Fragment>\n );\n } catch {\n return null;\n }\n })}\n </Box>\n <Box\n sx={{\n clear: 'both',\n float: 'right',\n }}\n >\n <Tooltip\n arrow\n title={t`Show one less attribute`}\n >\n <IconButton\n aria-label={t`Show one less attribute`}\n color={'primary'}\n disabled={numVisibleAttributesInSummary <= 1}\n onClick={onRemoveAttributeClick}\n size={'small'}\n >\n <RemoveIcon fontSize={'inherit'} />\n </IconButton>\n </Tooltip>\n <Tooltip\n arrow\n title={t`Show one more attribute`}\n >\n <IconButton\n aria-label={t`Show one more attribute`}\n color={'primary'}\n disabled={numVisibleAttributesInSummary >= visibleCaseTypeTableColumns.length - 1}\n onClick={onAddAttributeClick}\n size={'small'}\n >\n <AddIcon fontSize={'inherit'} />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;;;AA2BA,IAAa,KAAe,EAAE,oBAAmC;CAC/D,IAAM,EAAE,SAAM,EAAe,GACvB,IAAiB,EAAI,CAAqB,GAC1C,IAAa,EAAiC,GAC9C,IAAmB,EAAS,IAAiB,MAAU,EAAM,gBAAgB,GAC7E,IAAgC,EAAS,IAAiB,MAAU,EAAM,6BAA6B,GACvG,IAAmC,EAAS,IAAiB,MAAU,EAAM,gCAAgC,GAC7G,IAAe,EAAS,GAAY,GAAY,MAAU,EAAM,OAAO,CAAC,GACxE,IAAuB,EAAS,GAAY,GAAY,MAAU,EAAM,+BAA+B,CAAC,CAAC,GACzG,IAAuC,EAAS,GAAY,GAAY,MAAU,EAAM,+BAA+B,CAAC,CAAC,QAAO,MAAK,EAAE,SAAS,CAAC,CAAC,KAAI,MAAK,EAAE,EAAE,CAAC,CAAC,GAEjK,IAA8B,QAAc,EAAqB,KAAI,MAAK,EAAa,MAAK,MAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,QAAO,MAAK,EAAE,iBAAiB,EAAqC,SAAS,EAAE,EAAE,CAAC,GAAoC;EAAC;EAAsB;EAAc;CAAoC,CAAC,GAEjT,IAAoB,QACjB,EAA4B,MAAM,GAAG,CAA6B,GACxE,CAAC,GAA6B,CAA6B,CAAC,GAEzD,IAAyB,QAAkB;EAC3C,KAAiC,MAGjC,IAAgC,EAA4B,UAC9D,EAAiC,EAA4B,MAAM,GAEjE,IAAgC,KAClC,EAAiC,IAAgC,CAAC;CAEtE,GAAG;EAAC;EAA+B;EAAkC,EAA4B;CAAM,CAAC,GAElG,IAAsB,QAAkB;EAC5C,EAAiC,KAAK,IAAI,EAA4B,QAAQ,IAAgC,CAAC,CAAC;CAClH,GAAG;EAAC;EAA+B;EAAkC,EAA4B;CAAM,CAAC;CAExG,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,WAAW;EACX,IAAI;GACF,QAAQ;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,YAAY;GACd;GACA,QAAQ;IACN,WAAW,EACT,SAAS,QACX;IACA,OAAO;IACP,SAAS;IACT,OAAO;IACP,YAAY;IACZ,QAAQ;GACV;GACA,OAAO;GACP,QAAQ;EACV;EAEC,UAAA,EAAkB,KAAI,MAAe;GACpC,IAAI;IACF,IAAM,IAAQ,EAAS,YAAY,EAAW,SAAS,EAAY,eAAe,CAAgB;IAClG,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,MAAD,EAAA,UACG,EAAY,WACX,CAAA,GACJ,kBAAC,MAAD,EAAA,UACG,EAAM,MACL,CAAA,CACI,EAAA,GAPK,EAAY,EAOjB;GAEd,QAAQ;IACN,OAAO;GACT;EACF,CAAC;CACE,CAAA,GACL,kBAAC,GAAD;EACE,IAAI;GACF,OAAO;GACP,OAAO;EACT;EAJF,UAAA,CAME,kBAAC,GAAD;GACE,OAAA;GACA,OAAO,CAAC;GAER,UAAA,kBAAC,GAAD;IACE,cAAY,CAAC;IACb,OAAO;IACP,UAAU,KAAiC;IAC3C,SAAS;IACT,MAAM;IAEN,UAAA,kBAAC,GAAD,EAAY,UAAU,UAAY,CAAA;GACxB,CAAA;EACL,CAAA,GACT,kBAAC,GAAD;GACE,OAAA;GACA,OAAO,CAAC;GAER,UAAA,kBAAC,GAAD;IACE,cAAY,CAAC;IACb,OAAO;IACP,UAAU,KAAiC,EAA4B,SAAS;IAChF,SAAS;IACT,MAAM;IAEN,UAAA,kBAAC,GAAD,EAAS,UAAU,UAAY,CAAA;GACrB,CAAA;EACL,CAAA,CACN;CACF,CAAA,CAAA,EAAA,CAAA;AAET"}
@@ -1,7 +1,7 @@
1
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
1
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
2
2
  export interface CaseTypeInfoDialogOpenProps {
3
3
  }
4
4
  export interface CaseTypeInfoDialogProps extends WithDialogRenderProps<CaseTypeInfoDialogOpenProps> {
5
5
  }
6
6
  export type CaseTypeInfoDialogRefMethods = WithDialogRefMethods<CaseTypeInfoDialogProps, CaseTypeInfoDialogOpenProps>;
7
- export declare const CaseTypeInfoDialog: import('react').ComponentClass<CaseTypeInfoDialogProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<CaseTypeInfoDialogOpenProps>>;
7
+ export declare const CaseTypeInfoDialog: import('react').ComponentClass<CaseTypeInfoDialogProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<CaseTypeInfoDialogOpenProps>>;
@@ -1,3 +1,3 @@
1
- import { WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
1
+ import { WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
2
2
  export type CaseTypeInfoDialogContentProps = Pick<WithDialogRenderProps, 'onPermalinkChange' | 'onTitleChange'>;
3
3
  export declare const CaseTypeInfoDialogContent: ({ onPermalinkChange, onTitleChange }: CaseTypeInfoDialogContentProps) => import("react").JSX.Element;
@@ -1,8 +1,8 @@
1
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
1
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
2
2
  export interface CaseTypeInfoDialogWithLoaderOpenProps {
3
3
  caseTypeId: string;
4
4
  }
5
5
  export interface CaseTypeInfoDialogWithLoaderProps extends WithDialogRenderProps<CaseTypeInfoDialogWithLoaderOpenProps> {
6
6
  }
7
7
  export type CaseTypeInfoDialogWithLoaderRefMethods = WithDialogRefMethods<CaseTypeInfoDialogWithLoaderProps, CaseTypeInfoDialogWithLoaderOpenProps>;
8
- export declare const CaseTypeInfoDialogWithLoader: import('react').ComponentClass<CaseTypeInfoDialogWithLoaderProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<CaseTypeInfoDialogWithLoaderOpenProps>>;
8
+ export declare const CaseTypeInfoDialogWithLoader: import('react').ComponentClass<CaseTypeInfoDialogWithLoaderProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<CaseTypeInfoDialogWithLoaderOpenProps>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import type { PopoverPosition } from '@mui/material';\nimport {\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport PlaylistAddCheckIcon from '@mui/icons-material/PlaylistAddCheck';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport PlaylistRemoveIcon from '@mui/icons-material/PlaylistRemove';\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay';\nimport type { ReactElement } from 'react';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseSelectionUtil } from '../../../utils/CaseSelectionUtil';\n\nexport type ContextMenuConfigWithAnchor = {\n anchorElement?: Element;\n mouseEvent?: MouseEvent;\n parseIdsFromAnchorElement?: (element: Element) => string[];\n};\n\nexport type ContextMenuConfigWithPosition = {\n caseIds?: string[];\n mouseEvent?: MouseEvent;\n position?: PopoverPosition;\n};\n\nexport type ContextMenuProps = {\n readonly config: ContextMenuConfig;\n readonly getExtraItems?: (onMenuClose?: () => void) => ReactElement;\n readonly onMenuClose: () => void;\n};\n\ntype ContextMenuConfig = ContextMenuConfigWithAnchor & ContextMenuConfigWithPosition;\n\nexport const ContextMenu = ({ config, getExtraItems, onMenuClose }: ContextMenuProps) => {\n const { t } = useTranslation();\n const dashboardStore = use(DashboardStoreContext);\n const selectedIds = useStore(dashboardStore, (state) => state.selectedIds);\n const setSelectedIds = useStore(dashboardStore, (state) => state.setSelectedIds);\n\n const componentCaseIds = useMemo(() => {\n if (config?.parseIdsFromAnchorElement) {\n return config.parseIdsFromAnchorElement(config.anchorElement);\n }\n if (config?.caseIds) {\n return config.caseIds;\n }\n return [];\n }, [config]);\n\n useEffect(() => {\n const mouseEvent = config?.mouseEvent;\n if (!mouseEvent || (!mouseEvent.metaKey && !mouseEvent.ctrlKey)) {\n return;\n }\n if (CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n if (CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n }, [componentCaseIds, config?.mouseEvent, selectedIds, setSelectedIds, onMenuClose]);\n\n\n const onMenuSelectClick = useCallback(() => {\n setSelectedIds(componentCaseIds);\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds]);\n\n const onAddToSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRemoveFromSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRefineSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.refineSelectionWithComponentCaseIds(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const extraItems = getExtraItems ? getExtraItems(onMenuClose) : null;\n\n return (\n <Menu\n anchorEl={config?.anchorElement}\n anchorPosition={config?.position}\n anchorReference={config?.anchorElement ? 'anchorEl' : 'anchorPosition'}\n onClose={onMenuClose}\n open={!!config}\n >\n {extraItems}\n <MenuItem\n disabled={componentCaseIds.length === 0}\n onClick={onMenuSelectClick}\n >\n <ListItemIcon>\n <PlaylistAddCheckIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Select rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)}\n onClick={onAddToSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistAddIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Add to selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)}\n onClick={onRemoveFromSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistRemoveIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Remove from selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRefineSelection(componentCaseIds, selectedIds)}\n onClick={onRefineSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistPlayIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Refine selected rows (intersect)`}\n </ListItemText>\n </MenuItem>\n </Menu>\n );\n};\n"],"mappings":";;;;;;;;;;;;AA4CA,IAAa,KAAe,EAAE,WAAQ,kBAAe,qBAAoC;CACvF,IAAM,EAAE,SAAM,EAAe,GACvB,IAAiB,EAAI,CAAqB,GAC1C,IAAc,EAAS,IAAiB,MAAU,EAAM,WAAW,GACnE,IAAiB,EAAS,IAAiB,MAAU,EAAM,cAAc,GAEzE,IAAmB,QACnB,GAAQ,4BACH,EAAO,0BAA0B,EAAO,aAAa,IAE1D,GAAQ,UACH,EAAO,UAET,CAAC,GACP,CAAC,CAAM,CAAC;CAEX,QAAgB;EACd,IAAM,IAAa,GAAQ;EACvB,OAAC,KAAe,CAAC,EAAW,WAAW,CAAC,EAAW,UAGvD;OAAI,EAAkB,kBAAkB,GAAkB,CAAW,GAAG;IAEtE,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;IACZ;GACF;GACA,IAAI,EAAkB,uBAAuB,GAAkB,CAAW,GAAG;IAE3E,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;IACZ;GACF;EALA;CAMF,GAAG;EAAC;EAAkB,GAAQ;EAAY;EAAa;EAAgB;CAAW,CAAC;CAGnF,IAAM,IAAoB,QAAkB;EAE1C,AADA,EAAe,CAAgB,GAC/B,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;CAAc,CAAC,GAE5C,IAAgC,QAAkB;EAEtD,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAqC,QAAkB;EAE3D,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAiC,QAAkB;EAEvD,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAa,IAAgB,EAAc,CAAW,IAAI;CAEhE,OACE,kBAAC,GAAD;EACE,UAAU,GAAQ;EAClB,gBAAgB,GAAQ;EACxB,iBAAiB,GAAQ,gBAAgB,aAAa;EACtD,SAAS;EACT,MAAM,CAAC,CAAC;YALV;GAOG;GACD,kBAAC,GAAD;IACE,UAAU,EAAiB,WAAW;IACtC,SAAS;cAFX,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,UAAU,QAAU,CAAA,EAC9B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,cACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,kBAAkB,GAAkB,CAAW;IAC5E,SAAS;cAFX,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiB,UAAU,QAAU,CAAA,EACzB,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,uBACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,uBAAuB,GAAkB,CAAW;IACjF,SAAS;cAFX,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAU,QAAU,CAAA,EAC5B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,4BACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,mBAAmB,GAAkB,CAAW;IAC7E,SAAS;cAFX,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAkB,UAAU,QAAU,CAAA,EAC1B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,mCACU,CAAA,CACN;;EACN;;AAEV"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import type { PopoverPosition } from '@mui/material';\nimport {\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material';\nimport PlaylistAddCheckIcon from '@mui/icons-material/PlaylistAddCheck';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport PlaylistRemoveIcon from '@mui/icons-material/PlaylistRemove';\nimport PlaylistPlayIcon from '@mui/icons-material/PlaylistPlay';\nimport type { ReactElement } from 'react';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useStore } from 'zustand';\n\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { CaseSelectionUtil } from '../../../utils/CaseSelectionUtil';\n\nexport type ContextMenuConfigWithAnchor = {\n anchorElement?: Element;\n mouseEvent?: MouseEvent;\n parseIdsFromAnchorElement?: (element: Element) => string[];\n};\n\nexport type ContextMenuConfigWithPosition = {\n caseIds?: string[];\n mouseEvent?: MouseEvent;\n position?: PopoverPosition;\n};\n\nexport type ContextMenuProps = {\n readonly config: ContextMenuConfig;\n readonly getExtraItems?: (onMenuClose?: () => void) => ReactElement;\n readonly onMenuClose: () => void;\n};\n\ntype ContextMenuConfig = ContextMenuConfigWithAnchor & ContextMenuConfigWithPosition;\n\nexport const ContextMenu = ({ config, getExtraItems, onMenuClose }: ContextMenuProps) => {\n const { t } = useTranslation();\n const dashboardStore = use(DashboardStoreContext);\n const selectedIds = useStore(dashboardStore, (state) => state.selectedIds);\n const setSelectedIds = useStore(dashboardStore, (state) => state.setSelectedIds);\n\n const componentCaseIds = useMemo(() => {\n if (config?.parseIdsFromAnchorElement) {\n return config.parseIdsFromAnchorElement(config.anchorElement);\n }\n if (config?.caseIds) {\n return config.caseIds;\n }\n return [];\n }, [config]);\n\n useEffect(() => {\n const mouseEvent = config?.mouseEvent;\n if (!mouseEvent || (!mouseEvent.metaKey && !mouseEvent.ctrlKey)) {\n return;\n }\n if (CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n if (CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)) {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n return;\n }\n }, [componentCaseIds, config?.mouseEvent, selectedIds, setSelectedIds, onMenuClose]);\n\n\n const onMenuSelectClick = useCallback(() => {\n setSelectedIds(componentCaseIds);\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds]);\n\n const onAddToSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.addComponentCaseIdsToSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRemoveFromSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.removeComponentCaseIdsFromSelection(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const onRefineSelectionMenuItemClick = useCallback(() => {\n setSelectedIds(CaseSelectionUtil.refineSelectionWithComponentCaseIds(componentCaseIds, selectedIds));\n onMenuClose();\n }, [componentCaseIds, onMenuClose, setSelectedIds, selectedIds]);\n\n const extraItems = getExtraItems ? getExtraItems(onMenuClose) : null;\n\n return (\n <Menu\n anchorEl={config?.anchorElement}\n anchorPosition={config?.position}\n anchorReference={config?.anchorElement ? 'anchorEl' : 'anchorPosition'}\n onClose={onMenuClose}\n open={!!config}\n >\n {extraItems}\n <MenuItem\n disabled={componentCaseIds.length === 0}\n onClick={onMenuSelectClick}\n >\n <ListItemIcon>\n <PlaylistAddCheckIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Select rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canAddToSelection(componentCaseIds, selectedIds)}\n onClick={onAddToSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistAddIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Add to selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRemoveFromSelection(componentCaseIds, selectedIds)}\n onClick={onRemoveFromSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistRemoveIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Remove from selected rows`}\n </ListItemText>\n </MenuItem>\n <MenuItem\n disabled={!CaseSelectionUtil.canRefineSelection(componentCaseIds, selectedIds)}\n onClick={onRefineSelectionMenuItemClick}\n >\n <ListItemIcon>\n <PlaylistPlayIcon fontSize={'small'} />\n </ListItemIcon>\n <ListItemText>\n {t`Refine selected rows (intersect)`}\n </ListItemText>\n </MenuItem>\n </Menu>\n );\n};\n"],"mappings":";;;;;;;;;;;;AA4CA,IAAa,KAAe,EAAE,WAAQ,kBAAe,qBAAoC;CACvF,IAAM,EAAE,SAAM,EAAe,GACvB,IAAiB,EAAI,CAAqB,GAC1C,IAAc,EAAS,IAAiB,MAAU,EAAM,WAAW,GACnE,IAAiB,EAAS,IAAiB,MAAU,EAAM,cAAc,GAEzE,IAAmB,QACnB,GAAQ,4BACH,EAAO,0BAA0B,EAAO,aAAa,IAE1D,GAAQ,UACH,EAAO,UAET,CAAC,GACP,CAAC,CAAM,CAAC;CAEX,QAAgB;EACd,IAAM,IAAa,GAAQ;EACvB,OAAC,KAAe,CAAC,EAAW,WAAW,CAAC,EAAW,UAGvD;OAAI,EAAkB,kBAAkB,GAAkB,CAAW,GAAG;IAEtE,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;IACZ;GACF;GACA,IAAI,EAAkB,uBAAuB,GAAkB,CAAW,GAAG;IAE3E,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;IACZ;GACF;EALA;CAMF,GAAG;EAAC;EAAkB,GAAQ;EAAY;EAAa;EAAgB;CAAW,CAAC;CAGnF,IAAM,IAAoB,QAAkB;EAE1C,AADA,EAAe,CAAgB,GAC/B,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;CAAc,CAAC,GAE5C,IAAgC,QAAkB;EAEtD,AADA,EAAe,EAAkB,+BAA+B,GAAkB,CAAW,CAAC,GAC9F,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAqC,QAAkB;EAE3D,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAiC,QAAkB;EAEvD,AADA,EAAe,EAAkB,oCAAoC,GAAkB,CAAW,CAAC,GACnG,EAAY;CACd,GAAG;EAAC;EAAkB;EAAa;EAAgB;CAAW,CAAC,GAEzD,IAAa,IAAgB,EAAc,CAAW,IAAI;CAEhE,OACE,kBAAC,GAAD;EACE,UAAU,GAAQ;EAClB,gBAAgB,GAAQ;EACxB,iBAAiB,GAAQ,gBAAgB,aAAa;EACtD,SAAS;EACT,MAAM,CAAC,CAAC;EALV,UAAA;GAOG;GACD,kBAAC,GAAD;IACE,UAAU,EAAiB,WAAW;IACtC,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAsB,UAAU,QAAU,CAAA,EAC9B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,cACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,kBAAkB,GAAkB,CAAW;IAC5E,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiB,UAAU,QAAU,CAAA,EACzB,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,uBACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,uBAAuB,GAAkB,CAAW;IACjF,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAoB,UAAU,QAAU,CAAA,EAC5B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,4BACU,CAAA,CACN;;GACV,kBAAC,GAAD;IACE,UAAU,CAAC,EAAkB,mBAAmB,GAAkB,CAAW;IAC7E,SAAS;IAFX,UAAA,CAIE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAkB,UAAU,QAAU,CAAA,EAC1B,CAAA,GACd,kBAAC,GAAD,EAAA,UACG,CAAC,mCACU,CAAA,CACN;;EACN;;AAEV"}
@@ -1,5 +1,5 @@
1
1
  import { CaseDbCase, CaseDbCompleteCaseType } from '@gen-epix/api-casedb';
2
- import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui/hoc/withDialog';
2
+ import { WithDialogRefMethods, WithDialogRenderProps } from '@gen-epix/ui-core-components/hoc/withDialog';
3
3
  export interface CreateEventDialogOpenProps {
4
4
  readonly completeCaseType?: CaseDbCompleteCaseType;
5
5
  readonly rows?: CaseDbCase[];
@@ -7,4 +7,4 @@ export interface CreateEventDialogOpenProps {
7
7
  export interface CreateEventDialogProps extends WithDialogRenderProps<CreateEventDialogOpenProps> {
8
8
  }
9
9
  export type CreateEventDialogRefMethods = WithDialogRefMethods<CreateEventDialogProps, CreateEventDialogOpenProps>;
10
- export declare const CreateEventDialog: import('react').ComponentClass<CreateEventDialogProps, import('@gen-epix/ui/hoc/withDialog').WithDialogState<CreateEventDialogOpenProps>>;
10
+ export declare const CreateEventDialog: import('react').ComponentClass<CreateEventDialogProps, import('@gen-epix/ui-core-components/hoc/withDialog').WithDialogState<CreateEventDialogOpenProps>>;
@@ -11,22 +11,22 @@ import { useCaseSetStatusOptionsQuery as ne } from "../../../dataHooks/useCaseSe
11
11
  import { t as c } from "../../../_chunks/CasesAlreadyInCaseSetWarning.js";
12
12
  import { array as re, boolean as ie, object as l, string as u } from "yup";
13
13
  import { CaseDbCaseApi as d } from "@gen-epix/api-casedb";
14
- import { QueryClientService as f } from "@gen-epix/ui/classes/services/QueryClientService";
15
- import { FORM_FIELD_DEFINITION_TYPE as p } from "@gen-epix/ui-form/models/form";
14
+ import { QueryClientService as f } from "@gen-epix/ui-client-common/classes/services/QueryClientService";
15
+ import { FORM_FIELD_DEFINITION_TYPE as p } from "@gen-epix/ui-core-form/models/form";
16
16
  import { Alert as m, Box as h } from "@mui/material";
17
17
  import { useCallback as g, useEffect as _, useId as ae, useMemo as v } from "react";
18
18
  import { useTranslation as oe } from "react-i18next";
19
19
  import { jsx as y, jsxs as b } from "react/jsx-runtime";
20
- import { ResponseHandler as se } from "@gen-epix/ui/components/ui/ResponseHandler";
21
- import { useItemQuery as ce } from "@gen-epix/ui/hooks/useItemQuery";
20
+ import { ResponseHandler as se } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
21
+ import { useItemQuery as ce } from "@gen-epix/ui-client-common/hooks/useItemQuery";
22
22
  import { useArray as le } from "@gen-epix/ui-core/hooks/useArray";
23
- import { GenericForm as ue } from "@gen-epix/ui-form/components/helpers/GenericForm";
24
- import { withDialog as x } from "@gen-epix/ui/hoc/withDialog";
23
+ import { GenericForm as ue } from "@gen-epix/ui-core-form/components/helpers/GenericForm";
24
+ import { withDialog as x } from "@gen-epix/ui-core-components/hoc/withDialog";
25
25
  import { TestIdUtil as S } from "@gen-epix/ui-core/utils/TestIdUtil";
26
26
  import C from "@mui/icons-material/Save";
27
- import { SchemaUtil as w } from "@gen-epix/ui-form/utils/SchemaUtil";
28
- import { LoadableUtil as T } from "@gen-epix/ui/utils/LoadableUtil";
29
- import { useCreateMutation as E } from "@gen-epix/ui/hooks/useCreateMutation";
27
+ import { SchemaUtil as w } from "@gen-epix/ui-core-form/utils/SchemaUtil";
28
+ import { LoadableUtil as T } from "@gen-epix/ui-client-common/utils/LoadableUtil";
29
+ import { useCreateMutation as E } from "@gen-epix/ui-client-common/hooks/useCreateMutation";
30
30
  //#region src/components/ui/CreateEventDialog/CreateEventDialog.tsx
31
31
  var D = x(({ onActionsChange: x, onClose: D, onTitleChange: O, openProps: k }) => {
32
32
  let A = o(), j = te(), M = ne(), N = s(), { t: P } = oe(), F = ae(), I = v(() => l().shape({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CreateEventDialog/CreateEventDialog.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useId,\n useMemo,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n boolean,\n object,\n string,\n} from 'yup';\nimport {\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport type { Resolver } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport {\n Alert,\n Box,\n} from '@mui/material';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbCompleteCaseType,\n} from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { DialogAction } from '@gen-epix/ui/components/ui/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui/hoc/withDialog';\nimport { LoadableUtil } from '@gen-epix/ui/utils/LoadableUtil';\nimport { QueryClientService } from '@gen-epix/ui/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui/components/ui/ResponseHandler';\nimport { useCreateMutation } from '@gen-epix/ui/hooks/useCreateMutation';\nimport { useItemQuery } from '@gen-epix/ui/hooks/useItemQuery';\nimport { withDialog } from '@gen-epix/ui/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { GenericForm } from '@gen-epix/ui-form/components/helpers/GenericForm';\nimport type {\n AutoCompleteOption,\n FormFieldDefinition,\n} from '@gen-epix/ui-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-form/utils/SchemaUtil';\n\nimport { EventBusService } from '../../../classes/services/EventBusService';\nimport { useCaseSetCategoryOptionsQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusOptionsQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeOptionsQuery } from '../../../dataHooks/useCaseTypesQuery';\nimport { useDataCollectionOptionsQuery } from '../../../dataHooks/useDataCollectionsQuery';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CasesAlreadyInCaseSetWarning } from '../CasesAlreadyInCaseSetWarning';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CreateEventDialogSuccessNotificationMessage } from './CreateEventDialogSuccessNotificationMessage';\n\nexport interface CreateEventDialogOpenProps {\n readonly completeCaseType?: CaseDbCompleteCaseType;\n readonly rows?: CaseDbCase[];\n}\n\nexport interface CreateEventDialogProps extends WithDialogRenderProps<CreateEventDialogOpenProps> {\n}\n\nexport type CreateEventDialogRefMethods = WithDialogRefMethods<CreateEventDialogProps, CreateEventDialogOpenProps>;\n\ntype FormFields = {\n case_set_category_id: string;\n case_set_status_id: string;\n case_type_id: string;\n code: string;\n create_in_data_collection_id: string;\n description: string;\n name: string;\n share_in_data_collection_ids: string[];\n shouldApplySharingToCases: boolean;\n};\n\nexport const CreateEventDialog = withDialog<CreateEventDialogProps, CreateEventDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onTitleChange,\n openProps,\n }: CreateEventDialogProps,\n): ReactElement => {\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const caseSetCategoryOptionsQuery = useCaseSetCategoryOptionsQuery();\n const caseSetStatusOptionsQuery = useCaseSetStatusOptionsQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const { t } = useTranslation();\n const formId = useId();\n\n const schema = useMemo(() => object<FormFields>().shape({\n case_set_category_id: string().uuid4().required(),\n case_set_status_id: string().uuid4().required(),\n case_type_id: string().uuid4().required(),\n code: SchemaUtil.code,\n create_in_data_collection_id: string().uuid4().required(),\n description: SchemaUtil.description.required(),\n name: SchemaUtil.name,\n share_in_data_collection_ids: array().of(string().uuid4()),\n shouldApplySharingToCases: boolean().required(),\n }), []);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as Resolver<FormFields>,\n values: {\n case_set_category_id: null,\n case_set_status_id: null,\n case_type_id: openProps.completeCaseType?.id ?? null,\n code: '',\n create_in_data_collection_id: null,\n description: '',\n name: openProps.completeCaseType ? t('New {{eventName}} event', { eventName: openProps.completeCaseType.name }) : '',\n share_in_data_collection_ids: [],\n shouldApplySharingToCases: true,\n },\n });\n const { control, handleSubmit, setValue } = formMethods;\n\n const { case_type_id: userSelectedCaseTypeId, create_in_data_collection_id: createdInDataCollectionId, share_in_data_collection_ids: sharedInDataCollectionIds } = useWatch({ control });\n\n const sanitizedCompleteCaseTypeId = openProps.completeCaseType?.id ?? userSelectedCaseTypeId;\n\n const { data: loadedCompleteCaseType, error: completeCaseTypeError, isLoading: isCompleteCaseTypeLoading } = useItemQuery({\n baseQueryKey: CASEDB_QUERY_KEY.COMPLETE_CASE_TYPES,\n itemId: sanitizedCompleteCaseTypeId,\n useQueryOptions: {\n enabled: !openProps.completeCaseType && !!sanitizedCompleteCaseTypeId,\n queryFn: async ({ signal }) => {\n return (await CaseDbCaseApi.getInstance().completeCaseTypesGetOne(sanitizedCompleteCaseTypeId, { signal })).data;\n },\n },\n });\n\n const completeCaseType = openProps.completeCaseType ?? loadedCompleteCaseType;\n\n const createInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType || !dataCollectionOptionsQuery.options?.length) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return completeCaseType.case_type_access_abacs[dataCollectionId]?.is_private && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, dataCollectionOptionsQuery.options]);\n\n const shareInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return createdInDataCollectionId !== dataCollectionId && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, createdInDataCollectionId, dataCollectionOptionsQuery.options]);\n\n useEffect(() => {\n // Validate if the createdInDataCollectionId is in the shareInDataCollectionIds\n // If it is, remove it from the shareInDataCollectionIds\n if (sharedInDataCollectionIds?.length && sharedInDataCollectionIds.includes(createdInDataCollectionId)) {\n setValue('share_in_data_collection_ids', sharedInDataCollectionIds.filter(id => id !== createdInDataCollectionId));\n }\n }, [createdInDataCollectionId, setValue, sharedInDataCollectionIds]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n return;\n }\n setValue('create_in_data_collection_id', null);\n setValue('share_in_data_collection_ids', []);\n }, [completeCaseType, openProps.completeCaseType, setValue]);\n\n useEffect(() => {\n if (dataCollectionOptionsQuery.isLoading || !createInDataCollectionOptions?.length) {\n return;\n }\n\n if (createInDataCollectionOptions?.length === 1) {\n setValue('create_in_data_collection_id', createInDataCollectionOptions[0].value as string);\n }\n }, [createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, setValue]);\n\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!openProps.completeCaseType,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Create in data collection`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'create_in_data_collection_id',\n options: createInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Share in data collections`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n multiple: true,\n name: 'share_in_data_collection_ids',\n options: shareInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: sharedInDataCollectionIds.length === 0 || !openProps.rows?.length,\n label: t`Should the same sharing be applied to the cases in the event?`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'shouldApplySharingToCases',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseSetCategoryOptionsQuery.isLoading,\n name: 'case_set_category_id',\n options: caseSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Status`,\n loading: caseSetStatusOptionsQuery.isLoading,\n name: 'case_set_status_id',\n options: caseSetStatusOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseSetCategoryOptionsQuery.isLoading, caseSetCategoryOptionsQuery.options, caseSetStatusOptionsQuery.isLoading, caseSetStatusOptionsQuery.options, caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, isCompleteCaseTypeLoading, openProps.completeCaseType, openProps.rows?.length, shareInDataCollectionOptions, sharedInDataCollectionIds.length, t]);\n\n const loadables = useArray([\n caseTypeOptionsQuery,\n caseSetCategoryOptionsQuery,\n caseSetStatusOptionsQuery,\n dataCollectionOptionsQuery,\n ]);\n\n\n const isLoading = LoadableUtil.isSomeLoading(loadables);\n\n const onSuccess = useCallback(async (item: CaseDbCaseSet, variables: FormFields) => {\n if (variables.shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseIds: openProps.rows ? openProps.rows.map(row => row.id) : undefined,\n caseSetDataCollectionIds: variables.share_in_data_collection_ids,\n caseSetId: item.id,\n caseTypeId: completeCaseType.id,\n });\n }\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [completeCaseType?.id, onClose, openProps.rows]);\n\n const onError = useCallback(() => {\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [onClose]);\n\n const { isMutating: isCreating, mutate: mutateCreate } = useCreateMutation<CaseDbCaseSet, FormFields>({\n associationQueryKeys: [\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SETS]),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_MEMBERS], true),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.DATA_COLLECTION_SET_MEMBERS], true),\n ],\n getErrorNotificationMessage: (item, _error) => t('Failed to create event: {{name}}', { name: item.name }),\n getProgressNotificationMessage: (variables) => t('Creating event: {{name}}...', { name: variables.name }),\n getSuccessNotificationMessage: (item) => (\n <CreateEventDialogSuccessNotificationMessage\n caseSet={item}\n isCreating\n />\n ),\n onError,\n onSuccess,\n queryFn: async (formData: FormFields): Promise<CaseDbCaseSet> => {\n const caseSetResult = (await CaseDbCaseApi.getInstance().createCaseSet({\n case_ids: openProps.rows?.map(row => row.id) ?? [],\n case_set: {\n case_set_category_id: formData.case_set_category_id,\n case_set_status_id: formData.case_set_status_id,\n case_type_id: formData.case_type_id,\n code: formData.code,\n created_in_data_collection_id: formData.create_in_data_collection_id,\n description: formData.description,\n name: formData.name,\n },\n data_collection_ids: formData.share_in_data_collection_ids,\n })).data;\n\n return caseSetResult;\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n const isFormDisabled = useMemo(() => {\n return isLoading || caseTypeOptionsQuery.options?.length === 0 || dataCollectionOptionsQuery.options?.length === 0;\n }, [isLoading, caseTypeOptionsQuery.options?.length, dataCollectionOptionsQuery.options?.length]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n if (isLoading || !isFormDisabled) {\n actions.push({\n ...TestIdUtil.createAttributes('CreateEventDialog-saveButton'),\n autoFocus: true,\n color: 'secondary',\n disabled: isLoading || isCreating,\n form: formId,\n label: t`Save`,\n loading: isLoading,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n });\n }\n onActionsChange(actions);\n }, [formId, isCreating, isLoading, onActionsChange, t, caseTypeOptionsQuery.options?.length, isFormDisabled]);\n\n const onFormSubmit = useCallback((formData: FormFields) => {\n mutateCreate(formData);\n }, [mutateCreate]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n if (openProps.rows?.length) {\n onTitleChange(t('Create new event from {{numCases}} selected {{caseTypeName}} cases', { caseTypeName: openProps.completeCaseType.name, numCases: openProps.rows.length }));\n } else {\n onTitleChange(t('Create event'));\n }\n } else {\n onTitleChange(t('Create event'));\n }\n }, [onTitleChange, openProps, t]);\n\n return (\n <ResponseHandler\n error={completeCaseTypeError}\n inlineSpinner\n isLoading={isCreating}\n loadables={loadables}\n >\n {isFormDisabled ? (\n <Box>\n <Alert severity={'error'}>\n {t`You do not have the required permissions to create an event. Contact your organization administrator for assistance.`}\n </Alert>\n </Box>\n ) : (\n <GenericForm<FormFields>\n disableAll={isFormDisabled}\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n )}\n {openProps.rows?.length > 0 && (\n <CasesAlreadyInCaseSetWarning\n cases={openProps.rows}\n />\n )}\n </ResponseHandler>\n );\n}, {\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CreateEventDialog',\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/CreateEventDialog/CreateEventDialog.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useId,\n useMemo,\n} from 'react';\nimport type { ReactElement } from 'react';\nimport SaveIcon from '@mui/icons-material/Save';\nimport { useTranslation } from 'react-i18next';\nimport {\n array,\n boolean,\n object,\n string,\n} from 'yup';\nimport {\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport type { Resolver } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport {\n Alert,\n Box,\n} from '@mui/material';\nimport type {\n CaseDbCase,\n CaseDbCaseSet,\n CaseDbCompleteCaseType,\n} from '@gen-epix/api-casedb';\nimport { CaseDbCaseApi } from '@gen-epix/api-casedb';\nimport type { DialogAction } from '@gen-epix/ui-core-components/components/Dialog';\nimport type {\n WithDialogRefMethods,\n WithDialogRenderProps,\n} from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { LoadableUtil } from '@gen-epix/ui-client-common/utils/LoadableUtil';\nimport { QueryClientService } from '@gen-epix/ui-client-common/classes/services/QueryClientService';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useCreateMutation } from '@gen-epix/ui-client-common/hooks/useCreateMutation';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\nimport { withDialog } from '@gen-epix/ui-core-components/hoc/withDialog';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type {\n AutoCompleteOption,\n FormFieldDefinition,\n} from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport { SchemaUtil } from '@gen-epix/ui-core-form/utils/SchemaUtil';\n\nimport { EventBusService } from '../../../classes/services/EventBusService';\nimport { useCaseSetCategoryOptionsQuery } from '../../../dataHooks/useCaseSetCategoriesQuery';\nimport { useCaseSetStatusOptionsQuery } from '../../../dataHooks/useCaseSetStatusesQuery';\nimport { useCaseTypeOptionsQuery } from '../../../dataHooks/useCaseTypesQuery';\nimport { useDataCollectionOptionsQuery } from '../../../dataHooks/useDataCollectionsQuery';\nimport { CaseUtil } from '../../../utils/CaseUtil';\nimport { CasesAlreadyInCaseSetWarning } from '../CasesAlreadyInCaseSetWarning';\nimport { CASEDB_QUERY_KEY } from '../../../constants/query';\n\nimport { CreateEventDialogSuccessNotificationMessage } from './CreateEventDialogSuccessNotificationMessage';\n\nexport interface CreateEventDialogOpenProps {\n readonly completeCaseType?: CaseDbCompleteCaseType;\n readonly rows?: CaseDbCase[];\n}\n\nexport interface CreateEventDialogProps extends WithDialogRenderProps<CreateEventDialogOpenProps> {\n}\n\nexport type CreateEventDialogRefMethods = WithDialogRefMethods<CreateEventDialogProps, CreateEventDialogOpenProps>;\n\ntype FormFields = {\n case_set_category_id: string;\n case_set_status_id: string;\n case_type_id: string;\n code: string;\n create_in_data_collection_id: string;\n description: string;\n name: string;\n share_in_data_collection_ids: string[];\n shouldApplySharingToCases: boolean;\n};\n\nexport const CreateEventDialog = withDialog<CreateEventDialogProps, CreateEventDialogOpenProps>((\n {\n onActionsChange,\n onClose,\n onTitleChange,\n openProps,\n }: CreateEventDialogProps,\n): ReactElement => {\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const caseSetCategoryOptionsQuery = useCaseSetCategoryOptionsQuery();\n const caseSetStatusOptionsQuery = useCaseSetStatusOptionsQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const { t } = useTranslation();\n const formId = useId();\n\n const schema = useMemo(() => object<FormFields>().shape({\n case_set_category_id: string().uuid4().required(),\n case_set_status_id: string().uuid4().required(),\n case_type_id: string().uuid4().required(),\n code: SchemaUtil.code,\n create_in_data_collection_id: string().uuid4().required(),\n description: SchemaUtil.description.required(),\n name: SchemaUtil.name,\n share_in_data_collection_ids: array().of(string().uuid4()),\n shouldApplySharingToCases: boolean().required(),\n }), []);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as Resolver<FormFields>,\n values: {\n case_set_category_id: null,\n case_set_status_id: null,\n case_type_id: openProps.completeCaseType?.id ?? null,\n code: '',\n create_in_data_collection_id: null,\n description: '',\n name: openProps.completeCaseType ? t('New {{eventName}} event', { eventName: openProps.completeCaseType.name }) : '',\n share_in_data_collection_ids: [],\n shouldApplySharingToCases: true,\n },\n });\n const { control, handleSubmit, setValue } = formMethods;\n\n const { case_type_id: userSelectedCaseTypeId, create_in_data_collection_id: createdInDataCollectionId, share_in_data_collection_ids: sharedInDataCollectionIds } = useWatch({ control });\n\n const sanitizedCompleteCaseTypeId = openProps.completeCaseType?.id ?? userSelectedCaseTypeId;\n\n const { data: loadedCompleteCaseType, error: completeCaseTypeError, isLoading: isCompleteCaseTypeLoading } = useItemQuery({\n baseQueryKey: CASEDB_QUERY_KEY.COMPLETE_CASE_TYPES,\n itemId: sanitizedCompleteCaseTypeId,\n useQueryOptions: {\n enabled: !openProps.completeCaseType && !!sanitizedCompleteCaseTypeId,\n queryFn: async ({ signal }) => {\n return (await CaseDbCaseApi.getInstance().completeCaseTypesGetOne(sanitizedCompleteCaseTypeId, { signal })).data;\n },\n },\n });\n\n const completeCaseType = openProps.completeCaseType ?? loadedCompleteCaseType;\n\n const createInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType || !dataCollectionOptionsQuery.options?.length) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return completeCaseType.case_type_access_abacs[dataCollectionId]?.is_private && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, dataCollectionOptionsQuery.options]);\n\n const shareInDataCollectionOptions = useMemo<AutoCompleteOption[]>(() => {\n if (!completeCaseType) {\n return [];\n }\n return dataCollectionOptionsQuery.options.filter(option => {\n const dataCollectionId = option.value;\n return createdInDataCollectionId !== dataCollectionId && completeCaseType.case_type_access_abacs[dataCollectionId]?.add_case_set;\n });\n }, [completeCaseType, createdInDataCollectionId, dataCollectionOptionsQuery.options]);\n\n useEffect(() => {\n // Validate if the createdInDataCollectionId is in the shareInDataCollectionIds\n // If it is, remove it from the shareInDataCollectionIds\n if (sharedInDataCollectionIds?.length && sharedInDataCollectionIds.includes(createdInDataCollectionId)) {\n setValue('share_in_data_collection_ids', sharedInDataCollectionIds.filter(id => id !== createdInDataCollectionId));\n }\n }, [createdInDataCollectionId, setValue, sharedInDataCollectionIds]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n return;\n }\n setValue('create_in_data_collection_id', null);\n setValue('share_in_data_collection_ids', []);\n }, [completeCaseType, openProps.completeCaseType, setValue]);\n\n useEffect(() => {\n if (dataCollectionOptionsQuery.isLoading || !createInDataCollectionOptions?.length) {\n return;\n }\n\n if (createInDataCollectionOptions?.length === 1) {\n setValue('create_in_data_collection_id', createInDataCollectionOptions[0].value as string);\n }\n }, [createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, setValue]);\n\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !!openProps.completeCaseType,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'case_type_id',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Create in data collection`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'create_in_data_collection_id',\n options: createInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Share in data collections`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n multiple: true,\n name: 'share_in_data_collection_ids',\n options: shareInDataCollectionOptions,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: sharedInDataCollectionIds.length === 0 || !openProps.rows?.length,\n label: t`Should the same sharing be applied to the cases in the event?`,\n loading: dataCollectionOptionsQuery.isLoading || isCompleteCaseTypeLoading,\n name: 'shouldApplySharingToCases',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event name`,\n name: 'name',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD,\n label: t`Event code`,\n name: 'code',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT,\n label: t`Description`,\n name: 'description',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Category`,\n loading: caseSetCategoryOptionsQuery.isLoading,\n name: 'case_set_category_id',\n options: caseSetCategoryOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Status`,\n loading: caseSetStatusOptionsQuery.isLoading,\n name: 'case_set_status_id',\n options: caseSetStatusOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseSetCategoryOptionsQuery.isLoading, caseSetCategoryOptionsQuery.options, caseSetStatusOptionsQuery.isLoading, caseSetStatusOptionsQuery.options, caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, createInDataCollectionOptions, dataCollectionOptionsQuery.isLoading, isCompleteCaseTypeLoading, openProps.completeCaseType, openProps.rows?.length, shareInDataCollectionOptions, sharedInDataCollectionIds.length, t]);\n\n const loadables = useArray([\n caseTypeOptionsQuery,\n caseSetCategoryOptionsQuery,\n caseSetStatusOptionsQuery,\n dataCollectionOptionsQuery,\n ]);\n\n\n const isLoading = LoadableUtil.isSomeLoading(loadables);\n\n const onSuccess = useCallback(async (item: CaseDbCaseSet, variables: FormFields) => {\n if (variables.shouldApplySharingToCases) {\n await CaseUtil.applyDataCollectionLinks({\n caseIds: openProps.rows ? openProps.rows.map(row => row.id) : undefined,\n caseSetDataCollectionIds: variables.share_in_data_collection_ids,\n caseSetId: item.id,\n caseTypeId: completeCaseType.id,\n });\n }\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [completeCaseType?.id, onClose, openProps.rows]);\n\n const onError = useCallback(() => {\n EventBusService.getInstance().emit('onEventCreated');\n onClose();\n }, [onClose]);\n\n const { isMutating: isCreating, mutate: mutateCreate } = useCreateMutation<CaseDbCaseSet, FormFields>({\n associationQueryKeys: [\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SETS]),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.CASE_SET_MEMBERS], true),\n ...QueryClientService.getInstance().getQueryKeyDependencies([CASEDB_QUERY_KEY.DATA_COLLECTION_SET_MEMBERS], true),\n ],\n getErrorNotificationMessage: (item, _error) => t('Failed to create event: {{name}}', { name: item.name }),\n getProgressNotificationMessage: (variables) => t('Creating event: {{name}}...', { name: variables.name }),\n getSuccessNotificationMessage: (item) => (\n <CreateEventDialogSuccessNotificationMessage\n caseSet={item}\n isCreating\n />\n ),\n onError,\n onSuccess,\n queryFn: async (formData: FormFields): Promise<CaseDbCaseSet> => {\n const caseSetResult = (await CaseDbCaseApi.getInstance().createCaseSet({\n case_ids: openProps.rows?.map(row => row.id) ?? [],\n case_set: {\n case_set_category_id: formData.case_set_category_id,\n case_set_status_id: formData.case_set_status_id,\n case_type_id: formData.case_type_id,\n code: formData.code,\n created_in_data_collection_id: formData.create_in_data_collection_id,\n description: formData.description,\n name: formData.name,\n },\n data_collection_ids: formData.share_in_data_collection_ids,\n })).data;\n\n return caseSetResult;\n },\n resourceQueryKey: QueryClientService.getInstance().getGenericKey(CASEDB_QUERY_KEY.CASE_SETS),\n });\n\n const isFormDisabled = useMemo(() => {\n return isLoading || caseTypeOptionsQuery.options?.length === 0 || dataCollectionOptionsQuery.options?.length === 0;\n }, [isLoading, caseTypeOptionsQuery.options?.length, dataCollectionOptionsQuery.options?.length]);\n\n useEffect(() => {\n const actions: DialogAction[] = [];\n if (isLoading || !isFormDisabled) {\n actions.push({\n ...TestIdUtil.createAttributes('CreateEventDialog-saveButton'),\n autoFocus: true,\n color: 'secondary',\n disabled: isLoading || isCreating,\n form: formId,\n label: t`Save`,\n loading: isLoading,\n startIcon: <SaveIcon />,\n type: 'submit',\n variant: 'contained',\n });\n }\n onActionsChange(actions);\n }, [formId, isCreating, isLoading, onActionsChange, t, caseTypeOptionsQuery.options?.length, isFormDisabled]);\n\n const onFormSubmit = useCallback((formData: FormFields) => {\n mutateCreate(formData);\n }, [mutateCreate]);\n\n useEffect(() => {\n if (openProps.completeCaseType) {\n if (openProps.rows?.length) {\n onTitleChange(t('Create new event from {{numCases}} selected {{caseTypeName}} cases', { caseTypeName: openProps.completeCaseType.name, numCases: openProps.rows.length }));\n } else {\n onTitleChange(t('Create event'));\n }\n } else {\n onTitleChange(t('Create event'));\n }\n }, [onTitleChange, openProps, t]);\n\n return (\n <ResponseHandler\n error={completeCaseTypeError}\n inlineSpinner\n isLoading={isCreating}\n loadables={loadables}\n >\n {isFormDisabled ? (\n <Box>\n <Alert severity={'error'}>\n {t`You do not have the required permissions to create an event. Contact your organization administrator for assistance.`}\n </Alert>\n </Box>\n ) : (\n <GenericForm<FormFields>\n disableAll={isFormDisabled}\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(onFormSubmit)}\n schema={schema}\n />\n )}\n {openProps.rows?.length > 0 && (\n <CasesAlreadyInCaseSetWarning\n cases={openProps.rows}\n />\n )}\n </ResponseHandler>\n );\n}, {\n fullWidth: true,\n maxWidth: 'lg',\n testId: 'CreateEventDialog',\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SidebarItemSharedProps } from '@gen-epix/ui/components/ui/Sidebar';
1
+ import { SidebarItemSharedProps } from '@gen-epix/ui-client-common/components/ui/Sidebar';
2
2
  export type DashboardDownloadSidebarItemProps = SidebarItemSharedProps;
3
3
  export declare const DashboardDownloadSidebarItemIcon: import('@mui/material/OverridableComponent').OverridableComponent<import('@mui/material').SvgIconTypeMap<{}, "svg">> & {
4
4
  muiName: string;
@@ -1,4 +1,4 @@
1
- import { SidebarItemSharedProps } from '@gen-epix/ui/components/ui/Sidebar';
1
+ import { SidebarItemSharedProps } from '@gen-epix/ui-client-common/components/ui/Sidebar';
2
2
  export type DashboardSettingsSidebarItemProps = {
3
3
  readonly onReset: () => void;
4
4
  } & SidebarItemSharedProps;
@@ -1,5 +1,5 @@
1
1
  import { PropsWithChildren, ReactNode } from 'react';
2
- import { MenuItemData } from '@gen-epix/ui/models/nestedMenu';
2
+ import { MenuItemData } from '@gen-epix/ui-core-components/models/nestedMenu';
3
3
  export type DashboardWidgetProps = PropsWithChildren<{
4
4
  readonly expandDisabled?: boolean;
5
5
  readonly isLoading?: boolean;
@@ -8,7 +8,7 @@ import { useCaseRightsQuery as c } from "../../../dataHooks/useCaseRightsQuery/i
8
8
  import { use as l, useCallback as u, useEffect as d, useMemo as f } from "react";
9
9
  import { useTranslation as p } from "react-i18next";
10
10
  import { jsx as m } from "react/jsx-runtime";
11
- import { ResponseHandler as h } from "@gen-epix/ui/components/ui/ResponseHandler";
11
+ import { ResponseHandler as h } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
12
12
  import { useArray as g } from "@gen-epix/ui-core/hooks/useArray";
13
13
  //#region src/components/ui/DashboardEditCases/DashboardEditCases.tsx
14
14
  var _ = /* @__PURE__ */ e(t(), 1), v = ({ cases: e, onClose: t }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/DashboardEditCases/DashboardEditCases.tsx"],"sourcesContent":["import type {\n CaseDbCase,\n CaseDbCaseForUpload,\n} from '@gen-epix/api-casedb';\nimport noop from 'lodash/noop';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useStore } from 'zustand';\nimport { useTranslation } from 'react-i18next';\nimport { ResponseHandler } from '@gen-epix/ui/components/ui/ResponseHandler';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\n\nimport {\n createUploadStore,\n STEP_ORDER_BULK_EDIT,\n UploadStoreContext,\n} from '../../../stores/uploadStore';\nimport { Upload } from '../Upload';\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { useCaseRightsQuery } from '../../../dataHooks/useCaseRightsQuery';\n\nexport type DashboardEditCasesProps = {\n cases: CaseDbCase[];\n onClose: () => void;\n};\n\nexport const DashboardEditCases = ({ cases, onClose }: DashboardEditCasesProps) => {\n const dashboardStore = use(DashboardStoreContext);\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const fetchData = useStore(dashboardStore, (state) => state.fetchData);\n const { t } = useTranslation();\n\n const caseRightsQuery = useCaseRightsQuery(cases.map(c => c.id), completeCaseType.id, cases.length > 0);\n\n const loadables = useArray([caseRightsQuery]);\n\n const caseRightsColMap = useMemo(() => {\n const map: { [colId: string]: string[] } = {};\n completeCaseType.ordered_col_ids.forEach(colId => {\n map[colId] = [];\n });\n\n if (!caseRightsQuery.data) {\n // build from completeCaseType (allow all cols) if caseRights not provided\n completeCaseType.ordered_col_ids.forEach(colId => {\n cases.forEach((caseItem) => {\n map[colId].push(caseItem.id);\n });\n });\n } else {\n // build from caseRights if provided\n caseRightsQuery.data.forEach((caseRight) => {\n if (caseRight.is_full_access) {\n completeCaseType.ordered_col_ids.forEach(colId => {\n map[colId].push(caseRight.case_id);\n });\n } else {\n caseRight.write_col_ids.forEach(colId => {\n if (!map[colId].includes(caseRight.case_id)) {\n map[colId].push(caseRight.case_id);\n }\n });\n }\n });\n }\n return map;\n }, [caseRightsQuery.data, cases, completeCaseType]);\n\n const casesForVerificationFromSourceData = useMemo<CaseDbCaseForUpload[]>(() => {\n return cases.map<CaseDbCaseForUpload>((caseItem) => ({\n case: {\n ...caseItem,\n },\n id: caseItem.id,\n } satisfies CaseDbCaseForUpload));\n }, [cases]);\n\n const onUploadComplete = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n const uploadStore = useMemo(() => createUploadStore({\n caseRightsColMap,\n casesForVerificationFromSourceData,\n completeCaseType,\n goBackFromFirstStepCallback: onClose,\n goBackFromFirstStepLabel: t`Back to line list`,\n onUploadComplete,\n stepOrder: STEP_ORDER_BULK_EDIT,\n uploadCompleteButtonCallback: onClose,\n uploadCompleteButtonLabel: t`Back to line list`,\n }), [caseRightsColMap, casesForVerificationFromSourceData, completeCaseType, onClose, onUploadComplete, t]);\n\n useEffect(() => {\n return () => {\n uploadStore.getState().destroy().catch(noop);\n };\n }, [uploadStore]);\n\n return (\n <ResponseHandler loadables={loadables}>\n <UploadStoreContext value={uploadStore}>\n <Upload />\n </UploadStoreContext>\n </ResponseHandler>\n );\n};\n"],"mappings":";;;;;;;;;;;;;mCA8Ba,KAAsB,EAAE,UAAO,iBAAuC;CACjF,IAAM,IAAiB,EAAI,CAAqB,GAC1C,IAAmB,EAAS,IAAiB,MAAU,EAAM,gBAAgB,GAC7E,IAAY,EAAS,IAAiB,MAAU,EAAM,SAAS,GAC/D,EAAE,SAAM,EAAe,GAEvB,IAAkB,EAAmB,EAAM,KAAI,MAAK,EAAE,EAAE,GAAG,EAAiB,IAAI,EAAM,SAAS,CAAC,GAEhG,IAAY,EAAS,CAAC,CAAe,CAAC,GAEtC,IAAmB,QAAc;EACrC,IAAM,IAAqC,CAAC;EA4B5C,OA3BA,EAAiB,gBAAgB,SAAQ,MAAS;GAChD,EAAI,KAAS,CAAC;EAChB,CAAC,GAEI,EAAgB,OASnB,EAAgB,KAAK,SAAS,MAAc;GAC1C,AAAI,EAAU,iBACZ,EAAiB,gBAAgB,SAAQ,MAAS;IAChD,EAAI,EAAM,CAAC,KAAK,EAAU,OAAO;GACnC,CAAC,IAED,EAAU,cAAc,SAAQ,MAAS;IACvC,AAAK,EAAI,EAAM,CAAC,SAAS,EAAU,OAAO,KACxC,EAAI,EAAM,CAAC,KAAK,EAAU,OAAO;GAErC,CAAC;EAEL,CAAC,IAnBD,EAAiB,gBAAgB,SAAQ,MAAS;GAChD,EAAM,SAAS,MAAa;IAC1B,EAAI,EAAM,CAAC,KAAK,EAAS,EAAE;GAC7B,CAAC;EACH,CAAC,GAiBI;CACT,GAAG;EAAC,EAAgB;EAAM;EAAO;CAAgB,CAAC,GAE5C,IAAqC,QAClC,EAAM,KAA0B,OAAc;EACnD,MAAM,EACJ,GAAG,EACL;EACA,IAAI,EAAS;CACf,EAAgC,GAC/B,CAAC,CAAK,CAAC,GAEJ,IAAmB,EAAY,YAAY;EAC/C,MAAM,EAAU;CAClB,GAAG,CAAC,CAAS,CAAC,GAER,IAAc,QAAc,EAAkB;EAClD;EACA;EACA;EACA,6BAA6B;EAC7B,0BAA0B,CAAC;EAC3B;EACA,WAAW;EACX,8BAA8B;EAC9B,2BAA2B,CAAC;CAC9B,CAAC,GAAG;EAAC;EAAkB;EAAoC;EAAkB;EAAS;EAAkB;CAAC,CAAC;CAQ1G,OANA,cACe;EACX,EAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAA,OAAI;CAC7C,GACC,CAAC,CAAW,CAAC,GAGd,kBAAC,GAAD;EAA4B;YAC1B,kBAAC,GAAD;GAAoB,OAAO;aACzB,kBAAC,GAAD,CAAS,CAAA;EACS,CAAA;CACL,CAAA;AAErB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/ui/DashboardEditCases/DashboardEditCases.tsx"],"sourcesContent":["import type {\n CaseDbCase,\n CaseDbCaseForUpload,\n} from '@gen-epix/api-casedb';\nimport noop from 'lodash/noop';\nimport {\n use,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { useStore } from 'zustand';\nimport { useTranslation } from 'react-i18next';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\n\nimport {\n createUploadStore,\n STEP_ORDER_BULK_EDIT,\n UploadStoreContext,\n} from '../../../stores/uploadStore';\nimport { Upload } from '../Upload';\nimport { DashboardStoreContext } from '../../../stores/dashboardStore';\nimport { useCaseRightsQuery } from '../../../dataHooks/useCaseRightsQuery';\n\nexport type DashboardEditCasesProps = {\n cases: CaseDbCase[];\n onClose: () => void;\n};\n\nexport const DashboardEditCases = ({ cases, onClose }: DashboardEditCasesProps) => {\n const dashboardStore = use(DashboardStoreContext);\n const completeCaseType = useStore(dashboardStore, (state) => state.completeCaseType);\n const fetchData = useStore(dashboardStore, (state) => state.fetchData);\n const { t } = useTranslation();\n\n const caseRightsQuery = useCaseRightsQuery(cases.map(c => c.id), completeCaseType.id, cases.length > 0);\n\n const loadables = useArray([caseRightsQuery]);\n\n const caseRightsColMap = useMemo(() => {\n const map: { [colId: string]: string[] } = {};\n completeCaseType.ordered_col_ids.forEach(colId => {\n map[colId] = [];\n });\n\n if (!caseRightsQuery.data) {\n // build from completeCaseType (allow all cols) if caseRights not provided\n completeCaseType.ordered_col_ids.forEach(colId => {\n cases.forEach((caseItem) => {\n map[colId].push(caseItem.id);\n });\n });\n } else {\n // build from caseRights if provided\n caseRightsQuery.data.forEach((caseRight) => {\n if (caseRight.is_full_access) {\n completeCaseType.ordered_col_ids.forEach(colId => {\n map[colId].push(caseRight.case_id);\n });\n } else {\n caseRight.write_col_ids.forEach(colId => {\n if (!map[colId].includes(caseRight.case_id)) {\n map[colId].push(caseRight.case_id);\n }\n });\n }\n });\n }\n return map;\n }, [caseRightsQuery.data, cases, completeCaseType]);\n\n const casesForVerificationFromSourceData = useMemo<CaseDbCaseForUpload[]>(() => {\n return cases.map<CaseDbCaseForUpload>((caseItem) => ({\n case: {\n ...caseItem,\n },\n id: caseItem.id,\n } satisfies CaseDbCaseForUpload));\n }, [cases]);\n\n const onUploadComplete = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n const uploadStore = useMemo(() => createUploadStore({\n caseRightsColMap,\n casesForVerificationFromSourceData,\n completeCaseType,\n goBackFromFirstStepCallback: onClose,\n goBackFromFirstStepLabel: t`Back to line list`,\n onUploadComplete,\n stepOrder: STEP_ORDER_BULK_EDIT,\n uploadCompleteButtonCallback: onClose,\n uploadCompleteButtonLabel: t`Back to line list`,\n }), [caseRightsColMap, casesForVerificationFromSourceData, completeCaseType, onClose, onUploadComplete, t]);\n\n useEffect(() => {\n return () => {\n uploadStore.getState().destroy().catch(noop);\n };\n }, [uploadStore]);\n\n return (\n <ResponseHandler loadables={loadables}>\n <UploadStoreContext value={uploadStore}>\n <Upload />\n </UploadStoreContext>\n </ResponseHandler>\n );\n};\n"],"mappings":";;;;;;;;;;;;;mCA8Ba,KAAsB,EAAE,UAAO,iBAAuC;CACjF,IAAM,IAAiB,EAAI,CAAqB,GAC1C,IAAmB,EAAS,IAAiB,MAAU,EAAM,gBAAgB,GAC7E,IAAY,EAAS,IAAiB,MAAU,EAAM,SAAS,GAC/D,EAAE,SAAM,EAAe,GAEvB,IAAkB,EAAmB,EAAM,KAAI,MAAK,EAAE,EAAE,GAAG,EAAiB,IAAI,EAAM,SAAS,CAAC,GAEhG,IAAY,EAAS,CAAC,CAAe,CAAC,GAEtC,IAAmB,QAAc;EACrC,IAAM,IAAqC,CAAC;EA4B5C,OA3BA,EAAiB,gBAAgB,SAAQ,MAAS;GAChD,EAAI,KAAS,CAAC;EAChB,CAAC,GAEI,EAAgB,OASnB,EAAgB,KAAK,SAAS,MAAc;GAC1C,AAAI,EAAU,iBACZ,EAAiB,gBAAgB,SAAQ,MAAS;IAChD,EAAI,EAAM,CAAC,KAAK,EAAU,OAAO;GACnC,CAAC,IAED,EAAU,cAAc,SAAQ,MAAS;IACvC,AAAK,EAAI,EAAM,CAAC,SAAS,EAAU,OAAO,KACxC,EAAI,EAAM,CAAC,KAAK,EAAU,OAAO;GAErC,CAAC;EAEL,CAAC,IAnBD,EAAiB,gBAAgB,SAAQ,MAAS;GAChD,EAAM,SAAS,MAAa;IAC1B,EAAI,EAAM,CAAC,KAAK,EAAS,EAAE;GAC7B,CAAC;EACH,CAAC,GAiBI;CACT,GAAG;EAAC,EAAgB;EAAM;EAAO;CAAgB,CAAC,GAE5C,IAAqC,QAClC,EAAM,KAA0B,OAAc;EACnD,MAAM,EACJ,GAAG,EACL;EACA,IAAI,EAAS;CACf,EAAgC,GAC/B,CAAC,CAAK,CAAC,GAEJ,IAAmB,EAAY,YAAY;EAC/C,MAAM,EAAU;CAClB,GAAG,CAAC,CAAS,CAAC,GAER,IAAc,QAAc,EAAkB;EAClD;EACA;EACA;EACA,6BAA6B;EAC7B,0BAA0B,CAAC;EAC3B;EACA,WAAW;EACX,8BAA8B;EAC9B,2BAA2B,CAAC;CAC9B,CAAC,GAAG;EAAC;EAAkB;EAAoC;EAAkB;EAAS;EAAkB;CAAC,CAAC;CAQ1G,OANA,cACe;EACX,EAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAA,OAAI;CAC7C,GACC,CAAC,CAAW,CAAC,GAGd,kBAAC,GAAD;EAA4B;EAC1B,UAAA,kBAAC,GAAD;GAAoB,OAAO;GACzB,UAAA,kBAAC,GAAD,CAAS,CAAA;EACS,CAAA;CACL,CAAA;AAErB"}