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

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 (313) hide show
  1. package/dist/{BaseTreeMenu-DxXnVd_v.js → BaseTreeMenu-DmsrGSdA.js} +1 -1
  2. package/dist/{BaseTreeMenu-DxXnVd_v.js.map → BaseTreeMenu-DmsrGSdA.js.map} +1 -1
  3. package/dist/{CatalogUtilities-j8ACiDe3.js → CatalogUtilities-BvkdL-P6.js} +1 -1
  4. package/dist/{CatalogUtilities-j8ACiDe3.js.map → CatalogUtilities-BvkdL-P6.js.map} +1 -1
  5. package/dist/{FieldArrayCard-D5AzG_US.js → FieldArrayCard-ColjIX9t.js} +1 -1
  6. package/dist/{FieldArrayCard-D5AzG_US.js.map → FieldArrayCard-ColjIX9t.js.map} +1 -1
  7. package/dist/{FileViewer-Cp8UpoMF.js → FileViewer-C1eQoTDj.js} +1 -1
  8. package/dist/{FileViewer-Cp8UpoMF.js.map → FileViewer-C1eQoTDj.js.map} +1 -1
  9. package/dist/FluentBody-PdsySA1c.js +16 -0
  10. package/dist/FluentBody-PdsySA1c.js.map +1 -0
  11. package/dist/{FluentDataTable-BhA49RJS.js → FluentCell-DZ5pFjdC.js} +6 -66
  12. package/dist/FluentCell-DZ5pFjdC.js.map +1 -0
  13. package/dist/FluentDataTable-C7Ng6Eh3.js +30 -0
  14. package/dist/FluentDataTable-C7Ng6Eh3.js.map +1 -0
  15. package/dist/FluentHead-BTV-o45z.js +20 -0
  16. package/dist/FluentHead-BTV-o45z.js.map +1 -0
  17. package/dist/FluentRow-CVqnk9pB.js +18 -0
  18. package/dist/FluentRow-CVqnk9pB.js.map +1 -0
  19. package/dist/{GeoMap-jDYoW-Jl.js → GeoMap-CVGJXRRA.js} +2 -2
  20. package/dist/{GeoMap-jDYoW-Jl.js.map → GeoMap-CVGJXRRA.js.map} +1 -1
  21. package/dist/{InputsExample-C11hu5Fw.js → InputsExample-BPDEWFXK.js} +1 -1
  22. package/dist/{InputsExample-C11hu5Fw.js.map → InputsExample-BPDEWFXK.js.map} +1 -1
  23. package/dist/{Inquiry-Bi4iSUSQ.js → Inquiry-DJ-yrELW.js} +2 -2
  24. package/dist/{Inquiry-Bi4iSUSQ.js.map → Inquiry-DJ-yrELW.js.map} +1 -1
  25. package/dist/{MenuPage-CuB7g460.js → MenuPage-0qeyA5lF.js} +2 -2
  26. package/dist/{MenuPage-CuB7g460.js.map → MenuPage-0qeyA5lF.js.map} +1 -1
  27. package/dist/{MenuPage-B4gixMrI.js → MenuPage-BJsOWc5e.js} +2 -2
  28. package/dist/{MyExportsPage-CBqIhu4I.js → MyExportsPage-Cq2MRoRf.js} +3 -2
  29. package/dist/{MyExportsPage-CBqIhu4I.js.map → MyExportsPage-Cq2MRoRf.js.map} +1 -1
  30. package/dist/{MyExportsPage-BE8qvq_F.js → MyExportsPage-ZP2V0i5h.js} +2 -2
  31. package/dist/{PageNotFoundRoute-BSlmqegI.js → PageNotFoundRoute-BGj6tqmn.js} +3 -2
  32. package/dist/{PageNotFoundRoute-BSlmqegI.js.map → PageNotFoundRoute-BGj6tqmn.js.map} +1 -1
  33. package/dist/PageNotFoundRoute-CTaRcNjL.js +4 -0
  34. package/dist/PasswordResetRedirect-BMDMHdhE.js +4 -0
  35. package/dist/{PasswordResetRedirect-BvC0vH06.js → PasswordResetRedirect-avgVRKhM.js} +3 -2
  36. package/dist/{PasswordResetRedirect-BvC0vH06.js.map → PasswordResetRedirect-avgVRKhM.js.map} +1 -1
  37. package/dist/{RejectIcon-BoBX4G_D.js → RejectIcon-D8AWbOZq.js} +1 -1
  38. package/dist/{RejectIcon-BoBX4G_D.js.map → RejectIcon-D8AWbOZq.js.map} +1 -1
  39. package/dist/TileLayer-Bk6rITEu.js +31 -0
  40. package/dist/TileLayer-Bk6rITEu.js.map +1 -0
  41. package/dist/UI/accordion/index.js +1 -1
  42. package/dist/UI/advancedSearchBuilder/index.js +1 -1
  43. package/dist/UI/charts/index.js +1 -1
  44. package/dist/UI/components/dataDisplay/index.js +1 -1
  45. package/dist/UI/components/feedback/index.js +1 -1
  46. package/dist/UI/components/index.js +3 -3
  47. package/dist/UI/containers/index.js +1 -1
  48. package/dist/UI/dataDisplay/FluentActivity/index.js +1 -1
  49. package/dist/UI/dataDisplay/FluentDataTable/FluentBody/index.js +3 -0
  50. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +13 -0
  51. package/dist/UI/dataDisplay/FluentDataTable/FluentHead/index.js +3 -0
  52. package/dist/UI/dataDisplay/FluentDataTable/FluentRow/index.js +3 -0
  53. package/dist/UI/dataDisplay/FluentDataTable/index.js +6 -2
  54. package/dist/UI/dataDisplay/address/index.js +1 -1
  55. package/dist/UI/dataDisplay/cardList/index.js +1 -1
  56. package/dist/UI/dataDisplay/directory/index.js +1 -1
  57. package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
  58. package/dist/UI/dataDisplay/index.js +17 -13
  59. package/dist/UI/dataDisplay/map/index.js +1 -1
  60. package/dist/UI/dataDisplay/notes/index.js +1 -1
  61. package/dist/UI/dataDisplay/ticketCard/index.js +1 -1
  62. package/dist/UI/dataDisplay/typography/index.js +1 -1
  63. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  64. package/dist/UI/demos/index.js +2 -2
  65. package/dist/UI/feedback/index.js +1 -1
  66. package/dist/UI/fileViewer/index.js +2 -2
  67. package/dist/UI/floorplans/index.js +1 -1
  68. package/dist/UI/forms/index.js +3 -3
  69. package/dist/UI/iframe/index.js +1 -1
  70. package/dist/UI/index.js +62 -58
  71. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  72. package/dist/UI/loading/index.js +1 -1
  73. package/dist/UI/mapLayout/index.js +1 -1
  74. package/dist/UI/maps/index.js +2 -2
  75. package/dist/UI/navigation/index.js +4 -4
  76. package/dist/UI/navigation/menus/index.js +1 -1
  77. package/dist/UI/navigation/tabs/defaultTabs/index.js +1 -1
  78. package/dist/UI/navigation/tabs/index.js +2 -2
  79. package/dist/UI/property/index.js +1 -1
  80. package/dist/UI/stepper/index.js +1 -1
  81. package/dist/UI/support/index.js +1 -1
  82. package/dist/UI/surfaces/NestedGrid/index.js +2 -2
  83. package/dist/UI/surfaces/NestedGrid/ui/index.js +1 -1
  84. package/dist/UI/surfaces/cards/index.js +3 -3
  85. package/dist/UI/surfaces/cards/newsCard/index.js +1 -1
  86. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  87. package/dist/UI/surfaces/index.js +6 -6
  88. package/dist/UI/templates/index.js +3 -3
  89. package/dist/UI/templates/newGrid/index.js +1 -1
  90. package/dist/UI/templates/ui/index.js +1 -1
  91. package/dist/UI/timeline/fluentTimeline/index.js +1 -1
  92. package/dist/UI/timeline/index.js +2 -2
  93. package/dist/UI/utilityDisplay/alerts/index.js +1 -1
  94. package/dist/UI/utilityDisplay/index.js +5 -5
  95. package/dist/UI/utilityDisplay/ui/index.js +1 -1
  96. package/dist/UI/utilityDisplay/utilities/index.js +1 -1
  97. package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
  98. package/dist/UI/widgets/index.js +1 -1
  99. package/dist/{UdpMaintenanceConfigPage-DdZJT9rB.js → UdpMaintenanceConfigPage-CC_gwu35.js} +1 -1
  100. package/dist/{UdpMaintenanceConfigPage-CnvPi5Gq.js → UdpMaintenanceConfigPage-yuotrI0g.js} +1 -1
  101. package/dist/{UdpMaintenanceConfigPage-CnvPi5Gq.js.map → UdpMaintenanceConfigPage-yuotrI0g.js.map} +1 -1
  102. package/dist/{UdpMap-lSMNXUoe.js → UdpMap-5NE3rUIS.js} +1 -1
  103. package/dist/{UdpMap-lSMNXUoe.js.map → UdpMap-5NE3rUIS.js.map} +1 -1
  104. package/dist/{UdpRoutes-iU7qvtVt.js → UdpRoutes-BVVsyngj.js} +8 -8
  105. package/dist/{UdpRoutes-iU7qvtVt.js.map → UdpRoutes-BVVsyngj.js.map} +1 -1
  106. package/dist/{VirtualBrowser-Dg52rd5g.js → VirtualBrowser-B66Iyn4h.js} +4 -4
  107. package/dist/{VirtualBrowser-BNjKPaXR.js → VirtualBrowser-BansR6-F.js} +4 -3
  108. package/dist/{VirtualBrowser-BNjKPaXR.js.map → VirtualBrowser-BansR6-F.js.map} +1 -1
  109. package/dist/{VirtualForm-Da9cgNqE.js → VirtualForm-DlTtINdK.js} +2 -2
  110. package/dist/{VirtualForm-Da9cgNqE.js.map → VirtualForm-DlTtINdK.js.map} +1 -1
  111. package/dist/{WorkflowContainer-Bf7oW53_.js → WorkflowContainer-C6QfVid-.js} +3 -3
  112. package/dist/{WorkflowContainer-Dmp3rpCg.js → WorkflowContainer-DasTFSlY.js} +4 -3
  113. package/dist/{WorkflowContainer-Dmp3rpCg.js.map → WorkflowContainer-DasTFSlY.js.map} +1 -1
  114. package/dist/actions/index.js +2 -2
  115. package/dist/actions/sidebar/index.js +1 -1
  116. package/dist/actions/utils/index.js +1 -1
  117. package/dist/{cards-CpCLKLuT.js → cards-CD1BE7Mh.js} +1 -1
  118. package/dist/{cards-CpCLKLuT.js.map → cards-CD1BE7Mh.js.map} +1 -1
  119. package/dist/{charts-Dm_iW2_N.js → charts-PdiOkLDF.js} +1 -1
  120. package/dist/{charts-Dm_iW2_N.js.map → charts-PdiOkLDF.js.map} +1 -1
  121. package/dist/componentSystems/multiThreadTimeline/functions/index.js +1 -1
  122. package/dist/componentSystems/multiThreadTimeline/index.js +5 -5
  123. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
  124. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +1 -1
  125. package/dist/componentSystems/multiThreadTimeline/ui/index.js +2 -2
  126. package/dist/componentSystems/multiThreadTimeline/ui/modified/index.js +1 -1
  127. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  128. package/dist/componentSystems/pageRenderer/hooks/index.js +1 -1
  129. package/dist/componentSystems/pageRenderer/index.js +4 -4
  130. package/dist/componentSystems/pageRenderer/utils/index.js +1 -1
  131. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  132. package/dist/dataBrowser/forms/index.js +1 -1
  133. package/dist/dataBrowser/index.js +1 -1
  134. package/dist/{defaultTabs-Bmq_wtOy.js → defaultTabs-C07t9FPZ.js} +1 -1
  135. package/dist/{defaultTabs-Bmq_wtOy.js.map → defaultTabs-C07t9FPZ.js.map} +1 -1
  136. package/dist/hooks/index.js +2 -2
  137. package/dist/index.js +23 -19
  138. package/dist/index.js.map +1 -1
  139. package/dist/inquiry/dashboard/index.js +1 -1
  140. package/dist/inquiry/index.js +5 -5
  141. package/dist/inquiry/inquiryBar/index.js +1 -1
  142. package/dist/inquiry/search/index.js +1 -1
  143. package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
  144. package/dist/maintenanceEngine/index.js +6 -6
  145. package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
  146. package/dist/maintenanceEngine/virtualBrowser/index.js +4 -4
  147. package/dist/map-library/Source/index.js +34 -1
  148. package/dist/map-library/Source/index.js.map +1 -0
  149. package/dist/maps/index.js +4 -4
  150. package/dist/maps/leafletMaps/index.js +2 -2
  151. package/dist/maps/leafletMaps/ui/index.js +1 -1
  152. package/dist/maps/openLayerMaps/Layers/index.js +45 -3
  153. package/dist/maps/openLayerMaps/Layers/index.js.map +1 -0
  154. package/dist/menuPage/index.js +2 -2
  155. package/dist/routes/index.js +1 -1
  156. package/dist/shell/index.js +3 -3
  157. package/dist/shell/ui/addUser/index.js +1 -1
  158. package/dist/shell/ui/appSwitcher/index.js +1 -1
  159. package/dist/shell/ui/index.js +3 -3
  160. package/dist/{theme-HNYKI2UT.js → theme-DtUeftmy.js} +3 -2
  161. package/dist/theme-DtUeftmy.js.map +1 -0
  162. package/dist/treeMenu/index.js +1 -1
  163. package/dist/types/maintenanceEngine/virtualBrowser/VirtualBrowser.d.ts +1 -0
  164. package/dist/types/routes/components/PageNotFoundRoute.d.ts +1 -0
  165. package/dist/types/routes/components/PasswordResetRedirect.d.ts +1 -0
  166. package/dist/types/tsconfig.tsbuildinfo +1 -1
  167. package/dist/types/udp/export/MyExportsPage.d.ts +1 -0
  168. package/dist/types/workflow/WorkflowContainer.d.ts +1 -0
  169. package/dist/udp/export/index.js +1 -1
  170. package/dist/udp/pages/index.js +1 -1
  171. package/dist/{ui-DEnf6-9j.js → ui-z-P1tNCJ.js} +1 -1
  172. package/dist/{ui-DEnf6-9j.js.map → ui-z-P1tNCJ.js.map} +1 -1
  173. package/dist/{useSingleLogout-DRSY_UK_.js → useSingleLogout-DeHKk6v6.js} +2 -2
  174. package/dist/{useSingleLogout-DRSY_UK_.js.map → useSingleLogout-DeHKk6v6.js.map} +1 -1
  175. package/dist/{useUpdateSearchParams-fEinMP0r.js → useUpdateSearchParams-CKTTs6Zx.js} +1 -1
  176. package/dist/{useUpdateSearchParams-fEinMP0r.js.map → useUpdateSearchParams-CKTTs6Zx.js.map} +1 -1
  177. package/dist/utilities/DemoJuly/index.js +1 -1
  178. package/dist/utilities/aggrid/index.js +1 -1
  179. package/dist/utilities/auth/index.js +3 -3
  180. package/dist/utilities/catalog/index.js +2 -2
  181. package/dist/utilities/chatBot/index.js +1 -1
  182. package/dist/utilities/crud/index.js +1 -1
  183. package/dist/utilities/customIcons/index.js +2 -2
  184. package/dist/utilities/entities/index.js +1 -1
  185. package/dist/utilities/floorplanFunctions/index.js +1 -1
  186. package/dist/utilities/iconLibrary/index.js +1 -1
  187. package/dist/utilities/index.js +30 -30
  188. package/dist/utilities/input/index.js +1 -1
  189. package/dist/utilities/maintenanceEngine/index.js +1 -1
  190. package/dist/utilities/menus/index.js +1 -1
  191. package/dist/utilities/page/index.js +1 -1
  192. package/dist/utilities/provider/index.js +1 -1
  193. package/dist/utilities/redirect/index.js +1 -1
  194. package/dist/utilities/rules/index.js +1 -1
  195. package/dist/utilities/search/index.js +1 -1
  196. package/dist/utilities/storage/index.js +1 -1
  197. package/dist/utilities/style/index.js +1 -1
  198. package/dist/utilities/tenant/index.js +1 -1
  199. package/dist/utilities/tree/index.js +1 -1
  200. package/dist/utilities/uploader/index.js +1 -1
  201. package/dist/utilities/utilityBar/index.js +1 -1
  202. package/dist/utilities/workflow/index.js +1 -1
  203. package/dist/{virtualActions-DlqSD5s0.js → virtualActions-B-cs7Mxr.js} +1 -1
  204. package/dist/{virtualActions-DlqSD5s0.js.map → virtualActions-B-cs7Mxr.js.map} +1 -1
  205. package/dist/workflow/components/index.js +1 -1
  206. package/dist/workflow/index.js +4 -4
  207. package/dist/workflow/menus/index.js +1 -1
  208. package/export-map.json +2 -2
  209. package/package.json +3 -2
  210. package/dist/FluentDataTable-BhA49RJS.js.map +0 -1
  211. package/dist/Layers-CQUYxZqM.js +0 -71
  212. package/dist/Layers-CQUYxZqM.js.map +0 -1
  213. package/dist/PageNotFoundRoute-Dw80_viU.js +0 -4
  214. package/dist/PasswordResetRedirect-P7XBzXp-.js +0 -4
  215. package/dist/theme-HNYKI2UT.js.map +0 -1
  216. /package/dist/{DemoJuly-mBlFDlXO.js → DemoJuly-HEFpRiJ1.js} +0 -0
  217. /package/dist/{FluentActivity-BrIQN8GI.js → FluentActivity-Btq_69F-.js} +0 -0
  218. /package/dist/{FluentDataTable-qrNqXPRF.js → FluentDataTable-BwVi4r3o.js} +0 -0
  219. /package/dist/{NestedGrid-CHqHYRS8.js → NestedGrid-fseCejIz.js} +0 -0
  220. /package/dist/{accordion-BHm_jIsS.js → accordion-ChuOXM_i.js} +0 -0
  221. /package/dist/{addUser-CyMrC1rE.js → addUser-CDUgX71C.js} +0 -0
  222. /package/dist/{address-DlScXNBU.js → address-D8Cf2B--.js} +0 -0
  223. /package/dist/{advancedSearchBuilder-JWTOT_dc.js → advancedSearchBuilder-BNE1r194.js} +0 -0
  224. /package/dist/{aggrid-DuGBxiR8.js → aggrid-D_aCbevC.js} +0 -0
  225. /package/dist/{alerts-fNWU3EXg.js → alerts-B--Jzz0v.js} +0 -0
  226. /package/dist/{appSwitcher-dCBbv3It.js → appSwitcher-BXsn0Y7P.js} +0 -0
  227. /package/dist/{auth-CwXOQn2B.js → auth-DWPlnjpI.js} +0 -0
  228. /package/dist/{cardList-gSDuPOQB.js → cardList-B0bYLPWj.js} +0 -0
  229. /package/dist/{catalog-p3yrFQgg.js → catalog-DMuLXcCK.js} +0 -0
  230. /package/dist/{chatBot-_aXO7sdm.js → chatBot-CESOMewn.js} +0 -0
  231. /package/dist/{components-BX70C7Xh.js → components-BpG8EmUu.js} +0 -0
  232. /package/dist/{components-DV8tbAMk.js → components-DaFrTvLa.js} +0 -0
  233. /package/dist/{containers-CXy3OKvD.js → containers-Cl2DkUJz.js} +0 -0
  234. /package/dist/{crud-By2po3xT.js → crud-tnZ9W8IE.js} +0 -0
  235. /package/dist/{crudBrowser-3U59T0v9.js → crudBrowser-BoZrPfr-.js} +0 -0
  236. /package/dist/{customIcons-DdZ5YpJU.js → customIcons-DbLvDHvX.js} +0 -0
  237. /package/dist/{dashboard-iA68nouc.js → dashboard-B3PkRVxB.js} +0 -0
  238. /package/dist/{dataDisplay-D-k_23Y1.js → dataDisplay-BivdlLmj.js} +0 -0
  239. /package/dist/{dataDisplay-DwmhNGSc.js → dataDisplay-BkAq_6Ba.js} +0 -0
  240. /package/dist/{demos-Be_LEs0N.js → demos-L9SUck5b.js} +0 -0
  241. /package/dist/{directory-QndEV4Ip.js → directory-BmBd7DNf.js} +0 -0
  242. /package/dist/{entities-okCA6j-F.js → entities-Hs88OmOI.js} +0 -0
  243. /package/dist/{entityHeader-BJdZfqWn.js → entityHeader-uoWltVXF.js} +0 -0
  244. /package/dist/{feedback-BFVY3F4O.js → feedback-CT_YIVkQ.js} +0 -0
  245. /package/dist/{feedback-DxBgLa50.js → feedback-Cq3y6mnG.js} +0 -0
  246. /package/dist/{fileViewer-IW404ILx.js → fileViewer-DNmXMgEv.js} +0 -0
  247. /package/dist/{floorplanFunctions-C3h7qiy7.js → floorplanFunctions-DI9Q0N4y.js} +0 -0
  248. /package/dist/{floorplans-CAy6OBti.js → floorplans-DCsLstCq.js} +0 -0
  249. /package/dist/{fluentTimeline-VY1uVRIt.js → fluentTimeline-Bw3MB61J.js} +0 -0
  250. /package/dist/{forms-3Zdzp4gn.js → forms-CTGzji9-.js} +0 -0
  251. /package/dist/{forms-BbMWRT_y.js → forms-DBN5u9vQ.js} +0 -0
  252. /package/dist/{functions-DxOG2OTQ.js → functions-B886DHHN.js} +0 -0
  253. /package/dist/{hocs-DBWxBvoU.js → hocs-CLAAIJfF.js} +0 -0
  254. /package/dist/{hooks-CwtIArSw.js → hooks-d0fHOxwg.js} +0 -0
  255. /package/dist/{iconLibrary-Ckm-SSry.js → iconLibrary-BzBDlfKa.js} +0 -0
  256. /package/dist/{iframe-0yE4pScI.js → iframe-qtuPeiq4.js} +0 -0
  257. /package/dist/{input-JbgQSbft.js → input-DVo_b6i8.js} +0 -0
  258. /package/dist/{inquiryBar-Dxy8ppZB.js → inquiryBar-cjTVuVy_.js} +0 -0
  259. /package/dist/{leafletMaps-s9gEVu5W.js → leafletMaps-BjTYRV2R.js} +0 -0
  260. /package/dist/{loading-xxfy2ZlM.js → loading-BwYpS7fe.js} +0 -0
  261. /package/dist/{maintenanceEngine-BafuhHra.js → maintenanceEngine-BbFlaLMV.js} +0 -0
  262. /package/dist/{map-DV91zIAC.js → map-BWuSYF6e.js} +0 -0
  263. /package/dist/{mapLayout-DtENn_sr.js → mapLayout-D7YBYQ7P.js} +0 -0
  264. /package/dist/{maps-D5joGxHk.js → maps-CevY6l2a.js} +0 -0
  265. /package/dist/{menus-B32cxSun.js → menus-BZI70wR2.js} +0 -0
  266. /package/dist/{menus-C0jFXQQc.js → menus-CwNO89uQ.js} +0 -0
  267. /package/dist/{menus-Nbum4678.js → menus-DN6GDDqx.js} +0 -0
  268. /package/dist/{modified-DKPoXWSV.js → modified-Cf42z6i8.js} +0 -0
  269. /package/dist/{mttMainTimeline-DmKTPyfl.js → mttMainTimeline-D7IXpP1x.js} +0 -0
  270. /package/dist/{mttSummary-DbADB7pv.js → mttSummary-BMkmdNju.js} +0 -0
  271. /package/dist/{navigation-C_xITs8t.js → navigation-B6o0jZNc.js} +0 -0
  272. /package/dist/{newGrid-DtnaU91a.js → newGrid-DMD24lFv.js} +0 -0
  273. /package/dist/{newsCard-C7LwX_z1.js → newsCard-BEEsHzuT.js} +0 -0
  274. /package/dist/{notes-BzUsl5ox.js → notes-DXPGMU6E.js} +0 -0
  275. /package/dist/{page-XSjNp2Nd.js → page-BQMQ1JlA.js} +0 -0
  276. /package/dist/{property-D-lRqI5q.js → property-BxFkD-ST.js} +0 -0
  277. /package/dist/{provider-276_eTQP.js → provider-CwOhsp5M.js} +0 -0
  278. /package/dist/{redirect-Cb0zPMUp.js → redirect-B0_sESdf.js} +0 -0
  279. /package/dist/{rules-C4NrJLax.js → rules-cVxJYdGG.js} +0 -0
  280. /package/dist/{search-D77NrIpT.js → search-6zyJ3P-2.js} +0 -0
  281. /package/dist/{search-w-OrIt_P.js → search-CxezFXdW.js} +0 -0
  282. /package/dist/{sidebar-CqBPneDb.js → sidebar-CGs1WNkU.js} +0 -0
  283. /package/dist/{stepper-BImbyzRm.js → stepper-DSXFT-Iq.js} +0 -0
  284. /package/dist/{storage-BL60r231.js → storage-ZisRFPrn.js} +0 -0
  285. /package/dist/{style-BiG-DeqE.js → style-B_j5O3ww.js} +0 -0
  286. /package/dist/{support-BMrRk2nr.js → support-1Hknr9H-.js} +0 -0
  287. /package/dist/{surfaces-D7Gv5-jf.js → surfaces-SrimKL5h.js} +0 -0
  288. /package/dist/{tableBrowser-BMPoXYzI.js → tableBrowser-BgKcSdyL.js} +0 -0
  289. /package/dist/{tabs-LSMdumcR.js → tabs-HRFDrAzD.js} +0 -0
  290. /package/dist/{templates-DxIYQEwm.js → templates-XRou7iKM.js} +0 -0
  291. /package/dist/{tenant-Ba0QsFun.js → tenant-CMcPr3w4.js} +0 -0
  292. /package/dist/{ticketCard-vpgwV6yo.js → ticketCard-B1ueM7V9.js} +0 -0
  293. /package/dist/{timeline-B7z-jUTx.js → timeline-CvlnNFik.js} +0 -0
  294. /package/dist/{tree-Bdu7gGxB.js → tree-BLeqwXve.js} +0 -0
  295. /package/dist/{typography-cWXaOaj-.js → typography-BUD73n7-.js} +0 -0
  296. /package/dist/{ui-B7XVO_hX.js → ui-5ngIc6S4.js} +0 -0
  297. /package/dist/{ui-Cje9T4Uy.js → ui-CMEdOOxm.js} +0 -0
  298. /package/dist/{ui-RoqPR_sc.js → ui-CQsw5PPh.js} +0 -0
  299. /package/dist/{ui-b3YPtlpb.js → ui-GKTg3I2L.js} +0 -0
  300. /package/dist/{ui-en5KNlmI.js → ui-Qt0TiwMS.js} +0 -0
  301. /package/dist/{uploader-6C3jSbvh.js → uploader-nV12FZ_U.js} +0 -0
  302. /package/dist/{utilities-DI2DK3EE.js → utilities-C8yTJ1rO.js} +0 -0
  303. /package/dist/{utilityBar-BnpknzCg.js → utilityBar-BCRqW4jk.js} +0 -0
  304. /package/dist/{utilityDisplay-BtOjD5dW.js → utilityDisplay-B2kppcKk.js} +0 -0
  305. /package/dist/{utilityHeader-BcADv4L8.js → utilityHeader-B9G8SBPx.js} +0 -0
  306. /package/dist/{utils-CxjlnL_a.js → utils-BWi9Cg7u.js} +0 -0
  307. /package/dist/{utils-Dp2c8faV.js → utils-BaVKyFU8.js} +0 -0
  308. /package/dist/{virtualBrowser-CYUz09Zq.js → virtualBrowser-DjU3bOv0.js} +0 -0
  309. /package/dist/{visualization-Nic9OP-u.js → visualization-C71zC7Zo.js} +0 -0
  310. /package/dist/{widgets-_PSKWMOa.js → widgets-BOvBco5h.js} +0 -0
  311. /package/dist/{workOrderCard-D95cXcFu.js → workOrderCard-Cq8NIxl6.js} +0 -0
  312. /package/dist/{workflow-OW7yAb2X.js → workflow-Cou_j4_8.js} +0 -0
  313. /package/dist/{wrappers-YZRMr_jq.js → wrappers-Bvf3DVNC.js} +0 -0
@@ -351,4 +351,4 @@ const BaseTreeMenu = (props) => {
351
351
 
352
352
  //#endregion
353
353
  export { BaseTreeMenu, BaseTreeMenuItem };
354
- //# sourceMappingURL=BaseTreeMenu-DxXnVd_v.js.map
354
+ //# sourceMappingURL=BaseTreeMenu-DmsrGSdA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTreeMenu-DxXnVd_v.js","names":["useStyles","other","tree","expanded"],"sources":["../src/treeMenu/BaseTreeMenuItem.jsx","../src/treeMenu/BaseTreeMenu.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n makeStyles,\n lighten,\n Typography,\n CircularProgress,\n darken,\n useTheme,\n Tooltip\n} from '@material-ui/core';\nimport TreeItem from '@material-ui/lab/TreeItem';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport clsx from 'clsx';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n NodeActionTriggerEnums,\n TreeViewModeEnums\n} from '../enums/unitySystemEnums.ts';\nimport { AggregateChip } from '../UI/utilityDisplay/AggregateChip';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '&.Mui-selected > .MuiTreeItem-content': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n borderRight: `4px solid ${theme.palette.primary.main}`\n },\n '&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label': {\n backgroundColor: 'transparent',\n paddingLeft: 0\n },\n '&.Mui-selected > .MuiTreeItem-content > .MuiCollapse-wrapperInner': {\n backgroundColor:\n theme?.getThemeData()?.mode !== 'dark' && theme.palette.grey[50]\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer': {\n display: (props) => (props.sidebarExpanded ? 'flex' : 'none')\n }\n },\n content: {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' &&\n props.conditionalIconName &&\n props.conditionalIconColor\n ? lighten(props.conditionalIconColor, 0.92)\n : ''\n },\n labelRoot: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: (props) => (props.sidebarExpanded ? 0 : theme.spacing(1.5)),\n width: '100%'\n },\n labelContainer: {\n display: (props) => (!props.sidebarExpanded ? 'none' : ''),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `calc(100% - ${theme.spacing(6.25)}px)`\n : `calc(100% - ${theme.spacing(7.75)}px)`\n },\n conditionalIconContainer: {\n display: 'inline-flex'\n },\n labelText: {\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: '1rem',\n letterSpacing: 0.1\n },\n captionText: {\n marginLeft: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact ? theme.spacing(1) : '',\n fontSize: '0.65rem',\n fontWeight: 400,\n lineHeight: 1,\n letterSpacing: 0.4\n },\n labelOverflow: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n group: {\n width: '100%',\n '& .MuiTreeItem-group': {\n marginLeft: 0\n },\n '& .MuiTreeItem-content': {\n paddingLeft: (props) =>\n props.sidebarExpanded ? (props.depth || 1) * theme.spacing(1) : 0,\n borderRight: (props) =>\n props.showRightBorderColor\n ? `4px solid ${theme.palette.primary.main}`\n : '',\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n '& .MuiTreeItem-content .MuiTreeItem-label': {\n paddingLeft: 0,\n width: (props) =>\n props.sidebarExpanded && `calc(100% - ${theme.spacing(2.5)}px)`\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer span': {\n display: (props) => (props.hideExpansion ? 'none' : '')\n },\n '& .MuiCollapse-wrapperInner': {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' && props.isSelectedNode\n ? theme.palette.grey[50]\n : ''\n }\n },\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 50,\n marginTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginRight: theme.spacing(1),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n height: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n border: (props) =>\n props.iconColor\n ? `1px solid ${darken(props.iconColor, 0.1)}`\n : `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: '#ffffff'\n }\n}));\n\nexport const BaseTreeMenuItem = (props) => {\n const {\n parentId,\n nodeId,\n iconName,\n iconType,\n conditionalIconName,\n conditionalIconType,\n conditionalIconColor,\n label,\n iconColor,\n onNodeSelect,\n isSelectedNode,\n subLabel,\n sidebarExpanded,\n isLastNode,\n loading,\n node,\n onDropNode,\n treeViewMode,\n menuIndex,\n aggregateThresholdId,\n ...other\n } = props;\n const classes = useStyles(props);\n const theme = useTheme();\n\n const [{ isDragging }, dragRef] = useDrag({\n type: 'BaseTreeMenuItem',\n item: { ...node, sourceNodeMenuIndex: menuIndex },\n collect: (monitor) => ({\n isDragging: monitor.isDragging()\n })\n });\n\n const handleOnDrop = useCallback(\n (sourceNode, monitor) => {\n if (!monitor.didDrop()) {\n if (onDropNode) {\n const { sourceNodeMenuIndex, ...other } = sourceNode;\n onDropNode({ ...other }, node, sourceNodeMenuIndex, menuIndex);\n }\n }\n },\n [onDropNode, node, menuIndex]\n );\n\n const [{ canDrop, isOver }, dropRef] = useDrop(\n () => ({\n accept: ['BaseTreeMenuItem'],\n drop: (sourceNode, monitor) => {\n // condition to only handle first drop\n handleOnDrop(sourceNode, monitor);\n },\n canDrop: (sourceNode) => checkCanDrop(sourceNode),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: !!monitor.canDrop()\n })\n }),\n [handleOnDrop]\n );\n\n const checkCanDrop = useCallback(\n (sourceNode) => {\n if (sourceNode) {\n const onDropActions = node?.properties?.nodeActions?.filter(\n (na) => na?.triggerType === NodeActionTriggerEnums.On_Node_Drop\n );\n if (!onDropActions) {\n return false;\n }\n const nodeDragEntities = onDropActions?.map(\n (action) => action?.dragEntityName\n );\n return nodeDragEntities.includes(\n sourceNode?.properties?.catalogReturnObject\n );\n }\n },\n [node]\n );\n\n const handleOnLabelClick = useCallback(\n (e) => {\n e.preventDefault();\n onNodeSelect(e, nodeId);\n },\n [onNodeSelect, nodeId]\n );\n\n return (\n <TreeItem\n className={classes.group}\n key={nodeId}\n nodeId={nodeId}\n label={\n <div ref={dropRef}>\n <Tooltip title={sidebarExpanded ? '' : label}>\n <div\n ref={(node?.properties?.isDraggable && dragRef) || null}\n style={{ opacity: isDragging ? 0.5 : 1 }}\n >\n {loading ? (\n <CircularProgress size={12} />\n ) : (\n <div\n id={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n udprecordid={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n className={classes.labelRoot}\n style={{\n fontWeight: isSelectedNode ? 'bold' : ''\n }}\n >\n {iconName && (\n <div className={classes.iconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={iconColor}\n type={iconType}\n icon={\n iconType === 'unity'\n ? getUnityIconFromName(iconName)\n : getIconFromName(iconName)\n }\n style={{\n color: iconColor\n ? darken(iconColor, 0.1)\n : theme.palette.secondary.main\n }}\n />\n </div>\n )}\n <div className={classes.labelContainer}>\n <Typography\n variant='subtitle2'\n className={clsx(classes.labelText, classes.labelOverflow)}\n >\n {label}\n {subLabel &&\n treeViewMode === TreeViewModeEnums.Compact && (\n <Typography\n variant='caption'\n className={clsx(\n classes.captionText,\n classes.labelOverflow\n )}\n >\n {subLabel}\n </Typography>\n )}\n </Typography>\n {subLabel && treeViewMode === TreeViewModeEnums.Classic && (\n <div className={classes.labelOverflow}>\n <Typography\n variant='caption'\n className={clsx(classes.captionText)}\n >\n {subLabel}\n </Typography>\n </div>\n )}\n </div>\n <AggregateChip aggregateThresholdId={aggregateThresholdId} />\n {conditionalIconName && sidebarExpanded && (\n <div className={classes.conditionalIconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={conditionalIconColor}\n type={conditionalIconType}\n icon={\n conditionalIconType === 'unity'\n ? getUnityIconFromName(conditionalIconName)\n : getIconFromName(conditionalIconName)\n }\n style={{\n color: conditionalIconColor\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </Tooltip>\n </div>\n }\n onLabelClick={handleOnLabelClick}\n classes={{ root: classes.root, content: classes.content }}\n {...other}\n />\n );\n};\n","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport {\n makeStyles,\n useTheme,\n lighten,\n CircularProgress,\n Typography\n} from '@material-ui/core';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { BaseTreeMenuItem } from './BaseTreeMenuItem';\nimport {\n searchTree,\n findAllParentIds,\n getNodeIdForRightBorder\n} from '../utilities/tree/TreeUtilities';\nimport { FluentIcon } from '../utilities/iconLibrary/FluentIcon';\nimport { CaretUpSolid8Icon, CaretDownSolid8Icon } from '@fluentui/react-icons';\nimport { cloneDeep } from 'lodash';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums.ts';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(1.75),\n borderTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n noChildrenContainer: {\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n }\n}));\n\nexport const BaseTreeMenu = (props) => {\n const {\n menuItems,\n onSelectNode,\n onDropNode,\n menuIndex,\n selectedNodeId,\n selectedNodeParentId,\n sidebarExpanded,\n treeViewMode,\n childrenKey = 'children'\n } = props;\n const [expanded, setExpanded] = useState(null);\n const [isCurrentActiveTree, setIsCurrentActiveTree] = useState(false);\n const [selectedNodeIsHidden, setSelectedNodeIsHidden] = useState(false);\n const [tree, setTree] = useState(menuItems);\n const theme = useTheme();\n const classes = useStyles(props);\n const firstRender = useRef(true);\n\n const handleSelectedNode = useCallback(\n (e, value) => {\n const selectedNode = searchTree(tree, value);\n if (onSelectNode) {\n onSelectNode(selectedNode, menuIndex);\n setSelectedNodeIsHidden(false);\n }\n },\n [tree, menuIndex, onSelectNode]\n );\n\n const renderTree = useCallback(\n (node, depth = 1) => {\n let label = node.properties?.nodeLabel || node.properties?.name;\n let subLabel = node.properties?.nodeSubLabel;\n let iconName = node.properties?.defaultIcon?.name;\n let iconType = node.properties?.defaultIcon?.type;\n let conditionalIconName = node.properties?.conditionalIconName || '';\n let conditionalIconType = node.properties?.conditionalIconName\n ? node.properties.conditionalIconType\n : '';\n let conditionalIconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : '';\n let nodeId = node.id;\n let iconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : node.properties?.defaultIcon?.color?.hex;\n let aggregateThresholdId = node.properties?.aggregateThresholdId || '';\n\n if (node.isGroupNode) {\n label = node.properties?.label;\n subLabel = node.properties?.subLabel;\n iconName = node.properties?.icon?.name;\n iconType = node.properties?.icon?.type;\n iconColor = node.properties?.icon?.color?.hex;\n }\n\n return (\n <BaseTreeMenuItem\n key={nodeId}\n nodeId={nodeId}\n label={label}\n subLabel={subLabel}\n iconName={iconName}\n iconType={iconType}\n conditionalIconName={conditionalIconName}\n conditionalIconType={conditionalIconType}\n conditionalIconColor={conditionalIconColor}\n parentId={node.parentId}\n iconColor={iconColor}\n onNodeSelect={handleSelectedNode}\n selectedNodeId={selectedNodeId}\n isSelectedNode={selectedNodeId === node.id}\n showRightBorderColor={\n selectedNodeIsHidden &&\n isCurrentActiveTree &&\n getNodeIdForRightBorder(expanded, tree, selectedNodeParentId) ===\n node.id\n }\n isCurrentActiveTree={isCurrentActiveTree}\n sidebarExpanded={sidebarExpanded}\n depth={depth}\n hideExpansion={!!!node[childrenKey]?.length}\n node={node}\n onDropNode={onDropNode}\n treeViewMode={treeViewMode}\n menuIndex={menuIndex}\n aggregateThresholdId={aggregateThresholdId}\n >\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n !node.completedLoadingChildren && (\n <CircularProgress\n size={12}\n style={{ marginLeft: (depth || 1) * theme.spacing(1) }}\n />\n )}\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n !node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n No Children\n </Typography>\n </div>\n )}\n {node.properties?.lazyLoad &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n {`Error Retrieving ${\n !!node[childrenKey]?.length ? `Additional ` : ''\n }Children`}\n </Typography>\n </div>\n )}\n {Array.isArray(node[childrenKey])\n ? node[childrenKey].map((n, i) => renderTree(n, depth + 1))\n : null}\n </BaseTreeMenuItem>\n );\n },\n [\n handleSelectedNode,\n selectedNodeId,\n selectedNodeIsHidden,\n isCurrentActiveTree,\n sidebarExpanded,\n expanded,\n tree,\n selectedNodeParentId,\n theme,\n classes,\n onDropNode,\n treeViewMode,\n menuIndex,\n childrenKey\n ]\n );\n\n const handleNodeExpansion = useCallback(\n async (evt, nodeIds) => {\n const treeCopy = cloneDeep(tree);\n setExpanded(nodeIds);\n\n const parentNode = searchTree(treeCopy, selectedNodeParentId);\n const initialAllParentNodeIds = selectedNodeParentId\n ? [selectedNodeParentId]\n : [];\n const allParentNodeIds = findAllParentIds(\n treeCopy,\n parentNode,\n initialAllParentNodeIds\n );\n const selectedNodeShown = allParentNodeIds.every((id) =>\n nodeIds.includes(id)\n );\n if (\n isCurrentActiveTree &&\n allParentNodeIds.length &&\n !selectedNodeShown\n ) {\n setSelectedNodeIsHidden(true);\n } else {\n setSelectedNodeIsHidden(false);\n }\n },\n [isCurrentActiveTree, tree, selectedNodeParentId]\n );\n\n const getExpandedRecursively = useCallback(\n (tree) => {\n if (!tree) return [];\n return tree.reduce((expandedIds, item) => {\n if (item?.isExpanded) {\n expandedIds.push(item.id);\n }\n if (item && item[childrenKey]?.length) {\n expandedIds = expandedIds.concat(\n getExpandedRecursively(item[childrenKey])\n );\n }\n return expandedIds;\n }, []);\n },\n [childrenKey]\n );\n\n useEffect(() => {\n setTree(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!tree) return;\n if (firstRender.current) {\n let expanded = [];\n if (tree?.isExpanded) {\n expanded.push(tree.id);\n }\n expanded = expanded.concat(getExpandedRecursively(tree[childrenKey]));\n setExpanded(expanded);\n firstRender.current = false;\n }\n // Do not reset expanded on subsequent updates\n }, [getExpandedRecursively, tree, childrenKey]);\n\n useEffect(() => {\n if (!!searchTree(tree, selectedNodeId)) {\n setIsCurrentActiveTree(true);\n } else {\n setIsCurrentActiveTree(false);\n }\n }, [tree, selectedNodeId]);\n\n if (!expanded) {\n return null;\n }\n\n return (\n <TreeView\n key={tree}\n className={classes.root}\n defaultCollapseIcon={\n <FluentIcon\n size='small'\n component={CaretUpSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n expanded={expanded || []}\n onNodeToggle={handleNodeExpansion}\n defaultExpandIcon={\n <FluentIcon\n size='small'\n component={CaretDownSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n selected={selectedNodeId}\n >\n {tree && renderTree(tree)}\n </TreeView>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseTreeMenu-DmsrGSdA.js","names":["useStyles","other","tree","expanded"],"sources":["../src/treeMenu/BaseTreeMenuItem.jsx","../src/treeMenu/BaseTreeMenu.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n makeStyles,\n lighten,\n Typography,\n CircularProgress,\n darken,\n useTheme,\n Tooltip\n} from '@material-ui/core';\nimport TreeItem from '@material-ui/lab/TreeItem';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport clsx from 'clsx';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n NodeActionTriggerEnums,\n TreeViewModeEnums\n} from '../enums/unitySystemEnums.ts';\nimport { AggregateChip } from '../UI/utilityDisplay/AggregateChip';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '&.Mui-selected > .MuiTreeItem-content': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n borderRight: `4px solid ${theme.palette.primary.main}`\n },\n '&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label': {\n backgroundColor: 'transparent',\n paddingLeft: 0\n },\n '&.Mui-selected > .MuiTreeItem-content > .MuiCollapse-wrapperInner': {\n backgroundColor:\n theme?.getThemeData()?.mode !== 'dark' && theme.palette.grey[50]\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer': {\n display: (props) => (props.sidebarExpanded ? 'flex' : 'none')\n }\n },\n content: {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' &&\n props.conditionalIconName &&\n props.conditionalIconColor\n ? lighten(props.conditionalIconColor, 0.92)\n : ''\n },\n labelRoot: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: (props) => (props.sidebarExpanded ? 0 : theme.spacing(1.5)),\n width: '100%'\n },\n labelContainer: {\n display: (props) => (!props.sidebarExpanded ? 'none' : ''),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `calc(100% - ${theme.spacing(6.25)}px)`\n : `calc(100% - ${theme.spacing(7.75)}px)`\n },\n conditionalIconContainer: {\n display: 'inline-flex'\n },\n labelText: {\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: '1rem',\n letterSpacing: 0.1\n },\n captionText: {\n marginLeft: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact ? theme.spacing(1) : '',\n fontSize: '0.65rem',\n fontWeight: 400,\n lineHeight: 1,\n letterSpacing: 0.4\n },\n labelOverflow: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n group: {\n width: '100%',\n '& .MuiTreeItem-group': {\n marginLeft: 0\n },\n '& .MuiTreeItem-content': {\n paddingLeft: (props) =>\n props.sidebarExpanded ? (props.depth || 1) * theme.spacing(1) : 0,\n borderRight: (props) =>\n props.showRightBorderColor\n ? `4px solid ${theme.palette.primary.main}`\n : '',\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n '& .MuiTreeItem-content .MuiTreeItem-label': {\n paddingLeft: 0,\n width: (props) =>\n props.sidebarExpanded && `calc(100% - ${theme.spacing(2.5)}px)`\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer span': {\n display: (props) => (props.hideExpansion ? 'none' : '')\n },\n '& .MuiCollapse-wrapperInner': {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' && props.isSelectedNode\n ? theme.palette.grey[50]\n : ''\n }\n },\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 50,\n marginTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginRight: theme.spacing(1),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n height: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n border: (props) =>\n props.iconColor\n ? `1px solid ${darken(props.iconColor, 0.1)}`\n : `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: '#ffffff'\n }\n}));\n\nexport const BaseTreeMenuItem = (props) => {\n const {\n parentId,\n nodeId,\n iconName,\n iconType,\n conditionalIconName,\n conditionalIconType,\n conditionalIconColor,\n label,\n iconColor,\n onNodeSelect,\n isSelectedNode,\n subLabel,\n sidebarExpanded,\n isLastNode,\n loading,\n node,\n onDropNode,\n treeViewMode,\n menuIndex,\n aggregateThresholdId,\n ...other\n } = props;\n const classes = useStyles(props);\n const theme = useTheme();\n\n const [{ isDragging }, dragRef] = useDrag({\n type: 'BaseTreeMenuItem',\n item: { ...node, sourceNodeMenuIndex: menuIndex },\n collect: (monitor) => ({\n isDragging: monitor.isDragging()\n })\n });\n\n const handleOnDrop = useCallback(\n (sourceNode, monitor) => {\n if (!monitor.didDrop()) {\n if (onDropNode) {\n const { sourceNodeMenuIndex, ...other } = sourceNode;\n onDropNode({ ...other }, node, sourceNodeMenuIndex, menuIndex);\n }\n }\n },\n [onDropNode, node, menuIndex]\n );\n\n const [{ canDrop, isOver }, dropRef] = useDrop(\n () => ({\n accept: ['BaseTreeMenuItem'],\n drop: (sourceNode, monitor) => {\n // condition to only handle first drop\n handleOnDrop(sourceNode, monitor);\n },\n canDrop: (sourceNode) => checkCanDrop(sourceNode),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: !!monitor.canDrop()\n })\n }),\n [handleOnDrop]\n );\n\n const checkCanDrop = useCallback(\n (sourceNode) => {\n if (sourceNode) {\n const onDropActions = node?.properties?.nodeActions?.filter(\n (na) => na?.triggerType === NodeActionTriggerEnums.On_Node_Drop\n );\n if (!onDropActions) {\n return false;\n }\n const nodeDragEntities = onDropActions?.map(\n (action) => action?.dragEntityName\n );\n return nodeDragEntities.includes(\n sourceNode?.properties?.catalogReturnObject\n );\n }\n },\n [node]\n );\n\n const handleOnLabelClick = useCallback(\n (e) => {\n e.preventDefault();\n onNodeSelect(e, nodeId);\n },\n [onNodeSelect, nodeId]\n );\n\n return (\n <TreeItem\n className={classes.group}\n key={nodeId}\n nodeId={nodeId}\n label={\n <div ref={dropRef}>\n <Tooltip title={sidebarExpanded ? '' : label}>\n <div\n ref={(node?.properties?.isDraggable && dragRef) || null}\n style={{ opacity: isDragging ? 0.5 : 1 }}\n >\n {loading ? (\n <CircularProgress size={12} />\n ) : (\n <div\n id={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n udprecordid={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n className={classes.labelRoot}\n style={{\n fontWeight: isSelectedNode ? 'bold' : ''\n }}\n >\n {iconName && (\n <div className={classes.iconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={iconColor}\n type={iconType}\n icon={\n iconType === 'unity'\n ? getUnityIconFromName(iconName)\n : getIconFromName(iconName)\n }\n style={{\n color: iconColor\n ? darken(iconColor, 0.1)\n : theme.palette.secondary.main\n }}\n />\n </div>\n )}\n <div className={classes.labelContainer}>\n <Typography\n variant='subtitle2'\n className={clsx(classes.labelText, classes.labelOverflow)}\n >\n {label}\n {subLabel &&\n treeViewMode === TreeViewModeEnums.Compact && (\n <Typography\n variant='caption'\n className={clsx(\n classes.captionText,\n classes.labelOverflow\n )}\n >\n {subLabel}\n </Typography>\n )}\n </Typography>\n {subLabel && treeViewMode === TreeViewModeEnums.Classic && (\n <div className={classes.labelOverflow}>\n <Typography\n variant='caption'\n className={clsx(classes.captionText)}\n >\n {subLabel}\n </Typography>\n </div>\n )}\n </div>\n <AggregateChip aggregateThresholdId={aggregateThresholdId} />\n {conditionalIconName && sidebarExpanded && (\n <div className={classes.conditionalIconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={conditionalIconColor}\n type={conditionalIconType}\n icon={\n conditionalIconType === 'unity'\n ? getUnityIconFromName(conditionalIconName)\n : getIconFromName(conditionalIconName)\n }\n style={{\n color: conditionalIconColor\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </Tooltip>\n </div>\n }\n onLabelClick={handleOnLabelClick}\n classes={{ root: classes.root, content: classes.content }}\n {...other}\n />\n );\n};\n","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport {\n makeStyles,\n useTheme,\n lighten,\n CircularProgress,\n Typography\n} from '@material-ui/core';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { BaseTreeMenuItem } from './BaseTreeMenuItem';\nimport {\n searchTree,\n findAllParentIds,\n getNodeIdForRightBorder\n} from '../utilities/tree/TreeUtilities';\nimport { FluentIcon } from '../utilities/iconLibrary/FluentIcon';\nimport { CaretUpSolid8Icon, CaretDownSolid8Icon } from '@fluentui/react-icons';\nimport { cloneDeep } from 'lodash';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums.ts';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(1.75),\n borderTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n noChildrenContainer: {\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n }\n}));\n\nexport const BaseTreeMenu = (props) => {\n const {\n menuItems,\n onSelectNode,\n onDropNode,\n menuIndex,\n selectedNodeId,\n selectedNodeParentId,\n sidebarExpanded,\n treeViewMode,\n childrenKey = 'children'\n } = props;\n const [expanded, setExpanded] = useState(null);\n const [isCurrentActiveTree, setIsCurrentActiveTree] = useState(false);\n const [selectedNodeIsHidden, setSelectedNodeIsHidden] = useState(false);\n const [tree, setTree] = useState(menuItems);\n const theme = useTheme();\n const classes = useStyles(props);\n const firstRender = useRef(true);\n\n const handleSelectedNode = useCallback(\n (e, value) => {\n const selectedNode = searchTree(tree, value);\n if (onSelectNode) {\n onSelectNode(selectedNode, menuIndex);\n setSelectedNodeIsHidden(false);\n }\n },\n [tree, menuIndex, onSelectNode]\n );\n\n const renderTree = useCallback(\n (node, depth = 1) => {\n let label = node.properties?.nodeLabel || node.properties?.name;\n let subLabel = node.properties?.nodeSubLabel;\n let iconName = node.properties?.defaultIcon?.name;\n let iconType = node.properties?.defaultIcon?.type;\n let conditionalIconName = node.properties?.conditionalIconName || '';\n let conditionalIconType = node.properties?.conditionalIconName\n ? node.properties.conditionalIconType\n : '';\n let conditionalIconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : '';\n let nodeId = node.id;\n let iconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : node.properties?.defaultIcon?.color?.hex;\n let aggregateThresholdId = node.properties?.aggregateThresholdId || '';\n\n if (node.isGroupNode) {\n label = node.properties?.label;\n subLabel = node.properties?.subLabel;\n iconName = node.properties?.icon?.name;\n iconType = node.properties?.icon?.type;\n iconColor = node.properties?.icon?.color?.hex;\n }\n\n return (\n <BaseTreeMenuItem\n key={nodeId}\n nodeId={nodeId}\n label={label}\n subLabel={subLabel}\n iconName={iconName}\n iconType={iconType}\n conditionalIconName={conditionalIconName}\n conditionalIconType={conditionalIconType}\n conditionalIconColor={conditionalIconColor}\n parentId={node.parentId}\n iconColor={iconColor}\n onNodeSelect={handleSelectedNode}\n selectedNodeId={selectedNodeId}\n isSelectedNode={selectedNodeId === node.id}\n showRightBorderColor={\n selectedNodeIsHidden &&\n isCurrentActiveTree &&\n getNodeIdForRightBorder(expanded, tree, selectedNodeParentId) ===\n node.id\n }\n isCurrentActiveTree={isCurrentActiveTree}\n sidebarExpanded={sidebarExpanded}\n depth={depth}\n hideExpansion={!!!node[childrenKey]?.length}\n node={node}\n onDropNode={onDropNode}\n treeViewMode={treeViewMode}\n menuIndex={menuIndex}\n aggregateThresholdId={aggregateThresholdId}\n >\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n !node.completedLoadingChildren && (\n <CircularProgress\n size={12}\n style={{ marginLeft: (depth || 1) * theme.spacing(1) }}\n />\n )}\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n !node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n No Children\n </Typography>\n </div>\n )}\n {node.properties?.lazyLoad &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n {`Error Retrieving ${\n !!node[childrenKey]?.length ? `Additional ` : ''\n }Children`}\n </Typography>\n </div>\n )}\n {Array.isArray(node[childrenKey])\n ? node[childrenKey].map((n, i) => renderTree(n, depth + 1))\n : null}\n </BaseTreeMenuItem>\n );\n },\n [\n handleSelectedNode,\n selectedNodeId,\n selectedNodeIsHidden,\n isCurrentActiveTree,\n sidebarExpanded,\n expanded,\n tree,\n selectedNodeParentId,\n theme,\n classes,\n onDropNode,\n treeViewMode,\n menuIndex,\n childrenKey\n ]\n );\n\n const handleNodeExpansion = useCallback(\n async (evt, nodeIds) => {\n const treeCopy = cloneDeep(tree);\n setExpanded(nodeIds);\n\n const parentNode = searchTree(treeCopy, selectedNodeParentId);\n const initialAllParentNodeIds = selectedNodeParentId\n ? [selectedNodeParentId]\n : [];\n const allParentNodeIds = findAllParentIds(\n treeCopy,\n parentNode,\n initialAllParentNodeIds\n );\n const selectedNodeShown = allParentNodeIds.every((id) =>\n nodeIds.includes(id)\n );\n if (\n isCurrentActiveTree &&\n allParentNodeIds.length &&\n !selectedNodeShown\n ) {\n setSelectedNodeIsHidden(true);\n } else {\n setSelectedNodeIsHidden(false);\n }\n },\n [isCurrentActiveTree, tree, selectedNodeParentId]\n );\n\n const getExpandedRecursively = useCallback(\n (tree) => {\n if (!tree) return [];\n return tree.reduce((expandedIds, item) => {\n if (item?.isExpanded) {\n expandedIds.push(item.id);\n }\n if (item && item[childrenKey]?.length) {\n expandedIds = expandedIds.concat(\n getExpandedRecursively(item[childrenKey])\n );\n }\n return expandedIds;\n }, []);\n },\n [childrenKey]\n );\n\n useEffect(() => {\n setTree(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!tree) return;\n if (firstRender.current) {\n let expanded = [];\n if (tree?.isExpanded) {\n expanded.push(tree.id);\n }\n expanded = expanded.concat(getExpandedRecursively(tree[childrenKey]));\n setExpanded(expanded);\n firstRender.current = false;\n }\n // Do not reset expanded on subsequent updates\n }, [getExpandedRecursively, tree, childrenKey]);\n\n useEffect(() => {\n if (!!searchTree(tree, selectedNodeId)) {\n setIsCurrentActiveTree(true);\n } else {\n setIsCurrentActiveTree(false);\n }\n }, [tree, selectedNodeId]);\n\n if (!expanded) {\n return null;\n }\n\n return (\n <TreeView\n key={tree}\n className={classes.root}\n defaultCollapseIcon={\n <FluentIcon\n size='small'\n component={CaretUpSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n expanded={expanded || []}\n onNodeToggle={handleNodeExpansion}\n defaultExpandIcon={\n <FluentIcon\n size='small'\n component={CaretDownSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n selected={selectedNodeId}\n >\n {tree && renderTree(tree)}\n </TreeView>\n );\n};\n"],"mappings":"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"}
@@ -14,4 +14,4 @@ const buildCatalogObjectList = (catalogObjects, children, catalogObjectList) =>
14
14
 
15
15
  //#endregion
16
16
  export { buildCatalogObjectList };
17
- //# sourceMappingURL=CatalogUtilities-j8ACiDe3.js.map
17
+ //# sourceMappingURL=CatalogUtilities-BvkdL-P6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogUtilities-j8ACiDe3.js","names":[],"sources":["../src/utilities/catalog/CatalogUtilities.js"],"sourcesContent":["export const buildCatalogObjectList = (\n catalogObjects,\n children,\n catalogObjectList\n) => {\n if (children.length > 0) {\n for (const child of children) {\n const matchingChildCatalogObject = catalogObjectList.find(\n (co) => co.catalogObjectName === child.reference\n );\n\n if (matchingChildCatalogObject) {\n const existingCatalogObject = catalogObjects.find(\n (co) =>\n co.catalogObjectName ===\n matchingChildCatalogObject.catalogObjectName\n );\n\n if (!existingCatalogObject) {\n catalogObjects.push(matchingChildCatalogObject);\n\n const childsChildren = matchingChildCatalogObject.properties.filter(\n (property) => property.extendedProperties?.childEntity === true\n );\n\n buildCatalogObjectList(\n catalogObjects,\n childsChildren,\n catalogObjectList\n );\n }\n }\n }\n }\n};\n"],"mappings":";AAAA,MAAa,0BACX,gBACA,UACA,sBACG;AACH,KAAI,SAAS,SAAS,EACpB,MAAK,MAAM,SAAS,UAAU;EAC5B,MAAM,6BAA6B,kBAAkB,MAClD,OAAO,GAAG,sBAAsB,MAAM,UACxC;AAED,MAAI,4BAOF;OAAI,CAN0B,eAAe,MAC1C,OACC,GAAG,sBACH,2BAA2B,kBAC9B,EAE2B;AAC1B,mBAAe,KAAK,2BAA2B;IAE/C,MAAM,iBAAiB,2BAA2B,WAAW,QAC1D,aAAa,SAAS,oBAAoB,gBAAgB,KAC5D;AAED,2BACE,gBACA,gBACA,kBACD"}
1
+ {"version":3,"file":"CatalogUtilities-BvkdL-P6.js","names":[],"sources":["../src/utilities/catalog/CatalogUtilities.js"],"sourcesContent":["export const buildCatalogObjectList = (\n catalogObjects,\n children,\n catalogObjectList\n) => {\n if (children.length > 0) {\n for (const child of children) {\n const matchingChildCatalogObject = catalogObjectList.find(\n (co) => co.catalogObjectName === child.reference\n );\n\n if (matchingChildCatalogObject) {\n const existingCatalogObject = catalogObjects.find(\n (co) =>\n co.catalogObjectName ===\n matchingChildCatalogObject.catalogObjectName\n );\n\n if (!existingCatalogObject) {\n catalogObjects.push(matchingChildCatalogObject);\n\n const childsChildren = matchingChildCatalogObject.properties.filter(\n (property) => property.extendedProperties?.childEntity === true\n );\n\n buildCatalogObjectList(\n catalogObjects,\n childsChildren,\n catalogObjectList\n );\n }\n }\n }\n }\n};\n"],"mappings":";AAAA,MAAa,0BACX,gBACA,UACA,sBACG;AACH,KAAI,SAAS,SAAS,EACpB,MAAK,MAAM,SAAS,UAAU;EAC5B,MAAM,6BAA6B,kBAAkB,MAClD,OAAO,GAAG,sBAAsB,MAAM,UACxC;AAED,MAAI,4BAOF;OAAI,CAN0B,eAAe,MAC1C,OACC,GAAG,sBACH,2BAA2B,kBAC9B,EAE2B;AAC1B,mBAAe,KAAK,2BAA2B;IAE/C,MAAM,iBAAiB,2BAA2B,WAAW,QAC1D,aAAa,SAAS,oBAAoB,gBAAgB,KAC5D;AAED,2BACE,gBACA,gBACA,kBACD"}
@@ -404,4 +404,4 @@ const FieldArrayCard = (props) => {
404
404
 
405
405
  //#endregion
406
406
  export { FieldArrayCard, FieldType };
407
- //# sourceMappingURL=FieldArrayCard-D5AzG_US.js.map
407
+ //# sourceMappingURL=FieldArrayCard-ColjIX9t.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldArrayCard-D5AzG_US.js","names":["Grid","AutocompleteFinalField","DateRangeField","FormControlLabel","Typography","Grid","SearchSideSheet"],"sources":["../src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts","../src/UI/inputs/fieldArrayCard/SearchSideSheet.jsx","../src/UI/inputs/fieldArrayCard/AutocompleteFinalField.jsx","../src/UI/inputs/fieldArrayCard/DateRangeField.jsx","../src/UI/inputs/fieldArrayCard/FieldArrayCard.jsx"],"sourcesContent":["export enum FieldType {\n Text = 'text',\n Date = 'date',\n DateRange = 'dateRange',\n Time = 'time',\n DateTime = 'dateTime',\n Toggle = 'toggle',\n Checkbox = 'checkbox',\n DropdownMenu = 'dropdownMenu',\n}","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientGridTemplate } from '../../templates/AmbientGridTemplate';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { SideSheet } from '../../surfaces/SideSheet';\nimport { useAgGridApi } from '../../../utilities/aggrid/AgTable';\n\nconst SearchSideSheet = props => {\n const {\n open,\n handleClose,\n exclude,\n title,\n productApiBase,\n searchApi,\n colDefs = [],\n gridTitle,\n idField,\n formIdField,\n handleSearch,\n width = '800px',\n height='58vh'\n } = props;\n const [selectedData, setSelectedData] = useState([]);\n const { t } = useTranslation();\n const { gridApi, onGridReady, gridColumnApi } = useAgGridApi();\n const paginationPageSize = 20;\n\n // TODO: use queryId or new data grid from stencil\n const searchData = useCallback(\n async data =>\n apiMutate(\n productApiBase,\n searchApi,\n {\n method: 'post',\n },\n data\n ),\n [productApiBase, searchApi]\n );\n\n const onSelectionChanged = useCallback(() => {\n const selectedRows = gridApi?.getSelectedRows() ?? [];\n setSelectedData(selectedRows);\n }, [gridApi]);\n\n const handleCloseSideSheet = useCallback(\n data => {\n handleClose(data);\n setSelectedData([]);\n },\n [handleClose]\n );\n\n const dataSource = useMemo(\n () => ({\n getRows: async ({ request, success, fail }) => {\n if (handleSearch) {\n handleSearch(paginationPageSize, request, success, fail);\n return;\n }\n const filterElements = request?.filterModel\n ? Object.entries(request.filterModel)?.map(([key, value]) => {\n return {\n searchField: key,\n searchOperator: FilterOperators[value?.type],\n searchValue: value?.filter,\n };\n })\n : [];\n\n const orderElements = request?.sortModel\n ? request.sortModel?.map(sortObj => {\n return {\n sortColumn: sortObj?.colId,\n sortDirection: sortObj?.sort?.toUpperCase(),\n };\n })\n : [];\n await searchData({\n data: {\n filterElements: filterElements,\n orderElements: orderElements,\n pagesize: paginationPageSize,\n pageNumber: (request?.startRow ?? 0) / paginationPageSize + 1,\n },\n })\n .then(response => {\n success({\n rowData: response.data?.pageList,\n rowCount: response.data?.total,\n });\n })\n .catch(error => {\n fail();\n });\n\n },\n }),\n [searchData, handleSearch]\n );\n return (\n <SideSheet\n open={open}\n onClose={() => handleCloseSideSheet()}\n title={title}\n width={width}\n buttonLabel={t('Choose')}\n onSubmit={() => {\n handleCloseSideSheet(selectedData);\n }}\n >\n <AmbientGridTemplate\n title={gridTitle}\n rowModelType=\"serverSide\"\n serverSideDatasource={dataSource}\n cacheBlockSize={paginationPageSize}\n serverSideStoreType=\"partial\"\n paginationPageSize={paginationPageSize}\n columnDefs={[\n {\n field: '',\n checkboxSelection: true,\n maxWidth: 60,\n minWidth: 60,\n cellRenderer: params => {\n console.log({\n exclude,\n formIdField,\n idField,\n bool: exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n ),\n });\n if (\n params?.data &&\n !!exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n )\n ) {\n params.node.setSelected(true);\n }\n },\n },\n ...colDefs,\n ]}\n hideGroupTab\n hideColumnTab\n suppressRowClickSelection={true}\n onSelectionChanged={onSelectionChanged}\n rowSelection=\"multiple\"\n api={gridApi}\n gridReady={onGridReady}\n columnApi={gridColumnApi}\n dynamicSizing={true}\n height={height}\n />\n </SideSheet>\n );\n};\n\nexport default SearchSideSheet;\n","import React, { useMemo } from 'react';\nimport { FluentTextFieldAutoComplete } from '../textField/FluentTextFieldAutoComplete';\n\n// this is only to used in FieldArrayCard\nconst AutocompleteFinalField = props => {\n const { value, options, idField = 'id' ,...otherProps } = props;\n\n const currentValue = useMemo(() => {\n if (typeof value === 'object') {\n return value;\n }\n\n return options.find(option => option[idField] === value) || null;\n }, [idField, options, value]);\n\n return (\n <FluentTextFieldAutoComplete\n {...otherProps}\n options={options}\n value={currentValue}\n />\n );\n};\n\nexport default AutocompleteFinalField;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field } from '../../../utilities/form';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { Grid } from '../../Grid';\n\nconst DateRangeField = props => {\n const {\n fieldName,\n startDateProps = {},\n endDateProps = {},\n sameRow = false,\n initialValues,\n } = props;\n const [maxStartDate, setMaxStartDate] = useState();\n const [minEndDate, setMinEndDate] = useState();\n const { t } = useTranslation();\n\n useEffect(() => {\n const currentStartDate = initialValues[startDateProps?.name ?? 'startDate'];\n if (currentStartDate) {\n let minDate = new Date(currentStartDate);\n minDate.setDate(minDate?.getDate() + 1);\n setMinEndDate(minDate);\n } else {\n setMinEndDate(undefined);\n }\n }, [initialValues, startDateProps.name]);\n\n useEffect(() => {\n const currentEndDate = initialValues[endDateProps?.name ?? 'endDate'];\n if (currentEndDate) {\n let maxDate = new Date(currentEndDate);\n maxDate.setDate(maxDate?.getDate() - 1);\n maxDate.setHours(0, 0, 0, 0);\n setMaxStartDate(maxDate);\n } else {\n setMaxStartDate(undefined);\n }\n }, [endDateProps.name, initialValues]);\n\n return (\n <Grid container spacing={sameRow ? 2 : 0}>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...startDateProps}\n parse={value => (value ? value : null)}\n format={value => (value ? value : null)}\n label={startDateProps?.label ?? t('Start Date')}\n name={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n key={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n maxDate={maxStartDate}\n allowNull\n />\n </Grid>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...endDateProps}\n parse={value => value ?? null}\n format={value => value ?? null}\n label={endDateProps?.label ?? t('End Date')}\n name={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n key={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n minDate={minEndDate}\n allowNull\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default DateRangeField;\n","import { AddIcon, DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport React, { useCallback, useState } from 'react';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { useTranslation } from 'react-i18next';\nimport SearchSideSheet from './SearchSideSheet';\nimport AutocompleteFinalField from './AutocompleteFinalField';\nimport DateRangeField from './DateRangeField';\nimport { FieldType } from './fieldArrayCardEnum';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { DateTimeField } from '../datetimes/DateTimeField';\nimport { EmptyStateDisplay } from '../../dataDisplay/EmptyStateDisplay';\nimport { Field } from '../../../utilities/form';\nimport { FluentCheckbox } from '../checkbox/FluentCheckbox';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { FluentTimePicker } from '../pickers/FluentTimePicker';\nimport { FluentToggle } from '../toggle/FluentToggle';\nimport { FormControlLabel } from '../../utilityDisplay/FormControlLabel';\nimport { Grid } from '../../Grid';\nimport { IconButtonWithTooltip } from '../buttons/IconButtonWithToolTip';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { Typography } from '../../dataDisplay/typography/Typography';\n\nconst useStyles = makeStyles(theme => ({\n toggleWrapper: {\n marginLeft: theme.spacing(-0.1),\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n checkboxField: {\n marginLeft: theme.spacing(-1.1),\n },\n sectionHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n fieldsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n },\n cardHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const FieldArrayCard = props => {\n const {\n title = ' ',\n fieldArrayName,\n getRowTitle,\n fieldConfig,\n removeTopLayoutUnit = false,\n defaultAddedItemValues,\n //search sidesheet props\n enableSearchSideSheet,\n searchSideSheetTitle,\n searchFieldId = 'id',\n formFieldId = 'id',\n formatAddedSearchItems,\n productApiBase,\n searchApi,\n searchGridColDefs,\n searchGridTitle,\n handleSearch,\n disableExcludeInSearch = false,\n searchSideSheetWidth,\n searchSideSheetHeight,\n } = props;\n const classes = useStyles();\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const { t } = useTranslation();\n\n const getField = useCallback(\n (finalFieldName, config, fieldObj) => {\n const { fieldName, fieldType, fieldLabel, componentProps } = config;\n\n let fieldComponent = null;\n\n switch (fieldType) {\n case FieldType.DropdownMenu:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={AutocompleteFinalField}\n label={fieldLabel}\n />\n );\n break;\n case FieldType.Date:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentDatePicker}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.DateRange:\n fieldComponent = (\n <DateRangeField\n {...componentProps}\n fieldName={finalFieldName}\n initialValues={fieldObj}\n />\n );\n break;\n case FieldType.Time:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTimePicker}\n label={fieldLabel}\n size=\"small\"\n />\n );\n break;\n case FieldType.DateTime:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={DateTimeField}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.Toggle:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentToggle}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.toggleWrapper}\n />\n );\n break;\n case FieldType.Checkbox:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentCheckbox}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.checkboxField}\n />\n );\n break;\n default:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTextField}\n label={fieldLabel}\n />\n );\n break;\n }\n\n return fieldComponent;\n },\n [classes.checkboxField, classes.toggleWrapper]\n );\n\n const handleCloseSideSheet = useCallback(\n (selectedRecords, fieldArray) => {\n const formattedRecords = formatAddedSearchItems\n ? formatAddedSearchItems(selectedRecords ?? [])\n : selectedRecords;\n\n if (formattedRecords?.length) {\n for (const record of formattedRecords) {\n if (\n disableExcludeInSearch ||\n !!!fieldArray?.value?.find(\n item => item[formFieldId] === record[formFieldId]\n )\n )\n fieldArray.push(record);\n }\n }\n\n setOpenSideSheet(false);\n },\n [disableExcludeInSearch, formFieldId, formatAddedSearchItems]\n );\n\n const handleAddField = useCallback(\n fields => {\n if (enableSearchSideSheet) {\n setOpenSideSheet(true);\n } else {\n if (defaultAddedItemValues) {\n fields.push(defaultAddedItemValues);\n } else {\n fields.push({});\n }\n }\n },\n [defaultAddedItemValues, enableSearchSideSheet]\n );\n\n return (\n <div>\n <FieldArray name={fieldArrayName}>\n {({ fields }) => {\n return (\n <div>\n <div className={classes.sectionHeader}>\n <div>\n {title && <Typography variant=\"h6\">{title}</Typography>}\n </div>\n <IconButtonWithTooltip\n onClick={() => {\n handleAddField(fields);\n }}\n icon={AddIcon}\n title={t('Add')}\n />\n </div>\n\n <div className={classes.cardsWrapper}>\n {fields?.value?.length > 0 ? (\n fields.map((name, index) => {\n const rowTitle =\n getRowTitle && getRowTitle(fields?.value?.[index]);\n return (\n <AmbientCard fullWidth>\n <div className={classes.cardHeader}>\n <Typography variant=\"h6\">{rowTitle}</Typography>\n\n <IconButtonWithTooltip\n onClick={() => fields.remove(index)}\n icon={DeleteIcon}\n title={t('Delete')}\n />\n </div>\n {rowTitle && !removeTopLayoutUnit && (\n <LayoutUnit unit=\"xxs\" />\n )}\n <div className={classes.fieldsWrapper}>\n {fieldConfig?.map(config => {\n if (Array.isArray(config)) {\n return (\n <Grid container spacing={2}>\n {config?.map(innerConfig => {\n return (\n <Grid\n item\n xs={12}\n sm={12 / config?.length}\n >\n {getField(\n name,\n innerConfig,\n fields?.value?.[index]\n )}\n </Grid>\n );\n })}\n </Grid>\n );\n } else {\n return getField(\n name,\n config,\n fields?.value?.[index]\n );\n }\n })}\n </div>\n </AmbientCard>\n );\n })\n ) : (\n <AmbientCard fullWidth cardHeight=\"155px\">\n <EmptyStateDisplay\n primaryText={t('No records to show')}\n secondaryText={t('Try adding one')}\n />\n </AmbientCard>\n )}\n </div>\n <SearchSideSheet\n open={openSideSheet}\n handleClose={data => {\n handleCloseSideSheet(data, fields);\n }}\n exclude={disableExcludeInSearch ? [] : fields?.value}\n title={searchSideSheetTitle}\n productApiBase={productApiBase}\n searchApi={searchApi}\n colDefs={searchGridColDefs}\n idField={searchFieldId}\n formIdField={formFieldId}\n gridTitle={searchGridTitle}\n handleSearch={handleSearch}\n width={searchSideSheetWidth}\n height={searchSideSheetHeight}\n />\n </div>\n );\n }}\n </FieldArray>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldArrayCard-ColjIX9t.js","names":["Grid","AutocompleteFinalField","DateRangeField","FormControlLabel","Typography","Grid","SearchSideSheet"],"sources":["../src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts","../src/UI/inputs/fieldArrayCard/SearchSideSheet.jsx","../src/UI/inputs/fieldArrayCard/AutocompleteFinalField.jsx","../src/UI/inputs/fieldArrayCard/DateRangeField.jsx","../src/UI/inputs/fieldArrayCard/FieldArrayCard.jsx"],"sourcesContent":["export enum FieldType {\n Text = 'text',\n Date = 'date',\n DateRange = 'dateRange',\n Time = 'time',\n DateTime = 'dateTime',\n Toggle = 'toggle',\n Checkbox = 'checkbox',\n DropdownMenu = 'dropdownMenu',\n}","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientGridTemplate } from '../../templates/AmbientGridTemplate';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { SideSheet } from '../../surfaces/SideSheet';\nimport { useAgGridApi } from '../../../utilities/aggrid/AgTable';\n\nconst SearchSideSheet = props => {\n const {\n open,\n handleClose,\n exclude,\n title,\n productApiBase,\n searchApi,\n colDefs = [],\n gridTitle,\n idField,\n formIdField,\n handleSearch,\n width = '800px',\n height='58vh'\n } = props;\n const [selectedData, setSelectedData] = useState([]);\n const { t } = useTranslation();\n const { gridApi, onGridReady, gridColumnApi } = useAgGridApi();\n const paginationPageSize = 20;\n\n // TODO: use queryId or new data grid from stencil\n const searchData = useCallback(\n async data =>\n apiMutate(\n productApiBase,\n searchApi,\n {\n method: 'post',\n },\n data\n ),\n [productApiBase, searchApi]\n );\n\n const onSelectionChanged = useCallback(() => {\n const selectedRows = gridApi?.getSelectedRows() ?? [];\n setSelectedData(selectedRows);\n }, [gridApi]);\n\n const handleCloseSideSheet = useCallback(\n data => {\n handleClose(data);\n setSelectedData([]);\n },\n [handleClose]\n );\n\n const dataSource = useMemo(\n () => ({\n getRows: async ({ request, success, fail }) => {\n if (handleSearch) {\n handleSearch(paginationPageSize, request, success, fail);\n return;\n }\n const filterElements = request?.filterModel\n ? Object.entries(request.filterModel)?.map(([key, value]) => {\n return {\n searchField: key,\n searchOperator: FilterOperators[value?.type],\n searchValue: value?.filter,\n };\n })\n : [];\n\n const orderElements = request?.sortModel\n ? request.sortModel?.map(sortObj => {\n return {\n sortColumn: sortObj?.colId,\n sortDirection: sortObj?.sort?.toUpperCase(),\n };\n })\n : [];\n await searchData({\n data: {\n filterElements: filterElements,\n orderElements: orderElements,\n pagesize: paginationPageSize,\n pageNumber: (request?.startRow ?? 0) / paginationPageSize + 1,\n },\n })\n .then(response => {\n success({\n rowData: response.data?.pageList,\n rowCount: response.data?.total,\n });\n })\n .catch(error => {\n fail();\n });\n\n },\n }),\n [searchData, handleSearch]\n );\n return (\n <SideSheet\n open={open}\n onClose={() => handleCloseSideSheet()}\n title={title}\n width={width}\n buttonLabel={t('Choose')}\n onSubmit={() => {\n handleCloseSideSheet(selectedData);\n }}\n >\n <AmbientGridTemplate\n title={gridTitle}\n rowModelType=\"serverSide\"\n serverSideDatasource={dataSource}\n cacheBlockSize={paginationPageSize}\n serverSideStoreType=\"partial\"\n paginationPageSize={paginationPageSize}\n columnDefs={[\n {\n field: '',\n checkboxSelection: true,\n maxWidth: 60,\n minWidth: 60,\n cellRenderer: params => {\n console.log({\n exclude,\n formIdField,\n idField,\n bool: exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n ),\n });\n if (\n params?.data &&\n !!exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n )\n ) {\n params.node.setSelected(true);\n }\n },\n },\n ...colDefs,\n ]}\n hideGroupTab\n hideColumnTab\n suppressRowClickSelection={true}\n onSelectionChanged={onSelectionChanged}\n rowSelection=\"multiple\"\n api={gridApi}\n gridReady={onGridReady}\n columnApi={gridColumnApi}\n dynamicSizing={true}\n height={height}\n />\n </SideSheet>\n );\n};\n\nexport default SearchSideSheet;\n","import React, { useMemo } from 'react';\nimport { FluentTextFieldAutoComplete } from '../textField/FluentTextFieldAutoComplete';\n\n// this is only to used in FieldArrayCard\nconst AutocompleteFinalField = props => {\n const { value, options, idField = 'id' ,...otherProps } = props;\n\n const currentValue = useMemo(() => {\n if (typeof value === 'object') {\n return value;\n }\n\n return options.find(option => option[idField] === value) || null;\n }, [idField, options, value]);\n\n return (\n <FluentTextFieldAutoComplete\n {...otherProps}\n options={options}\n value={currentValue}\n />\n );\n};\n\nexport default AutocompleteFinalField;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field } from '../../../utilities/form';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { Grid } from '../../Grid';\n\nconst DateRangeField = props => {\n const {\n fieldName,\n startDateProps = {},\n endDateProps = {},\n sameRow = false,\n initialValues,\n } = props;\n const [maxStartDate, setMaxStartDate] = useState();\n const [minEndDate, setMinEndDate] = useState();\n const { t } = useTranslation();\n\n useEffect(() => {\n const currentStartDate = initialValues[startDateProps?.name ?? 'startDate'];\n if (currentStartDate) {\n let minDate = new Date(currentStartDate);\n minDate.setDate(minDate?.getDate() + 1);\n setMinEndDate(minDate);\n } else {\n setMinEndDate(undefined);\n }\n }, [initialValues, startDateProps.name]);\n\n useEffect(() => {\n const currentEndDate = initialValues[endDateProps?.name ?? 'endDate'];\n if (currentEndDate) {\n let maxDate = new Date(currentEndDate);\n maxDate.setDate(maxDate?.getDate() - 1);\n maxDate.setHours(0, 0, 0, 0);\n setMaxStartDate(maxDate);\n } else {\n setMaxStartDate(undefined);\n }\n }, [endDateProps.name, initialValues]);\n\n return (\n <Grid container spacing={sameRow ? 2 : 0}>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...startDateProps}\n parse={value => (value ? value : null)}\n format={value => (value ? value : null)}\n label={startDateProps?.label ?? t('Start Date')}\n name={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n key={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n maxDate={maxStartDate}\n allowNull\n />\n </Grid>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...endDateProps}\n parse={value => value ?? null}\n format={value => value ?? null}\n label={endDateProps?.label ?? t('End Date')}\n name={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n key={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n minDate={minEndDate}\n allowNull\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default DateRangeField;\n","import { AddIcon, DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport React, { useCallback, useState } from 'react';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { useTranslation } from 'react-i18next';\nimport SearchSideSheet from './SearchSideSheet';\nimport AutocompleteFinalField from './AutocompleteFinalField';\nimport DateRangeField from './DateRangeField';\nimport { FieldType } from './fieldArrayCardEnum';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { DateTimeField } from '../datetimes/DateTimeField';\nimport { EmptyStateDisplay } from '../../dataDisplay/EmptyStateDisplay';\nimport { Field } from '../../../utilities/form';\nimport { FluentCheckbox } from '../checkbox/FluentCheckbox';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { FluentTimePicker } from '../pickers/FluentTimePicker';\nimport { FluentToggle } from '../toggle/FluentToggle';\nimport { FormControlLabel } from '../../utilityDisplay/FormControlLabel';\nimport { Grid } from '../../Grid';\nimport { IconButtonWithTooltip } from '../buttons/IconButtonWithToolTip';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { Typography } from '../../dataDisplay/typography/Typography';\n\nconst useStyles = makeStyles(theme => ({\n toggleWrapper: {\n marginLeft: theme.spacing(-0.1),\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n checkboxField: {\n marginLeft: theme.spacing(-1.1),\n },\n sectionHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n fieldsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n },\n cardHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const FieldArrayCard = props => {\n const {\n title = ' ',\n fieldArrayName,\n getRowTitle,\n fieldConfig,\n removeTopLayoutUnit = false,\n defaultAddedItemValues,\n //search sidesheet props\n enableSearchSideSheet,\n searchSideSheetTitle,\n searchFieldId = 'id',\n formFieldId = 'id',\n formatAddedSearchItems,\n productApiBase,\n searchApi,\n searchGridColDefs,\n searchGridTitle,\n handleSearch,\n disableExcludeInSearch = false,\n searchSideSheetWidth,\n searchSideSheetHeight,\n } = props;\n const classes = useStyles();\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const { t } = useTranslation();\n\n const getField = useCallback(\n (finalFieldName, config, fieldObj) => {\n const { fieldName, fieldType, fieldLabel, componentProps } = config;\n\n let fieldComponent = null;\n\n switch (fieldType) {\n case FieldType.DropdownMenu:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={AutocompleteFinalField}\n label={fieldLabel}\n />\n );\n break;\n case FieldType.Date:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentDatePicker}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.DateRange:\n fieldComponent = (\n <DateRangeField\n {...componentProps}\n fieldName={finalFieldName}\n initialValues={fieldObj}\n />\n );\n break;\n case FieldType.Time:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTimePicker}\n label={fieldLabel}\n size=\"small\"\n />\n );\n break;\n case FieldType.DateTime:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={DateTimeField}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.Toggle:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentToggle}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.toggleWrapper}\n />\n );\n break;\n case FieldType.Checkbox:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentCheckbox}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.checkboxField}\n />\n );\n break;\n default:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTextField}\n label={fieldLabel}\n />\n );\n break;\n }\n\n return fieldComponent;\n },\n [classes.checkboxField, classes.toggleWrapper]\n );\n\n const handleCloseSideSheet = useCallback(\n (selectedRecords, fieldArray) => {\n const formattedRecords = formatAddedSearchItems\n ? formatAddedSearchItems(selectedRecords ?? [])\n : selectedRecords;\n\n if (formattedRecords?.length) {\n for (const record of formattedRecords) {\n if (\n disableExcludeInSearch ||\n !!!fieldArray?.value?.find(\n item => item[formFieldId] === record[formFieldId]\n )\n )\n fieldArray.push(record);\n }\n }\n\n setOpenSideSheet(false);\n },\n [disableExcludeInSearch, formFieldId, formatAddedSearchItems]\n );\n\n const handleAddField = useCallback(\n fields => {\n if (enableSearchSideSheet) {\n setOpenSideSheet(true);\n } else {\n if (defaultAddedItemValues) {\n fields.push(defaultAddedItemValues);\n } else {\n fields.push({});\n }\n }\n },\n [defaultAddedItemValues, enableSearchSideSheet]\n );\n\n return (\n <div>\n <FieldArray name={fieldArrayName}>\n {({ fields }) => {\n return (\n <div>\n <div className={classes.sectionHeader}>\n <div>\n {title && <Typography variant=\"h6\">{title}</Typography>}\n </div>\n <IconButtonWithTooltip\n onClick={() => {\n handleAddField(fields);\n }}\n icon={AddIcon}\n title={t('Add')}\n />\n </div>\n\n <div className={classes.cardsWrapper}>\n {fields?.value?.length > 0 ? (\n fields.map((name, index) => {\n const rowTitle =\n getRowTitle && getRowTitle(fields?.value?.[index]);\n return (\n <AmbientCard fullWidth>\n <div className={classes.cardHeader}>\n <Typography variant=\"h6\">{rowTitle}</Typography>\n\n <IconButtonWithTooltip\n onClick={() => fields.remove(index)}\n icon={DeleteIcon}\n title={t('Delete')}\n />\n </div>\n {rowTitle && !removeTopLayoutUnit && (\n <LayoutUnit unit=\"xxs\" />\n )}\n <div className={classes.fieldsWrapper}>\n {fieldConfig?.map(config => {\n if (Array.isArray(config)) {\n return (\n <Grid container spacing={2}>\n {config?.map(innerConfig => {\n return (\n <Grid\n item\n xs={12}\n sm={12 / config?.length}\n >\n {getField(\n name,\n innerConfig,\n fields?.value?.[index]\n )}\n </Grid>\n );\n })}\n </Grid>\n );\n } else {\n return getField(\n name,\n config,\n fields?.value?.[index]\n );\n }\n })}\n </div>\n </AmbientCard>\n );\n })\n ) : (\n <AmbientCard fullWidth cardHeight=\"155px\">\n <EmptyStateDisplay\n primaryText={t('No records to show')}\n secondaryText={t('Try adding one')}\n />\n </AmbientCard>\n )}\n </div>\n <SearchSideSheet\n open={openSideSheet}\n handleClose={data => {\n handleCloseSideSheet(data, fields);\n }}\n exclude={disableExcludeInSearch ? [] : fields?.value}\n title={searchSideSheetTitle}\n productApiBase={productApiBase}\n searchApi={searchApi}\n colDefs={searchGridColDefs}\n idField={searchFieldId}\n formIdField={formFieldId}\n gridTitle={searchGridTitle}\n handleSearch={handleSearch}\n width={searchSideSheetWidth}\n height={searchSideSheetHeight}\n />\n </div>\n );\n }}\n </FieldArray>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -543,4 +543,4 @@ const FileViewer = (props) => {
543
543
 
544
544
  //#endregion
545
545
  export { FileViewer, PDFViewer };
546
- //# sourceMappingURL=FileViewer-Cp8UpoMF.js.map
546
+ //# sourceMappingURL=FileViewer-C1eQoTDj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileViewer-Cp8UpoMF.js","names":["useStyles","Typography","useStyles","PDFViewer: FC<PDFContainerProps>","numPages","ControlPanel","LinearProgress","useStyles","Typography","useStyles","defaultFieldMapping"],"sources":["../src/UI/fileViewer/pdfViewer/ControlPanel.tsx","../src/UI/fileViewer/pdfViewer/PDFViewer.tsx","../src/UI/fileViewer/utils/fileTypes.js","../src/UI/fileViewer/utils/fileUtils.js","../src/UI/fileViewer/imageSlider/ImageFooter.jsx","../src/UI/fileViewer/imageSlider/Image.jsx","../src/UI/fileViewer/imageSlider/ImageViewerSideSheet.jsx","../src/UI/fileViewer/imageSlider/ImageSlider.jsx","../src/UI/fileViewer/FileViewer.jsx"],"sourcesContent":["import React from 'react';\nimport { IconButton, makeStyles } from '@material-ui/core';\nimport FirstPageIcon from '@material-ui/icons/esm/FirstPage';\nimport NavigateBeforeIcon from '@material-ui/icons/esm/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/esm/NavigateNext';\nimport LastPageIcon from '@material-ui/icons/esm/LastPage';\nimport ZoomInIcon from '@material-ui/icons/esm/ZoomIn';\nimport ZoomOutIcon from '@material-ui/icons/esm/ZoomOut';\nimport CloudDownloadOutlinedIcon from '@material-ui/icons/esm/CloudDownloadOutlined';\nimport HighlightOffOutlinedIcon from '@material-ui/icons/esm/HighlightOffOutlined';\nimport { Typography } from '../../dataDisplay/typography/Typography';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n controlPanel: {\n fontSize: '16px',\n backgroundColor: theme.palette.background.paper,\n borderRadius: '5px',\n width: 'fit-content',\n padding: theme.spacing(1),\n margin: '8px auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageActions: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageNumber: {\n display: 'flex',\n gap: 5,\n minWidth: '125px'\n }\n}));\n\nconst ControlPanel = (props: any) => {\n const {\n pageNumber,\n numPages,\n setPageNumber,\n scale,\n setScale,\n file,\n closePDF,\n onClickDownload\n } = props;\n\n const isFirstPage = pageNumber === 1;\n const isLastPage = pageNumber === numPages;\n const { t } = useTranslation();\n const classes = useStyles();\n\n const goToFirstPage = () => {\n if (!isFirstPage) setPageNumber(1);\n };\n const goToPreviousPage = () => {\n if (!isFirstPage) setPageNumber(pageNumber - 1);\n };\n const goToNextPage = () => {\n if (!isLastPage) setPageNumber(pageNumber + 1);\n };\n const goToLastPage = () => {\n if (!isLastPage) setPageNumber(numPages);\n };\n\n const onPageChange = (e: any) => {\n const { value } = e.target;\n setPageNumber(Number(value));\n };\n\n const isMinZoom = scale < 0.6;\n const isMaxZoom = scale >= 2.0;\n\n const zoomOut = () => {\n if (!isMinZoom) setScale(scale - 0.1);\n };\n\n const zoomIn = () => {\n if (!isMaxZoom) setScale(scale + 0.1);\n };\n\n return (\n <div className={classes.controlPanel}>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={goToFirstPage} disabled={isFirstPage}>\n <FirstPageIcon />\n </IconButton>\n\n <IconButton\n size='small'\n onClick={goToPreviousPage}\n disabled={isFirstPage}\n >\n <NavigateBeforeIcon />\n </IconButton>\n\n <div>\n <div className={classes.pageNumber}>\n <Typography>{t('Page')} </Typography>\n <input\n name='pageNumber'\n type='number'\n min={1}\n max={numPages || 1}\n style={{\n padding: 0,\n paddingLeft: 1,\n margin: 0,\n textAlign: 'end'\n }}\n value={pageNumber}\n onChange={onPageChange}\n />{' '}\n <Typography>of {numPages}</Typography>\n </div>\n </div>\n\n <IconButton size='small' onClick={goToNextPage} disabled={isLastPage}>\n <NavigateNextIcon />\n </IconButton>\n\n <IconButton size='small' onClick={goToLastPage} disabled={isLastPage}>\n <LastPageIcon />\n </IconButton>\n </div>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={zoomOut} disabled={isMinZoom}>\n <ZoomOutIcon />\n </IconButton>\n\n <Typography>{(scale * 100).toFixed()}%</Typography>\n\n <IconButton size='small' onClick={zoomIn} disabled={isMaxZoom}>\n <ZoomInIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton href={file} size='small' onClick={onClickDownload}>\n <CloudDownloadOutlinedIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton size='small' onClick={closePDF}>\n <HighlightOffOutlinedIcon />\n </IconButton>\n </div>\n </div>\n );\n};\n\nexport default ControlPanel;\n","import React, { FC, useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport ControlPanel from './ControlPanel';\nimport { LinearProgress } from '../../loading/LinearProgress';\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n pdfSection: (props: PDFContainerProps) => ({\n minWidth: props?.minWidth,\n }),\n documentContainer: {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n },\n loadingBox: {\n width: '100%',\n },\n}));\n\ninterface PDFContainerProps {\n isPDFOpen?: boolean;\n fileUrl?: string;\n blobPDF?: Blob;\n closePDF?: () => void;\n onClickDownload?: () => void;\n minWidth?: number | string;\n}\n\nexport const PDFViewer: FC<PDFContainerProps> = ({\n isPDFOpen = true,\n fileUrl,\n blobPDF,\n closePDF,\n onClickDownload,\n minWidth\n}) => {\n const [scale, setScale] = useState(1.0);\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const classes = useStyles({minWidth});\n\n useEffect(() => {\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n });\n\n function onDocumentLoadSuccess({ numPages }: any) {\n setNumPages(numPages);\n }\n\n return (\n <div>\n {isPDFOpen && (\n <div id='pdf-section' className={classes.pdfSection}>\n <ControlPanel\n scale={scale}\n setScale={setScale}\n numPages={numPages}\n pageNumber={pageNumber}\n setPageNumber={setPageNumber}\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n closePDF={closePDF}\n onClickDownload={onClickDownload}\n />\n <div className={classes.documentContainer}>\n <Document\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n onLoadSuccess={onDocumentLoadSuccess}\n >\n <Page\n pageNumber={pageNumber}\n scale={scale}\n loading={\n <div className={classes.loadingBox}>\n <LinearProgress />\n </div>\n }\n />\n </Document>\n </div>\n </div>\n )}\n </div>\n );\n};\n","export const imageExtension = [\n 'png',\n 'jpeg',\n 'jpg',\n 'jpe',\n 'jif',\n 'jfif',\n 'jfi',\n 'gif',\n 'raw',\n 'svg',\n 'ttif',\n 'tif',\n 'webp',\n 'arw',\n 'sr2',\n 'nrw',\n 'k25',\n 'bmp',\n 'dib',\n 'heif',\n 'heic',\n 'ind',\n 'indd',\n 'indt',\n 'jp2',\n 'j2k',\n 'jpf',\n 'jpm',\n 'mj2',\n 'svgz',\n 'ai',\n 'eps',\n];\n","import { imageExtension } from './fileTypes';\n\nexport const handleDownloadFile = (fileUrl, fileName) => {\n const a = document.createElement('a');\n a.style.display = 'none';\n a.href = fileUrl;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(fileUrl);\n};\n\nexport const validateFilesImageType = (files = [], fileExtensionField) => {\n let type = \"image\";\n files.forEach(file => {\n if (!imageExtension.includes(file?.[fileExtensionField])) {\n type = 'invalid';\n return;\n }\n });\n return type;\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { makeStyles } from '@material-ui/core';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from '../../dataDisplay/typography/Typography';\nimport { IconButtonWithTooltip } from '../../inputs/buttons/IconButtonWithToolTip';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n secondaryText: {\n color: theme.palette.text.secondary,\n },\n description: {\n margin: theme.spacing(2),\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n },\n pageAction: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const ImageFooter = props => {\n const {\n images,\n currentImageObj,\n hidePrimaryText,\n hideSecondaryText,\n handleViewImage,\n currentImageIndex,\n } = props;\n const classes = useStyles();\n const { t } = useTranslation();\n\n const showItem = useMemo(() => {\n const showPrimaryText = !hidePrimaryText && currentImageObj?.primaryText;\n const showSecondaryText =\n !hideSecondaryText && currentImageObj?.secondaryText;\n const showPageAction = images?.length > 1;\n return {\n footer: showPageAction || showPrimaryText || showSecondaryText,\n primaryText: showPrimaryText,\n secondaryText: showSecondaryText,\n pageAction: showPageAction,\n };\n }, [currentImageObj, hidePrimaryText, hideSecondaryText, images]);\n\n return (\n <>\n {showItem?.footer && (\n <div className={classes.description}>\n {showItem?.primaryText && (\n <Typography variant=\"h6\">{currentImageObj?.primaryText}</Typography>\n )}\n\n {showItem?.secondaryText && (\n <Typography variant=\"subtitle1\" className={classes.secondaryText}>\n {currentImageObj?.secondaryText}\n </Typography>\n )}\n {showItem?.pageAction && (\n <div className={classes.pageAction}>\n <IconButtonWithTooltip\n icon={getIconFromName('ChevronLeft')}\n title={t('Previous')}\n disabled={currentImageIndex == 0}\n onClick={() => {\n handleViewImage(true);\n }}\n id=\"udpRecord-ImageSlider-PreviousBtn\"\n udprecordid=\"udpRecord-ImageSlider-PreviousBtn\"\n />\n\n <div>\n <Typography>\n {currentImageIndex + 1} {t('of')} {images?.length ?? 0}\n </Typography>\n </div>\n <IconButtonWithTooltip\n icon={getIconFromName('ChevronRight')}\n title={t('Next')}\n disabled={currentImageIndex === images?.length - 1}\n onClick={() => {\n handleViewImage();\n }}\n id=\"udpRecord-ImageSlider-NextBtn\"\n udprecordid=\"udpRecord-ImageSlider-NextBtn\"\n />\n </div>\n )}\n </div>\n )}\n </>\n );\n};\n","import { makeStyles } from '@material-ui/core';\nimport React from 'react';\nimport { ImageFooter } from './ImageFooter';\n\nconst useStyles = makeStyles(theme => ({\n imageWrapper: {\n flex: '1 1 auto',\n overflow: 'hidden',\n position: 'relative',\n margin: theme.spacing(2)\n },\n image: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n },\n cardContent: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n height: '100%',\n background: theme.palette.background.paper,\n },\n}));\n\nexport const Image = props => {\n const { imageObj, hidePrimaryText, hideSecondaryText } = props;\n const classes = useStyles();\n\n return (\n <div className={classes.cardContent}>\n <div className={classes.imageWrapper}>\n <img\n src={imageObj?.filePath}\n loading=\"lazy\"\n alt={`${imageObj?.fileName}`}\n className={classes.image}\n />\n </div>\n <ImageFooter\n currentImageObj={imageObj}\n hidePrimaryText={hidePrimaryText}\n hideSecondaryText={hideSecondaryText}\n />\n </div>\n );\n};\n","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { handleDownloadFile } from '../utils/fileUtils';\nimport { Image } from './Image';\nimport { SideSheet } from '../../surfaces/SideSheet';\n\nexport const ImageViewerSideSheet = (props) => {\n const {\n title,\n width,\n imageObj,\n open,\n onClose,\n hideDownload,\n hidePrimaryText,\n hideSecondaryText\n } = props;\n const { t } = useTranslation();\n\n const handleDownloadImage = useCallback(() => {\n handleDownloadFile(imageObj?.filePath, imageObj?.fileName);\n }, [imageObj]);\n\n return (\n <SideSheet\n title={title ?? t('Image Viewer')}\n buttonLabel={hideDownload ? null : t('Download')}\n width={width ?? '90vw'}\n onSubmit={handleDownloadImage}\n open={open}\n onClose={onClose}\n contentHeight='100%'\n >\n <Image\n imageObj={imageObj}\n hidePrimaryText={hidePrimaryText}\n hideSecondaryText={hideSecondaryText}\n />\n </SideSheet>\n );\n};\n","import { Dialog, makeStyles } from '@material-ui/core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ImageViewerSideSheet } from './ImageViewerSideSheet';\nimport { Image } from './Image';\nimport { ImageFooter } from './ImageFooter';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { IconButtonWithTooltip } from '../../inputs/buttons/IconButtonWithToolTip';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: theme.palette.background.paper,\n },\n imagesWrapper: {\n display: 'flex',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n alignItems: 'center',\n },\n imageSection: {\n width: '100%',\n height: '100%',\n },\n image: {\n objectFit: 'contain',\n display: 'block',\n flexShrink: 0,\n flexGrow: 0,\n transition: 'translate 300ms ease-in-out',\n },\n openSideSheetIcon: {\n display: 'block',\n position: 'absolute',\n top: props => (props?.title ? 64 : 8),\n right: 8,\n zIndex: 3,\n backgroundColor: theme.palette.background.paper,\n },\n dialogContent: {\n overflow: 'hidden',\n width: '100vw',\n height: '100vh',\n display: 'flex',\n flexDirection: 'column',\n },\n closeDialog: {\n margin: theme.spacing(1),\n },\n dialogImageSection: {\n flex: 2,\n height: '100%',\n },\n}));\n\nconst defaultFieldMapping = {\n filePath: 'filePath',\n fileName: 'fileName',\n primaryText: 'primaryText',\n secondaryText: 'secondaryText',\n};\n\nexport const ImageSlider = props => {\n const {\n title,\n images,\n fieldMapping = defaultFieldMapping,\n sideSheetTitle,\n sideSheetWidth,\n hideDownload,\n hidePrimaryText,\n hideSecondaryText,\n hidePrimaryTextInExpandMode,\n hideSecondaryTextInExpandMode,\n expandInSideSheet = true,\n } = props;\n const classes = useStyles(props);\n const { t } = useTranslation();\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\n const [openSideSheet, setOpenSideSheet] = useState(false);\n\n const handleViewImage = useCallback((previous = false) => {\n if (previous) {\n setCurrentImageIndex(prev => prev - 1);\n } else {\n setCurrentImageIndex(prev => prev + 1);\n }\n }, []);\n\n const handleExpandImage = useCallback(() => {\n setOpenSideSheet(true);\n }, []);\n\n const currentImageObj = useMemo(() => {\n const imgObj = images?.[currentImageIndex];\n if (!imgObj) return {};\n\n return {\n filePath: imgObj[fieldMapping?.filePath],\n fileName: imgObj[fieldMapping?.fileName],\n primaryText: imgObj[fieldMapping?.primaryText],\n secondaryText: imgObj[fieldMapping?.secondaryText],\n };\n }, [currentImageIndex, fieldMapping, images]);\n\n return (\n <AmbientCard\n fullWidth\n title={title}\n removePadding\n lastChildBottomPadding=\"0px\"\n removeTopLayoutUnit\n >\n <div className={classes.imagesWrapper}>\n {images?.map(image => (\n <img\n src={image?.[fieldMapping?.filePath]}\n alt={`${image?.[fieldMapping?.fileName]}`}\n loading=\"lazy\"\n width=\"100%\"\n height=\"auto\"\n className={classes.image}\n style={{ translate: `${-100 * currentImageIndex}%` }}\n />\n ))}\n </div>\n <IconButtonWithTooltip\n icon={getIconFromName('MiniExpand')}\n title={t('Expand Image')}\n onClick={handleExpandImage}\n id=\"udpRecord-ImageSlider-ExpandBtn\"\n udprecordid=\"udpRecord-ImageSlider-ExpandBtn\"\n className={classes.openSideSheetIcon}\n />\n <ImageFooter\n images={images}\n currentImageObj={currentImageObj}\n hidePrimaryText={hidePrimaryText}\n hideSecondaryText={hideSecondaryText}\n handleViewImage={handleViewImage}\n currentImageIndex={currentImageIndex}\n />\n\n {expandInSideSheet ? (\n <ImageViewerSideSheet\n title={sideSheetTitle}\n open={openSideSheet}\n onClose={() => {\n setOpenSideSheet(false);\n }}\n imageObj={currentImageObj}\n width={sideSheetWidth}\n hideDownload={hideDownload}\n hidePrimaryText={hidePrimaryTextInExpandMode}\n hideSecondaryText={hideSecondaryTextInExpandMode}\n />\n ) : (\n <Dialog\n onClose={() => {\n setOpenSideSheet(false);\n }}\n open={openSideSheet}\n fullScreen\n >\n <div className={classes.dialogContent}>\n <div className={classes.closeDialog}>\n <IconButtonWithTooltip\n icon={getIconFromName('Cancel')}\n title={t('Close')}\n onClick={() => {\n setOpenSideSheet(false);\n }}\n id=\"udpRecord-ImageSlider-PreviousBtn\"\n udprecordid=\"udpRecord-ImageSlider-PreviousBtn\"\n />\n </div>\n <div className={classes.dialogImageSection}>\n <Image\n imageObj={currentImageObj}\n hidePrimaryText={hidePrimaryTextInExpandMode}\n hideSecondaryText={hideSecondaryTextInExpandMode}\n />\n </div>\n </div>\n </Dialog>\n )}\n </AmbientCard>\n );\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { useMemo } from 'react';\nimport { PDFViewer } from './pdfViewer/PDFViewer';\nimport { ImageSlider } from './imageSlider/ImageSlider';\nimport { validateFilesImageType } from './utils/fileUtils';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientAlert } from '../feedback/AmbientAlert';\n\nconst defaultFieldMapping = {\n filePath: 'filePath',\n blobFile: 'blobFile',\n fileName: 'fileName',\n fileExtension: 'fileExtension',\n primaryText: 'primaryText',\n secondaryText: 'secondaryText',\n};\n\nexport const FileViewer = props => {\n const {\n data,\n fieldMapping = defaultFieldMapping,\n acceptedFileExtensions,\n ...otherProps\n } = props;\n const { t } = useTranslation();\n\n //filter data\n const filteredData = useMemo(() => {\n if (!acceptedFileExtensions || acceptedFileExtensions?.length === 0)\n return data;\n if (data instanceof Array && data?.length > 0) {\n return data?.filter(item =>\n acceptedFileExtensions?.includes(item?.[fieldMapping?.fileExtension])\n );\n } else {\n return acceptedFileExtensions?.includes(\n data?.[fieldMapping?.fileExtension]\n )\n ? data\n : null;\n }\n }, [acceptedFileExtensions, data, fieldMapping]);\n\n // check if the data is an array. If yes, currently only image viewer accept this list,\n // we need to validate if all the file in the list is image\n const fileType = useMemo(() => {\n if (filteredData instanceof Array) {\n const type = validateFilesImageType(\n filteredData,\n fieldMapping?.fileExtension\n );\n return type;\n }\n return filteredData?.[fieldMapping?.fileExtension];\n }, [fieldMapping, filteredData]);\n\n const viewer = useMemo(() => {\n switch (fileType) {\n case 'pdf':\n return (\n <PDFViewer\n fileUrl={filteredData?.[fieldMapping?.filePath]}\n blobPDF={filteredData?.[fieldMapping?.blobFile]}\n {...otherProps}\n />\n );\n case 'image':\n return (\n <ImageSlider\n images={filteredData}\n fieldMapping={fieldMapping}\n {...otherProps}\n />\n );\n default:\n return (\n <AmbientAlert\n alertMessage={t('Unable to view file')}\n showAlert\n alertSeverity=\"error\"\n />\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fileType, data, fieldMapping, otherProps]);\n\n return <>{viewer}</>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileViewer-C1eQoTDj.js","names":["useStyles","Typography","useStyles","PDFViewer: FC<PDFContainerProps>","numPages","ControlPanel","LinearProgress","useStyles","Typography","useStyles","defaultFieldMapping"],"sources":["../src/UI/fileViewer/pdfViewer/ControlPanel.tsx","../src/UI/fileViewer/pdfViewer/PDFViewer.tsx","../src/UI/fileViewer/utils/fileTypes.js","../src/UI/fileViewer/utils/fileUtils.js","../src/UI/fileViewer/imageSlider/ImageFooter.jsx","../src/UI/fileViewer/imageSlider/Image.jsx","../src/UI/fileViewer/imageSlider/ImageViewerSideSheet.jsx","../src/UI/fileViewer/imageSlider/ImageSlider.jsx","../src/UI/fileViewer/FileViewer.jsx"],"sourcesContent":["import React from 'react';\nimport { IconButton, makeStyles } from '@material-ui/core';\nimport FirstPageIcon from '@material-ui/icons/esm/FirstPage';\nimport NavigateBeforeIcon from '@material-ui/icons/esm/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/esm/NavigateNext';\nimport LastPageIcon from '@material-ui/icons/esm/LastPage';\nimport ZoomInIcon from '@material-ui/icons/esm/ZoomIn';\nimport ZoomOutIcon from '@material-ui/icons/esm/ZoomOut';\nimport CloudDownloadOutlinedIcon from '@material-ui/icons/esm/CloudDownloadOutlined';\nimport HighlightOffOutlinedIcon from '@material-ui/icons/esm/HighlightOffOutlined';\nimport { Typography } from '../../dataDisplay/typography/Typography';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n controlPanel: {\n fontSize: '16px',\n backgroundColor: theme.palette.background.paper,\n borderRadius: '5px',\n width: 'fit-content',\n padding: theme.spacing(1),\n margin: '8px auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageActions: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '10px'\n },\n pageNumber: {\n display: 'flex',\n gap: 5,\n minWidth: '125px'\n }\n}));\n\nconst ControlPanel = (props: any) => {\n const {\n pageNumber,\n numPages,\n setPageNumber,\n scale,\n setScale,\n file,\n closePDF,\n onClickDownload\n } = props;\n\n const isFirstPage = pageNumber === 1;\n const isLastPage = pageNumber === numPages;\n const { t } = useTranslation();\n const classes = useStyles();\n\n const goToFirstPage = () => {\n if (!isFirstPage) setPageNumber(1);\n };\n const goToPreviousPage = () => {\n if (!isFirstPage) setPageNumber(pageNumber - 1);\n };\n const goToNextPage = () => {\n if (!isLastPage) setPageNumber(pageNumber + 1);\n };\n const goToLastPage = () => {\n if (!isLastPage) setPageNumber(numPages);\n };\n\n const onPageChange = (e: any) => {\n const { value } = e.target;\n setPageNumber(Number(value));\n };\n\n const isMinZoom = scale < 0.6;\n const isMaxZoom = scale >= 2.0;\n\n const zoomOut = () => {\n if (!isMinZoom) setScale(scale - 0.1);\n };\n\n const zoomIn = () => {\n if (!isMaxZoom) setScale(scale + 0.1);\n };\n\n return (\n <div className={classes.controlPanel}>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={goToFirstPage} disabled={isFirstPage}>\n <FirstPageIcon />\n </IconButton>\n\n <IconButton\n size='small'\n onClick={goToPreviousPage}\n disabled={isFirstPage}\n >\n <NavigateBeforeIcon />\n </IconButton>\n\n <div>\n <div className={classes.pageNumber}>\n <Typography>{t('Page')} </Typography>\n <input\n name='pageNumber'\n type='number'\n min={1}\n max={numPages || 1}\n style={{\n padding: 0,\n paddingLeft: 1,\n margin: 0,\n textAlign: 'end'\n }}\n value={pageNumber}\n onChange={onPageChange}\n />{' '}\n <Typography>of {numPages}</Typography>\n </div>\n </div>\n\n <IconButton size='small' onClick={goToNextPage} disabled={isLastPage}>\n <NavigateNextIcon />\n </IconButton>\n\n <IconButton size='small' onClick={goToLastPage} disabled={isLastPage}>\n <LastPageIcon />\n </IconButton>\n </div>\n <div className={classes.pageActions}>\n <IconButton size='small' onClick={zoomOut} disabled={isMinZoom}>\n <ZoomOutIcon />\n </IconButton>\n\n <Typography>{(scale * 100).toFixed()}%</Typography>\n\n <IconButton size='small' onClick={zoomIn} disabled={isMaxZoom}>\n <ZoomInIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton href={file} size='small' onClick={onClickDownload}>\n <CloudDownloadOutlinedIcon />\n </IconButton>\n </div>\n\n <div>\n <IconButton size='small' onClick={closePDF}>\n <HighlightOffOutlinedIcon />\n </IconButton>\n </div>\n </div>\n );\n};\n\nexport default ControlPanel;\n","import React, { FC, useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport ControlPanel from './ControlPanel';\nimport { LinearProgress } from '../../loading/LinearProgress';\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n pdfSection: (props: PDFContainerProps) => ({\n minWidth: props?.minWidth,\n }),\n documentContainer: {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n overflowX: 'auto',\n overflowY: 'hidden',\n },\n loadingBox: {\n width: '100%',\n },\n}));\n\ninterface PDFContainerProps {\n isPDFOpen?: boolean;\n fileUrl?: string;\n blobPDF?: Blob;\n closePDF?: () => void;\n onClickDownload?: () => void;\n minWidth?: number | string;\n}\n\nexport const PDFViewer: FC<PDFContainerProps> = ({\n isPDFOpen = true,\n fileUrl,\n blobPDF,\n closePDF,\n onClickDownload,\n minWidth\n}) => {\n const [scale, setScale] = useState(1.0);\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const classes = useStyles({minWidth});\n\n useEffect(() => {\n pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n });\n\n function onDocumentLoadSuccess({ numPages }: any) {\n setNumPages(numPages);\n }\n\n return (\n <div>\n {isPDFOpen && (\n <div id='pdf-section' className={classes.pdfSection}>\n <ControlPanel\n scale={scale}\n setScale={setScale}\n numPages={numPages}\n pageNumber={pageNumber}\n setPageNumber={setPageNumber}\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n closePDF={closePDF}\n onClickDownload={onClickDownload}\n />\n <div className={classes.documentContainer}>\n <Document\n file={fileUrl ?? `data:application/pdf;base64,${blobPDF}`}\n onLoadSuccess={onDocumentLoadSuccess}\n >\n <Page\n pageNumber={pageNumber}\n scale={scale}\n loading={\n <div className={classes.loadingBox}>\n <LinearProgress />\n </div>\n }\n />\n </Document>\n </div>\n </div>\n )}\n </div>\n );\n};\n","export const imageExtension = [\n 'png',\n 'jpeg',\n 'jpg',\n 'jpe',\n 'jif',\n 'jfif',\n 'jfi',\n 'gif',\n 'raw',\n 'svg',\n 'ttif',\n 'tif',\n 'webp',\n 'arw',\n 'sr2',\n 'nrw',\n 'k25',\n 'bmp',\n 'dib',\n 'heif',\n 'heic',\n 'ind',\n 'indd',\n 'indt',\n 'jp2',\n 'j2k',\n 'jpf',\n 'jpm',\n 'mj2',\n 'svgz',\n 'ai',\n 'eps',\n];\n","import { imageExtension } from './fileTypes';\n\nexport const handleDownloadFile = (fileUrl, fileName) => {\n const a = document.createElement('a');\n a.style.display = 'none';\n a.href = fileUrl;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(fileUrl);\n};\n\nexport const validateFilesImageType = (files = [], fileExtensionField) => {\n let type = \"image\";\n files.forEach(file => {\n if (!imageExtension.includes(file?.[fileExtensionField])) {\n type = 'invalid';\n return;\n }\n });\n return type;\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport { makeStyles } from '@material-ui/core';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from '../../dataDisplay/typography/Typography';\nimport { IconButtonWithTooltip } from '../../inputs/buttons/IconButtonWithToolTip';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n secondaryText: {\n color: theme.palette.text.secondary,\n },\n description: {\n margin: theme.spacing(2),\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n },\n pageAction: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const ImageFooter = props => {\n const {\n images,\n currentImageObj,\n hidePrimaryText,\n hideSecondaryText,\n handleViewImage,\n currentImageIndex,\n } = props;\n const classes = useStyles();\n const { t } = useTranslation();\n\n const showItem = useMemo(() => {\n const showPrimaryText = !hidePrimaryText && currentImageObj?.primaryText;\n const showSecondaryText =\n !hideSecondaryText && currentImageObj?.secondaryText;\n const showPageAction = images?.length > 1;\n return {\n footer: showPageAction || showPrimaryText || showSecondaryText,\n primaryText: showPrimaryText,\n secondaryText: showSecondaryText,\n pageAction: showPageAction,\n };\n }, [currentImageObj, hidePrimaryText, hideSecondaryText, images]);\n\n return (\n <>\n {showItem?.footer && (\n <div className={classes.description}>\n {showItem?.primaryText && (\n <Typography variant=\"h6\">{currentImageObj?.primaryText}</Typography>\n )}\n\n {showItem?.secondaryText && (\n <Typography variant=\"subtitle1\" className={classes.secondaryText}>\n {currentImageObj?.secondaryText}\n </Typography>\n )}\n {showItem?.pageAction && (\n <div className={classes.pageAction}>\n <IconButtonWithTooltip\n icon={getIconFromName('ChevronLeft')}\n title={t('Previous')}\n disabled={currentImageIndex == 0}\n onClick={() => {\n handleViewImage(true);\n }}\n id=\"udpRecord-ImageSlider-PreviousBtn\"\n udprecordid=\"udpRecord-ImageSlider-PreviousBtn\"\n />\n\n <div>\n <Typography>\n {currentImageIndex + 1} {t('of')} {images?.length ?? 0}\n </Typography>\n </div>\n <IconButtonWithTooltip\n icon={getIconFromName('ChevronRight')}\n title={t('Next')}\n disabled={currentImageIndex === images?.length - 1}\n onClick={() => {\n handleViewImage();\n }}\n id=\"udpRecord-ImageSlider-NextBtn\"\n udprecordid=\"udpRecord-ImageSlider-NextBtn\"\n />\n </div>\n )}\n </div>\n )}\n </>\n );\n};\n","import { makeStyles } from '@material-ui/core';\nimport React from 'react';\nimport { ImageFooter } from './ImageFooter';\n\nconst useStyles = makeStyles(theme => ({\n imageWrapper: {\n flex: '1 1 auto',\n overflow: 'hidden',\n position: 'relative',\n margin: theme.spacing(2)\n },\n image: {\n objectFit: 'contain',\n width: '100%',\n height: '100%',\n position: 'absolute',\n top: 0,\n left: 0,\n },\n cardContent: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n height: '100%',\n background: theme.palette.background.paper,\n },\n}));\n\nexport const Image = props => {\n const { imageObj, hidePrimaryText, hideSecondaryText } = props;\n const classes = useStyles();\n\n return (\n <div className={classes.cardContent}>\n <div className={classes.imageWrapper}>\n <img\n src={imageObj?.filePath}\n loading=\"lazy\"\n alt={`${imageObj?.fileName}`}\n className={classes.image}\n />\n </div>\n <ImageFooter\n currentImageObj={imageObj}\n hidePrimaryText={hidePrimaryText}\n hideSecondaryText={hideSecondaryText}\n />\n </div>\n );\n};\n","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { handleDownloadFile } from '../utils/fileUtils';\nimport { Image } from './Image';\nimport { SideSheet } from '../../surfaces/SideSheet';\n\nexport const ImageViewerSideSheet = (props) => {\n const {\n title,\n width,\n imageObj,\n open,\n onClose,\n hideDownload,\n hidePrimaryText,\n hideSecondaryText\n } = props;\n const { t } = useTranslation();\n\n const handleDownloadImage = useCallback(() => {\n handleDownloadFile(imageObj?.filePath, imageObj?.fileName);\n }, [imageObj]);\n\n return (\n <SideSheet\n title={title ?? t('Image Viewer')}\n buttonLabel={hideDownload ? null : t('Download')}\n width={width ?? '90vw'}\n onSubmit={handleDownloadImage}\n open={open}\n onClose={onClose}\n contentHeight='100%'\n >\n <Image\n imageObj={imageObj}\n hidePrimaryText={hidePrimaryText}\n hideSecondaryText={hideSecondaryText}\n />\n </SideSheet>\n );\n};\n","import { Dialog, makeStyles } from '@material-ui/core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ImageViewerSideSheet } from './ImageViewerSideSheet';\nimport { Image } from './Image';\nimport { ImageFooter } from './ImageFooter';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { IconButtonWithTooltip } from '../../inputs/buttons/IconButtonWithToolTip';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: theme.palette.background.paper,\n },\n imagesWrapper: {\n display: 'flex',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n alignItems: 'center',\n },\n imageSection: {\n width: '100%',\n height: '100%',\n },\n image: {\n objectFit: 'contain',\n display: 'block',\n flexShrink: 0,\n flexGrow: 0,\n transition: 'translate 300ms ease-in-out',\n },\n openSideSheetIcon: {\n display: 'block',\n position: 'absolute',\n top: props => (props?.title ? 64 : 8),\n right: 8,\n zIndex: 3,\n backgroundColor: theme.palette.background.paper,\n },\n dialogContent: {\n overflow: 'hidden',\n width: '100vw',\n height: '100vh',\n display: 'flex',\n flexDirection: 'column',\n },\n closeDialog: {\n margin: theme.spacing(1),\n },\n dialogImageSection: {\n flex: 2,\n height: '100%',\n },\n}));\n\nconst defaultFieldMapping = {\n filePath: 'filePath',\n fileName: 'fileName',\n primaryText: 'primaryText',\n secondaryText: 'secondaryText',\n};\n\nexport const ImageSlider = props => {\n const {\n title,\n images,\n fieldMapping = defaultFieldMapping,\n sideSheetTitle,\n sideSheetWidth,\n hideDownload,\n hidePrimaryText,\n hideSecondaryText,\n hidePrimaryTextInExpandMode,\n hideSecondaryTextInExpandMode,\n expandInSideSheet = true,\n } = props;\n const classes = useStyles(props);\n const { t } = useTranslation();\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\n const [openSideSheet, setOpenSideSheet] = useState(false);\n\n const handleViewImage = useCallback((previous = false) => {\n if (previous) {\n setCurrentImageIndex(prev => prev - 1);\n } else {\n setCurrentImageIndex(prev => prev + 1);\n }\n }, []);\n\n const handleExpandImage = useCallback(() => {\n setOpenSideSheet(true);\n }, []);\n\n const currentImageObj = useMemo(() => {\n const imgObj = images?.[currentImageIndex];\n if (!imgObj) return {};\n\n return {\n filePath: imgObj[fieldMapping?.filePath],\n fileName: imgObj[fieldMapping?.fileName],\n primaryText: imgObj[fieldMapping?.primaryText],\n secondaryText: imgObj[fieldMapping?.secondaryText],\n };\n }, [currentImageIndex, fieldMapping, images]);\n\n return (\n <AmbientCard\n fullWidth\n title={title}\n removePadding\n lastChildBottomPadding=\"0px\"\n removeTopLayoutUnit\n >\n <div className={classes.imagesWrapper}>\n {images?.map(image => (\n <img\n src={image?.[fieldMapping?.filePath]}\n alt={`${image?.[fieldMapping?.fileName]}`}\n loading=\"lazy\"\n width=\"100%\"\n height=\"auto\"\n className={classes.image}\n style={{ translate: `${-100 * currentImageIndex}%` }}\n />\n ))}\n </div>\n <IconButtonWithTooltip\n icon={getIconFromName('MiniExpand')}\n title={t('Expand Image')}\n onClick={handleExpandImage}\n id=\"udpRecord-ImageSlider-ExpandBtn\"\n udprecordid=\"udpRecord-ImageSlider-ExpandBtn\"\n className={classes.openSideSheetIcon}\n />\n <ImageFooter\n images={images}\n currentImageObj={currentImageObj}\n hidePrimaryText={hidePrimaryText}\n hideSecondaryText={hideSecondaryText}\n handleViewImage={handleViewImage}\n currentImageIndex={currentImageIndex}\n />\n\n {expandInSideSheet ? (\n <ImageViewerSideSheet\n title={sideSheetTitle}\n open={openSideSheet}\n onClose={() => {\n setOpenSideSheet(false);\n }}\n imageObj={currentImageObj}\n width={sideSheetWidth}\n hideDownload={hideDownload}\n hidePrimaryText={hidePrimaryTextInExpandMode}\n hideSecondaryText={hideSecondaryTextInExpandMode}\n />\n ) : (\n <Dialog\n onClose={() => {\n setOpenSideSheet(false);\n }}\n open={openSideSheet}\n fullScreen\n >\n <div className={classes.dialogContent}>\n <div className={classes.closeDialog}>\n <IconButtonWithTooltip\n icon={getIconFromName('Cancel')}\n title={t('Close')}\n onClick={() => {\n setOpenSideSheet(false);\n }}\n id=\"udpRecord-ImageSlider-PreviousBtn\"\n udprecordid=\"udpRecord-ImageSlider-PreviousBtn\"\n />\n </div>\n <div className={classes.dialogImageSection}>\n <Image\n imageObj={currentImageObj}\n hidePrimaryText={hidePrimaryTextInExpandMode}\n hideSecondaryText={hideSecondaryTextInExpandMode}\n />\n </div>\n </div>\n </Dialog>\n )}\n </AmbientCard>\n );\n};\n","/* eslint-disable react/jsx-no-useless-fragment */\nimport React, { useMemo } from 'react';\nimport { PDFViewer } from './pdfViewer/PDFViewer';\nimport { ImageSlider } from './imageSlider/ImageSlider';\nimport { validateFilesImageType } from './utils/fileUtils';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientAlert } from '../feedback/AmbientAlert';\n\nconst defaultFieldMapping = {\n filePath: 'filePath',\n blobFile: 'blobFile',\n fileName: 'fileName',\n fileExtension: 'fileExtension',\n primaryText: 'primaryText',\n secondaryText: 'secondaryText',\n};\n\nexport const FileViewer = props => {\n const {\n data,\n fieldMapping = defaultFieldMapping,\n acceptedFileExtensions,\n ...otherProps\n } = props;\n const { t } = useTranslation();\n\n //filter data\n const filteredData = useMemo(() => {\n if (!acceptedFileExtensions || acceptedFileExtensions?.length === 0)\n return data;\n if (data instanceof Array && data?.length > 0) {\n return data?.filter(item =>\n acceptedFileExtensions?.includes(item?.[fieldMapping?.fileExtension])\n );\n } else {\n return acceptedFileExtensions?.includes(\n data?.[fieldMapping?.fileExtension]\n )\n ? data\n : null;\n }\n }, [acceptedFileExtensions, data, fieldMapping]);\n\n // check if the data is an array. If yes, currently only image viewer accept this list,\n // we need to validate if all the file in the list is image\n const fileType = useMemo(() => {\n if (filteredData instanceof Array) {\n const type = validateFilesImageType(\n filteredData,\n fieldMapping?.fileExtension\n );\n return type;\n }\n return filteredData?.[fieldMapping?.fileExtension];\n }, [fieldMapping, filteredData]);\n\n const viewer = useMemo(() => {\n switch (fileType) {\n case 'pdf':\n return (\n <PDFViewer\n fileUrl={filteredData?.[fieldMapping?.filePath]}\n blobPDF={filteredData?.[fieldMapping?.blobFile]}\n {...otherProps}\n />\n );\n case 'image':\n return (\n <ImageSlider\n images={filteredData}\n fieldMapping={fieldMapping}\n {...otherProps}\n />\n );\n default:\n return (\n <AmbientAlert\n alertMessage={t('Unable to view file')}\n showAlert\n alertSeverity=\"error\"\n />\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fileType, data, fieldMapping, otherProps]);\n\n return <>{viewer}</>;\n};\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import { TableBody, useTheme } from "@material-ui/core";
3
+
4
+ //#region src/UI/dataDisplay/FluentDataTable/FluentBody/index.tsx
5
+ const FluentBody = (props) => {
6
+ const theme = useTheme();
7
+ return /* @__PURE__ */ React.createElement(TableBody, { style: {
8
+ background: props?.background || theme.palette.background.paper,
9
+ ...props?.style
10
+ } }, props?.children);
11
+ };
12
+ var FluentBody_default = FluentBody;
13
+
14
+ //#endregion
15
+ export { FluentBody_default };
16
+ //# sourceMappingURL=FluentBody-PdsySA1c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentBody-PdsySA1c.js","names":[],"sources":["../src/UI/dataDisplay/FluentDataTable/FluentBody/index.tsx"],"sourcesContent":["import { TableBody, useTheme } from '@material-ui/core';\nimport React, { ReactNode } from 'react';\n\ninterface FluentBodyProps {\n background?: string;\n style?: object;\n children: ReactNode;\n};\n\nconst FluentBody = (props: FluentBodyProps) => {\n\n const theme = useTheme();\n\n return (\n <TableBody style={{ background: props?.background || theme.palette.background.paper, ...props?.style }}>\n {props?.children}\n </TableBody>\n )\n};\n\nexport default FluentBody;"],"mappings":";;;;AASA,MAAM,cAAc,UAA2B;CAE7C,MAAM,QAAQ,UAAU;AAExB,QACE,oCAAC,aAAU,OAAO;EAAE,YAAY,OAAO,cAAc,MAAM,QAAQ,WAAW;EAAO,GAAG,OAAO;EAAO,IACnG,OAAO,SACE;;AAIhB,yBAAe"}
@@ -2,23 +2,12 @@ import { UnityFluentIcon } from "./UnityFluentIcon-fuqAQh0C.js";
2
2
  import { getIconFromName } from "./TreeUtilities-DVY-2md6.js";
3
3
  import { StatusChip } from "./StatusChip-Bw-0wE_B.js";
4
4
  import React from "react";
5
- import { Box, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Tooltip, makeStyles, useTheme } from "@material-ui/core";
5
+ import { Box, TableCell, Tooltip, makeStyles, useTheme } from "@material-ui/core";
6
6
  import clsx from "clsx";
7
7
  import { format } from "date-fns";
8
8
 
9
- //#region src/UI/dataDisplay/FluentDataTable/FluentBody/index.tsx
10
- const FluentBody = (props) => {
11
- const theme = useTheme();
12
- return /* @__PURE__ */ React.createElement(TableBody, { style: {
13
- background: props?.background || theme.palette.background.paper,
14
- ...props?.style
15
- } }, props?.children);
16
- };
17
- var FluentBody_default = FluentBody;
18
-
19
- //#endregion
20
9
  //#region src/UI/dataDisplay/FluentDataTable/FluentCell/index.tsx
21
- const useStyles$2 = makeStyles((theme) => ({
10
+ const useStyles = makeStyles((theme) => ({
22
11
  labelText: {
23
12
  color: theme.palette.text.primary,
24
13
  fontSize: "12px"
@@ -33,7 +22,7 @@ const useStyles$2 = makeStyles((theme) => ({
33
22
  const CellUnityIcon = (props) => {
34
23
  const theme = useTheme();
35
24
  const { icon = "", size = "large", color = theme.palette.primary.main, children } = props;
36
- const classes = useStyles$2(props);
25
+ const classes = useStyles(props);
37
26
  return /* @__PURE__ */ React.createElement(FluentCell, props, /* @__PURE__ */ React.createElement(Box, {
38
27
  display: "flex",
39
28
  alignItems: "center",
@@ -63,7 +52,7 @@ const CellChip = (props) => /* @__PURE__ */ React.createElement(FluentCell, prop
63
52
  label: props?.children
64
53
  }));
65
54
  const FluentCell = (props) => {
66
- const classes = useStyles$2(props);
55
+ const classes = useStyles(props);
67
56
  const { scope = "row", style, align, colSpan, className, tooltip, children } = props;
68
57
  const cellContent = children;
69
58
  return /* @__PURE__ */ React.createElement(TableCell, {
@@ -88,54 +77,5 @@ FluentCell.Image = CellImage;
88
77
  var FluentCell_default = FluentCell;
89
78
 
90
79
  //#endregion
91
- //#region src/UI/dataDisplay/FluentDataTable/FluentHead/index.tsx
92
- const useStyles$1 = makeStyles((theme) => ({
93
- root: (props) => ({ maxHeight: props?.containerMaxHeight }),
94
- row: (props) => ({
95
- backgroundColor: props?.background || theme.palette.secondary.light,
96
- "& .MuiTableCell-stickyHeader": { backgroundColor: props?.background || theme.palette.secondary.light }
97
- })
98
- }));
99
- const FluentHead = (props) => {
100
- const classes = useStyles$1(props);
101
- return /* @__PURE__ */ React.createElement(TableHead, { style: { ...props?.style } }, /* @__PURE__ */ React.createElement(TableRow, { className: classes.row }, props?.children));
102
- };
103
- var FluentHead_default = FluentHead;
104
-
105
- //#endregion
106
- //#region src/UI/dataDisplay/FluentDataTable/FluentRow/index.tsx
107
- const FluentRow = (props) => {
108
- const { className, children, onClick,...otherProps } = props;
109
- return /* @__PURE__ */ React.createElement(TableRow, {
110
- className,
111
- onClick: onClick || void 0,
112
- ...otherProps,
113
- style: onClick ? { cursor: "pointer" } : void 0
114
- }, children);
115
- };
116
- var FluentRow_default = FluentRow;
117
-
118
- //#endregion
119
- //#region src/UI/dataDisplay/FluentDataTable/FluentDataTable.tsx
120
- const useStyles = makeStyles((theme) => ({ root: { maxHeight: (props) => props?.containerMaxHeight } }));
121
- const FluentDataTable = ((props) => {
122
- const { size = "small", style, stickyHeader = false, containerMaxHeight } = props;
123
- useStyles({ containerMaxHeight });
124
- return /* @__PURE__ */ React.createElement(TableContainer, { style: {
125
- maxHeight: containerMaxHeight,
126
- height: "100%"
127
- } }, /* @__PURE__ */ React.createElement(Table, {
128
- "aria-label": "simple table",
129
- size,
130
- style,
131
- stickyHeader
132
- }, props?.children));
133
- });
134
- FluentDataTable.FluentHead = FluentHead_default;
135
- FluentDataTable.FluentBody = FluentBody_default;
136
- FluentDataTable.FluentCell = FluentCell_default;
137
- FluentDataTable.FluentRow = FluentRow_default;
138
-
139
- //#endregion
140
- export { FluentDataTable };
141
- //# sourceMappingURL=FluentDataTable-BhA49RJS.js.map
80
+ export { FluentCell_default };
81
+ //# sourceMappingURL=FluentCell-DZ5pFjdC.js.map