udp-react-enterprise-component-library 25.14.1-beta.6 → 25.14.1-beta.8

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 (366) hide show
  1. package/dist/{Accordion-Cd6gzd60.js → Accordion-DL61AM6M.js} +2 -2
  2. package/dist/{Accordion-Cd6gzd60.js.map → Accordion-DL61AM6M.js.map} +1 -1
  3. package/dist/{ActionProvider-BPuiwxd4.js → ActionProvider-DL5qMp-u.js} +2 -2
  4. package/dist/{ActionProvider-BPuiwxd4.js.map → ActionProvider-DL5qMp-u.js.map} +1 -1
  5. package/dist/{ActionSplitScreen-Cym0gCOb.js → ActionSplitScreen-x0Bh5GEF.js} +3 -3
  6. package/dist/{ActionSplitScreen-Cym0gCOb.js.map → ActionSplitScreen-x0Bh5GEF.js.map} +1 -1
  7. package/dist/{ActionWrapper-CoP91vel.js → ActionWrapper-BRzh3vn0.js} +3 -3
  8. package/dist/{ActionWrapper-CoP91vel.js.map → ActionWrapper-BRzh3vn0.js.map} +1 -1
  9. package/dist/{BaseTreeMenu-DxXnVd_v.js → BaseTreeMenu-DHEMztjA.js} +7 -3
  10. package/dist/BaseTreeMenu-DHEMztjA.js.map +1 -0
  11. package/dist/{CatalogUtilities-j8ACiDe3.js → CatalogUtilities-BvkdL-P6.js} +1 -1
  12. package/dist/{CatalogUtilities-j8ACiDe3.js.map → CatalogUtilities-BvkdL-P6.js.map} +1 -1
  13. package/dist/{CircleButton-BFASpo5t.js → CircleButton-DBPFjNl1.js} +2 -2
  14. package/dist/{CircleButton-BFASpo5t.js.map → CircleButton-DBPFjNl1.js.map} +1 -1
  15. package/dist/{CrudBrowserContainer-Dpgwjt7c.js → CrudBrowserContainer-B8AKH7kQ.js} +9 -4
  16. package/dist/CrudBrowserContainer-B8AKH7kQ.js.map +1 -0
  17. package/dist/{EntityHeader-Buq_r4IE.js → EntityHeader-DOoeCEj3.js} +2 -2
  18. package/dist/{EntityHeader-Buq_r4IE.js.map → EntityHeader-DOoeCEj3.js.map} +1 -1
  19. package/dist/{FieldArrayCard-D5AzG_US.js → FieldArrayCard-ColjIX9t.js} +1 -1
  20. package/dist/{FieldArrayCard-D5AzG_US.js.map → FieldArrayCard-ColjIX9t.js.map} +1 -1
  21. package/dist/{FileViewer-Cp8UpoMF.js → FileViewer-Bhubf4Uv.js} +2 -2
  22. package/dist/{FileViewer-Cp8UpoMF.js.map → FileViewer-Bhubf4Uv.js.map} +1 -1
  23. package/dist/FluentBody-PdsySA1c.js +16 -0
  24. package/dist/FluentBody-PdsySA1c.js.map +1 -0
  25. package/dist/{FluentDataTable-BhA49RJS.js → FluentCell-C7lb2y4Z.js} +7 -67
  26. package/dist/FluentCell-C7lb2y4Z.js.map +1 -0
  27. package/dist/FluentDataTable-C3A36z2b.js +30 -0
  28. package/dist/FluentDataTable-C3A36z2b.js.map +1 -0
  29. package/dist/FluentHead-BTV-o45z.js +20 -0
  30. package/dist/FluentHead-BTV-o45z.js.map +1 -0
  31. package/dist/FluentRow-CVqnk9pB.js +18 -0
  32. package/dist/FluentRow-CVqnk9pB.js.map +1 -0
  33. package/dist/{FluentTimeline-ChthjfxZ.js → FluentTimeline-B0VjMqsq.js} +2 -2
  34. package/dist/{FluentTimeline-ChthjfxZ.js.map → FluentTimeline-B0VjMqsq.js.map} +1 -1
  35. package/dist/{GeoMap-jDYoW-Jl.js → GeoMap-CVGJXRRA.js} +2 -2
  36. package/dist/{GeoMap-jDYoW-Jl.js.map → GeoMap-CVGJXRRA.js.map} +1 -1
  37. package/dist/{IconRenderer-8w6JVRET.js → IconRenderer-DiwGfDul.js} +2 -2
  38. package/dist/{IconRenderer-8w6JVRET.js.map → IconRenderer-DiwGfDul.js.map} +1 -1
  39. package/dist/{InputsExample-C11hu5Fw.js → InputsExample-BPDEWFXK.js} +1 -1
  40. package/dist/{InputsExample-C11hu5Fw.js.map → InputsExample-BPDEWFXK.js.map} +1 -1
  41. package/dist/{Inquiry-Bi4iSUSQ.js → Inquiry-3kldgl4S.js} +6 -6
  42. package/dist/{Inquiry-Bi4iSUSQ.js.map → Inquiry-3kldgl4S.js.map} +1 -1
  43. package/dist/{MenuPage-CuB7g460.js → MenuPage-CJ1JVrk8.js} +10 -5
  44. package/dist/MenuPage-CJ1JVrk8.js.map +1 -0
  45. package/dist/{MenuPage-B4gixMrI.js → MenuPage-kn130DcT.js} +3 -3
  46. package/dist/{MttMainTimeline-au5xi1SZ.js → MttMainTimeline-Bme6LQZO.js} +2 -2
  47. package/dist/{MttMainTimeline-au5xi1SZ.js.map → MttMainTimeline-Bme6LQZO.js.map} +1 -1
  48. package/dist/{MttSummary-DHB1AW_0.js → MttSummary-CTETqPbU.js} +3 -3
  49. package/dist/{MttSummary-DHB1AW_0.js.map → MttSummary-CTETqPbU.js.map} +1 -1
  50. package/dist/{MyExportsPage-CBqIhu4I.js → MyExportsPage-Cq2MRoRf.js} +3 -2
  51. package/dist/{MyExportsPage-CBqIhu4I.js.map → MyExportsPage-Cq2MRoRf.js.map} +1 -1
  52. package/dist/{MyExportsPage-BE8qvq_F.js → MyExportsPage-ZP2V0i5h.js} +2 -2
  53. package/dist/{NotesScreen-moR3WUoq.js → NotesScreen-CmMz3GTR.js} +2 -2
  54. package/dist/{NotesScreen-moR3WUoq.js.map → NotesScreen-CmMz3GTR.js.map} +1 -1
  55. package/dist/{PageActionWrapper-KtNGraWi.js → PageActionWrapper-HgV0I8Km.js} +2 -2
  56. package/dist/{PageActionWrapper-KtNGraWi.js.map → PageActionWrapper-HgV0I8Km.js.map} +1 -1
  57. package/dist/{PageNotFoundRoute-BSlmqegI.js → PageNotFoundRoute-BGj6tqmn.js} +3 -2
  58. package/dist/{PageNotFoundRoute-BSlmqegI.js.map → PageNotFoundRoute-BGj6tqmn.js.map} +1 -1
  59. package/dist/PageNotFoundRoute-CTaRcNjL.js +4 -0
  60. package/dist/PasswordResetRedirect-BMDMHdhE.js +4 -0
  61. package/dist/{PasswordResetRedirect-BvC0vH06.js → PasswordResetRedirect-avgVRKhM.js} +3 -2
  62. package/dist/{PasswordResetRedirect-BvC0vH06.js.map → PasswordResetRedirect-avgVRKhM.js.map} +1 -1
  63. package/dist/{RecentlyLoadedNodesTable-B5KlS1HR.js → RecentlyLoadedNodesTable-BRxssq07.js} +2 -2
  64. package/dist/{RecentlyLoadedNodesTable-B5KlS1HR.js.map → RecentlyLoadedNodesTable-BRxssq07.js.map} +1 -1
  65. package/dist/{RejectIcon-BoBX4G_D.js → RejectIcon-D8AWbOZq.js} +1 -1
  66. package/dist/{RejectIcon-BoBX4G_D.js.map → RejectIcon-D8AWbOZq.js.map} +1 -1
  67. package/dist/{RemindersCard-CRstZlRF.js → RemindersCard-BrjYmZVz.js} +2 -2
  68. package/dist/{RemindersCard-CRstZlRF.js.map → RemindersCard-BrjYmZVz.js.map} +1 -1
  69. package/dist/{RemindersScreen-C2hcBWnk.js → RemindersScreen-CVTHY97W.js} +2 -2
  70. package/dist/{RemindersScreen-C2hcBWnk.js.map → RemindersScreen-CVTHY97W.js.map} +1 -1
  71. package/dist/{Shell-CuYfQQKW.js → Shell-DM4ZssU1.js} +3 -3
  72. package/dist/{Shell-CuYfQQKW.js.map → Shell-DM4ZssU1.js.map} +1 -1
  73. package/dist/TileLayer-Bk6rITEu.js +31 -0
  74. package/dist/TileLayer-Bk6rITEu.js.map +1 -0
  75. package/dist/{TreeUtilities-DVY-2md6.js → TreeUtilities-XLrXtUeL.js} +9 -8
  76. package/dist/{TreeUtilities-DVY-2md6.js.map → TreeUtilities-XLrXtUeL.js.map} +1 -1
  77. package/dist/UI/accordion/index.js +3 -3
  78. package/dist/UI/advancedSearchBuilder/index.js +1 -1
  79. package/dist/UI/charts/index.js +1 -1
  80. package/dist/UI/components/dataDisplay/index.js +1 -1
  81. package/dist/UI/components/feedback/index.js +1 -1
  82. package/dist/UI/components/index.js +3 -3
  83. package/dist/UI/containers/index.js +1 -1
  84. package/dist/UI/dataDisplay/FluentActivity/index.js +1 -1
  85. package/dist/UI/dataDisplay/FluentDataTable/FluentBody/index.js +3 -0
  86. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +13 -0
  87. package/dist/UI/dataDisplay/FluentDataTable/FluentHead/index.js +3 -0
  88. package/dist/UI/dataDisplay/FluentDataTable/FluentRow/index.js +3 -0
  89. package/dist/UI/dataDisplay/FluentDataTable/index.js +7 -3
  90. package/dist/UI/dataDisplay/address/index.js +1 -1
  91. package/dist/UI/dataDisplay/cardList/index.js +1 -1
  92. package/dist/UI/dataDisplay/directory/index.js +1 -1
  93. package/dist/UI/dataDisplay/entityHeader/index.js +4 -4
  94. package/dist/UI/dataDisplay/index.js +20 -16
  95. package/dist/UI/dataDisplay/map/index.js +1 -1
  96. package/dist/UI/dataDisplay/notes/index.js +1 -1
  97. package/dist/UI/dataDisplay/ticketCard/index.js +1 -1
  98. package/dist/UI/dataDisplay/typography/index.js +1 -1
  99. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  100. package/dist/UI/demos/index.js +2 -2
  101. package/dist/UI/feedback/index.js +1 -1
  102. package/dist/UI/fileViewer/index.js +3 -3
  103. package/dist/UI/floorplans/index.js +1 -1
  104. package/dist/UI/forms/index.js +3 -3
  105. package/dist/UI/iframe/index.js +1 -1
  106. package/dist/UI/index.js +67 -63
  107. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  108. package/dist/UI/loading/index.js +1 -1
  109. package/dist/UI/mapLayout/index.js +1 -1
  110. package/dist/UI/maps/index.js +2 -2
  111. package/dist/UI/navigation/index.js +4 -4
  112. package/dist/UI/navigation/menus/index.js +1 -1
  113. package/dist/UI/navigation/tabs/defaultTabs/index.js +1 -1
  114. package/dist/UI/navigation/tabs/index.js +2 -2
  115. package/dist/UI/property/index.js +1 -1
  116. package/dist/UI/stepper/index.js +1 -1
  117. package/dist/UI/support/index.js +1 -1
  118. package/dist/UI/surfaces/NestedGrid/index.js +2 -2
  119. package/dist/UI/surfaces/NestedGrid/ui/index.js +1 -1
  120. package/dist/UI/surfaces/cards/index.js +3 -3
  121. package/dist/UI/surfaces/cards/newsCard/index.js +1 -1
  122. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  123. package/dist/UI/surfaces/index.js +6 -6
  124. package/dist/UI/templates/index.js +3 -3
  125. package/dist/UI/templates/newGrid/index.js +1 -1
  126. package/dist/UI/templates/ui/index.js +1 -1
  127. package/dist/UI/timeline/fluentTimeline/index.js +3 -3
  128. package/dist/UI/timeline/index.js +4 -4
  129. package/dist/UI/utilityDisplay/alerts/index.js +1 -1
  130. package/dist/UI/utilityDisplay/index.js +5 -5
  131. package/dist/UI/utilityDisplay/ui/index.js +1 -1
  132. package/dist/UI/utilityDisplay/utilities/index.js +1 -1
  133. package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
  134. package/dist/UI/widgets/index.js +1 -1
  135. package/dist/{UdpMaintenanceConfigPage-DdZJT9rB.js → UdpMaintenanceConfigPage-DfKk0PmB.js} +1 -1
  136. package/dist/{UdpMaintenanceConfigPage-CnvPi5Gq.js → UdpMaintenanceConfigPage-mJ4AkDYp.js} +3 -2
  137. package/dist/UdpMaintenanceConfigPage-mJ4AkDYp.js.map +1 -0
  138. package/dist/{UdpMaintenanceEnginePage-o40sezly.js → UdpMaintenanceEnginePage-DAioIeSf.js} +8 -3
  139. package/dist/UdpMaintenanceEnginePage-DAioIeSf.js.map +1 -0
  140. package/dist/{UdpMaintenanceEnginePage-b5cm6uW2.js → UdpMaintenanceEnginePage-M0RbzSTX.js} +2 -2
  141. package/dist/{UdpMap-lSMNXUoe.js → UdpMap-5NE3rUIS.js} +1 -1
  142. package/dist/{UdpMap-lSMNXUoe.js.map → UdpMap-5NE3rUIS.js.map} +1 -1
  143. package/dist/{UdpRoutes-iU7qvtVt.js → UdpRoutes-Bmn455yo.js} +9 -9
  144. package/dist/{UdpRoutes-iU7qvtVt.js.map → UdpRoutes-Bmn455yo.js.map} +1 -1
  145. package/dist/{VirtualBrowser-Dg52rd5g.js → VirtualBrowser-B66Iyn4h.js} +4 -4
  146. package/dist/{VirtualBrowser-BNjKPaXR.js → VirtualBrowser-BansR6-F.js} +4 -3
  147. package/dist/{VirtualBrowser-BNjKPaXR.js.map → VirtualBrowser-BansR6-F.js.map} +1 -1
  148. package/dist/{VirtualForm-Da9cgNqE.js → VirtualForm-DlTtINdK.js} +2 -2
  149. package/dist/{VirtualForm-Da9cgNqE.js.map → VirtualForm-DlTtINdK.js.map} +1 -1
  150. package/dist/{WorkflowContainer-Bf7oW53_.js → WorkflowContainer-BTwu3z4L.js} +5 -5
  151. package/dist/{WorkflowContainer-Dmp3rpCg.js → WorkflowContainer-Cq23yESD.js} +5 -4
  152. package/dist/{WorkflowContainer-Dmp3rpCg.js.map → WorkflowContainer-Cq23yESD.js.map} +1 -1
  153. package/dist/{WorkflowTreeMenu-Dc9l7jEY.js → WorkflowTreeMenu-BtolZKVF.js} +2 -2
  154. package/dist/{WorkflowTreeMenu-Dc9l7jEY.js.map → WorkflowTreeMenu-BtolZKVF.js.map} +1 -1
  155. package/dist/actions/index.js +8 -8
  156. package/dist/actions/sidebar/index.js +1 -1
  157. package/dist/actions/utils/index.js +1 -1
  158. package/dist/{cards-CpCLKLuT.js → cards-CD1BE7Mh.js} +1 -1
  159. package/dist/{cards-CpCLKLuT.js.map → cards-CD1BE7Mh.js.map} +1 -1
  160. package/dist/{charts-Dm_iW2_N.js → charts-PdiOkLDF.js} +1 -1
  161. package/dist/{charts-Dm_iW2_N.js.map → charts-PdiOkLDF.js.map} +1 -1
  162. package/dist/componentSystems/multiThreadTimeline/functions/index.js +1 -1
  163. package/dist/componentSystems/multiThreadTimeline/index.js +10 -10
  164. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +4 -4
  165. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +5 -5
  166. package/dist/componentSystems/multiThreadTimeline/ui/index.js +5 -5
  167. package/dist/componentSystems/multiThreadTimeline/ui/modified/index.js +1 -1
  168. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  169. package/dist/componentSystems/pageRenderer/hooks/index.js +1 -1
  170. package/dist/componentSystems/pageRenderer/index.js +4 -4
  171. package/dist/componentSystems/pageRenderer/utils/index.js +1 -1
  172. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  173. package/dist/dataBrowser/forms/index.js +1 -1
  174. package/dist/dataBrowser/index.js +1 -1
  175. package/dist/{defaultTabs-Bmq_wtOy.js → defaultTabs-C07t9FPZ.js} +1 -1
  176. package/dist/{defaultTabs-Bmq_wtOy.js.map → defaultTabs-C07t9FPZ.js.map} +1 -1
  177. package/dist/hooks/index.js +2 -2
  178. package/dist/index.js +161 -73
  179. package/dist/index.js.map +1 -1
  180. package/dist/inquiry/dashboard/index.js +4 -4
  181. package/dist/inquiry/index.js +13 -13
  182. package/dist/inquiry/inquiryBar/index.js +1 -1
  183. package/dist/inquiry/search/index.js +1 -1
  184. package/dist/maintenanceEngine/crudBrowser/index.js +2 -2
  185. package/dist/maintenanceEngine/index.js +7 -7
  186. package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
  187. package/dist/maintenanceEngine/virtualBrowser/index.js +4 -4
  188. package/dist/map-library/Source/index.js +34 -1
  189. package/dist/map-library/Source/index.js.map +1 -0
  190. package/dist/maps/index.js +4 -4
  191. package/dist/maps/leafletMaps/index.js +2 -2
  192. package/dist/maps/leafletMaps/ui/index.js +1 -1
  193. package/dist/maps/openLayerMaps/Layers/index.js +45 -3
  194. package/dist/maps/openLayerMaps/Layers/index.js.map +1 -0
  195. package/dist/menuPage/index.js +3 -3
  196. package/dist/notes/index.js +2 -2
  197. package/dist/reminders/index.js +3 -3
  198. package/dist/routes/index.js +1 -1
  199. package/dist/shell/index.js +11 -11
  200. package/dist/shell/ui/addUser/index.js +1 -1
  201. package/dist/shell/ui/appSwitcher/index.js +1 -1
  202. package/dist/shell/ui/index.js +3 -3
  203. package/dist/{theme-HNYKI2UT.js → theme-DtUeftmy.js} +3 -2
  204. package/dist/theme-DtUeftmy.js.map +1 -0
  205. package/dist/treeMenu/index.js +2 -2
  206. package/dist/types/index.d.ts +1 -0
  207. package/dist/types/maintenanceEngine/virtualBrowser/VirtualBrowser.d.ts +1 -0
  208. package/dist/types/menuPage/CustomMenuPage.d.ts +22 -0
  209. package/dist/types/routes/components/PageNotFoundRoute.d.ts +1 -0
  210. package/dist/types/routes/components/PasswordResetRedirect.d.ts +1 -0
  211. package/dist/types/tsconfig.tsbuildinfo +1 -1
  212. package/dist/types/udp/export/MyExportsPage.d.ts +1 -0
  213. package/dist/types/utilities/tree/TreeUtilities.d.ts +2 -0
  214. package/dist/types/workflow/WorkflowContainer.d.ts +1 -0
  215. package/dist/udp/export/index.js +1 -1
  216. package/dist/udp/pages/index.js +10 -10
  217. package/dist/{udpPages-WbvmyuOa.js → udpPages-D6t7REhp.js} +7 -7
  218. package/dist/{udpPages-WbvmyuOa.js.map → udpPages-D6t7REhp.js.map} +1 -1
  219. package/dist/{ui-DEnf6-9j.js → ui-z-P1tNCJ.js} +1 -1
  220. package/dist/{ui-DEnf6-9j.js.map → ui-z-P1tNCJ.js.map} +1 -1
  221. package/dist/{useSingleLogout-DRSY_UK_.js → useSingleLogout-DeHKk6v6.js} +2 -2
  222. package/dist/{useSingleLogout-DRSY_UK_.js.map → useSingleLogout-DeHKk6v6.js.map} +1 -1
  223. package/dist/{useUpdateSearchParams-fEinMP0r.js → useUpdateSearchParams-CKTTs6Zx.js} +1 -1
  224. package/dist/{useUpdateSearchParams-fEinMP0r.js.map → useUpdateSearchParams-CKTTs6Zx.js.map} +1 -1
  225. package/dist/utilities/DemoJuly/index.js +1 -1
  226. package/dist/utilities/aggrid/index.js +1 -1
  227. package/dist/utilities/auth/index.js +3 -3
  228. package/dist/utilities/catalog/index.js +2 -2
  229. package/dist/utilities/chatBot/index.js +1 -1
  230. package/dist/utilities/crud/index.js +1 -1
  231. package/dist/utilities/customIcons/index.js +2 -2
  232. package/dist/utilities/entities/index.js +1 -1
  233. package/dist/utilities/floorplanFunctions/index.js +1 -1
  234. package/dist/utilities/iconLibrary/index.js +1 -1
  235. package/dist/utilities/index.js +36 -36
  236. package/dist/utilities/input/index.js +1 -1
  237. package/dist/utilities/maintenanceEngine/index.js +1 -1
  238. package/dist/utilities/menus/index.js +1 -1
  239. package/dist/utilities/page/index.js +1 -1
  240. package/dist/utilities/provider/index.js +7 -7
  241. package/dist/utilities/redirect/index.js +1 -1
  242. package/dist/utilities/rules/index.js +1 -1
  243. package/dist/utilities/search/index.js +1 -1
  244. package/dist/utilities/storage/index.js +1 -1
  245. package/dist/utilities/style/index.js +1 -1
  246. package/dist/utilities/tenant/index.js +1 -1
  247. package/dist/utilities/tree/index.js +2 -2
  248. package/dist/utilities/uploader/index.js +1 -1
  249. package/dist/utilities/utilityBar/index.js +1 -1
  250. package/dist/utilities/workflow/index.js +1 -1
  251. package/dist/{virtualActions-DlqSD5s0.js → virtualActions-B-cs7Mxr.js} +1 -1
  252. package/dist/{virtualActions-DlqSD5s0.js.map → virtualActions-B-cs7Mxr.js.map} +1 -1
  253. package/dist/workflow/components/index.js +1 -1
  254. package/dist/workflow/index.js +6 -6
  255. package/dist/workflow/menus/index.js +3 -3
  256. package/export-map.json +4 -3
  257. package/package.json +3 -2
  258. package/dist/BaseTreeMenu-DxXnVd_v.js.map +0 -1
  259. package/dist/CrudBrowserContainer-Dpgwjt7c.js.map +0 -1
  260. package/dist/FluentDataTable-BhA49RJS.js.map +0 -1
  261. package/dist/Layers-CQUYxZqM.js +0 -71
  262. package/dist/Layers-CQUYxZqM.js.map +0 -1
  263. package/dist/MenuPage-CuB7g460.js.map +0 -1
  264. package/dist/PageNotFoundRoute-Dw80_viU.js +0 -4
  265. package/dist/PasswordResetRedirect-P7XBzXp-.js +0 -4
  266. package/dist/UdpMaintenanceConfigPage-CnvPi5Gq.js.map +0 -1
  267. package/dist/UdpMaintenanceEnginePage-o40sezly.js.map +0 -1
  268. package/dist/theme-HNYKI2UT.js.map +0 -1
  269. /package/dist/{DemoJuly-mBlFDlXO.js → DemoJuly-D7RhIRiO.js} +0 -0
  270. /package/dist/{FluentActivity-BrIQN8GI.js → FluentActivity-Btq_69F-.js} +0 -0
  271. /package/dist/{FluentDataTable-qrNqXPRF.js → FluentDataTable-BwVi4r3o.js} +0 -0
  272. /package/dist/{NestedGrid-CHqHYRS8.js → NestedGrid-fseCejIz.js} +0 -0
  273. /package/dist/{accordion-BHm_jIsS.js → accordion-ChuOXM_i.js} +0 -0
  274. /package/dist/{addUser-CyMrC1rE.js → addUser-CS0LS9_W.js} +0 -0
  275. /package/dist/{address-DlScXNBU.js → address-D8Cf2B--.js} +0 -0
  276. /package/dist/{advancedSearchBuilder-JWTOT_dc.js → advancedSearchBuilder-BNE1r194.js} +0 -0
  277. /package/dist/{aggrid-DuGBxiR8.js → aggrid-C3KMLJBL.js} +0 -0
  278. /package/dist/{alerts-fNWU3EXg.js → alerts-B--Jzz0v.js} +0 -0
  279. /package/dist/{appSwitcher-dCBbv3It.js → appSwitcher-DqliMkfh.js} +0 -0
  280. /package/dist/{auth-CwXOQn2B.js → auth-DLdDsXt6.js} +0 -0
  281. /package/dist/{cardList-gSDuPOQB.js → cardList-B0bYLPWj.js} +0 -0
  282. /package/dist/{catalog-p3yrFQgg.js → catalog-DLo7sqLU.js} +0 -0
  283. /package/dist/{chatBot-_aXO7sdm.js → chatBot-dEV9kiqk.js} +0 -0
  284. /package/dist/{components-BX70C7Xh.js → components-BpG8EmUu.js} +0 -0
  285. /package/dist/{components-DV8tbAMk.js → components-CnnFIob2.js} +0 -0
  286. /package/dist/{containers-CXy3OKvD.js → containers-Cl2DkUJz.js} +0 -0
  287. /package/dist/{crud-By2po3xT.js → crud-C_ERd-Ed.js} +0 -0
  288. /package/dist/{crudBrowser-3U59T0v9.js → crudBrowser-BoZrPfr-.js} +0 -0
  289. /package/dist/{customIcons-DdZ5YpJU.js → customIcons-BzKpDhOz.js} +0 -0
  290. /package/dist/{dashboard-iA68nouc.js → dashboard-B3PkRVxB.js} +0 -0
  291. /package/dist/{dataDisplay-D-k_23Y1.js → dataDisplay-BivdlLmj.js} +0 -0
  292. /package/dist/{dataDisplay-DwmhNGSc.js → dataDisplay-BkAq_6Ba.js} +0 -0
  293. /package/dist/{demos-Be_LEs0N.js → demos-L9SUck5b.js} +0 -0
  294. /package/dist/{directory-QndEV4Ip.js → directory-BmBd7DNf.js} +0 -0
  295. /package/dist/{entities-okCA6j-F.js → entities-Z3wHDYPc.js} +0 -0
  296. /package/dist/{entityHeader-BJdZfqWn.js → entityHeader-uoWltVXF.js} +0 -0
  297. /package/dist/{feedback-BFVY3F4O.js → feedback-CT_YIVkQ.js} +0 -0
  298. /package/dist/{feedback-DxBgLa50.js → feedback-Cq3y6mnG.js} +0 -0
  299. /package/dist/{fileViewer-IW404ILx.js → fileViewer-DNmXMgEv.js} +0 -0
  300. /package/dist/{floorplanFunctions-C3h7qiy7.js → floorplanFunctions-CyG-A6Ho.js} +0 -0
  301. /package/dist/{floorplans-CAy6OBti.js → floorplans-DCsLstCq.js} +0 -0
  302. /package/dist/{fluentTimeline-VY1uVRIt.js → fluentTimeline-Bw3MB61J.js} +0 -0
  303. /package/dist/{forms-3Zdzp4gn.js → forms-CTGzji9-.js} +0 -0
  304. /package/dist/{forms-BbMWRT_y.js → forms-DBN5u9vQ.js} +0 -0
  305. /package/dist/{functions-DxOG2OTQ.js → functions-B886DHHN.js} +0 -0
  306. /package/dist/{hocs-DBWxBvoU.js → hocs-CLAAIJfF.js} +0 -0
  307. /package/dist/{hooks-CwtIArSw.js → hooks-d0fHOxwg.js} +0 -0
  308. /package/dist/{iconLibrary-Ckm-SSry.js → iconLibrary-DkiwUTn0.js} +0 -0
  309. /package/dist/{iframe-0yE4pScI.js → iframe-qtuPeiq4.js} +0 -0
  310. /package/dist/{input-JbgQSbft.js → input-Bd3pOKUF.js} +0 -0
  311. /package/dist/{inquiryBar-Dxy8ppZB.js → inquiryBar-cjTVuVy_.js} +0 -0
  312. /package/dist/{leafletMaps-s9gEVu5W.js → leafletMaps-BjTYRV2R.js} +0 -0
  313. /package/dist/{loading-xxfy2ZlM.js → loading-BwYpS7fe.js} +0 -0
  314. /package/dist/{maintenanceEngine-BafuhHra.js → maintenanceEngine-BiIXrgHI.js} +0 -0
  315. /package/dist/{map-DV91zIAC.js → map-BWuSYF6e.js} +0 -0
  316. /package/dist/{mapLayout-DtENn_sr.js → mapLayout-D7YBYQ7P.js} +0 -0
  317. /package/dist/{maps-D5joGxHk.js → maps-CevY6l2a.js} +0 -0
  318. /package/dist/{menus-B32cxSun.js → menus-CreZRf8_.js} +0 -0
  319. /package/dist/{menus-C0jFXQQc.js → menus-CwNO89uQ.js} +0 -0
  320. /package/dist/{menus-Nbum4678.js → menus-lneAs-ot.js} +0 -0
  321. /package/dist/{modified-DKPoXWSV.js → modified-Cf42z6i8.js} +0 -0
  322. /package/dist/{mttMainTimeline-DmKTPyfl.js → mttMainTimeline-D7IXpP1x.js} +0 -0
  323. /package/dist/{mttSummary-DbADB7pv.js → mttSummary-BMkmdNju.js} +0 -0
  324. /package/dist/{navigation-C_xITs8t.js → navigation-B6o0jZNc.js} +0 -0
  325. /package/dist/{newGrid-DtnaU91a.js → newGrid-DMD24lFv.js} +0 -0
  326. /package/dist/{newsCard-C7LwX_z1.js → newsCard-BEEsHzuT.js} +0 -0
  327. /package/dist/{notes-BzUsl5ox.js → notes-DXPGMU6E.js} +0 -0
  328. /package/dist/{page-XSjNp2Nd.js → page-DF9Cce_a.js} +0 -0
  329. /package/dist/{property-D-lRqI5q.js → property-BxFkD-ST.js} +0 -0
  330. /package/dist/{provider-276_eTQP.js → provider-CDMCgVZv.js} +0 -0
  331. /package/dist/{redirect-Cb0zPMUp.js → redirect-DXdJsOUE.js} +0 -0
  332. /package/dist/{rules-C4NrJLax.js → rules-vy1m9JZd.js} +0 -0
  333. /package/dist/{search-D77NrIpT.js → search-By3X_wDu.js} +0 -0
  334. /package/dist/{search-w-OrIt_P.js → search-CxezFXdW.js} +0 -0
  335. /package/dist/{sidebar-CqBPneDb.js → sidebar-CGs1WNkU.js} +0 -0
  336. /package/dist/{stepper-BImbyzRm.js → stepper-DSXFT-Iq.js} +0 -0
  337. /package/dist/{storage-BL60r231.js → storage-Dzx9lS99.js} +0 -0
  338. /package/dist/{style-BiG-DeqE.js → style-DCetPHEb.js} +0 -0
  339. /package/dist/{support-BMrRk2nr.js → support-1Hknr9H-.js} +0 -0
  340. /package/dist/{surfaces-D7Gv5-jf.js → surfaces-SrimKL5h.js} +0 -0
  341. /package/dist/{tableBrowser-BMPoXYzI.js → tableBrowser-BgKcSdyL.js} +0 -0
  342. /package/dist/{tabs-LSMdumcR.js → tabs-HRFDrAzD.js} +0 -0
  343. /package/dist/{templates-DxIYQEwm.js → templates-XRou7iKM.js} +0 -0
  344. /package/dist/{tenant-Ba0QsFun.js → tenant-9yY-GOUj.js} +0 -0
  345. /package/dist/{ticketCard-vpgwV6yo.js → ticketCard-B1ueM7V9.js} +0 -0
  346. /package/dist/{timeline-B7z-jUTx.js → timeline-CvlnNFik.js} +0 -0
  347. /package/dist/{tree-Bdu7gGxB.js → tree-n0-Yv6Oq.js} +0 -0
  348. /package/dist/{typography-cWXaOaj-.js → typography-BUD73n7-.js} +0 -0
  349. /package/dist/{ui-B7XVO_hX.js → ui-5ngIc6S4.js} +0 -0
  350. /package/dist/{ui-Cje9T4Uy.js → ui-C4SYLrHn.js} +0 -0
  351. /package/dist/{ui-RoqPR_sc.js → ui-CMEdOOxm.js} +0 -0
  352. /package/dist/{ui-b3YPtlpb.js → ui-GKTg3I2L.js} +0 -0
  353. /package/dist/{ui-en5KNlmI.js → ui-Qt0TiwMS.js} +0 -0
  354. /package/dist/{uploader-6C3jSbvh.js → uploader-DSBUHOEF.js} +0 -0
  355. /package/dist/{utilities-DI2DK3EE.js → utilities-C8yTJ1rO.js} +0 -0
  356. /package/dist/{utilityBar-BnpknzCg.js → utilityBar-BgOu4S_x.js} +0 -0
  357. /package/dist/{utilityDisplay-BtOjD5dW.js → utilityDisplay-B2kppcKk.js} +0 -0
  358. /package/dist/{utilityHeader-BcADv4L8.js → utilityHeader-B9G8SBPx.js} +0 -0
  359. /package/dist/{utils-CxjlnL_a.js → utils-BWi9Cg7u.js} +0 -0
  360. /package/dist/{utils-Dp2c8faV.js → utils-BaVKyFU8.js} +0 -0
  361. /package/dist/{virtualBrowser-CYUz09Zq.js → virtualBrowser-DjU3bOv0.js} +0 -0
  362. /package/dist/{visualization-Nic9OP-u.js → visualization-C71zC7Zo.js} +0 -0
  363. /package/dist/{widgets-_PSKWMOa.js → widgets-BOvBco5h.js} +0 -0
  364. /package/dist/{workOrderCard-D95cXcFu.js → workOrderCard-Cq8NIxl6.js} +0 -0
  365. /package/dist/{workflow-OW7yAb2X.js → workflow-Cy4leS9X.js} +0 -0
  366. /package/dist/{wrappers-YZRMr_jq.js → wrappers-Bvf3DVNC.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MttSummary-DHB1AW_0.js","names":["uuid","apiMutate","data","filterListGroup","Link","item"],"sources":["../src/componentSystems/multiThreadTimeline/timeline.ts","../src/componentSystems/multiThreadTimeline/mttSummary/MttSummary.jsx"],"sourcesContent":["interface Event {\n id: string | undefined;\n eventTypeID: string | undefined;\n primaryContextID: string | undefined;\n secondaryContextID: string | undefined;\n date: string | undefined;\n transactionType: string | undefined;\n description: string | undefined;\n shortDescription: string | undefined;\n status: number | undefined;\n data1: '';\n}\n\ninterface Thread {\n id: string | undefined;\n name: string | undefined;\n inSummary: boolean;\n queryID: string | undefined;\n iconID: string | undefined;\n mttConfigID: string | undefined;\n events: Array<Event> | undefined;\n}\n\nexport interface Timeline {\n threads: Array<Thread> | undefined;\n}\n\nexport const createTimeline = (threads: Array<any>): Timeline => {\n return { threads };\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { createTimeline } from '../timeline.ts';\nimport { SummaryToken } from '../ui/SummaryToken';\nimport {\n CardContent,\n LinearProgress,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport { TimelineTopRowFilter } from '../ui/TimelineTopRowFilter';\nimport { DateWrapper } from '../ui/DateWrapper';\nimport { CircleButton } from '../ui/CircleButton';\nimport { RedEyeIcon } from '@fluentui/react-icons';\nimport { Link } from 'react-router-dom';\nimport { formatDataWithTimelineCategoryName } from '../functions/mttFunctions';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n wrapper: {\n background: theme.palette.common.white,\n borderRadius: theme.spacing(0.5),\n overflow: 'hidden'\n },\n launch: {\n marginLeft: theme.spacing(8)\n }\n}));\n\nexport const MttSummary = (props) => {\n const {\n timelineApiMethodInstanceId,\n insightPath = '/mtt-main',\n params\n } = props;\n const [data, setData] = useState([]);\n const [timelineThreads, setTimelineThreads] = useState(null);\n const [timeline, setTimeline] = useState(null);\n const [loading, setLoading] = useState(false);\n const [filters, setFilters] = useState([]);\n const [allFilters, setAllFilters] = useState([]);\n const [compact, setCompact] = useState(true);\n const [filterListGroup, setFilterListGroup] = useState();\n const [filterKey, setFilterKey] = useState(uuid());\n\n const classes = useStyles();\n const preloadLength = 11;\n\n const executeQueryInstance = useCallback(\n async (apiMethodInstanceId, data = {}) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}`,\n {\n method: 'post'\n },\n { data: data }\n ),\n []\n );\n\n const summaryThreads = useMemo(() => {\n if (!timeline?.threads?.length) {\n return [];\n }\n\n setData(\n formatDataWithTimelineCategoryName(\n timeline.threads.filter((thread) => thread.inSummary)\n )\n );\n return timeline.threads.filter((thread) => thread.inSummary);\n }, [timeline]);\n\n const summaryEvents = useMemo(() => {\n if (!summaryThreads.length) {\n return [];\n }\n return summaryThreads.map((st) => st.events).flat();\n }, [summaryThreads]);\n\n // Get Filter Array\n let filterItems = [];\n summaryThreads &&\n summaryThreads.map((item) => {\n filterItems.push(item.name);\n });\n\n const addFilter = (filter) => {\n if (filters.includes(filter)) {\n const updatedFilter = filters.filter((e) => e !== filter);\n setFilters(updatedFilter);\n } else {\n setFilters([...filters, filter]);\n }\n };\n\n const clearFilters = useCallback(() => {\n setFilters([]);\n }, []);\n\n useEffect(() => {\n const fetchTimelineThreads = async () => {\n const timelineResponse = await executeQueryInstance(\n timelineApiMethodInstanceId\n );\n\n if (timelineResponse?.status === 200) {\n setTimelineThreads(timelineResponse?.data?.pageList || []);\n }\n };\n fetchTimelineThreads();\n }, [executeQueryInstance, timelineApiMethodInstanceId]);\n\n useEffect(() => {\n const fetchThreadEvents = async () => {\n if (!timelineThreads) {\n return null;\n }\n setLoading(true);\n const promises = [];\n const threadList = [];\n timelineThreads.forEach((thread) => {\n promises.push(executeQueryInstance(thread.queryID, { ...params }));\n });\n await Promise.all(\n promises.map((p) =>\n p.catch((e) => {\n setLoading(false);\n return e;\n })\n )\n ).then((responses) => {\n responses.forEach((response, index) => {\n if (response.status === 200) {\n const timelineThread = timelineThreads[index];\n if (response?.data?.pageList) {\n response.data.pageList.forEach(\n (evt) => (evt.threadId = timelineThread.name)\n );\n const thread = {\n ...timelineThread,\n events: response.data.pageList\n };\n threadList.push(thread);\n }\n }\n });\n setLoading(false);\n });\n setTimeline(createTimeline(threadList));\n // setData(formatDataWithTimelineCategoryName(threadList))\n };\n fetchThreadEvents();\n }, [executeQueryInstance, timelineThreads, params]);\n\n useEffect(() => {\n const filterList =\n summaryEvents &&\n summaryEvents.map((item) => {\n return item.threadId;\n });\n setAllFilters(filterList);\n setFilters(filterList);\n }, [summaryEvents]);\n\n useEffect(() => {\n const filterListGroup = [];\n summaryEvents &&\n summaryEvents.map((item) => {\n filterListGroup.push({\n name: item.threadId,\n icon: item.icon,\n color: item.color\n });\n });\n\n const key = 'name';\n\n const arrayUniqueByKey = [\n ...new Map(filterListGroup.map((item) => [item[key], item])).values()\n ];\n\n setFilterKey(uuid());\n setFilterListGroup(arrayUniqueByKey);\n }, [summaryEvents]);\n\n const mappedToDetails =\n data &&\n data\n .map((item) => item.dates)\n .flat()\n .map((item) => item.details)\n .flat();\n\n // for Skeleton preloading\n const summaryLength = summaryThreads.length || preloadLength;\n\n const getMembers = (members) => {\n let events = [];\n\n return members\n .map((mem) => {\n const m = { ...mem };\n if (m.events && m.events.length) {\n events = [...events, ...m.events];\n }\n delete m.events;\n return m;\n })\n .concat(events.length ? getMembers(events) : events);\n };\n\n getMembers(summaryThreads);\n\n const dataConvertedFilter =\n mappedToDetails &&\n mappedToDetails.filter((item) => filters?.includes(item.threadId));\n\n // Feed dataConvertedFilter into the grouping function (this should filter the array of objects before they are grouped)\n\n function groupByMonth(object) {\n let finalObject = [];\n object.forEach((el) => {\n let foundFlag = false;\n finalObject.forEach((foEl) => {\n if (\n foEl.month === el.date.split('/')[0] &&\n foEl.year === el.date.split('/')[2]\n ) {\n foEl.details.push(el);\n foundFlag = true;\n }\n });\n if (!foundFlag) {\n finalObject.push({\n month: el.date.split('/')[0],\n year: el.date.split('/')[2],\n details: [el]\n });\n }\n });\n\n return finalObject;\n }\n\n const SkeletonLoading = () => {\n return (\n <div style={{ marginRight: 48 }}>\n <LayoutUnit unit='nudge' />\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Skeleton variant='circle' width={30} height={30} />\n </div>\n <LayoutUnit unit='nudge' />\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Skeleton variant='rect' width={1} height={25} />\n </div>\n <Skeleton variant='text' />\n <Skeleton variant='text' />\n <LayoutUnit unit='sm' />\n <Skeleton variant='rect' width={80} height={6} />\n </div>\n );\n };\n\n const preLoading = [...Array(summaryLength).keys()].slice(1);\n\n const dataToSort = data && groupByMonth(dataConvertedFilter);\n\n const sorted = dataToSort.sort(\n (a, b) => a.year - b.year || a.month - b.month\n );\n\n const getYears = [];\n data &&\n dataToSort.map((item) => {\n getYears.push({ year: item.year });\n });\n\n const uniqueYears = [...new Set(getYears.map((item) => item.year))];\n\n return (\n <div>\n <div className={classes.wrapper}>\n {loading && <LinearProgress color='secondary' />}\n <CardContent>\n <div\n style={{\n display: 'flex',\n position: 'relative'\n }}\n >\n <div style={{ flex: 1 }}>\n <Typography variant='h6'>Timeline Summary</Typography>\n <LayoutUnit unit='md' />\n </div>\n\n <div style={{ display: 'flex' }}>\n <div key={filterKey}>\n <TimelineTopRowFilter\n compact={compact}\n setCompact={setCompact}\n onClose={() => setCompact(!compact)}\n filterCall={(type) => addFilter(type)}\n clear={clearFilters}\n filterList={filterItems && filterItems}\n filterListGroup={filterListGroup && filterListGroup}\n />\n </div>\n <div className={classes.launch}>\n <CircleButton\n component={Link}\n to={{\n pathname: insightPath,\n state: {\n timelineApiMethodInstanceId: timelineApiMethodInstanceId\n }\n }}\n >\n <RedEyeIcon />\n </CircleButton>\n </div>\n </div>\n </div>\n <div\n style={{ display: 'flex', overflow: 'scroll', direction: 'rtl' }}\n >\n <div style={{ direction: 'ltr', display: 'flex' }}>\n {loading &&\n preLoading.map((item) => {\n return <SkeletonLoading key={item} />;\n })}\n\n {uniqueYears.map((uniqueYear, index) => (\n <div style={{ display: 'flex' }}>\n {!loading && (\n <MttYearTag year count={12}>\n {uniqueYear}\n </MttYearTag>\n )}\n {summaryEvents &&\n data &&\n sorted.map((item) => {\n if (item.year === uniqueYears[index]) {\n return (\n <DateWrapper\n months={Number(item.month)}\n count={item.details.length}\n >\n {item.details.map((item) => {\n return (\n <div key={item.id}>\n <SummaryToken\n showMonth\n months={[item.date]}\n summary\n icon={\n <IconRenderer\n //noBorder\n removeMargin\n value={{\n color: { hex: '#' + item.color },\n //name: item.icon ? item.icon : 'MessageIcon',\n name: item.icon\n }}\n />\n }\n showToken\n status={\n item.data1 &&\n item.data1.toString().trim() !== ''\n ? null\n : Number(item.data2)\n }\n timelineItem={item.transactionType}\n title={item.shortDescription}\n date={item.date}\n dot={false}\n relative\n amount={item.data1}\n month={Number(item.date.charAt(0))}\n user={item.data3}\n balance={item.data4}\n hidebackground\n />\n </div>\n );\n })}\n </DateWrapper>\n );\n } else return null;\n })}\n </div>\n ))}\n </div>\n </div>\n </CardContent>\n </div>\n </div>\n );\n};\n\nMttSummary.propTypes = {\n timelineApiMethodInstanceId: PropTypes.string.isRequired\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MttSummary-CTETqPbU.js","names":["uuid","apiMutate","data","filterListGroup","Link","item"],"sources":["../src/componentSystems/multiThreadTimeline/timeline.ts","../src/componentSystems/multiThreadTimeline/mttSummary/MttSummary.jsx"],"sourcesContent":["interface Event {\n id: string | undefined;\n eventTypeID: string | undefined;\n primaryContextID: string | undefined;\n secondaryContextID: string | undefined;\n date: string | undefined;\n transactionType: string | undefined;\n description: string | undefined;\n shortDescription: string | undefined;\n status: number | undefined;\n data1: '';\n}\n\ninterface Thread {\n id: string | undefined;\n name: string | undefined;\n inSummary: boolean;\n queryID: string | undefined;\n iconID: string | undefined;\n mttConfigID: string | undefined;\n events: Array<Event> | undefined;\n}\n\nexport interface Timeline {\n threads: Array<Thread> | undefined;\n}\n\nexport const createTimeline = (threads: Array<any>): Timeline => {\n return { threads };\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { IconRenderer } from '../../../UI/templates/ui/renderers/IconRenderer';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { createTimeline } from '../timeline.ts';\nimport { SummaryToken } from '../ui/SummaryToken';\nimport {\n CardContent,\n LinearProgress,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport { TimelineTopRowFilter } from '../ui/TimelineTopRowFilter';\nimport { DateWrapper } from '../ui/DateWrapper';\nimport { CircleButton } from '../ui/CircleButton';\nimport { RedEyeIcon } from '@fluentui/react-icons';\nimport { Link } from 'react-router-dom';\nimport { formatDataWithTimelineCategoryName } from '../functions/mttFunctions';\nimport { MttYearTag } from '../ui/MttYearTag';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n wrapper: {\n background: theme.palette.common.white,\n borderRadius: theme.spacing(0.5),\n overflow: 'hidden'\n },\n launch: {\n marginLeft: theme.spacing(8)\n }\n}));\n\nexport const MttSummary = (props) => {\n const {\n timelineApiMethodInstanceId,\n insightPath = '/mtt-main',\n params\n } = props;\n const [data, setData] = useState([]);\n const [timelineThreads, setTimelineThreads] = useState(null);\n const [timeline, setTimeline] = useState(null);\n const [loading, setLoading] = useState(false);\n const [filters, setFilters] = useState([]);\n const [allFilters, setAllFilters] = useState([]);\n const [compact, setCompact] = useState(true);\n const [filterListGroup, setFilterListGroup] = useState();\n const [filterKey, setFilterKey] = useState(uuid());\n\n const classes = useStyles();\n const preloadLength = 11;\n\n const executeQueryInstance = useCallback(\n async (apiMethodInstanceId, data = {}) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}`,\n {\n method: 'post'\n },\n { data: data }\n ),\n []\n );\n\n const summaryThreads = useMemo(() => {\n if (!timeline?.threads?.length) {\n return [];\n }\n\n setData(\n formatDataWithTimelineCategoryName(\n timeline.threads.filter((thread) => thread.inSummary)\n )\n );\n return timeline.threads.filter((thread) => thread.inSummary);\n }, [timeline]);\n\n const summaryEvents = useMemo(() => {\n if (!summaryThreads.length) {\n return [];\n }\n return summaryThreads.map((st) => st.events).flat();\n }, [summaryThreads]);\n\n // Get Filter Array\n let filterItems = [];\n summaryThreads &&\n summaryThreads.map((item) => {\n filterItems.push(item.name);\n });\n\n const addFilter = (filter) => {\n if (filters.includes(filter)) {\n const updatedFilter = filters.filter((e) => e !== filter);\n setFilters(updatedFilter);\n } else {\n setFilters([...filters, filter]);\n }\n };\n\n const clearFilters = useCallback(() => {\n setFilters([]);\n }, []);\n\n useEffect(() => {\n const fetchTimelineThreads = async () => {\n const timelineResponse = await executeQueryInstance(\n timelineApiMethodInstanceId\n );\n\n if (timelineResponse?.status === 200) {\n setTimelineThreads(timelineResponse?.data?.pageList || []);\n }\n };\n fetchTimelineThreads();\n }, [executeQueryInstance, timelineApiMethodInstanceId]);\n\n useEffect(() => {\n const fetchThreadEvents = async () => {\n if (!timelineThreads) {\n return null;\n }\n setLoading(true);\n const promises = [];\n const threadList = [];\n timelineThreads.forEach((thread) => {\n promises.push(executeQueryInstance(thread.queryID, { ...params }));\n });\n await Promise.all(\n promises.map((p) =>\n p.catch((e) => {\n setLoading(false);\n return e;\n })\n )\n ).then((responses) => {\n responses.forEach((response, index) => {\n if (response.status === 200) {\n const timelineThread = timelineThreads[index];\n if (response?.data?.pageList) {\n response.data.pageList.forEach(\n (evt) => (evt.threadId = timelineThread.name)\n );\n const thread = {\n ...timelineThread,\n events: response.data.pageList\n };\n threadList.push(thread);\n }\n }\n });\n setLoading(false);\n });\n setTimeline(createTimeline(threadList));\n // setData(formatDataWithTimelineCategoryName(threadList))\n };\n fetchThreadEvents();\n }, [executeQueryInstance, timelineThreads, params]);\n\n useEffect(() => {\n const filterList =\n summaryEvents &&\n summaryEvents.map((item) => {\n return item.threadId;\n });\n setAllFilters(filterList);\n setFilters(filterList);\n }, [summaryEvents]);\n\n useEffect(() => {\n const filterListGroup = [];\n summaryEvents &&\n summaryEvents.map((item) => {\n filterListGroup.push({\n name: item.threadId,\n icon: item.icon,\n color: item.color\n });\n });\n\n const key = 'name';\n\n const arrayUniqueByKey = [\n ...new Map(filterListGroup.map((item) => [item[key], item])).values()\n ];\n\n setFilterKey(uuid());\n setFilterListGroup(arrayUniqueByKey);\n }, [summaryEvents]);\n\n const mappedToDetails =\n data &&\n data\n .map((item) => item.dates)\n .flat()\n .map((item) => item.details)\n .flat();\n\n // for Skeleton preloading\n const summaryLength = summaryThreads.length || preloadLength;\n\n const getMembers = (members) => {\n let events = [];\n\n return members\n .map((mem) => {\n const m = { ...mem };\n if (m.events && m.events.length) {\n events = [...events, ...m.events];\n }\n delete m.events;\n return m;\n })\n .concat(events.length ? getMembers(events) : events);\n };\n\n getMembers(summaryThreads);\n\n const dataConvertedFilter =\n mappedToDetails &&\n mappedToDetails.filter((item) => filters?.includes(item.threadId));\n\n // Feed dataConvertedFilter into the grouping function (this should filter the array of objects before they are grouped)\n\n function groupByMonth(object) {\n let finalObject = [];\n object.forEach((el) => {\n let foundFlag = false;\n finalObject.forEach((foEl) => {\n if (\n foEl.month === el.date.split('/')[0] &&\n foEl.year === el.date.split('/')[2]\n ) {\n foEl.details.push(el);\n foundFlag = true;\n }\n });\n if (!foundFlag) {\n finalObject.push({\n month: el.date.split('/')[0],\n year: el.date.split('/')[2],\n details: [el]\n });\n }\n });\n\n return finalObject;\n }\n\n const SkeletonLoading = () => {\n return (\n <div style={{ marginRight: 48 }}>\n <LayoutUnit unit='nudge' />\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Skeleton variant='circle' width={30} height={30} />\n </div>\n <LayoutUnit unit='nudge' />\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Skeleton variant='rect' width={1} height={25} />\n </div>\n <Skeleton variant='text' />\n <Skeleton variant='text' />\n <LayoutUnit unit='sm' />\n <Skeleton variant='rect' width={80} height={6} />\n </div>\n );\n };\n\n const preLoading = [...Array(summaryLength).keys()].slice(1);\n\n const dataToSort = data && groupByMonth(dataConvertedFilter);\n\n const sorted = dataToSort.sort(\n (a, b) => a.year - b.year || a.month - b.month\n );\n\n const getYears = [];\n data &&\n dataToSort.map((item) => {\n getYears.push({ year: item.year });\n });\n\n const uniqueYears = [...new Set(getYears.map((item) => item.year))];\n\n return (\n <div>\n <div className={classes.wrapper}>\n {loading && <LinearProgress color='secondary' />}\n <CardContent>\n <div\n style={{\n display: 'flex',\n position: 'relative'\n }}\n >\n <div style={{ flex: 1 }}>\n <Typography variant='h6'>Timeline Summary</Typography>\n <LayoutUnit unit='md' />\n </div>\n\n <div style={{ display: 'flex' }}>\n <div key={filterKey}>\n <TimelineTopRowFilter\n compact={compact}\n setCompact={setCompact}\n onClose={() => setCompact(!compact)}\n filterCall={(type) => addFilter(type)}\n clear={clearFilters}\n filterList={filterItems && filterItems}\n filterListGroup={filterListGroup && filterListGroup}\n />\n </div>\n <div className={classes.launch}>\n <CircleButton\n component={Link}\n to={{\n pathname: insightPath,\n state: {\n timelineApiMethodInstanceId: timelineApiMethodInstanceId\n }\n }}\n >\n <RedEyeIcon />\n </CircleButton>\n </div>\n </div>\n </div>\n <div\n style={{ display: 'flex', overflow: 'scroll', direction: 'rtl' }}\n >\n <div style={{ direction: 'ltr', display: 'flex' }}>\n {loading &&\n preLoading.map((item) => {\n return <SkeletonLoading key={item} />;\n })}\n\n {uniqueYears.map((uniqueYear, index) => (\n <div style={{ display: 'flex' }}>\n {!loading && (\n <MttYearTag year count={12}>\n {uniqueYear}\n </MttYearTag>\n )}\n {summaryEvents &&\n data &&\n sorted.map((item) => {\n if (item.year === uniqueYears[index]) {\n return (\n <DateWrapper\n months={Number(item.month)}\n count={item.details.length}\n >\n {item.details.map((item) => {\n return (\n <div key={item.id}>\n <SummaryToken\n showMonth\n months={[item.date]}\n summary\n icon={\n <IconRenderer\n //noBorder\n removeMargin\n value={{\n color: { hex: '#' + item.color },\n //name: item.icon ? item.icon : 'MessageIcon',\n name: item.icon\n }}\n />\n }\n showToken\n status={\n item.data1 &&\n item.data1.toString().trim() !== ''\n ? null\n : Number(item.data2)\n }\n timelineItem={item.transactionType}\n title={item.shortDescription}\n date={item.date}\n dot={false}\n relative\n amount={item.data1}\n month={Number(item.date.charAt(0))}\n user={item.data3}\n balance={item.data4}\n hidebackground\n />\n </div>\n );\n })}\n </DateWrapper>\n );\n } else return null;\n })}\n </div>\n ))}\n </div>\n </div>\n </CardContent>\n </div>\n </div>\n );\n};\n\nMttSummary.propTypes = {\n timelineApiMethodInstanceId: PropTypes.string.isRequired\n};\n"],"mappings":"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"}
@@ -222,7 +222,8 @@ const MyExportsPage = (props) => {
222
222
  primaryText: !noDownloadMethod && "File is ready to download!"
223
223
  })));
224
224
  };
225
+ var MyExportsPage_default = MyExportsPage;
225
226
 
226
227
  //#endregion
227
- export { MyExportsPage, StatusCellRenderer };
228
- //# sourceMappingURL=MyExportsPage-CBqIhu4I.js.map
228
+ export { MyExportsPage, MyExportsPage_default, StatusCellRenderer };
229
+ //# sourceMappingURL=MyExportsPage-Cq2MRoRf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MyExportsPage-CBqIhu4I.js","names":["value"],"sources":["../src/UI/templates/ui/renderers/StatusCellRenderer.jsx","../src/udp/export/MyExportsPage.jsx"],"sourcesContent":["import React from 'react';\nimport { StatusChip } from '../../../dataDisplay/StatusChip';\n\nexport const StatusCellRenderer = props => {\n const { value, getStatus, getLabel } = props;\n const formattedLabel = value => {\n return value\n ?.replace(/([a-z])([A-Z])/g, '$1 $2')\n ?.replace(/\\b\\w/g, char => char.toUpperCase());\n };\n return (\n <StatusChip\n status={getStatus(value)}\n label={getLabel ? formattedLabel(getLabel(value)) : formattedLabel(value)}\n />\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport {\n StatusCircleCheckmarkIcon,\n ErrorIcon,\n DownloadIcon\n} from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { TableContainer } from '../../maintenanceEngine/tableBrowser/TableContainer';\nimport { StatusCellRenderer } from '../../UI/templates/ui/renderers/StatusCellRenderer';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const MyExportsPage = (props) => {\n const { productId } = props;\n const user = useUser();\n const [product, setProduct] = useState();\n const [downloadLinkLoading, setDownloadLinkLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n const [downloadOpen, setDownloadOpen] = useState(false);\n const [noDownloadMethod, setNoDownloadMethod] = useState(false);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [{ data: products, loading: productsLoading }] = useAxiosGet(\n ConfigService.tenantV2ApiUrl,\n `tenant/products?tenantId=${user?.currentTenantId}&isSubscribable=${!user\n ?.can?.CAN_MANAGE_CATALOGS_FOR_UNSUBSCRIBABLE_PRODUCTS}`,\n {},\n !user\n );\n\n const [{ data: apiCatalog, loading: catalogLoading, error: catalogError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${\n productId ? productId : product?.productId\n }`,\n {},\n !(product || productId),\n false\n );\n\n const [{ data: udpJobEntity, loading: jobEntityLoading }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalog?.apiCatalogId}/promotedMethodEntities/udpJob/product/${apiCatalog?.productId}?compareSanitizedName=true`,\n {},\n !apiCatalog?.productId || !apiCatalog?.apiCatalogId,\n false\n );\n\n const refetchfileResultData = useCallback(\n async (selectedRecord) => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n setDownloadLinkLoading(true);\n await executeQueryWithParameters(\n {\n data: { JobId: selectedRecord?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {});\n setDownloadLinkLoading(false);\n } else {\n setNoDownloadMethod(true);\n }\n },\n [udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId]\n );\n\n const handleSelectRecord = useCallback(\n (data) => {\n refetchfileResultData(data);\n setDownloadOpen(true);\n },\n [refetchfileResultData]\n );\n\n const getOptionLabel = (val) => {\n return val?.name;\n };\n\n const handleProductChange = useCallback((val) => {\n setProduct(val);\n }, []);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setDownloadOpen(false);\n handleSuccessSnackbar('File successfully downloaded');\n }\n }, [fileResultData?.link, handleSuccessSnackbar]);\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return null;\n } else if (value === 2) {\n return 'info';\n } else if (value === 3) {\n return 'success';\n } else if (value === 4) {\n return 'error';\n }\n };\n\n const getJobLabel = (value) => {\n if (value === 1) {\n return 'Pending';\n } else if (value === 2) {\n return 'Running';\n } else if (value === 3) {\n return 'Completed';\n } else if (value === 4) {\n return 'Failed';\n }\n };\n\n useEffect(() => {\n if (catalogError) {\n handleErrorSnackbar(\n '',\n 'Error fetching catalog for the selected product'\n );\n }\n }, [catalogError, handleErrorSnackbar]);\n\n const filterElements = useMemo(() => {\n return [\n {\n searchField: 'jobTypeId',\n searchOperator: '=',\n searchValue: 2\n }\n ];\n }, []);\n\n const actionList = useMemo(() => {\n return [\n {\n id: 1,\n title: 'Download',\n icon: DownloadIcon,\n onClick: handleSelectRecord,\n disabled: false,\n checkDisabled: (value) => value?.statusId !== 3\n }\n ];\n }, [handleSelectRecord]);\n\n const columnDefs = useMemo(\n () => [\n {\n headerName: 'Id',\n sortable: true,\n field: 'id',\n suppressMenu: true\n },\n {\n headerName: 'Name',\n sortable: false,\n field: 'name',\n minWidth: 140,\n suppressMenu: true,\n valueFormatter: (data) => getSanitizedName(data.data.name)\n },\n {\n headerName: 'Date',\n sortable: false,\n valueFormatter: (data) =>\n new Date(data.data.startTime).toLocaleString(),\n minWidth: 130,\n suppressMenu: true\n //sort: 'desc',\n },\n {\n headerName: 'Status',\n field: 'statusId',\n wrapText: true,\n autoHeight: true,\n sortable: false,\n cellRenderer: 'statusCellRenderer',\n cellRendererParams: { getStatus: getJobStatus, getLabel: getJobLabel },\n minWidth: 130,\n maxWidth: 130,\n suppressMenu: true\n },\n\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n width: 120,\n maxWidth: 120,\n cellRendererParams: {\n actionList: actionList,\n value: (data) => data\n },\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ],\n [actionList]\n );\n\n return (\n <div>\n {udpJobEntity && !udpJobEntity?.unityBaseSearchMethod?.apiMethodId && (\n <AmbientAlert\n alertMessage={\"UdpJob's search method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n )}\n\n {!productId && (\n <div style={{ margin: '0px 5px 5px 5px' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'product'}\n name={'product'}\n label='Product'\n onChange={handleProductChange}\n options={products}\n size='small'\n getOptionLabelFunction={getOptionLabel}\n value={product}\n required\n />\n </div>\n )}\n <TableContainer\n loading={productsLoading || catalogLoading || jobEntityLoading}\n title={`Exports`}\n isServerSide={true}\n eagerLoad={false}\n logicalSearchOperator={2}\n promotedEntity={udpJobEntity}\n filterElements={filterElements}\n actionList={actionList}\n customColumnDefs={columnDefs}\n frameworkComponents={{\n statusCellRenderer: StatusCellRenderer,\n actionsRenderer: ActionsRenderer\n }}\n hideSearchBar\n hiddenActionButtons={[\n 'saveView',\n 'views',\n 'insights',\n 'importExport',\n 'group',\n 'filter',\n 'columns',\n 'clearFilters',\n 'fitGrid',\n 'expandGrid'\n ]}\n height={'calc(100vh - 167px)'}\n dynamicSizing\n />\n <FluentDialog\n actionOne={handleFileDownload}\n actionTwo={() => setDownloadOpen(false)}\n labelOne='Download'\n labelTwo='Cancel'\n open={downloadOpen}\n handleClose={() => setDownloadOpen(false)}\n disableOne={noDownloadMethod || downloadLinkLoading}\n progress={downloadLinkLoading}\n fullWidth\n >\n {noDownloadMethod ? (\n <AmbientAlert\n alertMessage={\"UdpJob's get file result method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n ) : downloadLinkLoading ? (\n <EmptyStateDisplay primaryText={'Fetching download link...'} />\n ) : (\n <EmptyStateDisplay\n icon={noDownloadMethod ? ErrorIcon : StatusCircleCheckmarkIcon}\n primaryText={!noDownloadMethod && 'File is ready to download!'}\n />\n )}\n </FluentDialog>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"MyExportsPage-Cq2MRoRf.js","names":["value"],"sources":["../src/UI/templates/ui/renderers/StatusCellRenderer.jsx","../src/udp/export/MyExportsPage.jsx"],"sourcesContent":["import React from 'react';\nimport { StatusChip } from '../../../dataDisplay/StatusChip';\n\nexport const StatusCellRenderer = props => {\n const { value, getStatus, getLabel } = props;\n const formattedLabel = value => {\n return value\n ?.replace(/([a-z])([A-Z])/g, '$1 $2')\n ?.replace(/\\b\\w/g, char => char.toUpperCase());\n };\n return (\n <StatusChip\n status={getStatus(value)}\n label={getLabel ? formattedLabel(getLabel(value)) : formattedLabel(value)}\n />\n );\n};\n","import React, { useMemo, useState, useCallback, useEffect } from 'react';\nimport {\n StatusCircleCheckmarkIcon,\n ErrorIcon,\n DownloadIcon\n} from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentDialog } from '../../UI/feedback/FluentDialog';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { useAxiosGet } from '../../utilities/useAxiosGet';\nimport { ActionsRenderer } from '../../UI/templates/ui/renderers/ActionsRenderer';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { TableContainer } from '../../maintenanceEngine/tableBrowser/TableContainer';\nimport { StatusCellRenderer } from '../../UI/templates/ui/renderers/StatusCellRenderer';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { AmbientAutoComplete } from '../../UI/inputs/textField/AmbientAutoComplete';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const MyExportsPage = (props) => {\n const { productId } = props;\n const user = useUser();\n const [product, setProduct] = useState();\n const [downloadLinkLoading, setDownloadLinkLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n const [downloadOpen, setDownloadOpen] = useState(false);\n const [noDownloadMethod, setNoDownloadMethod] = useState(false);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [{ data: products, loading: productsLoading }] = useAxiosGet(\n ConfigService.tenantV2ApiUrl,\n `tenant/products?tenantId=${user?.currentTenantId}&isSubscribable=${!user\n ?.can?.CAN_MANAGE_CATALOGS_FOR_UNSUBSCRIBABLE_PRODUCTS}`,\n {},\n !user\n );\n\n const [{ data: apiCatalog, loading: catalogLoading, error: catalogError }] =\n useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${\n productId ? productId : product?.productId\n }`,\n {},\n !(product || productId),\n false\n );\n\n const [{ data: udpJobEntity, loading: jobEntityLoading }] = useAxiosGet(\n ConfigService.integrationV1ApiUrl,\n `apicatalog/${apiCatalog?.apiCatalogId}/promotedMethodEntities/udpJob/product/${apiCatalog?.productId}?compareSanitizedName=true`,\n {},\n !apiCatalog?.productId || !apiCatalog?.apiCatalogId,\n false\n );\n\n const refetchfileResultData = useCallback(\n async (selectedRecord) => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n setDownloadLinkLoading(true);\n await executeQueryWithParameters(\n {\n data: { JobId: selectedRecord?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {});\n setDownloadLinkLoading(false);\n } else {\n setNoDownloadMethod(true);\n }\n },\n [udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId]\n );\n\n const handleSelectRecord = useCallback(\n (data) => {\n refetchfileResultData(data);\n setDownloadOpen(true);\n },\n [refetchfileResultData]\n );\n\n const getOptionLabel = (val) => {\n return val?.name;\n };\n\n const handleProductChange = useCallback((val) => {\n setProduct(val);\n }, []);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n setDownloadOpen(false);\n handleSuccessSnackbar('File successfully downloaded');\n }\n }, [fileResultData?.link, handleSuccessSnackbar]);\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return null;\n } else if (value === 2) {\n return 'info';\n } else if (value === 3) {\n return 'success';\n } else if (value === 4) {\n return 'error';\n }\n };\n\n const getJobLabel = (value) => {\n if (value === 1) {\n return 'Pending';\n } else if (value === 2) {\n return 'Running';\n } else if (value === 3) {\n return 'Completed';\n } else if (value === 4) {\n return 'Failed';\n }\n };\n\n useEffect(() => {\n if (catalogError) {\n handleErrorSnackbar(\n '',\n 'Error fetching catalog for the selected product'\n );\n }\n }, [catalogError, handleErrorSnackbar]);\n\n const filterElements = useMemo(() => {\n return [\n {\n searchField: 'jobTypeId',\n searchOperator: '=',\n searchValue: 2\n }\n ];\n }, []);\n\n const actionList = useMemo(() => {\n return [\n {\n id: 1,\n title: 'Download',\n icon: DownloadIcon,\n onClick: handleSelectRecord,\n disabled: false,\n checkDisabled: (value) => value?.statusId !== 3\n }\n ];\n }, [handleSelectRecord]);\n\n const columnDefs = useMemo(\n () => [\n {\n headerName: 'Id',\n sortable: true,\n field: 'id',\n suppressMenu: true\n },\n {\n headerName: 'Name',\n sortable: false,\n field: 'name',\n minWidth: 140,\n suppressMenu: true,\n valueFormatter: (data) => getSanitizedName(data.data.name)\n },\n {\n headerName: 'Date',\n sortable: false,\n valueFormatter: (data) =>\n new Date(data.data.startTime).toLocaleString(),\n minWidth: 130,\n suppressMenu: true\n //sort: 'desc',\n },\n {\n headerName: 'Status',\n field: 'statusId',\n wrapText: true,\n autoHeight: true,\n sortable: false,\n cellRenderer: 'statusCellRenderer',\n cellRendererParams: { getStatus: getJobStatus, getLabel: getJobLabel },\n minWidth: 130,\n maxWidth: 130,\n suppressMenu: true\n },\n\n {\n headerName: 'Actions',\n filter: false,\n pinned: 'right',\n cellRenderer: 'actionsRenderer',\n width: 120,\n maxWidth: 120,\n cellRendererParams: {\n actionList: actionList,\n value: (data) => data\n },\n suppressMenu: true,\n sortable: false,\n cellStyle: { display: 'flex', alignItems: 'center' }\n }\n ],\n [actionList]\n );\n\n return (\n <div>\n {udpJobEntity && !udpJobEntity?.unityBaseSearchMethod?.apiMethodId && (\n <AmbientAlert\n alertMessage={\"UdpJob's search method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n )}\n\n {!productId && (\n <div style={{ margin: '0px 5px 5px 5px' }}>\n <AmbientAutoComplete\n isMultiple={false}\n id={'product'}\n name={'product'}\n label='Product'\n onChange={handleProductChange}\n options={products}\n size='small'\n getOptionLabelFunction={getOptionLabel}\n value={product}\n required\n />\n </div>\n )}\n <TableContainer\n loading={productsLoading || catalogLoading || jobEntityLoading}\n title={`Exports`}\n isServerSide={true}\n eagerLoad={false}\n logicalSearchOperator={2}\n promotedEntity={udpJobEntity}\n filterElements={filterElements}\n actionList={actionList}\n customColumnDefs={columnDefs}\n frameworkComponents={{\n statusCellRenderer: StatusCellRenderer,\n actionsRenderer: ActionsRenderer\n }}\n hideSearchBar\n hiddenActionButtons={[\n 'saveView',\n 'views',\n 'insights',\n 'importExport',\n 'group',\n 'filter',\n 'columns',\n 'clearFilters',\n 'fitGrid',\n 'expandGrid'\n ]}\n height={'calc(100vh - 167px)'}\n dynamicSizing\n />\n <FluentDialog\n actionOne={handleFileDownload}\n actionTwo={() => setDownloadOpen(false)}\n labelOne='Download'\n labelTwo='Cancel'\n open={downloadOpen}\n handleClose={() => setDownloadOpen(false)}\n disableOne={noDownloadMethod || downloadLinkLoading}\n progress={downloadLinkLoading}\n fullWidth\n >\n {noDownloadMethod ? (\n <AmbientAlert\n alertMessage={\"UdpJob's get file result method must be promoted\"}\n showAlert={true}\n alertSeverity={'error'}\n />\n ) : downloadLinkLoading ? (\n <EmptyStateDisplay primaryText={'Fetching download link...'} />\n ) : (\n <EmptyStateDisplay\n icon={noDownloadMethod ? ErrorIcon : StatusCircleCheckmarkIcon}\n primaryText={!noDownloadMethod && 'File is ready to download!'}\n />\n )}\n </FluentDialog>\n </div>\n );\n};\n\nexport default MyExportsPage;\n"],"mappings":"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"}
@@ -60,6 +60,6 @@ import "./SearchServiceDatasource-Can9G7Ei.js";
60
60
  import "./AmbientAutoComplete-BmBgMVpv.js";
61
61
  import "./EmptyStateDisplay-DK2wby5o.js";
62
62
  import "./AmbientAlert-Daw5MVak.js";
63
- import { MyExportsPage } from "./MyExportsPage-CBqIhu4I.js";
63
+ import { MyExportsPage, MyExportsPage_default } from "./MyExportsPage-Cq2MRoRf.js";
64
64
 
65
- export { MyExportsPage };
65
+ export { MyExportsPage, MyExportsPage_default as default };
@@ -7,7 +7,7 @@ import { UdpEnums } from "./unitySystemEnums-BIMR5AWe.js";
7
7
  import { useShellStore } from "./shellStore-Bqwtbs_K.js";
8
8
  import { useActionState } from "./useActions-CKdp6TpD.js";
9
9
  import { getSearchObject } from "./SearchUtilities-CzmJ6hI2.js";
10
- import { constructBusinessObjectArrFromTree } from "./TreeUtilities-DVY-2md6.js";
10
+ import { constructBusinessObjectArrFromTree } from "./TreeUtilities-XLrXtUeL.js";
11
11
  import { LayoutUnit } from "./LayoutUnit-fGVQwt6Y.js";
12
12
  import { CkRichEditor } from "./CkRichEditor-BzyNk5CH.js";
13
13
  import { executeQueryAdHoc, executeQueryWithParameters, getBaseMethod } from "./methodUtils-Bgi0VCWP.js";
@@ -364,4 +364,4 @@ const NotesScreen = (props) => {
364
364
 
365
365
  //#endregion
366
366
  export { NotesScreen };
367
- //# sourceMappingURL=NotesScreen-moR3WUoq.js.map
367
+ //# sourceMappingURL=NotesScreen-CmMz3GTR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotesScreen-moR3WUoq.js","names":["note","existingNoteObj"],"sources":["../src/notes/NotesScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const NotesScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadNotes\n } = props;\n const [note, setNote] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [noteId, setNoteId] = useState(id || '');\n const [existingNoteFiledFor, setExistingNoteFiledFor] = useState([]);\n const [existingNoteObj, setExistingNoteObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const noteGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveNote = useCallback(\n async (values) => {\n let response = null;\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.note,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`\n }\n };\n if (noteId) {\n if (updateNoteApiMethod) {\n // Set the url parameter for updating note\n data['{iD}'] = noteId;\n response = await executeQueryWithParameters(\n { data },\n updateNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Note'));\n } else {\n handleErrorSnackbar(null, 'Update Note Method Not Promoted');\n }\n } else {\n if (createNoteApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Note'));\n } else {\n handleErrorSnackbar(null, 'Create Note Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!noteId) {\n setNoteId(response.data.id || '');\n handleSuccessSnackbar('Note Saved');\n } else {\n handleSuccessSnackbar('Note Updated');\n }\n if (reloadNotes) {\n reloadNotes();\n }\n return response.data.id || noteId;\n }\n\n return noteId;\n },\n [\n createNoteApiMethod,\n updateNoteApiMethod,\n noteId,\n setNoteId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadNotes\n ]\n );\n\n const noteFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleNoteFiledFor = useCallback(\n async (values, notedIdToFileFor) => {\n // Get the noteFiledFor objects to delete\n const noteFiledForToDelete = differenceWith(\n existingNoteFiledFor,\n values?.fileTo,\n noteFiledForToComparator\n );\n\n // Get the noteFiledFor objects to create\n const noteFiledForToCreate = differenceWith(\n values?.fileTo,\n existingNoteFiledFor,\n noteFiledForToComparator\n );\n\n if (notedIdToFileFor) {\n if (deleteNoteFiledForApiMethod) {\n const deletedPromises = [];\n noteFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{noteID}'] = notedIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Note Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Note Filed For Method Not Promoted'\n );\n }\n\n if (createNoteFiledForApiMethod) {\n const createdPromises = [];\n noteFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n noteId: notedIdToFileFor,\n entityBusinessKey: nftc.value\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingNoteFiledFor = noteFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingNoteFiledFor) {\n console.warn(\n `Note Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingNoteFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Note Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createNoteFiledForApiMethod,\n deleteNoteFiledForApiMethod,\n handleErrorSnackbar,\n existingNoteFiledFor,\n setExistingNoteFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ note, ...values });\n } else {\n const notedIdToFileFor = await handleSaveNote({ note, ...values });\n await handleNoteFiledFor({ note, ...values }, notedIdToFileFor);\n }\n },\n [note, onSubmit, handleSaveNote, handleNoteFiledFor]\n );\n\n const handleTextEditorChange = (note) => {\n setNote(note);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n setNote(value?.content || '');\n },\n [setNote, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setNote(editorRef?.current?.getData());\n },\n [editorRef, setNote]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: use getAll noteTypes\n const getTypeOptions = async () => {\n let options = [];\n if (noteTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n noteTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [noteTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: use getAll noteTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (noteTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n noteTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList;\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [noteTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingNote = async () => {\n let existingNoteObj = null;\n const data = {};\n if (noteGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const noteResponse = await executeQueryWithParameters(\n { data },\n noteGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (noteResponse?.status === 200) {\n existingNoteObj = noteResponse.data;\n }\n }\n setExistingNoteObj(existingNoteObj);\n setNote(existingNoteObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingNote();\n }\n }, [id, noteGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingNoteObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingNoteObj.noteFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingNoteFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingNoteObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingNoteObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingNoteObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj) {\n return;\n }\n formRef?.current?.form?.change('subject', existingNoteObj?.subject || '');\n }, [existingNoteObj, formRef]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={note}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,QAAQ,EACN,oDAAoD,EAClD,iBACE,OAAO,cAAc,EAAE,SAAS,SAC5B,MAAM,QAAQ,KAAK,OACnB,MAAM,QAAQ,KAAK,MAC1B,EACF;CACD,KAAK;EACH,SAAS;EACT,gBAAgB;EACjB;CACD,OAAO;EACL,QAAQ;EACR,SAAS;EACV;CACD,eAAe,EACb,UAAU,IACX;CACD,WAAW,EACT,UAAU,IACX;CACF,EAAE;AAEH,MAAa,eAAe,UAAU;CACpC,MAAM,EACJ,SACA,UACA,8BACA,IACA,UACA,gBACE;CACJ,MAAM,CAAC,MAAM,WAAW,SAAS,GAAG;CACpC,MAAM,CAAC,aAAa,kBAAkB,SAAS,EAAE,CAAC;CAClD,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,EAAE,CAAC;CAC1D,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM,GAAG;CAC9C,MAAM,CAAC,sBAAsB,2BAA2B,SAAS,EAAE,CAAC;CACpE,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAC5D,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,cAAc,gBAAgB;CACpC,MAAM,cAAc,eAAe,UAAU,MAAM,YAAY;CAC/D,MAAM,EAAE,eAAe,4BAA4B;CACnD,MAAM,EAAE,uBAAuB,wBAC7B,wBAAwB;CAC1B,MAAM,OAAO,SAAS;CACtB,MAAM,YAAY,OAAO,KAAK;CAE9B,MAAM,eAAe,cAAc;AACjC,MAAI,cAAc,SAAS,OACzB,QAAO,cAAc,SAAS,cAAc,sBAAsB;AAEpE,SAAO;IACN,CAAC,cAAc,CAAC;CAEnB,MAAM,uBAAuB,cAAc;AACzC,SAAO,cACL,SAAS,UACT,0BACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,0BAA0B,cAAc;AAC5C,SAAO,cACL,SAAS,eACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,8BAA8B,cAAc;AAChD,SAAO,cACL,SAAS,mBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,sBAAsB,cAAc;AACxC,SAAO,cACL,SAAS,UACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,sBAAsB,cAAc;AACxC,SAAO,cACL,SAAS,UACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,8BAA8B,cAAc;AAChD,SAAO,cACL,SAAS,oBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,8BAA8B,cAAc;AAChD,SAAO,cACL,SAAS,oBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,WAAW,cAAc;AAC7B,SAAO;IACN,CAAC,SAAS,CAAC;CAEd,MAAM,iBAAiB,YACrB,OAAO,WAAW;EAChB,IAAI,WAAW;EACf,MAAM,OAAO,EACX,aAAa;GACX,UAAU,MAAM;GAChB,UAAU,QAAQ,MAAM;GACxB,SAAS,QAAQ;GACjB,SAAS,QAAQ;GACjB,aAAa,MAAM;GACnB,iBAAiB,GAAG,MAAM,UAAU,GAAG,MAAM;GAC9C,EACF;AACD,MAAI,OACF,KAAI,qBAAqB;AAEvB,QAAK,UAAU;AACf,cAAW,MAAM,2BACf,EAAE,MAAM,EACR,oBAAoB,YACrB,CAAC,OAAO,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;QAE/D,qBAAoB,MAAM,kCAAkC;WAG1D,oBACF,YAAW,MAAM,2BACf,EAAE,MAAM,EACR,oBAAoB,YACrB,CAAC,OAAO,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;MAE7D,qBAAoB,MAAM,kCAAkC;AAIhE,MAAI,UAAU,WAAW,KAAK;AAC5B,OAAI,CAAC,QAAQ;AACX,cAAU,SAAS,KAAK,MAAM,GAAG;AACjC,0BAAsB,aAAa;SAEnC,uBAAsB,eAAe;AAEvC,OAAI,YACF,cAAa;AAEf,UAAO,SAAS,KAAK,MAAM;;AAG7B,SAAO;IAET;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,4BAA4B,OAAO,UAAU;AACjD,SAAO,OAAO,UAAU,OAAO;;CAGjC,MAAM,qBAAqB,YACzB,OAAO,QAAQ,qBAAqB;EAElC,MAAM,uBAAuB,eAC3B,sBACA,QAAQ,QACR,yBACD;EAGD,MAAM,uBAAuB,eAC3B,QAAQ,QACR,sBACA,yBACD;AAED,MAAI,kBAAkB;AACpB,OAAI,6BAA6B;IAC/B,MAAM,kBAAkB,EAAE;AAC1B,yBAAqB,SAAS,SAAS;KACrC,MAAM,OAAO,EAAE;AACf,UAAK,cAAc;AACnB,UAAK,yBAAyB,KAAK;AACnC,qBAAgB,KACd,2BACE,EAAE,MAAM,EACR,4BAA4B,YAC7B,CACF;MACD;AAEF,UAAM,QAAQ,IAAI,gBAAgB,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAC9D,cAAc;AACb,SAAI,UAAU,WAAW,gBAAgB,OACvC,SAAQ,KAAK,iCAAiC;MAGnD;SAED,qBACE,MACA,4CACD;AAGH,OAAI,6BAA6B;IAC/B,MAAM,kBAAkB,EAAE;AAC1B,yBAAqB,SAAS,SAAS;KACrC,MAAM,OAAO,EACX,aAAa;MACX,QAAQ;MACR,mBAAmB,KAAK;MACzB,EACF;AACD,qBAAgB,KACd,2BACE,EAAE,MAAM,EACR,4BAA4B,YAC7B,CACF;MACD;AACF,UAAM,QAAQ,IAAI,gBAAgB,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAC9D,cAAc;AACb,eAAU,SAAS,aAAa;AAC9B,UAAI,SAAS,WAAW,KAAK;OAC3B,MAAM,oBAAoB,SAAS,KAAK;AAIxC,WAAI,CAHyB,qBAAqB,MAC/C,SAAS,KAAK,UAAU,kBAC1B,CAEC,SAAQ,KACN,sDACD;;OAGL;MAEL;AACD,4BAAwB,QAAQ,OAAO;SAEvC,qBACE,MACA,4CACD;;IAIP;EACE;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,iBAAiB,YACrB,OAAO,WAAW;AAChB,MAAI,SACF,UAAS;GAAE;GAAM,GAAG;GAAQ,CAAC;OACxB;GACL,MAAM,mBAAmB,MAAM,eAAe;IAAE;IAAM,GAAG;IAAQ,CAAC;AAClE,SAAM,mBAAmB;IAAE;IAAM,GAAG;IAAQ,EAAE,iBAAiB;;IAGnE;EAAC;EAAM;EAAU;EAAgB;EAAmB,CACrD;CAED,MAAM,0BAA0B,WAAS;AACvC,UAAQA,OAAK;;CAGf,MAAM,mBAAmB,aACtB,UAAU;AACT,WAAS,SAAS,MAAM,OAAO,WAAW,OAAO,WAAW,GAAG;EAC/D,MAAM,OAAO,YAAY,MAAM,WAAW,OAAO,SAAS,MAAM,SAAS;AACzE,WAAS,SAAS,MAAM,OAAO,QAAQ,QAAQ,KAAK;AACpD,UAAQ,OAAO,WAAW,GAAG;IAE/B;EAAC;EAAS;EAAS;EAAY,CAChC;CAED,MAAM,yBAAyB,aAC5B,oBAAoB;AACnB,aAAW,SAAS,OAAO,QAAQ,WAAW;GAC5C,MAAM,iBACJ,WAAW,SAAS,OAAO,UAAU,WAAW,kBAAkB;AACpE,UAAO,OACL,WAAW,SAAS,OAAO,UAAU,WAAW,eAAe,CAChE;AACD,UAAO,WAAW,iBAAiB,eAAe;IAClD;AAEF,UAAQ,WAAW,SAAS,SAAS,CAAC;IAExC,CAAC,WAAW,QAAQ,CACrB;CAED,MAAM,gBAAgB,cAAc;EAClC,IAAI,UAAU,EAAE;AAChB,MAAI,aACF,WAAU,mCAAmC,aAAa;AAE5D,SAAO;IACN,CAAC,aAAa,CAAC;AAElB,iBAAgB;EAEd,MAAM,iBAAiB,YAAY;GACjC,IAAI,UAAU,EAAE;AAChB,OAAI,yBAAyB;IAG3B,MAAM,OAAO,EAAE,MADM,gBADE,EAAE,EAC4B,GAAG,KAAK,KAAK,EAC/B;IACnC,MAAM,gBAAgB,MAAM,kBAC1B,MACA,wBAAwB,YACzB;AACD,QAAI,eAAe,WAAW,IAC5B,WAAU,cAAc,MAAM;;AAGlC,kBAAe,QAAQ;;AAEzB,kBAAgB;IACf;EAAC;EAAyB;EAAgB;EAAK,CAAC;AAEnD,iBAAgB;EAEd,MAAM,qBAAqB,YAAY;GACrC,IAAI,UAAU,EAAE;AAChB,OAAI,6BAA6B;IAG/B,MAAM,OAAO,EAAE,MADM,gBADE,EAAE,EAC4B,GAAG,KAAK,KAAK,EAC/B;IACnC,MAAM,oBAAoB,MAAM,kBAC9B,MACA,4BAA4B,YAC7B;AACD,QAAI,mBAAmB,WAAW,IAChC,WAAU,kBAAkB,MAAM;;AAGtC,sBAAmB,QAAQ;;AAE7B,sBAAoB;IACnB;EAAC;EAA6B;EAAoB;EAAK,CAAC;AAE3D,iBAAgB;EACd,MAAM,kBAAkB,YAAY;GAClC,IAAIC,oBAAkB;GACtB,MAAM,OAAO,EAAE;AACf,OAAI,sBAAsB;AACxB,eAAW,KAAK;AAChB,SAAK,UAAU;IACf,MAAM,eAAe,MAAM,2BACzB,EAAE,MAAM,EACR,qBAAqB,YACtB,CAAC,OAAO,MAAM;AACb,aAAQ,MAAM,EAAE;AAChB,gBAAW,MAAM;MACjB;AACF,QAAI,cAAc,WAAW,IAC3B,qBAAkB,aAAa;;AAGnC,sBAAmBA,kBAAgB;AACnC,WAAQA,mBAAiB,QAAQ;AACjC,cAAW,MAAM;;AAEnB,MAAI,GACF,kBAAiB;IAElB,CAAC,IAAI,qBAAqB,CAAC;AAE9B,iBAAgB;AACd,MAAI,CAAC,mBAAmB,CAAC,eAAe,OACtC;EAEF,MAAM,iBAAiB,cAAc,QAAQ,WAAW;AACtD,UAAO,gBAAgB,aAAa,MACjC,QAAQ,OAAO,UAAU,IAAI,kBAC/B;IACD;AACF,0BAAwB,eAAe;AACvC,WAAS,SAAS,MAAM,OAAO,UAAU,eAAe;IACvD;EAAC;EAAiB;EAAe;EAAQ,CAAC;AAE7C,iBAAgB;AACd,MAAI,CAAC,mBAAmB,CAAC,aAAa,OACpC;EAEF,MAAM,cAAc,YAAY,MAC7B,WAAW,OAAO,SAAS,gBAAgB,SAC7C;AACD,WAAS,SAAS,MAAM,OAAO,QAAQ,eAAe,KAAK;IAC1D;EAAC;EAAiB;EAAa;EAAQ,CAAC;AAE3C,iBAAgB;AACd,MAAI,CAAC,gBACH;AAEF,WAAS,SAAS,MAAM,OAAO,WAAW,iBAAiB,WAAW,GAAG;IACxE,CAAC,iBAAiB,QAAQ,CAAC;AAE9B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACrB,WAAW,oCAAC,kBAAe,OAAM,cAAc,EAChD,oCAAC;EAAY,WAAW;EAAM,QAAQ;IACpC,oCAAC;EAAK,UAAU;EAAgB,KAAK;IACnC,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,UAAU;EACnB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS,iBAAiB,EAAE;EAC5B,WAAW;EACX,UAAU;EACV,WAAW,CAAC,WAAW,IAAI;EAC3B,YAAY;EACF;GACV,EACF,oCAAC,SAAI,WAAW,QAAQ,OACtB,oCAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,IAC3B,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,OAAO;EAChB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS,eAAe,EAAE;EAC1B,WAAW;EACX,UAAU;EACA;GACV,CACE,EACL,CAAC,YACA,oCAAC,SAAI,OAAO;EAAE,OAAO;EAAQ,YAAY;EAAG,IAC1C,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,WAAW;EACpB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS,mBAAmB,EAAE;EAC9B,WAAW;EACX,0BAA0B;GAC1B,CACE,CAEJ,EACN,oCAAC;EACC,WAAW;EACX,OAAO,EAAE,UAAU;EACnB,MAAK;EACL,IAAG;EACH;EACA,SAAQ;EACR,MAAK;EACL,QAAO;EACP;EACU;EACV,YAAY,EACV,SAAS;GACP,MAAM,SAAS;GACf,OAAO,SAAS;GACjB,EACF;EACD,iBAAiB,EACf,SAAS,EACP,MAAM,SAAS,WAChB,EACF;GACD,EACF,oCAAC,cAAW,MAAK,UAAU,EAC3B,oCAAC;EACC,cAAc;EACd,SAAS,EAAE,QAAQ,QAAQ,QAAQ;EACnC,MAAM;EACK;EACX,YAAY;EACZ,UAAU;GACV,CACG,CACK,EACd,oCAAC,cAAW,MAAK,UAAU,EAC1B,gCACC,oCAAC;EACC,WAAW;EACX,QAAQ;EACR,wBAAwB;EACxB,mBAAmB,gBAAgB,cAAc,UAAU,QAAQ;IAEnE,oCAAC,yBAAsB,UAAU,yBAA0B,CAC/C,CAEZ"}
1
+ {"version":3,"file":"NotesScreen-CmMz3GTR.js","names":["note","existingNoteObj"],"sources":["../src/notes/NotesScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const NotesScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadNotes\n } = props;\n const [note, setNote] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [noteId, setNoteId] = useState(id || '');\n const [existingNoteFiledFor, setExistingNoteFiledFor] = useState([]);\n const [existingNoteObj, setExistingNoteObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const noteGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const noteTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateNoteApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteNoteFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Note_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveNote = useCallback(\n async (values) => {\n let response = null;\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.note,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`\n }\n };\n if (noteId) {\n if (updateNoteApiMethod) {\n // Set the url parameter for updating note\n data['{iD}'] = noteId;\n response = await executeQueryWithParameters(\n { data },\n updateNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Note'));\n } else {\n handleErrorSnackbar(null, 'Update Note Method Not Promoted');\n }\n } else {\n if (createNoteApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createNoteApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Note'));\n } else {\n handleErrorSnackbar(null, 'Create Note Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!noteId) {\n setNoteId(response.data.id || '');\n handleSuccessSnackbar('Note Saved');\n } else {\n handleSuccessSnackbar('Note Updated');\n }\n if (reloadNotes) {\n reloadNotes();\n }\n return response.data.id || noteId;\n }\n\n return noteId;\n },\n [\n createNoteApiMethod,\n updateNoteApiMethod,\n noteId,\n setNoteId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadNotes\n ]\n );\n\n const noteFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleNoteFiledFor = useCallback(\n async (values, notedIdToFileFor) => {\n // Get the noteFiledFor objects to delete\n const noteFiledForToDelete = differenceWith(\n existingNoteFiledFor,\n values?.fileTo,\n noteFiledForToComparator\n );\n\n // Get the noteFiledFor objects to create\n const noteFiledForToCreate = differenceWith(\n values?.fileTo,\n existingNoteFiledFor,\n noteFiledForToComparator\n );\n\n if (notedIdToFileFor) {\n if (deleteNoteFiledForApiMethod) {\n const deletedPromises = [];\n noteFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{noteID}'] = notedIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Note Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Note Filed For Method Not Promoted'\n );\n }\n\n if (createNoteFiledForApiMethod) {\n const createdPromises = [];\n noteFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n noteId: notedIdToFileFor,\n entityBusinessKey: nftc.value\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createNoteFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingNoteFiledFor = noteFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingNoteFiledFor) {\n console.warn(\n `Note Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingNoteFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Note Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createNoteFiledForApiMethod,\n deleteNoteFiledForApiMethod,\n handleErrorSnackbar,\n existingNoteFiledFor,\n setExistingNoteFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ note, ...values });\n } else {\n const notedIdToFileFor = await handleSaveNote({ note, ...values });\n await handleNoteFiledFor({ note, ...values }, notedIdToFileFor);\n }\n },\n [note, onSubmit, handleSaveNote, handleNoteFiledFor]\n );\n\n const handleTextEditorChange = (note) => {\n setNote(note);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n setNote(value?.content || '');\n },\n [setNote, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setNote(editorRef?.current?.getData());\n },\n [editorRef, setNote]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: use getAll noteTypes\n const getTypeOptions = async () => {\n let options = [];\n if (noteTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n noteTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList;\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [noteTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: use getAll noteTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (noteTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n noteTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList;\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [noteTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingNote = async () => {\n let existingNoteObj = null;\n const data = {};\n if (noteGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const noteResponse = await executeQueryWithParameters(\n { data },\n noteGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (noteResponse?.status === 200) {\n existingNoteObj = noteResponse.data;\n }\n }\n setExistingNoteObj(existingNoteObj);\n setNote(existingNoteObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingNote();\n }\n }, [id, noteGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingNoteObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingNoteObj.noteFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingNoteFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingNoteObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingNoteObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingNoteObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingNoteObj) {\n return;\n }\n formRef?.current?.form?.change('subject', existingNoteObj?.subject || '');\n }, [existingNoteObj, formRef]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={note}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { apiMutate as apiMutate$1 } from "./useAxiosMutate-BNEb4J04.js";
2
2
  import { useActionStore } from "./inquiryStore-COAx0QBg.js";
3
3
  import { useShellStore } from "./shellStore-Bqwtbs_K.js";
4
4
  import { useActionState } from "./useActions-CKdp6TpD.js";
5
- import { ActionSplitScreen } from "./ActionSplitScreen-Cym0gCOb.js";
5
+ import { ActionSplitScreen } from "./ActionSplitScreen-x0Bh5GEF.js";
6
6
  import { PageSubHeaderActionsTarget } from "./PageSubHeaderAction-Cw7gmU2W.js";
7
7
  import React, { useCallback, useEffect, useMemo, useState } from "react";
8
8
  import { ConfigService } from "udp-react-stencil-component-library";
@@ -52,4 +52,4 @@ const PageActionWrapper = (props) => {
52
52
 
53
53
  //#endregion
54
54
  export { PageActionWrapper };
55
- //# sourceMappingURL=PageActionWrapper-KtNGraWi.js.map
55
+ //# sourceMappingURL=PageActionWrapper-HgV0I8Km.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageActionWrapper-KtNGraWi.js","names":["apiMutate"],"sources":["../src/actions/PageActionWrapper.jsx"],"sourcesContent":["import React, { useCallback, useState, useEffect, useMemo } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { ActionSplitScreen } from './ActionSplitScreen';\nimport { useActionState } from '../hooks/useActions';\nimport { apiMutate } from '../utilities/useAxiosMutate';\nimport { PageSubHeaderActionsTarget } from '../utilities/page/PageSubHeaderAction';\nimport { useActionStore } from '../stores/actionStore';\nimport { useShellStore } from '../stores/shellStore';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const PageActionWrapper = (props) => {\n const {\n children,\n forPageContainer = false,\n splitScreenStateKey = 'pageSplitScreen'\n } = props;\n const [actionPanel, setActionPanel] = useState(null);\n const { enqueueSnackbar } = useSnackbar();\n const actionState = useActionState();\n const selectedNode = useActionStore((state) => state.selectedNode);\n const currentContainerId = useShellStore((state) => state.currentContainerId);\n\n const action = useMemo(() => {\n let selectedAction = null;\n if (actionState) {\n if (actionState.pageSplitScreen?.action) {\n selectedAction = actionState.pageSplitScreen.action;\n }\n }\n\n return selectedAction;\n }, [actionState]);\n\n const executeAction = useCallback(\n async (data, id) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${id}`,\n {\n method: 'post'\n },\n data\n ),\n []\n );\n\n useEffect(() => {\n if (action && actionState) {\n setActionPanel(\n actionState?.actionPanels[currentContainerId || 0]?.find((ap) =>\n ap.panelActions.find((pa) => pa.actionId === action.actionId)\n )\n );\n }\n }, [action, actionState, currentContainerId]);\n\n return (\n <>\n <PageSubHeaderActionsTarget />\n <ActionSplitScreen\n body={children}\n open={actionState?.[splitScreenStateKey]?.open}\n action={actionState?.[splitScreenStateKey]?.action}\n type={actionState?.[splitScreenStateKey]?.type}\n params={actionState?.[splitScreenStateKey]?.params}\n executeAction={executeAction}\n actionPanel={actionPanel}\n enqueueSnackbar={enqueueSnackbar}\n selectedNodeObj={selectedNode?.nodeObj}\n menuNodeList={actionState?.menuListState?.menuList}\n forPage={true}\n forPageContainer={forPageContainer}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n }\n selectedNodeParent={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNodeParent\n }\n refreshTree={\n actionState?.inquiryParams[currentContainerId || 0]?.refreshTree\n }\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,qBAAqB,UAAU;CAC1C,MAAM,EACJ,UACA,mBAAmB,OACnB,sBAAsB,sBACpB;CACJ,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CACpD,MAAM,EAAE,oBAAoB,aAAa;CACzC,MAAM,cAAc,gBAAgB;CACpC,MAAM,eAAe,gBAAgB,UAAU,MAAM,aAAa;CAClE,MAAM,qBAAqB,eAAe,UAAU,MAAM,mBAAmB;CAE7E,MAAM,SAAS,cAAc;EAC3B,IAAI,iBAAiB;AACrB,MAAI,aACF;OAAI,YAAY,iBAAiB,OAC/B,kBAAiB,YAAY,gBAAgB;;AAIjD,SAAO;IACN,CAAC,YAAY,CAAC;CAEjB,MAAM,gBAAgB,YACpB,OAAO,MAAM,OACXA,YACE,cAAc,qBACd,wCAAwC,MACxC,EACE,QAAQ,QACT,EACD,KACD,EACH,EAAE,CACH;AAED,iBAAgB;AACd,MAAI,UAAU,YACZ,gBACE,aAAa,aAAa,sBAAsB,IAAI,MAAM,OACxD,GAAG,aAAa,MAAM,OAAO,GAAG,aAAa,OAAO,SAAS,CAC9D,CACF;IAEF;EAAC;EAAQ;EAAa;EAAmB,CAAC;AAE7C,QACE,0DACE,oCAAC,iCAA6B,EAC9B,oCAAC;EACC,MAAM;EACN,MAAM,cAAc,sBAAsB;EAC1C,QAAQ,cAAc,sBAAsB;EAC5C,MAAM,cAAc,sBAAsB;EAC1C,QAAQ,cAAc,sBAAsB;EAC7B;EACF;EACI;EACjB,iBAAiB,cAAc;EAC/B,cAAc,aAAa,eAAe;EAC1C,SAAS;EACS;EAClB,cACE,aAAa,cAAc,sBAAsB,IAAI;EAEvD,oBACE,aAAa,cAAc,sBAAsB,IAC7C;EAEN,aACE,aAAa,cAAc,sBAAsB,IAAI;GAEvD,CACD"}
1
+ {"version":3,"file":"PageActionWrapper-HgV0I8Km.js","names":["apiMutate"],"sources":["../src/actions/PageActionWrapper.jsx"],"sourcesContent":["import React, { useCallback, useState, useEffect, useMemo } from 'react';\nimport { useSnackbar } from 'notistack';\nimport { ActionSplitScreen } from './ActionSplitScreen';\nimport { useActionState } from '../hooks/useActions';\nimport { apiMutate } from '../utilities/useAxiosMutate';\nimport { PageSubHeaderActionsTarget } from '../utilities/page/PageSubHeaderAction';\nimport { useActionStore } from '../stores/actionStore';\nimport { useShellStore } from '../stores/shellStore';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const PageActionWrapper = (props) => {\n const {\n children,\n forPageContainer = false,\n splitScreenStateKey = 'pageSplitScreen'\n } = props;\n const [actionPanel, setActionPanel] = useState(null);\n const { enqueueSnackbar } = useSnackbar();\n const actionState = useActionState();\n const selectedNode = useActionStore((state) => state.selectedNode);\n const currentContainerId = useShellStore((state) => state.currentContainerId);\n\n const action = useMemo(() => {\n let selectedAction = null;\n if (actionState) {\n if (actionState.pageSplitScreen?.action) {\n selectedAction = actionState.pageSplitScreen.action;\n }\n }\n\n return selectedAction;\n }, [actionState]);\n\n const executeAction = useCallback(\n async (data, id) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${id}`,\n {\n method: 'post'\n },\n data\n ),\n []\n );\n\n useEffect(() => {\n if (action && actionState) {\n setActionPanel(\n actionState?.actionPanels[currentContainerId || 0]?.find((ap) =>\n ap.panelActions.find((pa) => pa.actionId === action.actionId)\n )\n );\n }\n }, [action, actionState, currentContainerId]);\n\n return (\n <>\n <PageSubHeaderActionsTarget />\n <ActionSplitScreen\n body={children}\n open={actionState?.[splitScreenStateKey]?.open}\n action={actionState?.[splitScreenStateKey]?.action}\n type={actionState?.[splitScreenStateKey]?.type}\n params={actionState?.[splitScreenStateKey]?.params}\n executeAction={executeAction}\n actionPanel={actionPanel}\n enqueueSnackbar={enqueueSnackbar}\n selectedNodeObj={selectedNode?.nodeObj}\n menuNodeList={actionState?.menuListState?.menuList}\n forPage={true}\n forPageContainer={forPageContainer}\n selectedNode={\n actionState?.inquiryParams[currentContainerId || 0]?.selectedNode\n }\n selectedNodeParent={\n actionState?.inquiryParams[currentContainerId || 0]\n ?.selectedNodeParent\n }\n refreshTree={\n actionState?.inquiryParams[currentContainerId || 0]?.refreshTree\n }\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,qBAAqB,UAAU;CAC1C,MAAM,EACJ,UACA,mBAAmB,OACnB,sBAAsB,sBACpB;CACJ,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CACpD,MAAM,EAAE,oBAAoB,aAAa;CACzC,MAAM,cAAc,gBAAgB;CACpC,MAAM,eAAe,gBAAgB,UAAU,MAAM,aAAa;CAClE,MAAM,qBAAqB,eAAe,UAAU,MAAM,mBAAmB;CAE7E,MAAM,SAAS,cAAc;EAC3B,IAAI,iBAAiB;AACrB,MAAI,aACF;OAAI,YAAY,iBAAiB,OAC/B,kBAAiB,YAAY,gBAAgB;;AAIjD,SAAO;IACN,CAAC,YAAY,CAAC;CAEjB,MAAM,gBAAgB,YACpB,OAAO,MAAM,OACXA,YACE,cAAc,qBACd,wCAAwC,MACxC,EACE,QAAQ,QACT,EACD,KACD,EACH,EAAE,CACH;AAED,iBAAgB;AACd,MAAI,UAAU,YACZ,gBACE,aAAa,aAAa,sBAAsB,IAAI,MAAM,OACxD,GAAG,aAAa,MAAM,OAAO,GAAG,aAAa,OAAO,SAAS,CAC9D,CACF;IAEF;EAAC;EAAQ;EAAa;EAAmB,CAAC;AAE7C,QACE,0DACE,oCAAC,iCAA6B,EAC9B,oCAAC;EACC,MAAM;EACN,MAAM,cAAc,sBAAsB;EAC1C,QAAQ,cAAc,sBAAsB;EAC5C,MAAM,cAAc,sBAAsB;EAC1C,QAAQ,cAAc,sBAAsB;EAC7B;EACF;EACI;EACjB,iBAAiB,cAAc;EAC/B,cAAc,aAAa,eAAe;EAC1C,SAAS;EACS;EAClB,cACE,aAAa,cAAc,sBAAsB,IAAI;EAEvD,oBACE,aAAa,cAAc,sBAAsB,IAC7C;EAEN,aACE,aAAa,cAAc,sBAAsB,IAAI;GAEvD,CACD"}
@@ -17,7 +17,8 @@ const PageNotFoundRoute = () => {
17
17
  buttonLabel: t("Back to Home Page")
18
18
  }));
19
19
  };
20
+ var PageNotFoundRoute_default = PageNotFoundRoute;
20
21
 
21
22
  //#endregion
22
- export { PageNotFoundRoute };
23
- //# sourceMappingURL=PageNotFoundRoute-BSlmqegI.js.map
23
+ export { PageNotFoundRoute, PageNotFoundRoute_default };
24
+ //# sourceMappingURL=PageNotFoundRoute-BGj6tqmn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageNotFoundRoute-BSlmqegI.js","names":[],"sources":["../src/routes/components/PageNotFoundRoute.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PageStatus } from './PageStatus';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(4)\n }\n}));\n\nexport const PageNotFoundRoute = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n return (\n <div className={classes.root}>\n <PageStatus\n statusCode={404}\n title={t('Page Not Found')}\n subheader={t(\"Sorry, we can't find the page you are looking for.\")}\n message={t(\n 'You may have typed the address incorrectly or you may have used an outdated link.'\n )}\n to='/'\n buttonLabel={t('Back to Home Page')}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM,EACJ,WAAW,MAAM,QAAQ,EAAE,EAC5B,EACF,EAAE;AAEH,MAAa,0BAA0B;CACrC,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACtB,oCAAC;EACC,YAAY;EACZ,OAAO,EAAE,iBAAiB;EAC1B,WAAW,EAAE,qDAAqD;EAClE,SAAS,EACP,oFACD;EACD,IAAG;EACH,aAAa,EAAE,oBAAoB;GACnC,CACE"}
1
+ {"version":3,"file":"PageNotFoundRoute-BGj6tqmn.js","names":[],"sources":["../src/routes/components/PageNotFoundRoute.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { PageStatus } from './PageStatus';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(4)\n }\n}));\n\nexport const PageNotFoundRoute = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n return (\n <div className={classes.root}>\n <PageStatus\n statusCode={404}\n title={t('Page Not Found')}\n subheader={t(\"Sorry, we can't find the page you are looking for.\")}\n message={t(\n 'You may have typed the address incorrectly or you may have used an outdated link.'\n )}\n to='/'\n buttonLabel={t('Back to Home Page')}\n />\n </div>\n );\n};\n\nexport default PageNotFoundRoute;\n"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM,EACJ,WAAW,MAAM,QAAQ,EAAE,EAC5B,EACF,EAAE;AAEH,MAAa,0BAA0B;CACrC,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACtB,oCAAC;EACC,YAAY;EACZ,OAAO,EAAE,iBAAiB;EAC1B,WAAW,EAAE,qDAAqD;EAClE,SAAS,EACP,oFACD;EACD,IAAG;EACH,aAAa,EAAE,oBAAoB;GACnC,CACE;;AAIV,gCAAe"}
@@ -0,0 +1,4 @@
1
+ import "./PageStatus-CjupI8az.js";
2
+ import { PageNotFoundRoute, PageNotFoundRoute_default } from "./PageNotFoundRoute-BGj6tqmn.js";
3
+
4
+ export { PageNotFoundRoute, PageNotFoundRoute_default as default };
@@ -0,0 +1,4 @@
1
+ import "./LocalRedirectUrlStorage-BQHr5JcA.js";
2
+ import { PasswordResetRedirect, PasswordResetRedirect_default } from "./PasswordResetRedirect-avgVRKhM.js";
3
+
4
+ export { PasswordResetRedirect, PasswordResetRedirect_default as default };
@@ -47,7 +47,8 @@ const PasswordResetRedirect = (props) => {
47
47
  }
48
48
  }, "Sign In")));
49
49
  };
50
+ var PasswordResetRedirect_default = PasswordResetRedirect;
50
51
 
51
52
  //#endregion
52
- export { PasswordResetRedirect };
53
- //# sourceMappingURL=PasswordResetRedirect-BvC0vH06.js.map
53
+ export { PasswordResetRedirect, PasswordResetRedirect_default };
54
+ //# sourceMappingURL=PasswordResetRedirect-avgVRKhM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordResetRedirect-BvC0vH06.js","names":["errorDescription"],"sources":["../src/routes/components/PasswordResetRedirect.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { clearStoredPath } from '../../utilities/redirect/LocalRedirectUrlStorage';\n\nexport const PasswordResetRedirect = (props) => {\n const [errorDescription, setErrorDescription] = useState(null);\n\n useEffect(() => {\n // Get the hash portion of the URL\n const hash = window.location.hash || ''; // Fallback to empty string if no hash\n\n if (props?.error?.errorMessage) {\n formatError(props?.error?.errorMessage);\n } else if (hash) {\n // Parse the hash to get query parameters\n const params = new URLSearchParams(hash.substring(1)); // Remove \"#\" and parse\n\n // Get and decode the error_description\n const errorDescription = params.get('error_description');\n\n if (errorDescription) {\n formatError(errorDescription);\n // Decode the URL-encoded string\n }\n }\n }, [props?.error?.errorMessage]);\n\n const formatError = (errorDescription) => {\n const decodedDescription = decodeURIComponent(errorDescription).replace(\n /%0d%0a/g,\n '\\n'\n ); // Replace %0d%0a with newlines for clarity\n\n if (decodedDescription.includes('AADB2C90208')) {\n // Hardcoded message for AADB2C90208 (a specific error code, often related to user not found or invalid credentials)\n setErrorDescription('The password reset link has expired.');\n // Check for \"AADB2C\" or \"AADB2C90208\" in the decoded description\n } else if (decodedDescription.includes('AADB2C')) {\n // Hardcoded message for generic AADB2C errors\n setErrorDescription('Unable to find an account associated to that email.');\n } else {\n // Fallback message if neither error is found (optional)\n setErrorDescription('An unexpected error occurred.');\n }\n };\n\n const handleGoHome = () => {\n clearStoredPath();\n window.location.href = '/';\n };\n\n return (\n <div>\n <div style={{ textAlign: 'center', marginTop: '50px' }}>\n <img\n src='https://customb2cpolicydevtest.blob.core.windows.net/root/unitylogo.svg'\n alt='Unity Logo'\n width='300'\n style={{ height: 'auto', marginBottom: 50 }}\n />\n {errorDescription ? (\n <h2>{errorDescription}</h2>\n ) : (\n <h2>\n Your password has been successfully reset\n </h2>\n )}\n {errorDescription !== 'The password reset link has expired.' && (\n <p>Please click below to return to the sign in page</p>)}\n\n {errorDescription !== 'The password reset link has expired.' && (\n <button\n onClick={handleGoHome}\n style={{\n marginTop: '10px',\n backgroundColor: '#0C2F50',\n color: 'white',\n border: 'none',\n padding: '10px 20px',\n cursor: 'pointer',\n borderRadius: '5px',\n fontSize: '16px'\n }}\n >\n Sign In\n </button>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;AAGA,MAAa,yBAAyB,UAAU;CAC9C,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,KAAK;AAE9D,iBAAgB;EAEd,MAAM,OAAO,OAAO,SAAS,QAAQ;AAErC,MAAI,OAAO,OAAO,aAChB,aAAY,OAAO,OAAO,aAAa;WAC9B,MAAM;GAKf,MAAMA,qBAHS,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC,CAGrB,IAAI,oBAAoB;AAExD,OAAIA,mBACF,aAAYA,mBAAiB;;IAIhC,CAAC,OAAO,OAAO,aAAa,CAAC;CAEhC,MAAM,eAAe,uBAAqB;EACxC,MAAM,qBAAqB,mBAAmBA,mBAAiB,CAAC,QAC9D,WACA,KACD;AAED,MAAI,mBAAmB,SAAS,cAAc,CAE5C,qBAAoB,uCAAuC;WAElD,mBAAmB,SAAS,SAAS,CAE9C,qBAAoB,sDAAsD;MAG1E,qBAAoB,gCAAgC;;CAIxD,MAAM,qBAAqB;AACzB,mBAAiB;AACjB,SAAO,SAAS,OAAO;;AAGzB,QACE,oCAAC,aACC,oCAAC,SAAI,OAAO;EAAE,WAAW;EAAU,WAAW;EAAQ,IACpD,oCAAC;EACC,KAAI;EACJ,KAAI;EACJ,OAAM;EACN,OAAO;GAAE,QAAQ;GAAQ,cAAc;GAAI;GAC3C,EACD,mBACC,oCAAC,YAAI,iBAAsB,GAE3B,oCAAC,YAAG,4CAEC,EAEN,qBAAqB,0CACtB,oCAAC,WAAE,mDAAoD,EAEtD,qBAAqB,0CACpB,oCAAC;EACC,SAAS;EACT,OAAO;GACL,WAAW;GACX,iBAAiB;GACjB,OAAO;GACP,QAAQ;GACR,SAAS;GACT,QAAQ;GACR,cAAc;GACd,UAAU;GACX;IACF,UAEQ,CAEP,CACF"}
1
+ {"version":3,"file":"PasswordResetRedirect-avgVRKhM.js","names":["errorDescription"],"sources":["../src/routes/components/PasswordResetRedirect.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { clearStoredPath } from '../../utilities/redirect/LocalRedirectUrlStorage';\n\nexport const PasswordResetRedirect = (props) => {\n const [errorDescription, setErrorDescription] = useState(null);\n\n useEffect(() => {\n // Get the hash portion of the URL\n const hash = window.location.hash || ''; // Fallback to empty string if no hash\n\n if (props?.error?.errorMessage) {\n formatError(props?.error?.errorMessage);\n } else if (hash) {\n // Parse the hash to get query parameters\n const params = new URLSearchParams(hash.substring(1)); // Remove \"#\" and parse\n\n // Get and decode the error_description\n const errorDescription = params.get('error_description');\n\n if (errorDescription) {\n formatError(errorDescription);\n // Decode the URL-encoded string\n }\n }\n }, [props?.error?.errorMessage]);\n\n const formatError = (errorDescription) => {\n const decodedDescription = decodeURIComponent(errorDescription).replace(\n /%0d%0a/g,\n '\\n'\n ); // Replace %0d%0a with newlines for clarity\n\n if (decodedDescription.includes('AADB2C90208')) {\n // Hardcoded message for AADB2C90208 (a specific error code, often related to user not found or invalid credentials)\n setErrorDescription('The password reset link has expired.');\n // Check for \"AADB2C\" or \"AADB2C90208\" in the decoded description\n } else if (decodedDescription.includes('AADB2C')) {\n // Hardcoded message for generic AADB2C errors\n setErrorDescription('Unable to find an account associated to that email.');\n } else {\n // Fallback message if neither error is found (optional)\n setErrorDescription('An unexpected error occurred.');\n }\n };\n\n const handleGoHome = () => {\n clearStoredPath();\n window.location.href = '/';\n };\n\n return (\n <div>\n <div style={{ textAlign: 'center', marginTop: '50px' }}>\n <img\n src='https://customb2cpolicydevtest.blob.core.windows.net/root/unitylogo.svg'\n alt='Unity Logo'\n width='300'\n style={{ height: 'auto', marginBottom: 50 }}\n />\n {errorDescription ? (\n <h2>{errorDescription}</h2>\n ) : (\n <h2>\n Your password has been successfully reset\n </h2>\n )}\n {errorDescription !== 'The password reset link has expired.' && (\n <p>Please click below to return to the sign in page</p>)}\n\n {errorDescription !== 'The password reset link has expired.' && (\n <button\n onClick={handleGoHome}\n style={{\n marginTop: '10px',\n backgroundColor: '#0C2F50',\n color: 'white',\n border: 'none',\n padding: '10px 20px',\n cursor: 'pointer',\n borderRadius: '5px',\n fontSize: '16px'\n }}\n >\n Sign In\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default PasswordResetRedirect;\n"],"mappings":";;;;AAGA,MAAa,yBAAyB,UAAU;CAC9C,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,KAAK;AAE9D,iBAAgB;EAEd,MAAM,OAAO,OAAO,SAAS,QAAQ;AAErC,MAAI,OAAO,OAAO,aAChB,aAAY,OAAO,OAAO,aAAa;WAC9B,MAAM;GAKf,MAAMA,qBAHS,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC,CAGrB,IAAI,oBAAoB;AAExD,OAAIA,mBACF,aAAYA,mBAAiB;;IAIhC,CAAC,OAAO,OAAO,aAAa,CAAC;CAEhC,MAAM,eAAe,uBAAqB;EACxC,MAAM,qBAAqB,mBAAmBA,mBAAiB,CAAC,QAC9D,WACA,KACD;AAED,MAAI,mBAAmB,SAAS,cAAc,CAE5C,qBAAoB,uCAAuC;WAElD,mBAAmB,SAAS,SAAS,CAE9C,qBAAoB,sDAAsD;MAG1E,qBAAoB,gCAAgC;;CAIxD,MAAM,qBAAqB;AACzB,mBAAiB;AACjB,SAAO,SAAS,OAAO;;AAGzB,QACE,oCAAC,aACC,oCAAC,SAAI,OAAO;EAAE,WAAW;EAAU,WAAW;EAAQ,IACpD,oCAAC;EACC,KAAI;EACJ,KAAI;EACJ,OAAM;EACN,OAAO;GAAE,QAAQ;GAAQ,cAAc;GAAI;GAC3C,EACD,mBACC,oCAAC,YAAI,iBAAsB,GAE3B,oCAAC,YAAG,4CAEC,EAEN,qBAAqB,0CACtB,oCAAC,WAAE,mDAAoD,EAEtD,qBAAqB,0CACpB,oCAAC;EACC,SAAS;EACT,OAAO;GACL,WAAW;GACX,iBAAiB;GACjB,OAAO;GACP,QAAQ;GACR,SAAS;GACT,QAAQ;GACR,cAAc;GACd,UAAU;GACX;IACF,UAEQ,CAEP,CACF;;AAIV,oCAAe"}
@@ -1,7 +1,7 @@
1
1
  import { AgTable, useAgGridApi } from "./AgTable-BapmVuyC.js";
2
2
  import { getSanitizedName } from "./entityUtilities-D7_FeTEd.js";
3
3
  import { AmbientCard } from "./AmbientCard-Cp-eNzrW.js";
4
- import { IconRenderer } from "./IconRenderer-8w6JVRET.js";
4
+ import { IconRenderer } from "./IconRenderer-DiwGfDul.js";
5
5
  import { formatDateToLocaleString } from "./DateUtilities-DHTEYbE8.js";
6
6
  import React, { useCallback, useEffect, useMemo, useState } from "react";
7
7
  import { LinearProgress, Typography } from "@material-ui/core";
@@ -105,4 +105,4 @@ const RecentlyLoadedNodesTable = (props) => {
105
105
 
106
106
  //#endregion
107
107
  export { RecentlyLoadedNodesTable };
108
- //# sourceMappingURL=RecentlyLoadedNodesTable-B5KlS1HR.js.map
108
+ //# sourceMappingURL=RecentlyLoadedNodesTable-BRxssq07.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecentlyLoadedNodesTable-B5KlS1HR.js","names":[],"sources":["../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst defaultColDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tableHeight,\n tree,\n columnDefs,\n hideTitle = false\n } = props;\n\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const [selectedRow, setSelectedRow] = useState();\n\n useEffect(() => {\n if (!gridColumnApi) return;\n\n gridApi?.sizeColumnsToFit();\n setSelectedRow(\n gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n );\n }, [gridColumnApi, gridApi]);\n\n const handleRowSelected = useCallback(\n (event) => {\n if (!event.node.selected) return;\n\n if (!gridApi) return;\n\n const selectedRowData =\n gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n if (!selectedRowData) return;\n\n setSelectedRow(selectedRowData);\n\n if (selectedRowData?.nodeInfo) {\n // if the row is a node\n onLoadedNodeClick(selectedRowData.nodeInfo);\n }\n },\n [gridApi, onLoadedNodeClick]\n );\n\n const getterRowData = useCallback((params) => {\n return params.data?.iconData;\n }, []);\n\n const columnDefinitions = useMemo(\n () =>\n columnDefs\n ? columnDefs\n : [\n tree?.treeStructure && {\n headerName: '',\n cellRenderer: 'iconRenderer',\n valueGetter: getterRowData,\n maxWidth: 60,\n resizable: false,\n suppressMenu: true,\n sortable: false,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n },\n {\n headerName: 'Name',\n field: 'name',\n minWidth: 120,\n maxWidth: 300\n },\n {\n headerName: 'Type',\n field: 'type',\n valueGetter: (params) => getSanitizedName(params.data?.type),\n minWidth: 80\n },\n {\n headerName: 'Date Loaded',\n field: 'dateLoaded',\n minWidth: 80\n },\n {\n headerName: '',\n field: 'nodeInfo',\n maxWidth: 0,\n cellStyle: {\n display: 'none'\n }\n }\n ],\n [columnDefs, getterRowData, tree]\n );\n\n const recentlyLoadedNodesValues = useMemo(\n () =>\n recentlyLoadedNodes?.map((loadedNode) => {\n const matchingNode = tree?.treeStructure?.find(\n (node) =>\n node.properties.catalogReturnObject ===\n loadedNode?.nodeDetails?.catalogReturnObject\n );\n\n return {\n iconData: matchingNode?.properties?.defaultIcon || {\n name: 'PictureTileIcon'\n },\n name: loadedNode?.nodeDetails?.nodeLabel,\n type: loadedNode?.nodeDetails?.catalogReturnObject,\n dateLoaded: formatDateToLocaleString(\n loadedNode?.dateLoaded,\n DateTime.DATETIME_MED\n ),\n nodeInfo: loadedNode\n };\n }),\n [recentlyLoadedNodes, tree]\n );\n\n return (\n <AmbientCard\n title={!hideTitle ? 'Recently Loaded' : ' '}\n fullWidth\n noAdornment\n >\n {loading || !tree ? (\n <LinearProgress />\n ) : recentlyLoadedNodes?.length ? (\n <AgTable\n columnDefs={columnDefinitions}\n defaultColDef={defaultColDef}\n rowData={recentlyLoadedNodesValues || []}\n onGridReady={onGridReady}\n getRowNodeId={(row) => row.name}\n onRowSelected={handleRowSelected}\n rowSelection='single'\n frameworkComponents={{ iconRenderer: IconRenderer }}\n height={tableHeight}\n />\n ) : (\n <Typography>No Data Recently Loaded.</Typography>\n )}\n </AmbientCard>\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,WAAW;CACX,UAAU;CACV,UAAU;CACV,QAAQ;CACT;AAED,MAAa,4BAA4B,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,aACA,MACA,YACA,YAAY,UACV;CAEJ,MAAM,EAAE,SAAS,eAAe,gBAAgB,cAAc;CAC9D,MAAM,CAAC,aAAa,kBAAkB,UAAU;AAEhD,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,WAAS,kBAAkB;AAC3B,iBACE,SAAS,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC,GAChE;IACA,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,oBAAoB,aACvB,UAAU;AACT,MAAI,CAAC,MAAM,KAAK,SAAU;AAE1B,MAAI,CAAC,QAAS;EAEd,MAAM,kBACJ,QAAQ,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC;AAEhE,MAAI,CAAC,gBAAiB;AAEtB,iBAAe,gBAAgB;AAE/B,MAAI,iBAAiB,SAEnB,mBAAkB,gBAAgB,SAAS;IAG/C,CAAC,SAAS,kBAAkB,CAC7B;CAED,MAAM,gBAAgB,aAAa,WAAW;AAC5C,SAAO,OAAO,MAAM;IACnB,EAAE,CAAC;CAEN,MAAM,oBAAoB,cAEtB,aACI,aACA;EACE,MAAM,iBAAiB;GACrB,YAAY;GACZ,cAAc;GACd,aAAa;GACb,UAAU;GACV,WAAW;GACX,cAAc;GACd,UAAU;GACV,WAAW;IACT,SAAS;IACT,YAAY;IACZ,gBAAgB;IACjB;GACF;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,cAAc,WAAW,iBAAiB,OAAO,MAAM,KAAK;GAC5D,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,WAAW,EACT,SAAS,QACV;GACF;EACF,EACP;EAAC;EAAY;EAAe;EAAK,CAClC;CAED,MAAM,4BAA4B,cAE9B,qBAAqB,KAAK,eAAe;AAOvC,SAAO;GACL,WAPmB,MAAM,eAAe,MACvC,SACC,KAAK,WAAW,wBAChB,YAAY,aAAa,oBAC5B,GAGyB,YAAY,eAAe,EACjD,MAAM,mBACP;GACD,MAAM,YAAY,aAAa;GAC/B,MAAM,YAAY,aAAa;GAC/B,YAAY,yBACV,YAAY,YACZ,SAAS,aACV;GACD,UAAU;GACX;GACD,EACJ,CAAC,qBAAqB,KAAK,CAC5B;AAED,QACE,oCAAC;EACC,OAAO,CAAC,YAAY,oBAAoB;EACxC;EACA;IAEC,WAAW,CAAC,OACX,oCAAC,qBAAiB,GAChB,qBAAqB,SACvB,oCAAC;EACC,YAAY;EACG;EACf,SAAS,6BAA6B,EAAE;EAC3B;EACb,eAAe,QAAQ,IAAI;EAC3B,eAAe;EACf,cAAa;EACb,qBAAqB,EAAE,cAAc,cAAc;EACnD,QAAQ;GACR,GAEF,oCAAC,kBAAW,2BAAqC,CAEvC"}
1
+ {"version":3,"file":"RecentlyLoadedNodesTable-BRxssq07.js","names":[],"sources":["../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst defaultColDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tableHeight,\n tree,\n columnDefs,\n hideTitle = false\n } = props;\n\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const [selectedRow, setSelectedRow] = useState();\n\n useEffect(() => {\n if (!gridColumnApi) return;\n\n gridApi?.sizeColumnsToFit();\n setSelectedRow(\n gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n );\n }, [gridColumnApi, gridApi]);\n\n const handleRowSelected = useCallback(\n (event) => {\n if (!event.node.selected) return;\n\n if (!gridApi) return;\n\n const selectedRowData =\n gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n if (!selectedRowData) return;\n\n setSelectedRow(selectedRowData);\n\n if (selectedRowData?.nodeInfo) {\n // if the row is a node\n onLoadedNodeClick(selectedRowData.nodeInfo);\n }\n },\n [gridApi, onLoadedNodeClick]\n );\n\n const getterRowData = useCallback((params) => {\n return params.data?.iconData;\n }, []);\n\n const columnDefinitions = useMemo(\n () =>\n columnDefs\n ? columnDefs\n : [\n tree?.treeStructure && {\n headerName: '',\n cellRenderer: 'iconRenderer',\n valueGetter: getterRowData,\n maxWidth: 60,\n resizable: false,\n suppressMenu: true,\n sortable: false,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n },\n {\n headerName: 'Name',\n field: 'name',\n minWidth: 120,\n maxWidth: 300\n },\n {\n headerName: 'Type',\n field: 'type',\n valueGetter: (params) => getSanitizedName(params.data?.type),\n minWidth: 80\n },\n {\n headerName: 'Date Loaded',\n field: 'dateLoaded',\n minWidth: 80\n },\n {\n headerName: '',\n field: 'nodeInfo',\n maxWidth: 0,\n cellStyle: {\n display: 'none'\n }\n }\n ],\n [columnDefs, getterRowData, tree]\n );\n\n const recentlyLoadedNodesValues = useMemo(\n () =>\n recentlyLoadedNodes?.map((loadedNode) => {\n const matchingNode = tree?.treeStructure?.find(\n (node) =>\n node.properties.catalogReturnObject ===\n loadedNode?.nodeDetails?.catalogReturnObject\n );\n\n return {\n iconData: matchingNode?.properties?.defaultIcon || {\n name: 'PictureTileIcon'\n },\n name: loadedNode?.nodeDetails?.nodeLabel,\n type: loadedNode?.nodeDetails?.catalogReturnObject,\n dateLoaded: formatDateToLocaleString(\n loadedNode?.dateLoaded,\n DateTime.DATETIME_MED\n ),\n nodeInfo: loadedNode\n };\n }),\n [recentlyLoadedNodes, tree]\n );\n\n return (\n <AmbientCard\n title={!hideTitle ? 'Recently Loaded' : ' '}\n fullWidth\n noAdornment\n >\n {loading || !tree ? (\n <LinearProgress />\n ) : recentlyLoadedNodes?.length ? (\n <AgTable\n columnDefs={columnDefinitions}\n defaultColDef={defaultColDef}\n rowData={recentlyLoadedNodesValues || []}\n onGridReady={onGridReady}\n getRowNodeId={(row) => row.name}\n onRowSelected={handleRowSelected}\n rowSelection='single'\n frameworkComponents={{ iconRenderer: IconRenderer }}\n height={tableHeight}\n />\n ) : (\n <Typography>No Data Recently Loaded.</Typography>\n )}\n </AmbientCard>\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,WAAW;CACX,UAAU;CACV,UAAU;CACV,QAAQ;CACT;AAED,MAAa,4BAA4B,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,aACA,MACA,YACA,YAAY,UACV;CAEJ,MAAM,EAAE,SAAS,eAAe,gBAAgB,cAAc;CAC9D,MAAM,CAAC,aAAa,kBAAkB,UAAU;AAEhD,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,WAAS,kBAAkB;AAC3B,iBACE,SAAS,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC,GAChE;IACA,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,oBAAoB,aACvB,UAAU;AACT,MAAI,CAAC,MAAM,KAAK,SAAU;AAE1B,MAAI,CAAC,QAAS;EAEd,MAAM,kBACJ,QAAQ,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC;AAEhE,MAAI,CAAC,gBAAiB;AAEtB,iBAAe,gBAAgB;AAE/B,MAAI,iBAAiB,SAEnB,mBAAkB,gBAAgB,SAAS;IAG/C,CAAC,SAAS,kBAAkB,CAC7B;CAED,MAAM,gBAAgB,aAAa,WAAW;AAC5C,SAAO,OAAO,MAAM;IACnB,EAAE,CAAC;CAEN,MAAM,oBAAoB,cAEtB,aACI,aACA;EACE,MAAM,iBAAiB;GACrB,YAAY;GACZ,cAAc;GACd,aAAa;GACb,UAAU;GACV,WAAW;GACX,cAAc;GACd,UAAU;GACV,WAAW;IACT,SAAS;IACT,YAAY;IACZ,gBAAgB;IACjB;GACF;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,cAAc,WAAW,iBAAiB,OAAO,MAAM,KAAK;GAC5D,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,WAAW,EACT,SAAS,QACV;GACF;EACF,EACP;EAAC;EAAY;EAAe;EAAK,CAClC;CAED,MAAM,4BAA4B,cAE9B,qBAAqB,KAAK,eAAe;AAOvC,SAAO;GACL,WAPmB,MAAM,eAAe,MACvC,SACC,KAAK,WAAW,wBAChB,YAAY,aAAa,oBAC5B,GAGyB,YAAY,eAAe,EACjD,MAAM,mBACP;GACD,MAAM,YAAY,aAAa;GAC/B,MAAM,YAAY,aAAa;GAC/B,YAAY,yBACV,YAAY,YACZ,SAAS,aACV;GACD,UAAU;GACX;GACD,EACJ,CAAC,qBAAqB,KAAK,CAC5B;AAED,QACE,oCAAC;EACC,OAAO,CAAC,YAAY,oBAAoB;EACxC;EACA;IAEC,WAAW,CAAC,OACX,oCAAC,qBAAiB,GAChB,qBAAqB,SACvB,oCAAC;EACC,YAAY;EACG;EACf,SAAS,6BAA6B,EAAE;EAC3B;EACb,eAAe,QAAQ,IAAI;EAC3B,eAAe;EACf,cAAa;EACb,qBAAqB,EAAE,cAAc,cAAc;EACnD,QAAQ;GACR,GAEF,oCAAC,kBAAW,2BAAqC,CAEvC"}
@@ -37,4 +37,4 @@ const RejectIcon = () => {
37
37
 
38
38
  //#endregion
39
39
  export { ApprovalIcon, RejectIcon };
40
- //# sourceMappingURL=RejectIcon-BoBX4G_D.js.map
40
+ //# sourceMappingURL=RejectIcon-D8AWbOZq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RejectIcon-BoBX4G_D.js","names":[],"sources":["../src/utilities/customIcons/ApprovalIcon.jsx","../src/utilities/customIcons/RejectIcon.jsx"],"sourcesContent":["import React from \"react\";\nimport { CheckMarkIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n/**\n * ApprovalIcon\n *\n * @return {*}\n */\nexport const ApprovalIcon = () => {\n const theme = useTheme();\n return (\n <CheckMarkIcon\n style={{\n background: lighten(theme.palette.success?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `2px solid ${lighten(theme.palette.success?.main, 0.5)}`\n }}\n />\n );\n};\n","import React from \"react\";\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n\n/**\n * @returns {any}\n */\nexport const RejectIcon = () => {\n const theme = useTheme();\n return (\n <ChromeCloseIcon\n style={{\n background: lighten(theme.palette.error?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `5px solid ${lighten(theme.palette.error?.main, 0.5)}`,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAa,qBAAqB;CAChC,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,iBACC,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EACrD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EAC/D,GACD;;;;;;;;ACZN,MAAa,mBAAmB;CAC9B,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,mBACG,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EACnD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EAC7D,GACD"}
1
+ {"version":3,"file":"RejectIcon-D8AWbOZq.js","names":[],"sources":["../src/utilities/customIcons/ApprovalIcon.jsx","../src/utilities/customIcons/RejectIcon.jsx"],"sourcesContent":["import React from \"react\";\nimport { CheckMarkIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n/**\n * ApprovalIcon\n *\n * @return {*}\n */\nexport const ApprovalIcon = () => {\n const theme = useTheme();\n return (\n <CheckMarkIcon\n style={{\n background: lighten(theme.palette.success?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `2px solid ${lighten(theme.palette.success?.main, 0.5)}`\n }}\n />\n );\n};\n","import React from \"react\";\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n\n/**\n * @returns {any}\n */\nexport const RejectIcon = () => {\n const theme = useTheme();\n return (\n <ChromeCloseIcon\n style={{\n background: lighten(theme.palette.error?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `5px solid ${lighten(theme.palette.error?.main, 0.5)}`,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAa,qBAAqB;CAChC,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,iBACC,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EACrD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EAC/D,GACD;;;;;;;;ACZN,MAAa,mBAAmB;CAC9B,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,mBACG,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EACnD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EAC7D,GACD"}
@@ -1,7 +1,7 @@
1
1
  import { SplitScreenTypeEnums } from "./unitySystemEnums-BIMR5AWe.js";
2
2
  import { UnityFluentIcon } from "./UnityFluentIcon-fuqAQh0C.js";
3
3
  import { useActions } from "./useActions-CKdp6TpD.js";
4
- import { getIconFromName } from "./TreeUtilities-DVY-2md6.js";
4
+ import { getIconFromName } from "./TreeUtilities-XLrXtUeL.js";
5
5
  import { getUnityIconFromName } from "./UnityIconLibrary-DnCuEr5M.js";
6
6
  import { StatusChip } from "./StatusChip-Bw-0wE_B.js";
7
7
  import React, { useCallback, useMemo, useState } from "react";
@@ -135,4 +135,4 @@ const RemindersCard = (props) => {
135
135
 
136
136
  //#endregion
137
137
  export { CompleteReminderSwitch, RemindersCard };
138
- //# sourceMappingURL=RemindersCard-CRstZlRF.js.map
138
+ //# sourceMappingURL=RemindersCard-BrjYmZVz.js.map