udp-react-enterprise-component-library 25.18.1-beta.41 → 25.18.1-beta.42

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 (351) hide show
  1. package/dist/{AadCallback-DL4V3BBL.js → AadCallback-DI_SnmOU.js} +1 -1
  2. package/dist/{AadCallback-DL4V3BBL.js.map → AadCallback-DI_SnmOU.js.map} +1 -1
  3. package/dist/{ActionProvider-2AAAOm9H.js → ActionProvider-C_rohJIr.js} +2 -2
  4. package/dist/{ActionProvider-2AAAOm9H.js.map → ActionProvider-C_rohJIr.js.map} +1 -1
  5. package/dist/{ActionSplitScreen-DeU-9YQb.js → ActionSplitScreen-OFqIncG9.js} +3 -3
  6. package/dist/{ActionSplitScreen-DeU-9YQb.js.map → ActionSplitScreen-OFqIncG9.js.map} +1 -1
  7. package/dist/{ActionWrapper-Btbpz4rx.js → ActionWrapper-d9dIOSYB.js} +4 -4
  8. package/dist/{ActionWrapper-Btbpz4rx.js.map → ActionWrapper-d9dIOSYB.js.map} +1 -1
  9. package/dist/{AmChart-BM2HoPa4.js → AmChart-WvmHsOdz.js} +1 -1
  10. package/dist/{AmChart-BM2HoPa4.js.map → AmChart-WvmHsOdz.js.map} +1 -1
  11. package/dist/{AmbientSingleDateSelector-BQY1Nals.js → AmbientSingleDateSelector-8uylQ-tc.js} +1 -1
  12. package/dist/{AmbientSingleDateSelector-BQY1Nals.js.map → AmbientSingleDateSelector-8uylQ-tc.js.map} +1 -1
  13. package/dist/{AmbientVisualizationCard-Dig-Mh_G.js → AmbientVisualizationCard-Cov8RODG.js} +3 -3
  14. package/dist/{AmbientVisualizationCard-Dig-Mh_G.js.map → AmbientVisualizationCard-Cov8RODG.js.map} +1 -1
  15. package/dist/{AmbientVisualizer-B1Xwwe0J.js → AmbientVisualizer-Bo7NLGfw.js} +1 -1
  16. package/dist/{AmbientVisualizer-B1Xwwe0J.js.map → AmbientVisualizer-Bo7NLGfw.js.map} +1 -1
  17. package/dist/{BarChartWidget-Dwav8_8e.js → BarChartWidget-D-_ZVpMh.js} +1 -1
  18. package/dist/{BarChartWidget-Dwav8_8e.js.map → BarChartWidget-D-_ZVpMh.js.map} +1 -1
  19. package/dist/{BaseTreeMenu-koW5kjhb.js → BaseTreeMenu-nKjw3cil.js} +2 -2
  20. package/dist/{BaseTreeMenu-koW5kjhb.js.map → BaseTreeMenu-nKjw3cil.js.map} +1 -1
  21. package/dist/{BubbleWidget-CsIheJTW.js → BubbleWidget-SplMEBJm.js} +2 -2
  22. package/dist/{BubbleWidget-CsIheJTW.js.map → BubbleWidget-SplMEBJm.js.map} +1 -1
  23. package/dist/{CardList-BPNGTxsh.js → CardList-B_F1Qgqh.js} +1 -1
  24. package/dist/{CardList-BPNGTxsh.js.map → CardList-B_F1Qgqh.js.map} +1 -1
  25. package/dist/{CircleButton-cl6mmDmn.js → CircleButton-B9JAMG53.js} +2 -2
  26. package/dist/{CircleButton-cl6mmDmn.js.map → CircleButton-B9JAMG53.js.map} +1 -1
  27. package/dist/{ContentContainer-DmKz5kvq.js → ContentContainer-DuDrf5lL.js} +1 -1
  28. package/dist/{ContentContainer-DmKz5kvq.js.map → ContentContainer-DuDrf5lL.js.map} +1 -1
  29. package/dist/{DataBrowserContainer-DPB12XVR.js → DataBrowserContainer-DZGhEt9N.js} +3 -3
  30. package/dist/{DataBrowserContainer-DPB12XVR.js.map → DataBrowserContainer-DZGhEt9N.js.map} +1 -1
  31. package/dist/{DateTrendWidget-DzqqUeZv.js → DateTrendWidget-F6hBnYej.js} +1 -1
  32. package/dist/{DateTrendWidget-DzqqUeZv.js.map → DateTrendWidget-F6hBnYej.js.map} +1 -1
  33. package/dist/{DensePlotWidget-CsRmVbqu.js → DensePlotWidget-BEhHNh53.js} +1 -1
  34. package/dist/{DensePlotWidget-CsRmVbqu.js.map → DensePlotWidget-BEhHNh53.js.map} +1 -1
  35. package/dist/{Directory-CoEKdRkU.js → Directory-CFTCLxWZ.js} +1 -1
  36. package/dist/{Directory-CoEKdRkU.js.map → Directory-CFTCLxWZ.js.map} +1 -1
  37. package/dist/{EntityHeader-CuiVOsA7.js → EntityHeader-D_gYzj76.js} +2 -2
  38. package/dist/{EntityHeader-CuiVOsA7.js.map → EntityHeader-D_gYzj76.js.map} +1 -1
  39. package/dist/{FieldArrayCard-CgM6q87c.js → FieldArrayCard-Bv9h9akG.js} +1 -1
  40. package/dist/{FieldArrayCard-CgM6q87c.js.map → FieldArrayCard-Bv9h9akG.js.map} +1 -1
  41. package/dist/{FileUpload-t3PZx_yE.js → FileUpload-BCxrOds_.js} +1 -1
  42. package/dist/{FileUpload-t3PZx_yE.js.map → FileUpload-BCxrOds_.js.map} +1 -1
  43. package/dist/{FluentCardHeader-CRJaqkV3.js → FluentCardHeader-BdMB2qzK.js} +1 -1
  44. package/dist/{FluentCardHeader-CRJaqkV3.js.map → FluentCardHeader-BdMB2qzK.js.map} +1 -1
  45. package/dist/{FluentCell-C1d53Ct2.js → FluentCell-D2lpxw4O.js} +2 -2
  46. package/dist/{FluentCell-C1d53Ct2.js.map → FluentCell-D2lpxw4O.js.map} +1 -1
  47. package/dist/{FluentDataTable-C1rFIP0M.js → FluentDataTable-ChpZUwal.js} +2 -2
  48. package/dist/{FluentDataTable-C1rFIP0M.js.map → FluentDataTable-ChpZUwal.js.map} +1 -1
  49. package/dist/{FluentLink-D-gKioCQ.js → FluentLink-DP2eDAH2.js} +1 -1
  50. package/dist/{FluentLink-D-gKioCQ.js.map → FluentLink-DP2eDAH2.js.map} +1 -1
  51. package/dist/{FluentRadioGroup-Cfldr9dO.js → FluentRadioGroup-CCKelZVk.js} +1 -1
  52. package/dist/{FluentRadioGroup-Cfldr9dO.js.map → FluentRadioGroup-CCKelZVk.js.map} +1 -1
  53. package/dist/{FluentSelectMenu-BEREJbe-.js → FluentSelectMenu-yQMFZWEg.js} +1 -1
  54. package/dist/{FluentSelectMenu-BEREJbe-.js.map → FluentSelectMenu-yQMFZWEg.js.map} +1 -1
  55. package/dist/{FluentSimpleSelect-Djff-up8.js → FluentSimpleSelect-DxxbQV37.js} +2 -2
  56. package/dist/{FluentSimpleSelect-Djff-up8.js.map → FluentSimpleSelect-DxxbQV37.js.map} +1 -1
  57. package/dist/{FluentTimeline-D8sfgLj1.js → FluentTimeline-BEPJHsgi.js} +1 -1
  58. package/dist/{FluentTimeline-D8sfgLj1.js.map → FluentTimeline-BEPJHsgi.js.map} +1 -1
  59. package/dist/{GraphCard-Dv4a99wo.js → GraphCard-CcXwOERk.js} +1 -1
  60. package/dist/{GraphCard-Dv4a99wo.js.map → GraphCard-CcXwOERk.js.map} +1 -1
  61. package/dist/{IconKey-D7fZ_U4O.js → IconKey-CbK8_rol.js} +1 -1
  62. package/dist/{IconKey-D7fZ_U4O.js.map → IconKey-CbK8_rol.js.map} +1 -1
  63. package/dist/{IconRenderer-B6ZoqrTX.js → IconRenderer-JdCm70xC.js} +2 -2
  64. package/dist/{IconRenderer-B6ZoqrTX.js.map → IconRenderer-JdCm70xC.js.map} +1 -1
  65. package/dist/Inquiry-C1q14Yyd.js +3 -0
  66. package/dist/{Inquiry-CeZgX9ls.js → Inquiry-Cjz91wf_.js} +7 -7
  67. package/dist/{Inquiry-CeZgX9ls.js.map → Inquiry-Cjz91wf_.js.map} +1 -1
  68. package/dist/{InquirySearchContainer-BIpngula.js → InquirySearchContainer-BnHwUWFC.js} +2 -2
  69. package/dist/{InquirySearchContainer-BIpngula.js.map → InquirySearchContainer-BnHwUWFC.js.map} +1 -1
  70. package/dist/{LineAndSparklinesWidget-B7U_tk1Y.js → LineAndSparklinesWidget-KVAnvpKl.js} +1 -1
  71. package/dist/{LineAndSparklinesWidget-B7U_tk1Y.js.map → LineAndSparklinesWidget-KVAnvpKl.js.map} +1 -1
  72. package/dist/{LineGraphWidget-vAqCb_aI.js → LineGraphWidget-CYjLiV5B.js} +1 -1
  73. package/dist/{LineGraphWidget-vAqCb_aI.js.map → LineGraphWidget-CYjLiV5B.js.map} +1 -1
  74. package/dist/{MenuPage-CkV002Ni.js → MenuPage-BS8ti9lx.js} +3 -3
  75. package/dist/{MenuPage-CkV002Ni.js.map → MenuPage-BS8ti9lx.js.map} +1 -1
  76. package/dist/MenuPage-DV20TjmL.js +3 -0
  77. package/dist/{MttMainTimeline-DIzQDgmK.js → MttMainTimeline-nusYDWg_.js} +2 -2
  78. package/dist/{MttMainTimeline-DIzQDgmK.js.map → MttMainTimeline-nusYDWg_.js.map} +1 -1
  79. package/dist/{MttSummary-Ctibq7Eu.js → MttSummary-DWESRW7k.js} +3 -3
  80. package/dist/{MttSummary-Ctibq7Eu.js.map → MttSummary-DWESRW7k.js.map} +1 -1
  81. package/dist/MyExportsPage-B3A6lwaV.js +3 -0
  82. package/dist/{MyExportsPage-DAYh16lE.js → MyExportsPage-BwcVZASe.js} +3 -3
  83. package/dist/{MyExportsPage-DAYh16lE.js.map → MyExportsPage-BwcVZASe.js.map} +1 -1
  84. package/dist/{NewsCard-C3y9a_OJ.js → NewsCard-Y-exMCuK.js} +1 -1
  85. package/dist/{NewsCard-C3y9a_OJ.js.map → NewsCard-Y-exMCuK.js.map} +1 -1
  86. package/dist/{Notes-UkwV2z4D.js → Notes-i2G6Ugsq.js} +1 -1
  87. package/dist/{Notes-UkwV2z4D.js.map → Notes-i2G6Ugsq.js.map} +1 -1
  88. package/dist/{NotesScreen-Xj0vl0v1.js → NotesScreen-DE3fhpjW.js} +4 -4
  89. package/dist/{NotesScreen-Xj0vl0v1.js.map → NotesScreen-DE3fhpjW.js.map} +1 -1
  90. package/dist/{OutlookCallback-ClSfPtyN.js → OutlookCallback-teOtztm6.js} +1 -1
  91. package/dist/{OutlookCallback-ClSfPtyN.js.map → OutlookCallback-teOtztm6.js.map} +1 -1
  92. package/dist/{PageActionWrapper-DonuC2VZ.js → PageActionWrapper-C-irIPLE.js} +2 -2
  93. package/dist/{PageActionWrapper-DonuC2VZ.js.map → PageActionWrapper-C-irIPLE.js.map} +1 -1
  94. package/dist/{PageNotFoundRoute-BfkErQJB.js → PageNotFoundRoute-B_mbfK8s.js} +1 -1
  95. package/dist/{PageNotFoundRoute-dmLyzuH3.js → PageNotFoundRoute-i_Tf23jB.js} +1 -1
  96. package/dist/{PageNotFoundRoute-dmLyzuH3.js.map → PageNotFoundRoute-i_Tf23jB.js.map} +1 -1
  97. package/dist/{PaymentForm-jJcVd3Du.js → PaymentForm-BTLh5bXJ.js} +3 -3
  98. package/dist/{PaymentForm-jJcVd3Du.js.map → PaymentForm-BTLh5bXJ.js.map} +1 -1
  99. package/dist/{RecentlyLoadedNodesTable-CIR8D1c4.js → RecentlyLoadedNodesTable-8WQBaAl4.js} +2 -2
  100. package/dist/{RecentlyLoadedNodesTable-CIR8D1c4.js.map → RecentlyLoadedNodesTable-8WQBaAl4.js.map} +1 -1
  101. package/dist/{RecentlyLoadedNodesWidget-D0lhioMn.js → RecentlyLoadedNodesWidget--NDwNQQF.js} +2 -2
  102. package/dist/{RecentlyLoadedNodesWidget-D0lhioMn.js.map → RecentlyLoadedNodesWidget--NDwNQQF.js.map} +1 -1
  103. package/dist/{RejectIcon-lx34XeEL.js → RejectIcon-CNSkW92y.js} +1 -1
  104. package/dist/{RejectIcon-lx34XeEL.js.map → RejectIcon-CNSkW92y.js.map} +1 -1
  105. package/dist/{RemindersCard-rF51zmWF.js → RemindersCard-CSJ8buYt.js} +2 -2
  106. package/dist/{RemindersCard-rF51zmWF.js.map → RemindersCard-CSJ8buYt.js.map} +1 -1
  107. package/dist/{RemindersScreen-Cg6_SGJI.js → RemindersScreen-CyT18piP.js} +4 -4
  108. package/dist/{RemindersScreen-Cg6_SGJI.js.map → RemindersScreen-CyT18piP.js.map} +1 -1
  109. package/dist/{RemindersWidget-BcLn4sdk.js → RemindersWidget-B3qlh8K-.js} +3 -3
  110. package/dist/{RemindersWidget-BcLn4sdk.js.map → RemindersWidget-B3qlh8K-.js.map} +1 -1
  111. package/dist/Reports-CLowSLq9.js +3 -0
  112. package/dist/{Reports-CxRaLcxr.js → Reports-Cz5Pl1rM.js} +1 -1
  113. package/dist/{Reports-CxRaLcxr.js.map → Reports-Cz5Pl1rM.js.map} +1 -1
  114. package/dist/{SearchServiceDatasource-CeBOfTB0.js → SearchServiceDatasource-BrfkHkEq.js} +2 -2
  115. package/dist/{SearchServiceDatasource-CeBOfTB0.js.map → SearchServiceDatasource-BrfkHkEq.js.map} +1 -1
  116. package/dist/{SearchUtilities-CNz302LN.js → SearchUtilities-B1TCyppF.js} +20 -2
  117. package/dist/SearchUtilities-B1TCyppF.js.map +1 -0
  118. package/dist/{Shell-9TXRPvXM.js → Shell-CAPPm490.js} +5 -5
  119. package/dist/{Shell-9TXRPvXM.js.map → Shell-CAPPm490.js.map} +1 -1
  120. package/dist/{ShortcutContentFinder-B66kZQLM.js → ShortcutContentFinder-DTkqEgtI.js} +2 -2
  121. package/dist/{ShortcutContentFinder-B66kZQLM.js.map → ShortcutContentFinder-DTkqEgtI.js.map} +1 -1
  122. package/dist/{SimpleTable-lLaKKBvn.js → SimpleTable-z8tz6B0B.js} +1 -1
  123. package/dist/{SimpleTable-lLaKKBvn.js.map → SimpleTable-z8tz6B0B.js.map} +1 -1
  124. package/dist/{SiteHeader-DUNj1MrC.js → SiteHeader-wIcmMhx9.js} +3 -3
  125. package/dist/{SiteHeader-DUNj1MrC.js.map → SiteHeader-wIcmMhx9.js.map} +1 -1
  126. package/dist/{SparsePlotWidget-Ct-6iTAs.js → SparsePlotWidget-B3wtNHo2.js} +1 -1
  127. package/dist/{SparsePlotWidget-Ct-6iTAs.js.map → SparsePlotWidget-B3wtNHo2.js.map} +1 -1
  128. package/dist/{Statistic-CllW32VF.js → Statistic-IWynWCev.js} +2 -2
  129. package/dist/{Statistic-CllW32VF.js.map → Statistic-IWynWCev.js.map} +1 -1
  130. package/dist/{StatusCellRenderer-CVOARrth.js → StatusCellRenderer-BuPuvngw.js} +1 -1
  131. package/dist/{StatusCellRenderer-CVOARrth.js.map → StatusCellRenderer-BuPuvngw.js.map} +1 -1
  132. package/dist/{TableContainer-CcBkqd33.js → TableContainer-CcHjtMCa.js} +2 -2
  133. package/dist/{TableContainer-CcBkqd33.js.map → TableContainer-CcHjtMCa.js.map} +1 -1
  134. package/dist/{TicketCard-IqCCKSc0.js → TicketCard-D-FtADsb.js} +1 -1
  135. package/dist/{TicketCard-IqCCKSc0.js.map → TicketCard-D-FtADsb.js.map} +1 -1
  136. package/dist/{TimelineCalendar-D7T32gIH.js → TimelineCalendar-Mi4baqsg.js} +1 -1
  137. package/dist/{TimelineCalendar-D7T32gIH.js.map → TimelineCalendar-Mi4baqsg.js.map} +1 -1
  138. package/dist/{TokenGroupItem-BK0dx4cD.js → TokenGroupItem-DKbm__Kc.js} +1 -1
  139. package/dist/{TokenGroupItem-BK0dx4cD.js.map → TokenGroupItem-DKbm__Kc.js.map} +1 -1
  140. package/dist/{TreeUtilities-kiPupulY.js → TreeUtilities-VCy2z4Qv.js} +2 -2
  141. package/dist/{TreeUtilities-kiPupulY.js.map → TreeUtilities-VCy2z4Qv.js.map} +1 -1
  142. package/dist/UI/accordion/index.js +1 -1
  143. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +1 -1
  144. package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
  145. package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
  146. package/dist/UI/dataDisplay/calendar/index.js +1 -1
  147. package/dist/UI/dataDisplay/cardList/index.js +1 -1
  148. package/dist/UI/dataDisplay/directory/index.js +1 -1
  149. package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
  150. package/dist/UI/dataDisplay/index.js +1 -1
  151. package/dist/UI/dataDisplay/map/index.js +1 -1
  152. package/dist/UI/dataDisplay/notes/index.js +1 -1
  153. package/dist/UI/dataDisplay/ticketCard/index.js +1 -1
  154. package/dist/UI/dataDisplay/visualization/amCharts/index.js +1 -1
  155. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  156. package/dist/UI/fileViewer/index.js +1 -1
  157. package/dist/UI/forms/index.js +1 -1
  158. package/dist/UI/index.js +5 -5
  159. package/dist/UI/inputs/calendar/index.js +1 -1
  160. package/dist/UI/inputs/dateRangeSelector/index.js +1 -1
  161. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  162. package/dist/UI/inputs/link/index.js +1 -1
  163. package/dist/UI/inputs/menus/index.js +2 -2
  164. package/dist/UI/inputs/radio/index.js +1 -1
  165. package/dist/UI/mapLayout/ui/index.js +1 -1
  166. package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
  167. package/dist/UI/surfaces/cards/fluentCards/index.js +1 -1
  168. package/dist/UI/surfaces/cards/newsCard/index.js +1 -1
  169. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  170. package/dist/UI/templates/calendar/index.js +1 -1
  171. package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
  172. package/dist/UI/templates/ui/index.js +1 -1
  173. package/dist/UI/templates/ui/renderers/index.js +2 -2
  174. package/dist/UI/timeline/fluentTimeline/index.js +1 -1
  175. package/dist/UI/timeline/index.js +1 -1
  176. package/dist/UI/widgets/library/BarChartWidget/index.js +1 -1
  177. package/dist/UI/widgets/library/BubbleWidget/index.js +1 -1
  178. package/dist/UI/widgets/library/CircleGaugeWidget/index.js +110 -2
  179. package/dist/UI/widgets/library/CircleGaugeWidget/index.js.map +1 -0
  180. package/dist/UI/widgets/library/DateTrendWidget/index.js +1 -1
  181. package/dist/UI/widgets/library/DensePlotWidget/index.js +1 -1
  182. package/dist/UI/widgets/library/GaugeWidget/index.js +381 -2
  183. package/dist/UI/widgets/library/GaugeWidget/index.js.map +1 -0
  184. package/dist/UI/widgets/library/LineAndSparklinesWidget/index.js +1 -1
  185. package/dist/UI/widgets/library/LineGraphWidget/index.js +1 -1
  186. package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
  187. package/dist/UI/widgets/library/RemindersWidget/index.js +1 -1
  188. package/dist/UI/widgets/library/SparsePlotWidget/index.js +1 -1
  189. package/dist/UI/widgets/library/TableWidget/index.js +1 -1
  190. package/dist/{UdpAppProvider-C6fH--WD.js → UdpAppProvider-BRyRY8zN.js} +2 -2
  191. package/dist/{UdpAppProvider-C6fH--WD.js.map → UdpAppProvider-BRyRY8zN.js.map} +1 -1
  192. package/dist/{UdpCalendarYearView-BEdW-myL.js → UdpCalendarYearView-BSR8CGHt.js} +1 -1
  193. package/dist/{UdpCalendarYearView-BEdW-myL.js.map → UdpCalendarYearView-BSR8CGHt.js.map} +1 -1
  194. package/dist/{UdpDataBrowserPage-CQ0vS2GN.js → UdpDataBrowserPage-B-afkKoz.js} +4 -4
  195. package/dist/{UdpDataBrowserPage-CQ0vS2GN.js.map → UdpDataBrowserPage-B-afkKoz.js.map} +1 -1
  196. package/dist/{UdpDateRangeSelector-BivfBlPa.js → UdpDateRangeSelector-C_gpkHul.js} +1 -1
  197. package/dist/{UdpDateRangeSelector-BivfBlPa.js.map → UdpDateRangeSelector-C_gpkHul.js.map} +1 -1
  198. package/dist/{UdpFormsSubmissionGrid-i3P4ZwQx.js → UdpFormsSubmissionGrid-BTg1Ktrn.js} +2 -2
  199. package/dist/{UdpFormsSubmissionGrid-i3P4ZwQx.js.map → UdpFormsSubmissionGrid-BTg1Ktrn.js.map} +1 -1
  200. package/dist/{UdpGridTemplate-OsS_O6jR.js → UdpGridTemplate-U9YcYLUf.js} +1 -1
  201. package/dist/{UdpGridTemplate-OsS_O6jR.js.map → UdpGridTemplate-U9YcYLUf.js.map} +1 -1
  202. package/dist/{UdpInquiryMaintenanceEnginePage-D7HFcJQu.js → UdpInquiryMaintenanceEnginePage-BiKDpo6a.js} +2 -2
  203. package/dist/{UdpInquiryMaintenanceEnginePage-D7HFcJQu.js.map → UdpInquiryMaintenanceEnginePage-BiKDpo6a.js.map} +1 -1
  204. package/dist/{UdpMaintenanceEnginePage-CX5L5k-E.js → UdpMaintenanceEnginePage-C1UcnDlL.js} +3 -3
  205. package/dist/{UdpMaintenanceEnginePage-CX5L5k-E.js.map → UdpMaintenanceEnginePage-C1UcnDlL.js.map} +1 -1
  206. package/dist/{UdpNotesPage-CgIdQgVV.js → UdpNotesPage-Deug2da_.js} +3 -3
  207. package/dist/{UdpNotesPage-CgIdQgVV.js.map → UdpNotesPage-Deug2da_.js.map} +1 -1
  208. package/dist/{UdpRemindersPage-CfLAOWP_.js → UdpRemindersPage-B8vCglBX.js} +3 -3
  209. package/dist/{UdpRemindersPage-CfLAOWP_.js.map → UdpRemindersPage-B8vCglBX.js.map} +1 -1
  210. package/dist/{UdpTransactionsPage-llP_6pYr.js → UdpTransactionsPage-B5uhMoFg.js} +32 -26
  211. package/dist/UdpTransactionsPage-B5uhMoFg.js.map +1 -0
  212. package/dist/{UdpVerticalManagementPage-ndwqxjDI.js → UdpVerticalManagementPage-DHK7-w0K.js} +2 -2
  213. package/dist/{UdpVerticalManagementPage-ndwqxjDI.js.map → UdpVerticalManagementPage-DHK7-w0K.js.map} +1 -1
  214. package/dist/{UdpVerticalManagementSidesheet-DomJyrvo.js → UdpVerticalManagementSidesheet-C2kuDXac.js} +2 -2
  215. package/dist/{UdpVerticalManagementSidesheet-DomJyrvo.js.map → UdpVerticalManagementSidesheet-C2kuDXac.js.map} +1 -1
  216. package/dist/{UserFormSideSheet-Bzw3AVnY.js → UserFormSideSheet-B6Mn3bZ0.js} +1 -1
  217. package/dist/{UserFormSideSheet-Bzw3AVnY.js.map → UserFormSideSheet-B6Mn3bZ0.js.map} +1 -1
  218. package/dist/UserFormSideSheet-C1G_jBcu.js +3 -0
  219. package/dist/VirtualBrowser-BoHR4EBJ.js +3 -0
  220. package/dist/{VirtualBrowser-BWflR1ah.js → VirtualBrowser-C2oPh3YY.js} +1 -1
  221. package/dist/{VirtualBrowser-BWflR1ah.js.map → VirtualBrowser-C2oPh3YY.js.map} +1 -1
  222. package/dist/{WorkOrderCard-s-6QK3Re.js → WorkOrderCard-Ce5WrpnX.js} +1 -1
  223. package/dist/{WorkOrderCard-s-6QK3Re.js.map → WorkOrderCard-Ce5WrpnX.js.map} +1 -1
  224. package/dist/{WorkflowContainer-CA0eMzMU.js → WorkflowContainer-Cd5H4mpf.js} +2 -2
  225. package/dist/{WorkflowContainer-CA0eMzMU.js.map → WorkflowContainer-Cd5H4mpf.js.map} +1 -1
  226. package/dist/{WorkflowContainer-LP2LBBn6.js → WorkflowContainer-Iq8fmnGR.js} +1 -1
  227. package/dist/{WorkflowTreeMenu-CTxpL6vb.js → WorkflowTreeMenu-D2Uc09jP.js} +2 -2
  228. package/dist/{WorkflowTreeMenu-CTxpL6vb.js.map → WorkflowTreeMenu-D2Uc09jP.js.map} +1 -1
  229. package/dist/{accordion-SICjF7Th.js → accordion-CT8euUVM.js} +2 -2
  230. package/dist/{accordion-SICjF7Th.js.map → accordion-CT8euUVM.js.map} +1 -1
  231. package/dist/actions/index.js +5 -3
  232. package/dist/{aggridHelpers-af9idKBD.js → aggridHelpers-BeUZvPIv.js} +2 -2
  233. package/dist/{aggridHelpers-af9idKBD.js.map → aggridHelpers-BeUZvPIv.js.map} +1 -1
  234. package/dist/componentSystems/multiThreadTimeline/index.js +7 -3
  235. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
  236. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +1 -1
  237. package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
  238. package/dist/componentSystems/pageRenderer/index.js +4 -0
  239. package/dist/dataBrowser/index.js +2 -1
  240. package/dist/{fileViewer-BmTE1zuM.js → fileViewer-BVzlhb3g.js} +2 -2
  241. package/dist/{fileViewer-BmTE1zuM.js.map → fileViewer-BVzlhb3g.js.map} +1 -1
  242. package/dist/{fluentTimeline-BCLxH23f.js → fluentTimeline-BWoLOxF_.js} +2 -2
  243. package/dist/{fluentTimeline-BCLxH23f.js.map → fluentTimeline-BWoLOxF_.js.map} +1 -1
  244. package/dist/{forms-CuTE3vcQ.js → forms-Eqr3TUUl.js} +2 -1
  245. package/dist/{forms-CuTE3vcQ.js.map → forms-Eqr3TUUl.js.map} +1 -1
  246. package/dist/{gridVisualizationFunctions-D4fd_Ceb.js → gridVisualizationFunctions-jnvPACJD.js} +1 -1
  247. package/dist/{gridVisualizationFunctions-D4fd_Ceb.js.map → gridVisualizationFunctions-jnvPACJD.js.map} +1 -1
  248. package/dist/index.js +79 -79
  249. package/dist/inquiry/dashboard/index.js +1 -1
  250. package/dist/inquiry/index.js +3 -3
  251. package/dist/inquiry/search/index.js +1 -1
  252. package/dist/maintenanceEngine/index.js +5 -2
  253. package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
  254. package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
  255. package/dist/menuPage/index.js +1 -1
  256. package/dist/{menuPage-C0cuD8I3.js → menuPage-B9NwQJVt.js} +2 -2
  257. package/dist/{menuPage-C0cuD8I3.js.map → menuPage-B9NwQJVt.js.map} +1 -1
  258. package/dist/notes/index.js +1 -1
  259. package/dist/providers/index.js +1 -1
  260. package/dist/reminders/index.js +2 -2
  261. package/dist/routes/components/index.js +1 -1
  262. package/dist/routes/index.js +1 -1
  263. package/dist/{routes-C-KBRkwM.js → routes-DG4NLFP9.js} +9 -9
  264. package/dist/{routes-C-KBRkwM.js.map → routes-DG4NLFP9.js.map} +1 -1
  265. package/dist/shell/index.js +3 -2
  266. package/dist/shell/ui/index.js +1 -1
  267. package/dist/{theme-C-5VosEn.js → theme-IKiRfNgl.js} +1 -1
  268. package/dist/{theme-C-5VosEn.js.map → theme-IKiRfNgl.js.map} +1 -1
  269. package/dist/treeMenu/index.js +1 -1
  270. package/dist/types/src/UI/forms/UdpTransactionEmailForm.d.ts.map +1 -1
  271. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.d.ts.map +1 -1
  272. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionsPage.d.ts +21 -0
  273. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionsPage.d.ts.map +1 -1
  274. package/dist/types/src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachments.d.ts.map +1 -1
  275. package/dist/types/src/utilities/search/Search.d.ts +3 -1
  276. package/dist/types/src/utilities/search/Search.d.ts.map +1 -1
  277. package/dist/types/src/utilities/search/SearchUtilities.d.ts +4 -1
  278. package/dist/types/src/utilities/search/SearchUtilities.d.ts.map +1 -1
  279. package/dist/types/tsconfig.tsbuildinfo +1 -1
  280. package/dist/udp/ShortcutContent/index.js +1 -1
  281. package/dist/udp/export/index.js +1 -1
  282. package/dist/udp/fileImportMapping/index.js +1 -1
  283. package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
  284. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  285. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
  286. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
  287. package/dist/udp/pages/UdpNotesPage/index.js +1 -1
  288. package/dist/udp/pages/UdpPages/index.js +51 -2
  289. package/dist/udp/pages/UdpPages/index.js.map +1 -0
  290. package/dist/udp/pages/UdpPagesLazy/index.js +55 -2
  291. package/dist/udp/pages/UdpPagesLazy/index.js.map +1 -0
  292. package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
  293. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  294. package/dist/udp/pages/UdpVerticalManagementPage/index.js +1 -1
  295. package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +1 -1
  296. package/dist/udp/pages/index.js +1 -1
  297. package/dist/utilities/aggrid/datasources/index.js +1 -1
  298. package/dist/utilities/aggrid/index.js +1 -1
  299. package/dist/utilities/customIcons/index.js +1 -1
  300. package/dist/utilities/floorplanFunctions/index.js +1 -1
  301. package/dist/utilities/form/paymentForm/index.js +1 -1
  302. package/dist/utilities/provider/index.js +1 -1
  303. package/dist/utilities/redirect/pages/index.js +1 -1
  304. package/dist/utilities/search/index.js +2 -2
  305. package/dist/utilities/style/index.js +1 -1
  306. package/dist/utilities/theme/index.js +1 -1
  307. package/dist/utilities/tree/index.js +1 -1
  308. package/dist/utilities/uploader/index.js +1 -1
  309. package/dist/workflow/index.js +4 -2
  310. package/dist/workflow/menus/index.js +1 -1
  311. package/export-map.json +3 -2
  312. package/package.json +2 -2
  313. package/dist/CircleGaugeWidget-Dbn-Hfs9.js +0 -111
  314. package/dist/CircleGaugeWidget-Dbn-Hfs9.js.map +0 -1
  315. package/dist/GaugeWidget-GvHtWlDn.js +0 -382
  316. package/dist/GaugeWidget-GvHtWlDn.js.map +0 -1
  317. package/dist/Inquiry-Cs1kj7m_.js +0 -3
  318. package/dist/MenuPage-IThq2ihD.js +0 -3
  319. package/dist/MyExportsPage-DMLtTRuJ.js +0 -3
  320. package/dist/Reports-Dsm8UDrt.js +0 -3
  321. package/dist/SearchUtilities-CNz302LN.js.map +0 -1
  322. package/dist/UdpPages-iGKLrxEq.js +0 -52
  323. package/dist/UdpPages-iGKLrxEq.js.map +0 -1
  324. package/dist/UdpPagesLazy-DAB_UwLn.js +0 -56
  325. package/dist/UdpPagesLazy-DAB_UwLn.js.map +0 -1
  326. package/dist/UdpTransactionsPage-llP_6pYr.js.map +0 -1
  327. package/dist/UserFormSideSheet-D6a35hXn.js +0 -3
  328. package/dist/VirtualBrowser-BLWKTPvM.js +0 -3
  329. package/dist/hocs-CyRt-7I7.js +0 -1
  330. package/dist/hooks-CZjs7TAZ.js +0 -1
  331. package/dist/menus-CETPr-Rz.js +0 -1
  332. package/dist/modified-BJdpgdkg.js +0 -1
  333. package/dist/mttMainTimeline-8er52lk7.js +0 -1
  334. package/dist/mttSummary-DjO6x1z3.js +0 -1
  335. package/dist/redirect-CiRW3aom.js +0 -1
  336. package/dist/renderers-CWJe-F-V.js +0 -1
  337. package/dist/sidebar-D6ohji9U.js +0 -1
  338. package/dist/storage-BH6-5v7t.js +0 -1
  339. package/dist/tableBrowser-DOXhQA7W.js +0 -1
  340. package/dist/ui-C4kNul8N.js +0 -1
  341. package/dist/ui-DKHa8sM6.js +0 -1
  342. package/dist/utils-DfHe3cg_.js +0 -1
  343. package/dist/utils-kACkfC1q.js +0 -1
  344. package/dist/virtualBrowser-CGrDP18C.js +0 -1
  345. package/dist/wrappers-RliXkfVO.js +0 -1
  346. /package/dist/{addUser-dW2T5ebz.js → addUser-B8dGyltZ.js} +0 -0
  347. /package/dist/{appSwitcher-Cc_raXX2.js → appSwitcher-Bcd4Cwcx.js} +0 -0
  348. /package/dist/{components-C06UZfZG.js → modified-BZxg92lm.js} +0 -0
  349. /package/dist/{crudBrowser-lDw1oxV2.js → redirect-dbCS_8ib.js} +0 -0
  350. /package/dist/{forms-CywZzmBr.js → renderers-DTo5-0ZY.js} +0 -0
  351. /package/dist/{functions-XSah-gNz.js → storage-C9onsVtI.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { r as useAgGridApi, t as AgTable } from "./AgTable-B2xTzAm2.js";
2
2
  import { r as getSanitizedName } from "./entityUtilities-_8w-Zjs3.js";
3
3
  import { t as AmbientCard } from "./AmbientCard-CLW4bPCu.js";
4
- import { t as IconRenderer } from "./IconRenderer-B6ZoqrTX.js";
4
+ import { t as IconRenderer } from "./IconRenderer-JdCm70xC.js";
5
5
  import { t as formatDateToLocaleString } from "./DateUtilities-Baq6BH9v.js";
6
6
  import React, { useCallback, useEffect, useMemo, useState } from "react";
7
7
  import { LinearProgress, Typography } from "@material-ui/core";
@@ -105,4 +105,4 @@ const RecentlyLoadedNodesTable = (props) => {
105
105
 
106
106
  //#endregion
107
107
  export { RecentlyLoadedNodesTable as t };
108
- //# sourceMappingURL=RecentlyLoadedNodesTable-CIR8D1c4.js.map
108
+ //# sourceMappingURL=RecentlyLoadedNodesTable-8WQBaAl4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecentlyLoadedNodesTable-CIR8D1c4.js","names":[],"sources":["../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst defaultColDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tableHeight,\n tree,\n columnDefs,\n hideTitle = false\n } = props;\n\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const [selectedRow, setSelectedRow] = useState();\n\n useEffect(() => {\n if (!gridColumnApi) return;\n\n gridApi?.sizeColumnsToFit();\n setSelectedRow(\n gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n );\n }, [gridColumnApi, gridApi]);\n\n const handleRowSelected = useCallback(\n (event) => {\n if (!event.node.selected) return;\n\n if (!gridApi) return;\n\n const selectedRowData =\n gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n if (!selectedRowData) return;\n\n setSelectedRow(selectedRowData);\n\n if (selectedRowData?.nodeInfo) {\n // if the row is a node\n onLoadedNodeClick(selectedRowData.nodeInfo);\n }\n },\n [gridApi, onLoadedNodeClick]\n );\n\n const getterRowData = useCallback((params) => {\n return params.data?.iconData;\n }, []);\n\n const columnDefinitions = useMemo(\n () =>\n columnDefs\n ? columnDefs\n : [\n tree?.treeStructure && {\n headerName: '',\n cellRenderer: 'iconRenderer',\n valueGetter: getterRowData,\n maxWidth: 60,\n resizable: false,\n suppressMenu: true,\n sortable: false,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n },\n {\n headerName: 'Name',\n field: 'name',\n minWidth: 120,\n maxWidth: 300\n },\n {\n headerName: 'Type',\n field: 'type',\n valueGetter: (params) => getSanitizedName(params.data?.type),\n minWidth: 80\n },\n {\n headerName: 'Date Loaded',\n field: 'dateLoaded',\n minWidth: 80\n },\n {\n headerName: '',\n field: 'nodeInfo',\n maxWidth: 0,\n cellStyle: {\n display: 'none'\n }\n }\n ],\n [columnDefs, getterRowData, tree]\n );\n\n const recentlyLoadedNodesValues = useMemo(\n () =>\n recentlyLoadedNodes?.map((loadedNode) => {\n const matchingNode = tree?.treeStructure?.find(\n (node) =>\n node.properties.catalogReturnObject ===\n loadedNode?.nodeDetails?.catalogReturnObject\n );\n\n return {\n iconData: matchingNode?.properties?.defaultIcon || {\n name: 'PictureTileIcon'\n },\n name: loadedNode?.nodeDetails?.nodeLabel,\n type: loadedNode?.nodeDetails?.catalogReturnObject,\n dateLoaded: formatDateToLocaleString(\n loadedNode?.dateLoaded,\n DateTime.DATETIME_MED\n ),\n nodeInfo: loadedNode\n };\n }),\n [recentlyLoadedNodes, tree]\n );\n\n return (\n <AmbientCard\n title={!hideTitle ? 'Recently Loaded' : ' '}\n fullWidth\n noAdornment\n >\n {loading || !tree ? (\n <LinearProgress />\n ) : recentlyLoadedNodes?.length ? (\n <AgTable\n columnDefs={columnDefinitions}\n defaultColDef={defaultColDef}\n rowData={recentlyLoadedNodesValues || []}\n onGridReady={onGridReady}\n getRowNodeId={(row) => row.name}\n onRowSelected={handleRowSelected}\n rowSelection='single'\n frameworkComponents={{ iconRenderer: IconRenderer }}\n height={tableHeight}\n />\n ) : (\n <Typography>No Data Recently Loaded.</Typography>\n )}\n </AmbientCard>\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,WAAW;CACX,UAAU;CACV,UAAU;CACV,QAAQ;CACT;AAED,MAAa,4BAA4B,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,aACA,MACA,YACA,YAAY,UACV;CAEJ,MAAM,EAAE,SAAS,eAAe,gBAAgB,cAAc;CAC9D,MAAM,CAAC,aAAa,kBAAkB,UAAU;AAEhD,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,WAAS,kBAAkB;AAC3B,iBACE,SAAS,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC,GAChE;IACA,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,oBAAoB,aACvB,UAAU;AACT,MAAI,CAAC,MAAM,KAAK,SAAU;AAE1B,MAAI,CAAC,QAAS;EAEd,MAAM,kBACJ,QAAQ,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC;AAEhE,MAAI,CAAC,gBAAiB;AAEtB,iBAAe,gBAAgB;AAE/B,MAAI,iBAAiB,SAEnB,mBAAkB,gBAAgB,SAAS;IAG/C,CAAC,SAAS,kBAAkB,CAC7B;CAED,MAAM,gBAAgB,aAAa,WAAW;AAC5C,SAAO,OAAO,MAAM;IACnB,EAAE,CAAC;CAEN,MAAM,oBAAoB,cAEtB,aACI,aACA;EACE,MAAM,iBAAiB;GACrB,YAAY;GACZ,cAAc;GACd,aAAa;GACb,UAAU;GACV,WAAW;GACX,cAAc;GACd,UAAU;GACV,WAAW;IACT,SAAS;IACT,YAAY;IACZ,gBAAgB;IACjB;GACF;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,cAAc,WAAW,iBAAiB,OAAO,MAAM,KAAK;GAC5D,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,WAAW,EACT,SAAS,QACV;GACF;EACF,EACP;EAAC;EAAY;EAAe;EAAK,CAClC;CAED,MAAM,4BAA4B,cAE9B,qBAAqB,KAAK,eAAe;AAOvC,SAAO;GACL,WAPmB,MAAM,eAAe,MACvC,SACC,KAAK,WAAW,wBAChB,YAAY,aAAa,oBAC5B,GAGyB,YAAY,eAAe,EACjD,MAAM,mBACP;GACD,MAAM,YAAY,aAAa;GAC/B,MAAM,YAAY,aAAa;GAC/B,YAAY,yBACV,YAAY,YACZ,SAAS,aACV;GACD,UAAU;GACX;GACD,EACJ,CAAC,qBAAqB,KAAK,CAC5B;AAED,QACE,oCAAC;EACC,OAAO,CAAC,YAAY,oBAAoB;EACxC;EACA;IAEC,WAAW,CAAC,OACX,oCAAC,qBAAiB,GAChB,qBAAqB,SACvB,oCAAC;EACC,YAAY;EACG;EACf,SAAS,6BAA6B,EAAE;EAC3B;EACb,eAAe,QAAQ,IAAI;EAC3B,eAAe;EACf,cAAa;EACb,qBAAqB,EAAE,cAAc,cAAc;EACnD,QAAQ;GACR,GAEF,oCAAC,kBAAW,2BAAqC,CAEvC"}
1
+ {"version":3,"file":"RecentlyLoadedNodesTable-8WQBaAl4.js","names":[],"sources":["../src/inquiry/dashboard/RecentlyLoadedNodesTable.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { AgTable, useAgGridApi } from '../../utilities/aggrid/AgTable.tsx';\nimport { formatDateToLocaleString } from '../../utilities/input/DateUtilities';\nimport { DateTime } from 'luxon';\nimport { IconRenderer } from '../../UI/templates/ui/renderers/IconRenderer';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst defaultColDef = {\n resizable: true,\n editable: false,\n sortable: true,\n filter: true\n};\n\nexport const RecentlyLoadedNodesTable = (props) => {\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tableHeight,\n tree,\n columnDefs,\n hideTitle = false\n } = props;\n\n const { gridApi, gridColumnApi, onGridReady } = useAgGridApi();\n const [selectedRow, setSelectedRow] = useState();\n\n useEffect(() => {\n if (!gridColumnApi) return;\n\n gridApi?.sizeColumnsToFit();\n setSelectedRow(\n gridApi?.getSelectedRows().length && gridApi.getSelectedRows()[0]\n );\n }, [gridColumnApi, gridApi]);\n\n const handleRowSelected = useCallback(\n (event) => {\n if (!event.node.selected) return;\n\n if (!gridApi) return;\n\n const selectedRowData =\n gridApi.getSelectedRows().length && gridApi.getSelectedRows()[0];\n\n if (!selectedRowData) return;\n\n setSelectedRow(selectedRowData);\n\n if (selectedRowData?.nodeInfo) {\n // if the row is a node\n onLoadedNodeClick(selectedRowData.nodeInfo);\n }\n },\n [gridApi, onLoadedNodeClick]\n );\n\n const getterRowData = useCallback((params) => {\n return params.data?.iconData;\n }, []);\n\n const columnDefinitions = useMemo(\n () =>\n columnDefs\n ? columnDefs\n : [\n tree?.treeStructure && {\n headerName: '',\n cellRenderer: 'iconRenderer',\n valueGetter: getterRowData,\n maxWidth: 60,\n resizable: false,\n suppressMenu: true,\n sortable: false,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n },\n {\n headerName: 'Name',\n field: 'name',\n minWidth: 120,\n maxWidth: 300\n },\n {\n headerName: 'Type',\n field: 'type',\n valueGetter: (params) => getSanitizedName(params.data?.type),\n minWidth: 80\n },\n {\n headerName: 'Date Loaded',\n field: 'dateLoaded',\n minWidth: 80\n },\n {\n headerName: '',\n field: 'nodeInfo',\n maxWidth: 0,\n cellStyle: {\n display: 'none'\n }\n }\n ],\n [columnDefs, getterRowData, tree]\n );\n\n const recentlyLoadedNodesValues = useMemo(\n () =>\n recentlyLoadedNodes?.map((loadedNode) => {\n const matchingNode = tree?.treeStructure?.find(\n (node) =>\n node.properties.catalogReturnObject ===\n loadedNode?.nodeDetails?.catalogReturnObject\n );\n\n return {\n iconData: matchingNode?.properties?.defaultIcon || {\n name: 'PictureTileIcon'\n },\n name: loadedNode?.nodeDetails?.nodeLabel,\n type: loadedNode?.nodeDetails?.catalogReturnObject,\n dateLoaded: formatDateToLocaleString(\n loadedNode?.dateLoaded,\n DateTime.DATETIME_MED\n ),\n nodeInfo: loadedNode\n };\n }),\n [recentlyLoadedNodes, tree]\n );\n\n return (\n <AmbientCard\n title={!hideTitle ? 'Recently Loaded' : ' '}\n fullWidth\n noAdornment\n >\n {loading || !tree ? (\n <LinearProgress />\n ) : recentlyLoadedNodes?.length ? (\n <AgTable\n columnDefs={columnDefinitions}\n defaultColDef={defaultColDef}\n rowData={recentlyLoadedNodesValues || []}\n onGridReady={onGridReady}\n getRowNodeId={(row) => row.name}\n onRowSelected={handleRowSelected}\n rowSelection='single'\n frameworkComponents={{ iconRenderer: IconRenderer }}\n height={tableHeight}\n />\n ) : (\n <Typography>No Data Recently Loaded.</Typography>\n )}\n </AmbientCard>\n );\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,gBAAgB;CACpB,WAAW;CACX,UAAU;CACV,UAAU;CACV,QAAQ;CACT;AAED,MAAa,4BAA4B,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,aACA,MACA,YACA,YAAY,UACV;CAEJ,MAAM,EAAE,SAAS,eAAe,gBAAgB,cAAc;CAC9D,MAAM,CAAC,aAAa,kBAAkB,UAAU;AAEhD,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,WAAS,kBAAkB;AAC3B,iBACE,SAAS,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC,GAChE;IACA,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,oBAAoB,aACvB,UAAU;AACT,MAAI,CAAC,MAAM,KAAK,SAAU;AAE1B,MAAI,CAAC,QAAS;EAEd,MAAM,kBACJ,QAAQ,iBAAiB,CAAC,UAAU,QAAQ,iBAAiB,CAAC;AAEhE,MAAI,CAAC,gBAAiB;AAEtB,iBAAe,gBAAgB;AAE/B,MAAI,iBAAiB,SAEnB,mBAAkB,gBAAgB,SAAS;IAG/C,CAAC,SAAS,kBAAkB,CAC7B;CAED,MAAM,gBAAgB,aAAa,WAAW;AAC5C,SAAO,OAAO,MAAM;IACnB,EAAE,CAAC;CAEN,MAAM,oBAAoB,cAEtB,aACI,aACA;EACE,MAAM,iBAAiB;GACrB,YAAY;GACZ,cAAc;GACd,aAAa;GACb,UAAU;GACV,WAAW;GACX,cAAc;GACd,UAAU;GACV,WAAW;IACT,SAAS;IACT,YAAY;IACZ,gBAAgB;IACjB;GACF;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,cAAc,WAAW,iBAAiB,OAAO,MAAM,KAAK;GAC5D,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACX;EACD;GACE,YAAY;GACZ,OAAO;GACP,UAAU;GACV,WAAW,EACT,SAAS,QACV;GACF;EACF,EACP;EAAC;EAAY;EAAe;EAAK,CAClC;CAED,MAAM,4BAA4B,cAE9B,qBAAqB,KAAK,eAAe;AAOvC,SAAO;GACL,WAPmB,MAAM,eAAe,MACvC,SACC,KAAK,WAAW,wBAChB,YAAY,aAAa,oBAC5B,GAGyB,YAAY,eAAe,EACjD,MAAM,mBACP;GACD,MAAM,YAAY,aAAa;GAC/B,MAAM,YAAY,aAAa;GAC/B,YAAY,yBACV,YAAY,YACZ,SAAS,aACV;GACD,UAAU;GACX;GACD,EACJ,CAAC,qBAAqB,KAAK,CAC5B;AAED,QACE,oCAAC;EACC,OAAO,CAAC,YAAY,oBAAoB;EACxC;EACA;IAEC,WAAW,CAAC,OACX,oCAAC,qBAAiB,GAChB,qBAAqB,SACvB,oCAAC;EACC,YAAY;EACG;EACf,SAAS,6BAA6B,EAAE;EAC3B;EACb,eAAe,QAAQ,IAAI;EAC3B,eAAe;EACf,cAAa;EACb,qBAAqB,EAAE,cAAc,cAAc;EACnD,QAAQ;GACR,GAEF,oCAAC,kBAAW,2BAAqC,CAEvC"}
@@ -1,5 +1,5 @@
1
1
  import { t as __export } from "./chunk-B4enJp2Q.js";
2
- import { t as RecentlyLoadedNodesTable } from "./RecentlyLoadedNodesTable-CIR8D1c4.js";
2
+ import { t as RecentlyLoadedNodesTable } from "./RecentlyLoadedNodesTable-8WQBaAl4.js";
3
3
  import { t as WidgetCard_default } from "./WidgetCard-U1XoSuoz.js";
4
4
  import React, { forwardRef } from "react";
5
5
 
@@ -31,4 +31,4 @@ var RecentlyLoadedNodesWidget_exports = /* @__PURE__ */ __export({
31
31
 
32
32
  //#endregion
33
33
  export { RecentlyLoadedNodesWidget as n, RecentlyLoadedNodesWidget_default as r, RecentlyLoadedNodesWidget_exports as t };
34
- //# sourceMappingURL=RecentlyLoadedNodesWidget-D0lhioMn.js.map
34
+ //# sourceMappingURL=RecentlyLoadedNodesWidget--NDwNQQF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecentlyLoadedNodesWidget-D0lhioMn.js","names":["WidgetCard"],"sources":["../src/UI/widgets/library/RecentlyLoadedNodesWidget/RecentlyLoadedNodesWidget.jsx","../src/UI/widgets/library/RecentlyLoadedNodesWidget/index.ts"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RecentlyLoadedNodesTable } from '../../../../inquiry/dashboard/RecentlyLoadedNodesTable';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nexport const RecentlyLoadedNodesWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tree,\n hideWidgetName\n } = params;\n\n return (\n <WidgetCard\n ref={ref}\n title={'Recently Loaded'}\n hideWidgetName={hideWidgetName}\n {...other}\n >\n <RecentlyLoadedNodesTable\n recentlyLoadedNodes={recentlyLoadedNodes}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n tree={tree}\n hideTitle={true}\n />\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RecentlyLoadedNodesWidget);\n","export * from './RecentlyLoadedNodesWidget';\nexport {default} from './RecentlyLoadedNodesWidget';\n"],"mappings":";;;;;;AASA,MAAa,6BAA6B,OAAO,QAAQ;CACvD,MAAM,EAAE,UAAU,QAAQ,UAAU,GAAG,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,MACA,mBACE;AAEJ,QACE,oCAACA;EACM;EACL,OAAO;EACS;EAChB,GAAI;IAEJ,oCAAC;EACsB;EACZ;EACU;EACb;EACN,WAAW;GACX,EACD,SACU;;AAIjB,wCAAe,WAAW,0BAA0B"}
1
+ {"version":3,"file":"RecentlyLoadedNodesWidget--NDwNQQF.js","names":["WidgetCard"],"sources":["../src/UI/widgets/library/RecentlyLoadedNodesWidget/RecentlyLoadedNodesWidget.jsx","../src/UI/widgets/library/RecentlyLoadedNodesWidget/index.ts"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RecentlyLoadedNodesTable } from '../../../../inquiry/dashboard/RecentlyLoadedNodesTable';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nexport const RecentlyLoadedNodesWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const {\n recentlyLoadedNodes,\n loading,\n onLoadedNodeClick,\n tree,\n hideWidgetName\n } = params;\n\n return (\n <WidgetCard\n ref={ref}\n title={'Recently Loaded'}\n hideWidgetName={hideWidgetName}\n {...other}\n >\n <RecentlyLoadedNodesTable\n recentlyLoadedNodes={recentlyLoadedNodes}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n tree={tree}\n hideTitle={true}\n />\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RecentlyLoadedNodesWidget);\n","export * from './RecentlyLoadedNodesWidget';\nexport {default} from './RecentlyLoadedNodesWidget';\n"],"mappings":";;;;;;AASA,MAAa,6BAA6B,OAAO,QAAQ;CACvD,MAAM,EAAE,UAAU,QAAQ,UAAU,GAAG,UAAU;CACjD,MAAM,EACJ,qBACA,SACA,mBACA,MACA,mBACE;AAEJ,QACE,oCAACA;EACM;EACL,OAAO;EACS;EAChB,GAAI;IAEJ,oCAAC;EACsB;EACZ;EACU;EACb;EACN,WAAW;GACX,EACD,SACU;;AAIjB,wCAAe,WAAW,0BAA0B"}
@@ -37,4 +37,4 @@ const RejectIcon = () => {
37
37
 
38
38
  //#endregion
39
39
  export { ApprovalIcon as n, RejectIcon as t };
40
- //# sourceMappingURL=RejectIcon-lx34XeEL.js.map
40
+ //# sourceMappingURL=RejectIcon-CNSkW92y.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RejectIcon-lx34XeEL.js","names":[],"sources":["../src/utilities/customIcons/ApprovalIcon.jsx","../src/utilities/customIcons/RejectIcon.jsx"],"sourcesContent":["import React from \"react\";\nimport { CheckMarkIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n/**\n * ApprovalIcon\n *\n * @return {*}\n */\nexport const ApprovalIcon = () => {\n const theme = useTheme();\n return (\n <CheckMarkIcon\n style={{\n background: lighten(theme.palette.success?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `2px solid ${lighten(theme.palette.success?.main, 0.5)}`\n }}\n />\n );\n};\n","import React from \"react\";\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n\n/**\n * @returns {any}\n */\nexport const RejectIcon = () => {\n const theme = useTheme();\n return (\n <ChromeCloseIcon\n style={{\n background: lighten(theme.palette.error?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `5px solid ${lighten(theme.palette.error?.main, 0.5)}`,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAa,qBAAqB;CAChC,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,iBACC,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EACrD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EAC/D,GACD;;;;;;;;ACZN,MAAa,mBAAmB;CAC9B,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,mBACG,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EACnD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EAC7D,GACD"}
1
+ {"version":3,"file":"RejectIcon-CNSkW92y.js","names":[],"sources":["../src/utilities/customIcons/ApprovalIcon.jsx","../src/utilities/customIcons/RejectIcon.jsx"],"sourcesContent":["import React from \"react\";\nimport { CheckMarkIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n/**\n * ApprovalIcon\n *\n * @return {*}\n */\nexport const ApprovalIcon = () => {\n const theme = useTheme();\n return (\n <CheckMarkIcon\n style={{\n background: lighten(theme.palette.success?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `2px solid ${lighten(theme.palette.success?.main, 0.5)}`\n }}\n />\n );\n};\n","import React from \"react\";\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n\n/**\n * @returns {any}\n */\nexport const RejectIcon = () => {\n const theme = useTheme();\n return (\n <ChromeCloseIcon\n style={{\n background: lighten(theme.palette.error?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `5px solid ${lighten(theme.palette.error?.main, 0.5)}`,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAa,qBAAqB;CAChC,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,iBACC,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EACrD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EAC/D,GACD;;;;;;;;ACZN,MAAa,mBAAmB;CAC9B,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,mBACG,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EACnD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EAC7D,GACD"}
@@ -1,7 +1,7 @@
1
1
  import { j as SplitScreenTypeEnums } from "./unitySystemEnums-e5F9Jr7m.js";
2
2
  import { t as UnityFluentIcon } from "./UnityFluentIcon-DrASIcTF.js";
3
3
  import { n as useActions } from "./useActions-BWBXokgQ.js";
4
- import { S as getIconFromName } from "./TreeUtilities-kiPupulY.js";
4
+ import { S as getIconFromName } from "./TreeUtilities-VCy2z4Qv.js";
5
5
  import { t as getUnityIconFromName } from "./UnityIconLibrary-CjIwzfjv.js";
6
6
  import { t as StatusChip } from "./StatusChip-DZAN88VU.js";
7
7
  import React, { useCallback, useMemo, useState } from "react";
@@ -135,4 +135,4 @@ const RemindersCard = (props) => {
135
135
 
136
136
  //#endregion
137
137
  export { CompleteReminderSwitch as n, RemindersCard as t };
138
- //# sourceMappingURL=RemindersCard-rF51zmWF.js.map
138
+ //# sourceMappingURL=RemindersCard-CSJ8buYt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemindersCard-rF51zmWF.js","names":[],"sources":["../src/reminders/CompleteReminderSwitch.jsx","../src/reminders/RemindersCard.jsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Switch } from '@material-ui/core';\n\nexport const CompleteReminderSwitch = (props) => {\n const { checked, onChange, ...otherProps } = props;\n const [switchChecked, setSwitchChecked] = useState(checked);\n\n const handleOnChange = useCallback(\n (event) => {\n setSwitchChecked(event.target.checked);\n onChange && onChange(event);\n },\n [onChange]\n );\n\n return (\n <Switch checked={switchChecked} onChange={handleOnChange} {...otherProps} />\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Typography,\n LinearProgress,\n makeStyles,\n List,\n ListItem,\n Checkbox,\n ListItemText,\n ListItemSecondaryAction,\n Divider,\n FormControlLabel\n} from '@material-ui/core';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { useActions } from '../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../enums/unitySystemEnums';\nimport { CompleteReminderSwitch } from './CompleteReminderSwitch';\nimport { executeQueryWithParameters } from '../udp/utilities/methodUtils';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n item: {\n display: 'flex',\n '& .MuiListItem-container': {\n width: '100%'\n },\n '& .MuiListItem-container > .MuiListItem-button': {\n paddingLeft: 0,\n paddingRight: 0\n }\n }\n}));\n\nexport const RemindersCard = (props) => {\n const {\n reminders,\n setReminders,\n loading,\n getNodeToLoad,\n onLoadedNodeClick,\n getIcon = () => {},\n updateRemindersAcknowledgement\n } = props;\n const classes = useStyles(props);\n const { openSplitScreen } = useActions();\n\n const handleSwitchChange = useCallback(\n async (event, reminder) => {\n const updatedReminder = { ...reminder };\n updatedReminder.checked = event.target.checked;\n await updateRemindersAcknowledgement([updatedReminder]);\n },\n [updateRemindersAcknowledgement]\n );\n\n const getCompleteSwitch = useCallback(\n (reminder) => (\n <FormControlLabel\n control={\n <CompleteReminderSwitch\n size='small'\n checked={reminder?.acknowledged || false}\n onChange={(event) => handleSwitchChange(event, reminder)}\n />\n }\n label='Complete'\n style={{ marginRight: 8 }}\n />\n ),\n [handleSwitchChange]\n );\n\n const getStatusLabel = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n }\n }, []);\n\n const getStatusColor = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return '';\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return 'info';\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return 'warning';\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return 'error';\n }\n }, []);\n\n const handleReminderCheck = useCallback(\n (evt, reminder) => {\n const updatedReminders = [...reminders];\n const matchingReminders = updatedReminders.filter(\n (r) => r.id === reminder.id\n );\n matchingReminders?.forEach(\n (matchingReminder) => (matchingReminder.checked = evt.target.checked)\n );\n setReminders(updatedReminders);\n },\n [reminders, setReminders]\n );\n\n const handleReminderClick = useCallback(\n (nodeToLoad, reminder) => {\n onLoadedNodeClick(nodeToLoad);\n\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Reminders,\n params: {\n id: reminder?.id || '',\n additionalInputs: reminder ? getCompleteSwitch(reminder) : null\n }\n });\n },\n [onLoadedNodeClick, openSplitScreen, getCompleteSwitch]\n );\n\n return loading ? (\n <LinearProgress />\n ) : reminders?.length ? (\n <List className={classes.root}>\n {reminders.map((reminder) => {\n const icon = getIcon(reminder);\n const nodeToLoad = getNodeToLoad(reminder);\n return (\n <>\n <div className={classes.item} key={reminder.id}>\n <Checkbox\n id='udpRecord-RemindersCard-Checkbox'\n udprecordid='udpRecord-RemindersCard-Checkbox'\n edge='start'\n checked={reminder.checked || reminder.acknowledged}\n disableRipple\n size='small'\n onChange={(evt) => handleReminderCheck(evt, reminder)}\n disabled={reminder.acknowledged}\n />\n <ListItem\n id='udpRecord-ReminderCard-Item'\n udprecordid='udpRecord-ReminderCard-Item'\n key={reminder.id}\n dense\n subject={reminder.subject}\n removePadding={true}\n button\n onClick={() => handleReminderClick(nodeToLoad, reminder)}\n >\n <ListItemText>\n <div style={{ display: 'block' }}>\n <Typography\n style={{ lineHeight: '0.9rem', fontSize: '0.8rem' }}\n >\n {reminder.subject}\n </Typography>\n </div>\n <Typography\n style={{\n lineHeight: '0.8rem',\n fontSize: '0.7rem',\n fontWeight: 400,\n color: 'rgba(0, 0, 0, 0.54)'\n }}\n >\n {new Date(reminder.reminderDate).toDateString()}\n </Typography>\n </ListItemText>\n <ListItemSecondaryAction>\n <StatusChip\n status={getStatusColor(reminder.reminderDate)}\n label={getStatusLabel(reminder.reminderDate)}\n icon={\n <UnityFluentIcon\n type={icon?.type}\n icon={\n icon?.type === 'unity'\n ? getUnityIconFromName(icon?.name || '')\n : getIconFromName(icon?.name || '')\n }\n />\n }\n />\n </ListItemSecondaryAction>\n </ListItem>\n </div>\n <Divider style={{ height: 1 }} />\n </>\n );\n })}\n </List>\n ) : (\n <Typography>All Reminders Completed</Typography>\n );\n};\n"],"mappings":";;;;;;;;;;AAGA,MAAa,0BAA0B,UAAU;CAC/C,MAAM,EAAE,SAAS,UAAU,GAAG,eAAe;CAC7C,MAAM,CAAC,eAAe,oBAAoB,SAAS,QAAQ;CAE3D,MAAM,iBAAiB,aACpB,UAAU;AACT,mBAAiB,MAAM,OAAO,QAAQ;AACtC,cAAY,SAAS,MAAM;IAE7B,CAAC,SAAS,CACX;AAED,QACE,oCAAC;EAAO,SAAS;EAAe,UAAU;EAAgB,GAAI;GAAc;;;;;ACMhF,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,MAAM;EACJ,SAAS;EACT,4BAA4B,EAC1B,OAAO,QACR;EACD,kDAAkD;GAChD,aAAa;GACb,cAAc;GACf;EACF;CACF,EAAE;AAEH,MAAa,iBAAiB,UAAU;CACtC,MAAM,EACJ,WACA,cACA,SACA,eACA,mBACA,gBAAgB,IAChB,mCACE;CACJ,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,oBAAoB,YAAY;CAExC,MAAM,qBAAqB,YACzB,OAAO,OAAO,aAAa;EACzB,MAAM,kBAAkB,EAAE,GAAG,UAAU;AACvC,kBAAgB,UAAU,MAAM,OAAO;AACvC,QAAM,+BAA+B,CAAC,gBAAgB,CAAC;IAEzD,CAAC,+BAA+B,CACjC;CAED,MAAM,oBAAoB,aACvB,aACC,oCAAC;EACC,SACE,oCAAC;GACC,MAAK;GACL,SAAS,UAAU,gBAAgB;GACnC,WAAW,UAAU,mBAAmB,OAAO,SAAS;IACxD;EAEJ,OAAM;EACN,OAAO,EAAE,aAAa,GAAG;GACzB,EAEJ,CAAC,mBAAmB,CACrB;CAED,MAAM,iBAAiB,aAAa,SAAS;EAC3C,MAAM,MAAM,MAAO,KAAK,KAAK;EAC7B,MAAM,eAAe,IAAI,KAAK,KAAK,CAAC,SAAS;AAC7C,MAAI,gBAAgB,KAAK,KAAK,GAAG,MAAM,EAErC,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;WAEnE,eAAe,KAAK,KAAK,GAAG,MAAM,KAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,GAGnC,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;WAEnE,eAAe,KAAK,KAAK,GAAG,MAAM,MAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,IAGnC,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;WAC1D,eAAe,KAAK,KAAK,GAAG,MAAM,IAE3C,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;IAEpE,EAAE,CAAC;CAEN,MAAM,iBAAiB,aAAa,SAAS;EAC3C,MAAM,MAAM,MAAO,KAAK,KAAK;EAC7B,MAAM,eAAe,IAAI,KAAK,KAAK,CAAC,SAAS;AAC7C,MAAI,gBAAgB,KAAK,KAAK,GAAG,MAAM,EAErC,QAAO;WAEP,eAAe,KAAK,KAAK,GAAG,MAAM,KAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,GAGnC,QAAO;WAEP,eAAe,KAAK,KAAK,GAAG,MAAM,MAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,IAGnC,QAAO;WACE,eAAe,KAAK,KAAK,GAAG,MAAM,IAE3C,QAAO;IAER,EAAE,CAAC;CAEN,MAAM,sBAAsB,aACzB,KAAK,aAAa;EACjB,MAAM,mBAAmB,CAAC,GAAG,UAAU;AAIvC,EAH0B,iBAAiB,QACxC,MAAM,EAAE,OAAO,SAAS,GAC1B,EACkB,SAChB,qBAAsB,iBAAiB,UAAU,IAAI,OAAO,QAC9D;AACD,eAAa,iBAAiB;IAEhC,CAAC,WAAW,aAAa,CAC1B;CAED,MAAM,sBAAsB,aACzB,YAAY,aAAa;AACxB,oBAAkB,WAAW;AAE7B,kBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM,qBAAqB;GAC3B,QAAQ;IACN,IAAI,UAAU,MAAM;IACpB,kBAAkB,WAAW,kBAAkB,SAAS,GAAG;IAC5D;GACF,CAAC;IAEJ;EAAC;EAAmB;EAAiB;EAAkB,CACxD;AAED,QAAO,UACL,oCAAC,qBAAiB,GAChB,WAAW,SACb,oCAAC,QAAK,WAAW,QAAQ,QACtB,UAAU,KAAK,aAAa;EAC3B,MAAM,OAAO,QAAQ,SAAS;EAC9B,MAAM,aAAa,cAAc,SAAS;AAC1C,SACE,0DACE,oCAAC;GAAI,WAAW,QAAQ;GAAM,KAAK,SAAS;KAC1C,oCAAC;GACC,IAAG;GACH,aAAY;GACZ,MAAK;GACL,SAAS,SAAS,WAAW,SAAS;GACtC;GACA,MAAK;GACL,WAAW,QAAQ,oBAAoB,KAAK,SAAS;GACrD,UAAU,SAAS;IACnB,EACF,oCAAC;GACC,IAAG;GACH,aAAY;GACZ,KAAK,SAAS;GACd;GACA,SAAS,SAAS;GAClB,eAAe;GACf;GACA,eAAe,oBAAoB,YAAY,SAAS;KAExD,oCAAC,oBACC,oCAAC,SAAI,OAAO,EAAE,SAAS,SAAS,IAC9B,oCAAC,cACC,OAAO;GAAE,YAAY;GAAU,UAAU;GAAU,IAElD,SAAS,QACC,CACT,EACN,oCAAC,cACC,OAAO;GACL,YAAY;GACZ,UAAU;GACV,YAAY;GACZ,OAAO;GACR,IAEA,IAAI,KAAK,SAAS,aAAa,CAAC,cAAc,CACpC,CACA,EACf,oCAAC,+BACC,oCAAC;GACC,QAAQ,eAAe,SAAS,aAAa;GAC7C,OAAO,eAAe,SAAS,aAAa;GAC5C,MACE,oCAAC;IACC,MAAM,MAAM;IACZ,MACE,MAAM,SAAS,UACX,qBAAqB,MAAM,QAAQ,GAAG,GACtC,gBAAgB,MAAM,QAAQ,GAAG;KAEvC;IAEJ,CACsB,CACjB,CACP,EACN,oCAAC,WAAQ,OAAO,EAAE,QAAQ,GAAG,GAAI,CAChC;GAEL,CACG,GAEP,oCAAC,kBAAW,0BAAoC"}
1
+ {"version":3,"file":"RemindersCard-CSJ8buYt.js","names":[],"sources":["../src/reminders/CompleteReminderSwitch.jsx","../src/reminders/RemindersCard.jsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Switch } from '@material-ui/core';\n\nexport const CompleteReminderSwitch = (props) => {\n const { checked, onChange, ...otherProps } = props;\n const [switchChecked, setSwitchChecked] = useState(checked);\n\n const handleOnChange = useCallback(\n (event) => {\n setSwitchChecked(event.target.checked);\n onChange && onChange(event);\n },\n [onChange]\n );\n\n return (\n <Switch checked={switchChecked} onChange={handleOnChange} {...otherProps} />\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Typography,\n LinearProgress,\n makeStyles,\n List,\n ListItem,\n Checkbox,\n ListItemText,\n ListItemSecondaryAction,\n Divider,\n FormControlLabel\n} from '@material-ui/core';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport { useActions } from '../hooks/useActions';\nimport { SplitScreenTypeEnums } from '../enums/unitySystemEnums';\nimport { CompleteReminderSwitch } from './CompleteReminderSwitch';\nimport { executeQueryWithParameters } from '../udp/utilities/methodUtils';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n item: {\n display: 'flex',\n '& .MuiListItem-container': {\n width: '100%'\n },\n '& .MuiListItem-container > .MuiListItem-button': {\n paddingLeft: 0,\n paddingRight: 0\n }\n }\n}));\n\nexport const RemindersCard = (props) => {\n const {\n reminders,\n setReminders,\n loading,\n getNodeToLoad,\n onLoadedNodeClick,\n getIcon = () => {},\n updateRemindersAcknowledgement\n } = props;\n const classes = useStyles(props);\n const { openSplitScreen } = useActions();\n\n const handleSwitchChange = useCallback(\n async (event, reminder) => {\n const updatedReminder = { ...reminder };\n updatedReminder.checked = event.target.checked;\n await updateRemindersAcknowledgement([updatedReminder]);\n },\n [updateRemindersAcknowledgement]\n );\n\n const getCompleteSwitch = useCallback(\n (reminder) => (\n <FormControlLabel\n control={\n <CompleteReminderSwitch\n size='small'\n checked={reminder?.acknowledged || false}\n onChange={(event) => handleSwitchChange(event, reminder)}\n />\n }\n label='Complete'\n style={{ marginRight: 8 }}\n />\n ),\n [handleSwitchChange]\n );\n\n const getStatusLabel = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return Math.floor((Date.now() - reminderDate) / (1000 * 3600 * 24));\n }\n }, []);\n\n const getStatusColor = useCallback((date) => {\n const day = 1000 * 60 * 60 * 24;\n const reminderDate = new Date(date).getTime();\n if (reminderDate >= Date.now() - day * 7) {\n // Less than or equal 7 days past reminder date\n return '';\n } else if (\n reminderDate < Date.now() - day * 7 &&\n reminderDate >= Date.now() - day * 30\n ) {\n // Greater than 7 days but less than or equal to 30 days past reminder date\n return 'info';\n } else if (\n reminderDate < Date.now() - day * 30 &&\n reminderDate >= Date.now() - day * 180\n ) {\n // Greater 30 days but less than or equal to 180 days past reminder date\n return 'warning';\n } else if (reminderDate < Date.now() - day * 180) {\n // Greater than 180 days past reminder date\n return 'error';\n }\n }, []);\n\n const handleReminderCheck = useCallback(\n (evt, reminder) => {\n const updatedReminders = [...reminders];\n const matchingReminders = updatedReminders.filter(\n (r) => r.id === reminder.id\n );\n matchingReminders?.forEach(\n (matchingReminder) => (matchingReminder.checked = evt.target.checked)\n );\n setReminders(updatedReminders);\n },\n [reminders, setReminders]\n );\n\n const handleReminderClick = useCallback(\n (nodeToLoad, reminder) => {\n onLoadedNodeClick(nodeToLoad);\n\n openSplitScreen({\n open: true,\n action: null,\n type: SplitScreenTypeEnums.Reminders,\n params: {\n id: reminder?.id || '',\n additionalInputs: reminder ? getCompleteSwitch(reminder) : null\n }\n });\n },\n [onLoadedNodeClick, openSplitScreen, getCompleteSwitch]\n );\n\n return loading ? (\n <LinearProgress />\n ) : reminders?.length ? (\n <List className={classes.root}>\n {reminders.map((reminder) => {\n const icon = getIcon(reminder);\n const nodeToLoad = getNodeToLoad(reminder);\n return (\n <>\n <div className={classes.item} key={reminder.id}>\n <Checkbox\n id='udpRecord-RemindersCard-Checkbox'\n udprecordid='udpRecord-RemindersCard-Checkbox'\n edge='start'\n checked={reminder.checked || reminder.acknowledged}\n disableRipple\n size='small'\n onChange={(evt) => handleReminderCheck(evt, reminder)}\n disabled={reminder.acknowledged}\n />\n <ListItem\n id='udpRecord-ReminderCard-Item'\n udprecordid='udpRecord-ReminderCard-Item'\n key={reminder.id}\n dense\n subject={reminder.subject}\n removePadding={true}\n button\n onClick={() => handleReminderClick(nodeToLoad, reminder)}\n >\n <ListItemText>\n <div style={{ display: 'block' }}>\n <Typography\n style={{ lineHeight: '0.9rem', fontSize: '0.8rem' }}\n >\n {reminder.subject}\n </Typography>\n </div>\n <Typography\n style={{\n lineHeight: '0.8rem',\n fontSize: '0.7rem',\n fontWeight: 400,\n color: 'rgba(0, 0, 0, 0.54)'\n }}\n >\n {new Date(reminder.reminderDate).toDateString()}\n </Typography>\n </ListItemText>\n <ListItemSecondaryAction>\n <StatusChip\n status={getStatusColor(reminder.reminderDate)}\n label={getStatusLabel(reminder.reminderDate)}\n icon={\n <UnityFluentIcon\n type={icon?.type}\n icon={\n icon?.type === 'unity'\n ? getUnityIconFromName(icon?.name || '')\n : getIconFromName(icon?.name || '')\n }\n />\n }\n />\n </ListItemSecondaryAction>\n </ListItem>\n </div>\n <Divider style={{ height: 1 }} />\n </>\n );\n })}\n </List>\n ) : (\n <Typography>All Reminders Completed</Typography>\n );\n};\n"],"mappings":";;;;;;;;;;AAGA,MAAa,0BAA0B,UAAU;CAC/C,MAAM,EAAE,SAAS,UAAU,GAAG,eAAe;CAC7C,MAAM,CAAC,eAAe,oBAAoB,SAAS,QAAQ;CAE3D,MAAM,iBAAiB,aACpB,UAAU;AACT,mBAAiB,MAAM,OAAO,QAAQ;AACtC,cAAY,SAAS,MAAM;IAE7B,CAAC,SAAS,CACX;AAED,QACE,oCAAC;EAAO,SAAS;EAAe,UAAU;EAAgB,GAAI;GAAc;;;;;ACMhF,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,MAAM;EACJ,SAAS;EACT,4BAA4B,EAC1B,OAAO,QACR;EACD,kDAAkD;GAChD,aAAa;GACb,cAAc;GACf;EACF;CACF,EAAE;AAEH,MAAa,iBAAiB,UAAU;CACtC,MAAM,EACJ,WACA,cACA,SACA,eACA,mBACA,gBAAgB,IAChB,mCACE;CACJ,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,oBAAoB,YAAY;CAExC,MAAM,qBAAqB,YACzB,OAAO,OAAO,aAAa;EACzB,MAAM,kBAAkB,EAAE,GAAG,UAAU;AACvC,kBAAgB,UAAU,MAAM,OAAO;AACvC,QAAM,+BAA+B,CAAC,gBAAgB,CAAC;IAEzD,CAAC,+BAA+B,CACjC;CAED,MAAM,oBAAoB,aACvB,aACC,oCAAC;EACC,SACE,oCAAC;GACC,MAAK;GACL,SAAS,UAAU,gBAAgB;GACnC,WAAW,UAAU,mBAAmB,OAAO,SAAS;IACxD;EAEJ,OAAM;EACN,OAAO,EAAE,aAAa,GAAG;GACzB,EAEJ,CAAC,mBAAmB,CACrB;CAED,MAAM,iBAAiB,aAAa,SAAS;EAC3C,MAAM,MAAM,MAAO,KAAK,KAAK;EAC7B,MAAM,eAAe,IAAI,KAAK,KAAK,CAAC,SAAS;AAC7C,MAAI,gBAAgB,KAAK,KAAK,GAAG,MAAM,EAErC,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;WAEnE,eAAe,KAAK,KAAK,GAAG,MAAM,KAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,GAGnC,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;WAEnE,eAAe,KAAK,KAAK,GAAG,MAAM,MAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,IAGnC,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;WAC1D,eAAe,KAAK,KAAK,GAAG,MAAM,IAE3C,QAAO,KAAK,OAAO,KAAK,KAAK,GAAG,iBAAiB,MAAO,OAAO,IAAI;IAEpE,EAAE,CAAC;CAEN,MAAM,iBAAiB,aAAa,SAAS;EAC3C,MAAM,MAAM,MAAO,KAAK,KAAK;EAC7B,MAAM,eAAe,IAAI,KAAK,KAAK,CAAC,SAAS;AAC7C,MAAI,gBAAgB,KAAK,KAAK,GAAG,MAAM,EAErC,QAAO;WAEP,eAAe,KAAK,KAAK,GAAG,MAAM,KAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,GAGnC,QAAO;WAEP,eAAe,KAAK,KAAK,GAAG,MAAM,MAClC,gBAAgB,KAAK,KAAK,GAAG,MAAM,IAGnC,QAAO;WACE,eAAe,KAAK,KAAK,GAAG,MAAM,IAE3C,QAAO;IAER,EAAE,CAAC;CAEN,MAAM,sBAAsB,aACzB,KAAK,aAAa;EACjB,MAAM,mBAAmB,CAAC,GAAG,UAAU;AAIvC,EAH0B,iBAAiB,QACxC,MAAM,EAAE,OAAO,SAAS,GAC1B,EACkB,SAChB,qBAAsB,iBAAiB,UAAU,IAAI,OAAO,QAC9D;AACD,eAAa,iBAAiB;IAEhC,CAAC,WAAW,aAAa,CAC1B;CAED,MAAM,sBAAsB,aACzB,YAAY,aAAa;AACxB,oBAAkB,WAAW;AAE7B,kBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM,qBAAqB;GAC3B,QAAQ;IACN,IAAI,UAAU,MAAM;IACpB,kBAAkB,WAAW,kBAAkB,SAAS,GAAG;IAC5D;GACF,CAAC;IAEJ;EAAC;EAAmB;EAAiB;EAAkB,CACxD;AAED,QAAO,UACL,oCAAC,qBAAiB,GAChB,WAAW,SACb,oCAAC,QAAK,WAAW,QAAQ,QACtB,UAAU,KAAK,aAAa;EAC3B,MAAM,OAAO,QAAQ,SAAS;EAC9B,MAAM,aAAa,cAAc,SAAS;AAC1C,SACE,0DACE,oCAAC;GAAI,WAAW,QAAQ;GAAM,KAAK,SAAS;KAC1C,oCAAC;GACC,IAAG;GACH,aAAY;GACZ,MAAK;GACL,SAAS,SAAS,WAAW,SAAS;GACtC;GACA,MAAK;GACL,WAAW,QAAQ,oBAAoB,KAAK,SAAS;GACrD,UAAU,SAAS;IACnB,EACF,oCAAC;GACC,IAAG;GACH,aAAY;GACZ,KAAK,SAAS;GACd;GACA,SAAS,SAAS;GAClB,eAAe;GACf;GACA,eAAe,oBAAoB,YAAY,SAAS;KAExD,oCAAC,oBACC,oCAAC,SAAI,OAAO,EAAE,SAAS,SAAS,IAC9B,oCAAC,cACC,OAAO;GAAE,YAAY;GAAU,UAAU;GAAU,IAElD,SAAS,QACC,CACT,EACN,oCAAC,cACC,OAAO;GACL,YAAY;GACZ,UAAU;GACV,YAAY;GACZ,OAAO;GACR,IAEA,IAAI,KAAK,SAAS,aAAa,CAAC,cAAc,CACpC,CACA,EACf,oCAAC,+BACC,oCAAC;GACC,QAAQ,eAAe,SAAS,aAAa;GAC7C,OAAO,eAAe,SAAS,aAAa;GAC5C,MACE,oCAAC;IACC,MAAM,MAAM;IACZ,MACE,MAAM,SAAS,UACX,qBAAqB,MAAM,QAAQ,GAAG,GACtC,gBAAgB,MAAM,QAAQ,GAAG;KAEvC;IAEJ,CACsB,CACjB,CACP,EACN,oCAAC,WAAQ,OAAO,EAAE,QAAQ,GAAG,GAAI,CAChC;GAEL,CACG,GAEP,oCAAC,kBAAW,0BAAoC"}
@@ -7,12 +7,12 @@ import { L as UdpEnums } from "./unitySystemEnums-e5F9Jr7m.js";
7
7
  import { r as useActionStore } from "./inquiryStore-BMYKf5MP.js";
8
8
  import { n as useShellStore } from "./shellStore-C8zfPsZ-.js";
9
9
  import { t as useActionState } from "./useActions-BWBXokgQ.js";
10
- import { r as getSearchObject } from "./SearchUtilities-CNz302LN.js";
11
- import { r as constructBusinessObjectArrFromTree } from "./TreeUtilities-kiPupulY.js";
10
+ import { r as getSearchObject } from "./SearchUtilities-B1TCyppF.js";
11
+ import { r as constructBusinessObjectArrFromTree } from "./TreeUtilities-VCy2z4Qv.js";
12
12
  import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
13
13
  import { t as CkRichEditor } from "./CkRichEditor-CoP_h6jt.js";
14
14
  import { a as getBaseMethod, i as executeQueryWithParameters, t as executeQueryAdHoc } from "./methodUtils-CDx9usdO.js";
15
- import { t as ShortcutContentFinder } from "./ShortcutContentFinder-B66kZQLM.js";
15
+ import { t as ShortcutContentFinder } from "./ShortcutContentFinder-DTkqEgtI.js";
16
16
  import { t as AmbientCard } from "./AmbientCard-CLW4bPCu.js";
17
17
  import { t as FluentDatePicker } from "./FluentDatePicker-C6WEywwM.js";
18
18
  import { t as FILE_TO_TYPES } from "./reminderConstants-IPyFwGAf.js";
@@ -437,4 +437,4 @@ const RemindersScreen = (props) => {
437
437
 
438
438
  //#endregion
439
439
  export { RemindersScreen as t };
440
- //# sourceMappingURL=RemindersScreen-Cg6_SGJI.js.map
440
+ //# sourceMappingURL=RemindersScreen-CyT18piP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemindersScreen-Cg6_SGJI.js","names":["reminder","existingReminderObj"],"sources":["../src/reminders/RemindersScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { FluentDatePicker } from '../UI/inputs/pickers/FluentDatePicker';\nimport { useActionStore } from '../stores/actionStore';\nimport { FILE_TO_TYPES } from '../constants/reminderConstants';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const RemindersScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadReminders\n } = props;\n const [reminder, setReminder] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [reminderId, setReminderId] = useState(id || '');\n const [existingReminderFiledFor, setExistingReminderFiledFor] = useState([]);\n const [existingReminderObj, setExistingReminderObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n const selectedNode = useActionStore((state) => state.selectedNode);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const reminderGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveReminder = useCallback(\n async (values) => {\n let response = null;\n const reminderDate = new Date(values?.reminderDate?.setHours(0, 0, 0, 0));\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.reminder,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`,\n reminderDate: reminderDate.toDateString()\n }\n };\n if (reminderId) {\n if (updateReminderApiMethod) {\n // Set the url parameter for updating reminder\n data['{iD}'] = reminderId;\n response = await executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Reminder'));\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n } else {\n if (createReminderApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Reminder'));\n } else {\n handleErrorSnackbar(null, 'Create Reminder Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!reminderId) {\n setReminderId(response.data.id || '');\n handleSuccessSnackbar('Reminder Saved');\n } else {\n handleSuccessSnackbar('Reminder Updated');\n }\n if (reloadReminders) {\n reloadReminders();\n }\n return response.data.id || reminderId;\n }\n\n return reminderId;\n },\n [\n createReminderApiMethod,\n updateReminderApiMethod,\n reminderId,\n setReminderId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadReminders\n ]\n );\n\n const reminderFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleReminderFiledFor = useCallback(\n async (values, reminderdIdToFileFor) => {\n // Get the reminderFiledFor objects to delete\n const reminderFiledForToDelete = differenceWith(\n existingReminderFiledFor,\n values?.fileTo,\n reminderFiledForToComparator\n );\n\n // Get the reminderFiledFor objects to create\n const reminderFiledForToCreate = differenceWith(\n values?.fileTo,\n existingReminderFiledFor,\n reminderFiledForToComparator\n );\n\n if (reminderdIdToFileFor) {\n if (deleteReminderFiledForApiMethod) {\n const deletedPromises = [];\n reminderFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Reminder Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Reminder Filed For Method Not Promoted'\n );\n }\n\n if (createReminderFiledForApiMethod) {\n const createdPromises = [];\n reminderFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftc.value,\n domainObject: nftc.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor =\n reminderFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Reminder Filed For Method Not Promoted'\n );\n }\n\n if (updateReminderFiledForApiMethod) {\n const updatedPromises = [];\n values?.fileTo?.forEach((nftu) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftu.value,\n domainObject: nftu.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftu.value;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor = values?.fileTo?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not updated for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Update Reminder Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createReminderFiledForApiMethod,\n updateReminderFiledForApiMethod,\n deleteReminderFiledForApiMethod,\n handleErrorSnackbar,\n existingReminderFiledFor,\n setExistingReminderFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ reminder, ...values });\n } else {\n const reminderdIdToFileFor = await handleSaveReminder({\n reminder,\n ...values\n });\n await handleReminderFiledFor(\n { reminder, ...values },\n reminderdIdToFileFor\n );\n }\n },\n [reminder, onSubmit, handleSaveReminder, handleReminderFiledFor]\n );\n\n const handleTextEditorChange = (reminder) => {\n setReminder(reminder);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n formRef?.current?.form?.change(\n 'reminderDate',\n value.reminderDate === '0001-01-01T00:00:00'\n ? new Date()\n : new Date(value.reminderDate)\n );\n setReminder(value?.content || '');\n },\n [setReminder, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setReminder(editorRef?.current?.getData());\n },\n [editorRef, setReminder]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTypes\n const getTypeOptions = async () => {\n let options = [];\n if (reminderTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n reminderTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList || [];\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [reminderTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (reminderTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n reminderTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList || [];\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [reminderTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingReminder = async () => {\n let existingReminderObj = null;\n const data = {};\n if (reminderGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const reminderResponse = await executeQueryWithParameters(\n { data },\n reminderGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (reminderResponse?.status === 200) {\n existingReminderObj = reminderResponse.data;\n }\n }\n setExistingReminderObj(existingReminderObj);\n setReminder(existingReminderObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingReminder();\n }\n }, [id, reminderGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingReminderObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingReminderObj.reminderFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingReminderFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingReminderObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingReminderObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingReminderObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n formRef?.current?.form?.change(\n 'subject',\n existingReminderObj?.subject || ''\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj?.reminderDate) {\n return;\n }\n formRef?.current?.form?.change(\n 'reminderDate',\n new Date(existingReminderObj.reminderDate)\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n const matchingReminderFiledFor = existingReminderObj.reminderFiledFor?.find(\n (rff) =>\n rff.domainObject === selectedNode?.properties?.catalogReturnObject\n );\n const initialFileToType = FILE_TO_TYPES.find(\n (option) => option.value === matchingReminderFiledFor?.type\n );\n formRef?.current?.form?.change('fileToType', initialFileToType || null);\n }, [existingReminderObj, typeOptions, formRef, selectedNode]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To Type')}\n name='fileToType'\n id='fileToType'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={FILE_TO_TYPES || []}\n optionKey={'label'}\n required={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={FluentDatePicker}\n label={t('Reminder Date')}\n name='reminderDate'\n id='reminderDate'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n />\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={reminder}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"RemindersScreen-CyT18piP.js","names":["reminder","existingReminderObj"],"sources":["../src/reminders/RemindersScreen.jsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { CkRichEditor } from '../UI/inputs/richEditors/CkRichEditor';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash';\nimport {\n executeQueryAdHoc,\n getBaseMethod,\n executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { FluentDatePicker } from '../UI/inputs/pickers/FluentDatePicker';\nimport { useActionStore } from '../stores/actionStore';\nimport { FILE_TO_TYPES } from '../constants/reminderConstants';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n editor: {\n '& .ck-editor__main > .ck-editor__editable_inline': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[100]\n }\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n input: {\n height: 34,\n padding: 0\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}));\n\nexport const RemindersScreen = (props) => {\n const {\n formRef,\n onSubmit,\n shortcutContentFinderEnabled,\n id,\n viewOnly,\n reloadReminders\n } = props;\n const [reminder, setReminder] = useState('');\n const [typeOptions, setTypeOptions] = useState([]);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [reminderId, setReminderId] = useState(id || '');\n const [existingReminderFiledFor, setExistingReminderFiledFor] = useState([]);\n const [existingReminderObj, setExistingReminderObj] = useState(null);\n const [loading, setLoading] = useState(false);\n const classes = useStyles(props);\n const { t } = useTranslation();\n const actionState = useActionState();\n const shellHidden = useShellStore((state) => state.shellHidden);\n const { menuListState, catalogPromotedEntities } = actionState;\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const user = useUser();\n const editorRef = useRef(null);\n const selectedNode = useActionStore((state) => state.selectedNode);\n\n const selectedMenu = useMemo(() => {\n if (menuListState.menuList.length) {\n return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n }\n return null;\n }, [menuListState]);\n\n const reminderGetFullApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseGetFullMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTypeSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Type,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const reminderTemplateSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Template,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const createReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseCreateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const deleteReminderFiledForApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseDeleteMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const disabled = useMemo(() => {\n return viewOnly;\n }, [viewOnly]);\n\n const handleSaveReminder = useCallback(\n async (values) => {\n let response = null;\n const reminderDate = new Date(values?.reminderDate?.setHours(0, 0, 0, 0));\n const data = {\n requestBody: {\n tenantId: user?.currentTenantId,\n typeCode: values?.type?.code,\n subject: values?.subject,\n content: values?.reminder,\n unityUserId: user?.id,\n userDisplayName: `${user?.firstName} ${user?.familyName}`,\n reminderDate: reminderDate.toDateString()\n }\n };\n if (reminderId) {\n if (updateReminderApiMethod) {\n // Set the url parameter for updating reminder\n data['{iD}'] = reminderId;\n response = await executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Update Reminder'));\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n } else {\n if (createReminderApiMethod) {\n response = await executeQueryWithParameters(\n { data },\n createReminderApiMethod.apiMethodId\n ).catch((e) => handleErrorSnackbar(e, 'Could not Save Reminder'));\n } else {\n handleErrorSnackbar(null, 'Create Reminder Method Not Promoted');\n }\n }\n\n if (response?.status === 200) {\n if (!reminderId) {\n setReminderId(response.data.id || '');\n handleSuccessSnackbar('Reminder Saved');\n } else {\n handleSuccessSnackbar('Reminder Updated');\n }\n if (reloadReminders) {\n reloadReminders();\n }\n return response.data.id || reminderId;\n }\n\n return reminderId;\n },\n [\n createReminderApiMethod,\n updateReminderApiMethod,\n reminderId,\n setReminderId,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n user,\n reloadReminders\n ]\n );\n\n const reminderFiledForToComparator = (nftc1, nftc2) => {\n return nftc1?.value === nftc2?.value;\n };\n\n const handleReminderFiledFor = useCallback(\n async (values, reminderdIdToFileFor) => {\n // Get the reminderFiledFor objects to delete\n const reminderFiledForToDelete = differenceWith(\n existingReminderFiledFor,\n values?.fileTo,\n reminderFiledForToComparator\n );\n\n // Get the reminderFiledFor objects to create\n const reminderFiledForToCreate = differenceWith(\n values?.fileTo,\n existingReminderFiledFor,\n reminderFiledForToComparator\n );\n\n if (reminderdIdToFileFor) {\n if (deleteReminderFiledForApiMethod) {\n const deletedPromises = [];\n reminderFiledForToDelete.forEach((nftd) => {\n const data = {};\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftd.value;\n\n deletedPromises.push(\n executeQueryWithParameters(\n { data },\n deleteReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n\n await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n if (responses.length !== deletedPromises.length) {\n console.warn(`Not all Reminder Filed For deleted`);\n }\n }\n );\n } else {\n handleErrorSnackbar(\n null,\n 'Delete Reminder Filed For Method Not Promoted'\n );\n }\n\n if (createReminderFiledForApiMethod) {\n const createdPromises = [];\n reminderFiledForToCreate.forEach((nftc) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftc.value,\n domainObject: nftc.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n createdPromises.push(\n executeQueryWithParameters(\n { data },\n createReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor =\n reminderFiledForToCreate.find(\n (nftc) => nftc.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not created for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Create Reminder Filed For Method Not Promoted'\n );\n }\n\n if (updateReminderFiledForApiMethod) {\n const updatedPromises = [];\n values?.fileTo?.forEach((nftu) => {\n const data = {\n requestBody: {\n reminderId: reminderdIdToFileFor,\n entityBusinessKey: nftu.value,\n domainObject: nftu.domainObject,\n type: values?.fileToType?.value || 1\n }\n };\n data['{reminderID}'] = reminderdIdToFileFor;\n data['{entityBusinessKey}'] = nftu.value;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderFiledForApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminderFiledFor = values?.fileTo?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminderFiledFor) {\n console.warn(\n `Reminder Filed For not updated for all file to entities`\n );\n }\n }\n });\n }\n );\n setExistingReminderFiledFor(values?.fileTo);\n } else {\n handleErrorSnackbar(\n null,\n 'Update Reminder Filed For Method Not Promoted'\n );\n }\n }\n },\n [\n createReminderFiledForApiMethod,\n updateReminderFiledForApiMethod,\n deleteReminderFiledForApiMethod,\n handleErrorSnackbar,\n existingReminderFiledFor,\n setExistingReminderFiledFor\n ]\n );\n\n const handleOnSubmit = useCallback(\n async (values) => {\n if (onSubmit) {\n onSubmit({ reminder, ...values });\n } else {\n const reminderdIdToFileFor = await handleSaveReminder({\n reminder,\n ...values\n });\n await handleReminderFiledFor(\n { reminder, ...values },\n reminderdIdToFileFor\n );\n }\n },\n [reminder, onSubmit, handleSaveReminder, handleReminderFiledFor]\n );\n\n const handleTextEditorChange = (reminder) => {\n setReminder(reminder);\n };\n\n const onTemplateChange = useCallback(\n (value) => {\n formRef?.current?.form?.change('subject', value?.subject || '');\n const type = typeOptions.find((option) => option.code === value.typeCode);\n formRef?.current?.form?.change('type', type || null);\n formRef?.current?.form?.change(\n 'reminderDate',\n value.reminderDate === '0001-01-01T00:00:00'\n ? new Date()\n : new Date(value.reminderDate)\n );\n setReminder(value?.content || '');\n },\n [setReminder, formRef, typeOptions]\n );\n\n const handleShortcutOnSelect = useCallback(\n (shortcutContent) => {\n editorRef?.current?.model?.change((writer) => {\n const insertPosition =\n editorRef?.current?.model?.document?.selection?.getFirstPosition();\n writer.remove(\n editorRef?.current?.model?.document?.selection?.getFirstRange()\n );\n writer.insertText(shortcutContent, insertPosition);\n });\n\n setReminder(editorRef?.current?.getData());\n },\n [editorRef, setReminder]\n );\n\n const fileToOptions = useMemo(() => {\n let options = [];\n if (selectedMenu) {\n options = constructBusinessObjectArrFromTree(selectedMenu);\n }\n return options;\n }, [selectedMenu]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTypes\n const getTypeOptions = async () => {\n let options = [];\n if (reminderTypeSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const typesResponse = await executeQueryAdHoc(\n data,\n reminderTypeSearchApiMethod.apiMethodId\n );\n if (typesResponse?.status === 200) {\n options = typesResponse.data?.pageList || [];\n }\n }\n setTypeOptions(options);\n };\n getTypeOptions();\n }, [reminderTypeSearchApiMethod, setTypeOptions, user]);\n\n useEffect(() => {\n // TODO: update to use getAll reminderTemplates\n const getTemplateOptions = async () => {\n let options = [];\n if (reminderTemplateSearchApiMethod) {\n const filterElements = [];\n const searchObject = getSearchObject(filterElements, 1, 200, true);\n const data = { data: searchObject };\n const templatesResponse = await executeQueryAdHoc(\n data,\n reminderTemplateSearchApiMethod.apiMethodId\n );\n if (templatesResponse?.status === 200) {\n options = templatesResponse.data?.pageList || [];\n }\n }\n setTemplateOptions(options);\n };\n getTemplateOptions();\n }, [reminderTemplateSearchApiMethod, setTemplateOptions, user]);\n\n useEffect(() => {\n const getExistingReminder = async () => {\n let existingReminderObj = null;\n const data = {};\n if (reminderGetFullApiMethod) {\n setLoading(true);\n data['{iD}'] = id;\n const reminderResponse = await executeQueryWithParameters(\n { data },\n reminderGetFullApiMethod.apiMethodId\n ).catch((e) => {\n console.error(e);\n setLoading(false);\n });\n if (reminderResponse?.status === 200) {\n existingReminderObj = reminderResponse.data;\n }\n }\n setExistingReminderObj(existingReminderObj);\n setReminder(existingReminderObj?.content);\n setLoading(false);\n };\n if (id) {\n getExistingReminder();\n }\n }, [id, reminderGetFullApiMethod]);\n\n useEffect(() => {\n if (!existingReminderObj || !fileToOptions?.length) {\n return;\n }\n const initialFileTos = fileToOptions.filter((option) => {\n return existingReminderObj.reminderFiledFor.find(\n (nff) => option.value === nff.entityBusinessKey\n );\n });\n setExistingReminderFiledFor(initialFileTos);\n formRef?.current?.form?.change('fileTo', initialFileTos);\n }, [existingReminderObj, fileToOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj || !typeOptions?.length) {\n return;\n }\n const initialType = typeOptions.find(\n (option) => option.code === existingReminderObj.typeCode\n );\n formRef?.current?.form?.change('type', initialType || null);\n }, [existingReminderObj, typeOptions, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n formRef?.current?.form?.change(\n 'subject',\n existingReminderObj?.subject || ''\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj?.reminderDate) {\n return;\n }\n formRef?.current?.form?.change(\n 'reminderDate',\n new Date(existingReminderObj.reminderDate)\n );\n }, [existingReminderObj, formRef]);\n\n useEffect(() => {\n if (!existingReminderObj) {\n return;\n }\n const matchingReminderFiledFor = existingReminderObj.reminderFiledFor?.find(\n (rff) =>\n rff.domainObject === selectedNode?.properties?.catalogReturnObject\n );\n const initialFileToType = FILE_TO_TYPES.find(\n (option) => option.value === matchingReminderFiledFor?.type\n );\n formRef?.current?.form?.change('fileToType', initialFileToType || null);\n }, [existingReminderObj, typeOptions, formRef, selectedNode]);\n\n return (\n <div className={classes.root}>\n {loading && <LinearProgress color='secondary' />}\n <AmbientCard fullWidth={true} header={true}>\n <Form onSubmit={handleOnSubmit} ref={formRef}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To')}\n name='fileTo'\n id='fileTo'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={fileToOptions || []}\n optionKey={'label'}\n required={true}\n limitTags={!viewOnly ? 2 : -1}\n isMultiple={true}\n disabled={disabled}\n />\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('File To Type')}\n name='fileToType'\n id='fileToType'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={FILE_TO_TYPES || []}\n optionKey={'label'}\n required={true}\n disabled={disabled}\n />\n <div className={classes.row}>\n <div style={{ width: '100%' }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Type')}\n name='type'\n id='type'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={typeOptions || []}\n optionKey={'name'}\n required={true}\n disabled={disabled}\n />\n </div>\n {!viewOnly && (\n <div style={{ width: '100%', marginLeft: 8 }}>\n <Field\n component={FluentTextFieldAutoComplete}\n label={t('Template')}\n name='template'\n id='template'\n fullWidth\n variant='outlined'\n margin='dense'\n size='small'\n options={templateOptions || []}\n optionKey={'name'}\n additionalOnChangeAction={onTemplateChange}\n />\n </div>\n )}\n </div>\n <Field\n component={FluentDatePicker}\n label={t('Reminder Date')}\n name='reminderDate'\n id='reminderDate'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n />\n <Field\n component={TextField}\n label={t('Subject')}\n name='subject'\n id='subject'\n fullWidth\n variant='outlined'\n size='small'\n margin='dense'\n required\n disabled={disabled}\n InputProps={{\n classes: {\n root: classes?.input,\n input: classes?.formTextInput\n }\n }}\n InputLabelProps={{\n classes: {\n root: classes?.labelRoot\n }\n }}\n />\n <LayoutUnit unit='nudge' />\n <CkRichEditor\n handleChange={handleTextEditorChange}\n classes={{ editor: classes.editor }}\n data={reminder}\n editorRef={editorRef}\n isUsingRef={true}\n readOnly={disabled}\n />\n </Form>\n </AmbientCard>\n <LayoutUnit unit='nudge' />\n {shortcutContentFinderEnabled && (\n <AmbientCard\n fullWidth={true}\n header={true}\n lastChildBottomPadding={'0px'}\n cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n >\n <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n </AmbientCard>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -5,10 +5,10 @@ import { t as useUser } from "./useUser-wpHGo6jU.js";
5
5
  import { t as FluentIconButton } from "./FluentIconButton-Dc95mE3v.js";
6
6
  import { L as UdpEnums, f as LogicalSearchOperatorEnums, z as UdpReminderFiledForType } from "./unitySystemEnums-e5F9Jr7m.js";
7
7
  import { t as useActionState } from "./useActions-BWBXokgQ.js";
8
- import { n as getSearchIdentifiers, r as getSearchObject } from "./SearchUtilities-CNz302LN.js";
8
+ import { n as getSearchIdentifiers, r as getSearchObject } from "./SearchUtilities-B1TCyppF.js";
9
9
  import { a as getBaseMethod, i as executeQueryWithParameters, t as executeQueryAdHoc } from "./methodUtils-CDx9usdO.js";
10
10
  import { t as WidgetCard_default } from "./WidgetCard-U1XoSuoz.js";
11
- import { t as RemindersCard } from "./RemindersCard-rF51zmWF.js";
11
+ import { t as RemindersCard } from "./RemindersCard-CSJ8buYt.js";
12
12
  import React, { forwardRef, useCallback, useEffect, useMemo, useState } from "react";
13
13
  import { CircularProgress, FormControlLabel, Switch, makeStyles } from "@material-ui/core";
14
14
  import { SortIcon } from "@fluentui/react-icons";
@@ -335,4 +335,4 @@ var RemindersWidget_exports = /* @__PURE__ */ __export({
335
335
 
336
336
  //#endregion
337
337
  export { RemindersWidget as n, RemindersWidget_default as r, RemindersWidget_exports as t };
338
- //# sourceMappingURL=RemindersWidget-BcLn4sdk.js.map
338
+ //# sourceMappingURL=RemindersWidget-B3qlh8K-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemindersWidget-BcLn4sdk.js","names":["uuid","reminders","WidgetCard"],"sources":["../src/UI/widgets/library/RemindersWidget/RemindersWidget.jsx","../src/UI/widgets/library/RemindersWidget/index.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RemindersCard } from '../../../../reminders/RemindersCard';\nimport { FluentButton } from '../../../inputs/buttons/FluentButton';\nimport {\n CircularProgress,\n makeStyles,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../../utilities/auth/useUser';\nimport {\n getSearchIdentifiers,\n getSearchObject\n} from '../../../../utilities/search/SearchUtilities';\nimport {\n executeQueryAdHoc,\n executeQueryWithParameters,\n getBaseMethod\n} from '../../../../udp/utilities/methodUtils';\nimport {\n LogicalSearchOperatorEnums,\n UdpEnums,\n UdpReminderFiledForType\n} from '../../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { FluentIconButton } from '../../../inputs/buttons/FluentIconButton';\nimport { SortIcon } from '@fluentui/react-icons';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'flex-end'\n },\n actionButton: {\n marginRight: theme.spacing(0.25),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const RemindersWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const { onLoadedNodeClick, hideWidgetName, tree, catalogObjects } = params;\n\n const [sortDirection, setSortDirection] = useState(null);\n const [reminders, setReminders] = useState(null);\n const [loading, setLoading] = useState(false);\n const [allRemindersRequested, setAllRemindersRequested] = useState(false);\n const [buttonProgress, setButtonProgress] = useState(false);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const classes = useStyles(props);\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const currentSortDirection = useMemo(() => {\n if (sortDirection === 'asc') {\n return 'desc';\n } else if (sortDirection === 'desc') {\n return 'asc';\n } else {\n return null;\n }\n }, [sortDirection]);\n\n const getNodeToLoad = useCallback(\n (reminder) => {\n const nodeToLoad = {};\n const domainObject = reminder?.domainObject;\n const entityBusinessKey = reminder?.entityBusinessKey || '';\n let treeStructureId = '';\n let apiMethodId = '';\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n\n if (matchingNode) {\n treeStructureId = matchingNode.id;\n if (!matchingNode.parentId) {\n apiMethodId = tree.apiMethodInstance.apiMethodId;\n } else {\n const associatedInquiryTree =\n matchingNode.properties?.associatedInquiryTree;\n if (associatedInquiryTree) {\n apiMethodId =\n associatedInquiryTree.apiMethodInstance?.apiMethodId || '';\n }\n }\n }\n nodeToLoad.apiMethodId = apiMethodId;\n\n const searchIdentifiers = getSearchIdentifiers(\n catalogObjects,\n domainObject\n );\n const filterElements = [];\n const searchValue = entityBusinessKey.split('|')?.[1];\n const values = searchValue.split(',');\n\n searchIdentifiers.forEach((searchIdentifier, index) => {\n const searchField = searchIdentifier\n ? searchIdentifier.charAt(0).toUpperCase() + searchIdentifier.slice(1)\n : '';\n filterElements.push({\n searchField: searchField,\n searchOperator: '=',\n searchValue: values[index]\n });\n });\n\n nodeToLoad.queryPayload = getSearchObject(\n filterElements,\n 1,\n 50,\n true,\n LogicalSearchOperatorEnums.And\n );\n\n nodeToLoad.nodeDetails = {\n catalogReturnObject: domainObject,\n treeStructureId: treeStructureId\n };\n\n return nodeToLoad;\n },\n [tree, catalogObjects]\n );\n\n const getIcon = useCallback(\n (reminder) => {\n const domainObject = reminder?.domainObject;\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n return matchingNode?.properties?.defaultIcon || {};\n },\n [tree]\n );\n\n const sortByDate = useCallback((reminderList, direction) => {\n const sortedReminders = [...reminderList];\n if (direction === 'asc') {\n sortedReminders.sort(\n (a, b) => new Date(b.reminderDate) - new Date(a.reminderDate)\n );\n } else if (direction === 'desc') {\n sortedReminders.sort(\n (a, b) => new Date(a.reminderDate) - new Date(b.reminderDate)\n );\n }\n setReminders(sortedReminders);\n }, []);\n\n const sort = useCallback(() => {\n sortByDate(reminders, sortDirection || 'desc');\n if (sortDirection === 'desc' || !sortDirection) {\n setSortDirection('asc');\n } else if (sortDirection === 'asc') {\n setSortDirection('desc');\n }\n }, [reminders, sortByDate, sortDirection]);\n\n const getReminders = useCallback(\n async (allRequested = false, rffSearchApiMethod) => {\n let remindersList = [];\n const warnings = [];\n\n if (!reminders) {\n setLoading(true);\n }\n\n let filterElements = [\n {\n searchField: 'Reminder.Acknowledged',\n searchValue: false,\n searchOperator: '=',\n groupId: 1\n },\n {\n searchField: 'Reminder.ReminderDate',\n searchValue: new Date(),\n searchOperator: '<=',\n groupId: 1\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n let filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: null\n },\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n\n if (allRequested) {\n filterElements = [\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n filterGroups = [\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n }\n\n const searchObject = getSearchObject(\n filterElements,\n 1,\n 200,\n true,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n const data = { data: searchObject };\n\n if (rffSearchApiMethod) {\n if (!rffSearchApiMethod.apiMethodId) {\n warnings.push({\n id: uuid(),\n severity: 'warning',\n message: t('Search ReminderFiledFor Method Not Promoted')\n });\n } else {\n const response = await executeQueryAdHoc(\n data,\n rffSearchApiMethod.apiMethodId\n ).catch((e) => {\n setLoading(false);\n });\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n domainObject: item.domainObject,\n filedToType: item.type,\n entityBusinessKey: item.entityBusinessKey\n }));\n }\n } else {\n warnings.push({\n id: uuid(),\n severity: 'error',\n message: t('Could not retrieve reminders')\n });\n }\n }\n }\n // Filter for reminders that belong to any of the domains within the tree\n const treeDomains = tree?.treeStructure.map(\n (node) => node.properties?.catalogReturnObject\n );\n if (treeDomains.length) {\n remindersList = remindersList.filter((reminder) =>\n treeDomains.includes(reminder.domainObject)\n );\n } else {\n remindersList = [];\n }\n setAlertWarnings(warnings);\n setLoading(false);\n sortByDate(remindersList, currentSortDirection);\n },\n [t, user, reminders, sortByDate, currentSortDirection, tree]\n );\n\n const updateRemindersAcknowledgement = useCallback(\n async (reminders) => {\n if (updateReminderApiMethod) {\n const updatedPromises = [];\n reminders.forEach((reminder) => {\n reminder.acknowledged = reminder.checked;\n const data = {\n requestBody: {\n ...reminder\n }\n };\n data['{iD}'] = reminder.id;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminder = reminders?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminder) {\n console.warn(`Reminder not updated for all file to entities`);\n }\n }\n });\n }\n );\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n },\n [updateReminderApiMethod, handleErrorSnackbar]\n );\n\n const handleAcknowledgeClick = useCallback(async () => {\n const acknowledgedReminders = reminders?.filter((r) => r.checked);\n if (acknowledgedReminders.length) {\n setButtonProgress(true);\n await updateRemindersAcknowledgement(acknowledgedReminders);\n setButtonProgress(false);\n getReminders(allRemindersRequested, reminderFiledForSearchApiMethod);\n }\n }, [\n reminders,\n getReminders,\n updateRemindersAcknowledgement,\n allRemindersRequested,\n reminderFiledForSearchApiMethod\n ]);\n\n const handleSwitchChange = useCallback(\n async (event) => {\n setLoading(true);\n if (event.target.checked) {\n setAllRemindersRequested(event.target.checked);\n await getReminders(true, reminderFiledForSearchApiMethod);\n } else {\n setAllRemindersRequested(false);\n await getReminders(false, reminderFiledForSearchApiMethod);\n }\n setLoading(false);\n },\n [getReminders, reminderFiledForSearchApiMethod]\n );\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n if (reminderFiledForSearchApiMethod) {\n getReminders(false, reminderFiledForSearchApiMethod);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reminderFiledForSearchApiMethod]);\n\n return (\n <WidgetCard\n ref={ref}\n // title={'Reminders'}\n hideWidgetName={hideWidgetName}\n headerActions={\n <div className={classes.actions}>\n <FormControlLabel\n control={\n <Switch\n id='udpRecord-RemindersWidget-Switch'\n udprecordid='udpRecord-RemindersWidget-Switch'\n size='small'\n onChange={handleSwitchChange}\n />\n }\n label='All'\n style={{ marginRight: 8 }}\n />\n <FluentIconButton\n id='udpRecord-RemindersWidget-Sort'\n udprecordid='udpRecord-RemindersWidget-Sort'\n icon={SortIcon}\n onClick={sort}\n style={{ marginRight: 4 }}\n />\n <div className={classes.actionButton}>\n <FluentButton\n id='udpRecord-RemindersWidget-Complete'\n udprecordid='udpRecord-RemindersWidget-Complete'\n variant='contained'\n color='secondary'\n onClick={handleAcknowledgeClick}\n >\n {buttonProgress && (\n <CircularProgress\n size={24}\n color='primary'\n className={classes.fabProgress}\n />\n )}\n {t('Complete')}\n </FluentButton>\n </div>\n </div>\n }\n {...other}\n >\n {alertWarnings.length ? (\n alertWarnings.map((warning) => (\n <Alert severity={warning.severity || 'warning'}>\n {warning.message || ''}\n </Alert>\n ))\n ) : (\n <RemindersCard\n reminders={reminders}\n setReminders={setReminders}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n getNodeToLoad={getNodeToLoad}\n getIcon={getIcon}\n updateRemindersAcknowledgement={updateRemindersAcknowledgement}\n />\n )}\n\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RemindersWidget);\n","export * from './RemindersWidget';\nexport {default} from './RemindersWidget';\n"],"mappings":"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"}
1
+ {"version":3,"file":"RemindersWidget-B3qlh8K-.js","names":["uuid","reminders","WidgetCard"],"sources":["../src/UI/widgets/library/RemindersWidget/RemindersWidget.jsx","../src/UI/widgets/library/RemindersWidget/index.ts"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport WidgetCard from '../../WidgetCard';\nimport { RemindersCard } from '../../../../reminders/RemindersCard';\nimport { FluentButton } from '../../../inputs/buttons/FluentButton';\nimport {\n CircularProgress,\n makeStyles,\n FormControlLabel,\n Switch\n} from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../../utilities/auth/useUser';\nimport {\n getSearchIdentifiers,\n getSearchObject\n} from '../../../../utilities/search/SearchUtilities';\nimport {\n executeQueryAdHoc,\n executeQueryWithParameters,\n getBaseMethod\n} from '../../../../udp/utilities/methodUtils';\nimport {\n LogicalSearchOperatorEnums,\n UdpEnums,\n UdpReminderFiledForType\n} from '../../../../enums/unitySystemEnums';\nimport { useActionState } from '../../../../hooks/useActions';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { FluentIconButton } from '../../../inputs/buttons/FluentIconButton';\nimport { SortIcon } from '@fluentui/react-icons';\nimport { Alert } from '@material-ui/lab';\nimport { v4 as uuid } from 'uuid';\n\n// export const layout = {\n// w: { default: 2, min: 0, max: 4 },\n// h: { default: 2, min: 0, max: 4 }\n// };\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'flex-end'\n },\n actionButton: {\n marginRight: theme.spacing(0.25),\n position: 'relative'\n },\n fabProgress: {\n position: 'absolute',\n top: 4,\n left: '35%',\n zIndex: 1\n }\n}));\n\nexport const RemindersWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props;\n const { onLoadedNodeClick, hideWidgetName, tree, catalogObjects } = params;\n\n const [sortDirection, setSortDirection] = useState(null);\n const [reminders, setReminders] = useState(null);\n const [loading, setLoading] = useState(false);\n const [allRemindersRequested, setAllRemindersRequested] = useState(false);\n const [buttonProgress, setButtonProgress] = useState(false);\n const [alertWarnings, setAlertWarnings] = useState([]);\n\n const classes = useStyles(props);\n const actionState = useActionState();\n const { catalogPromotedEntities } = actionState;\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const user = useUser();\n\n const reminderFiledForSearchApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder_Filed_For,\n 'unityBaseSearchMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const updateReminderApiMethod = useMemo(() => {\n return getBaseMethod(\n UdpEnums.Udp_Reminder,\n 'unityBaseUpdateMethod',\n catalogPromotedEntities\n );\n }, [catalogPromotedEntities]);\n\n const currentSortDirection = useMemo(() => {\n if (sortDirection === 'asc') {\n return 'desc';\n } else if (sortDirection === 'desc') {\n return 'asc';\n } else {\n return null;\n }\n }, [sortDirection]);\n\n const getNodeToLoad = useCallback(\n (reminder) => {\n const nodeToLoad = {};\n const domainObject = reminder?.domainObject;\n const entityBusinessKey = reminder?.entityBusinessKey || '';\n let treeStructureId = '';\n let apiMethodId = '';\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n\n if (matchingNode) {\n treeStructureId = matchingNode.id;\n if (!matchingNode.parentId) {\n apiMethodId = tree.apiMethodInstance.apiMethodId;\n } else {\n const associatedInquiryTree =\n matchingNode.properties?.associatedInquiryTree;\n if (associatedInquiryTree) {\n apiMethodId =\n associatedInquiryTree.apiMethodInstance?.apiMethodId || '';\n }\n }\n }\n nodeToLoad.apiMethodId = apiMethodId;\n\n const searchIdentifiers = getSearchIdentifiers(\n catalogObjects,\n domainObject\n );\n const filterElements = [];\n const searchValue = entityBusinessKey.split('|')?.[1];\n const values = searchValue.split(',');\n\n searchIdentifiers.forEach((searchIdentifier, index) => {\n const searchField = searchIdentifier\n ? searchIdentifier.charAt(0).toUpperCase() + searchIdentifier.slice(1)\n : '';\n filterElements.push({\n searchField: searchField,\n searchOperator: '=',\n searchValue: values[index]\n });\n });\n\n nodeToLoad.queryPayload = getSearchObject(\n filterElements,\n 1,\n 50,\n true,\n LogicalSearchOperatorEnums.And\n );\n\n nodeToLoad.nodeDetails = {\n catalogReturnObject: domainObject,\n treeStructureId: treeStructureId\n };\n\n return nodeToLoad;\n },\n [tree, catalogObjects]\n );\n\n const getIcon = useCallback(\n (reminder) => {\n const domainObject = reminder?.domainObject;\n const matchingNode = tree?.treeStructure?.find(\n (node) => node.properties?.catalogReturnObject === domainObject\n );\n return matchingNode?.properties?.defaultIcon || {};\n },\n [tree]\n );\n\n const sortByDate = useCallback((reminderList, direction) => {\n const sortedReminders = [...reminderList];\n if (direction === 'asc') {\n sortedReminders.sort(\n (a, b) => new Date(b.reminderDate) - new Date(a.reminderDate)\n );\n } else if (direction === 'desc') {\n sortedReminders.sort(\n (a, b) => new Date(a.reminderDate) - new Date(b.reminderDate)\n );\n }\n setReminders(sortedReminders);\n }, []);\n\n const sort = useCallback(() => {\n sortByDate(reminders, sortDirection || 'desc');\n if (sortDirection === 'desc' || !sortDirection) {\n setSortDirection('asc');\n } else if (sortDirection === 'asc') {\n setSortDirection('desc');\n }\n }, [reminders, sortByDate, sortDirection]);\n\n const getReminders = useCallback(\n async (allRequested = false, rffSearchApiMethod) => {\n let remindersList = [];\n const warnings = [];\n\n if (!reminders) {\n setLoading(true);\n }\n\n let filterElements = [\n {\n searchField: 'Reminder.Acknowledged',\n searchValue: false,\n searchOperator: '=',\n groupId: 1\n },\n {\n searchField: 'Reminder.ReminderDate',\n searchValue: new Date(),\n searchOperator: '<=',\n groupId: 1\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n let filterGroups = [\n {\n groupId: 1,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: null\n },\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n\n if (allRequested) {\n filterElements = [\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.System,\n searchOperator: '=',\n groupId: 2\n },\n {\n searchField: 'Type',\n searchValue: UdpReminderFiledForType.User,\n searchOperator: '=',\n groupId: 3\n },\n {\n searchField: 'Reminder.UnityUserID',\n searchValue: user.id,\n searchOperator: '=',\n groupId: 3\n }\n ];\n\n filterGroups = [\n {\n groupId: 2,\n logicalSearchOperator: LogicalSearchOperatorEnums.Or,\n parentGroupId: null\n },\n {\n groupId: 3,\n logicalSearchOperator: LogicalSearchOperatorEnums.And,\n parentGroupId: 2\n }\n ];\n }\n\n const searchObject = getSearchObject(\n filterElements,\n 1,\n 200,\n true,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n const data = { data: searchObject };\n\n if (rffSearchApiMethod) {\n if (!rffSearchApiMethod.apiMethodId) {\n warnings.push({\n id: uuid(),\n severity: 'warning',\n message: t('Search ReminderFiledFor Method Not Promoted')\n });\n } else {\n const response = await executeQueryAdHoc(\n data,\n rffSearchApiMethod.apiMethodId\n ).catch((e) => {\n setLoading(false);\n });\n\n if (response?.status === 200) {\n const pageList = response.data.pageList;\n if (pageList?.length) {\n remindersList = pageList.map((item) => ({\n ...item.reminder,\n domainObject: item.domainObject,\n filedToType: item.type,\n entityBusinessKey: item.entityBusinessKey\n }));\n }\n } else {\n warnings.push({\n id: uuid(),\n severity: 'error',\n message: t('Could not retrieve reminders')\n });\n }\n }\n }\n // Filter for reminders that belong to any of the domains within the tree\n const treeDomains = tree?.treeStructure.map(\n (node) => node.properties?.catalogReturnObject\n );\n if (treeDomains.length) {\n remindersList = remindersList.filter((reminder) =>\n treeDomains.includes(reminder.domainObject)\n );\n } else {\n remindersList = [];\n }\n setAlertWarnings(warnings);\n setLoading(false);\n sortByDate(remindersList, currentSortDirection);\n },\n [t, user, reminders, sortByDate, currentSortDirection, tree]\n );\n\n const updateRemindersAcknowledgement = useCallback(\n async (reminders) => {\n if (updateReminderApiMethod) {\n const updatedPromises = [];\n reminders.forEach((reminder) => {\n reminder.acknowledged = reminder.checked;\n const data = {\n requestBody: {\n ...reminder\n }\n };\n data['{iD}'] = reminder.id;\n updatedPromises.push(\n executeQueryWithParameters(\n { data },\n updateReminderApiMethod.apiMethodId\n )\n );\n });\n await Promise.all(updatedPromises.map((p) => p.catch((e) => e))).then(\n (responses) => {\n responses.forEach((response) => {\n if (response.status === 200) {\n const entityBusinessKey = response.data.entityBusinessKey;\n const matchingReminder = reminders?.find(\n (nftu) => nftu.value === entityBusinessKey\n );\n if (!matchingReminder) {\n console.warn(`Reminder not updated for all file to entities`);\n }\n }\n });\n }\n );\n } else {\n handleErrorSnackbar(null, 'Update Reminder Method Not Promoted');\n }\n },\n [updateReminderApiMethod, handleErrorSnackbar]\n );\n\n const handleAcknowledgeClick = useCallback(async () => {\n const acknowledgedReminders = reminders?.filter((r) => r.checked);\n if (acknowledgedReminders.length) {\n setButtonProgress(true);\n await updateRemindersAcknowledgement(acknowledgedReminders);\n setButtonProgress(false);\n getReminders(allRemindersRequested, reminderFiledForSearchApiMethod);\n }\n }, [\n reminders,\n getReminders,\n updateRemindersAcknowledgement,\n allRemindersRequested,\n reminderFiledForSearchApiMethod\n ]);\n\n const handleSwitchChange = useCallback(\n async (event) => {\n setLoading(true);\n if (event.target.checked) {\n setAllRemindersRequested(event.target.checked);\n await getReminders(true, reminderFiledForSearchApiMethod);\n } else {\n setAllRemindersRequested(false);\n await getReminders(false, reminderFiledForSearchApiMethod);\n }\n setLoading(false);\n },\n [getReminders, reminderFiledForSearchApiMethod]\n );\n\n // no dependencies in the array because we only want getReminders to run once\n useEffect(() => {\n if (reminderFiledForSearchApiMethod) {\n getReminders(false, reminderFiledForSearchApiMethod);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reminderFiledForSearchApiMethod]);\n\n return (\n <WidgetCard\n ref={ref}\n // title={'Reminders'}\n hideWidgetName={hideWidgetName}\n headerActions={\n <div className={classes.actions}>\n <FormControlLabel\n control={\n <Switch\n id='udpRecord-RemindersWidget-Switch'\n udprecordid='udpRecord-RemindersWidget-Switch'\n size='small'\n onChange={handleSwitchChange}\n />\n }\n label='All'\n style={{ marginRight: 8 }}\n />\n <FluentIconButton\n id='udpRecord-RemindersWidget-Sort'\n udprecordid='udpRecord-RemindersWidget-Sort'\n icon={SortIcon}\n onClick={sort}\n style={{ marginRight: 4 }}\n />\n <div className={classes.actionButton}>\n <FluentButton\n id='udpRecord-RemindersWidget-Complete'\n udprecordid='udpRecord-RemindersWidget-Complete'\n variant='contained'\n color='secondary'\n onClick={handleAcknowledgeClick}\n >\n {buttonProgress && (\n <CircularProgress\n size={24}\n color='primary'\n className={classes.fabProgress}\n />\n )}\n {t('Complete')}\n </FluentButton>\n </div>\n </div>\n }\n {...other}\n >\n {alertWarnings.length ? (\n alertWarnings.map((warning) => (\n <Alert severity={warning.severity || 'warning'}>\n {warning.message || ''}\n </Alert>\n ))\n ) : (\n <RemindersCard\n reminders={reminders}\n setReminders={setReminders}\n loading={loading}\n onLoadedNodeClick={onLoadedNodeClick}\n getNodeToLoad={getNodeToLoad}\n getIcon={getIcon}\n updateRemindersAcknowledgement={updateRemindersAcknowledgement}\n />\n )}\n\n {children}\n </WidgetCard>\n );\n};\n\nexport default forwardRef(RemindersWidget);\n","export * from './RemindersWidget';\nexport {default} from './RemindersWidget';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA4CA,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM,EAAE;CACR,SAAS;EACP,SAAS;EACT,YAAY;EACZ,OAAO;EACP,gBAAgB;EACjB;CACD,cAAc;EACZ,aAAa,MAAM,QAAQ,IAAK;EAChC,UAAU;EACX;CACD,aAAa;EACX,UAAU;EACV,KAAK;EACL,MAAM;EACN,QAAQ;EACT;CACF,EAAE;AAEH,MAAa,mBAAmB,OAAO,QAAQ;CAC7C,MAAM,EAAE,UAAU,QAAQ,UAAU,GAAG,UAAU;CACjD,MAAM,EAAE,mBAAmB,gBAAgB,MAAM,mBAAmB;CAEpE,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CACxD,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,CAAC,uBAAuB,4BAA4B,SAAS,MAAM;CACzE,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,MAAM;CAC3D,MAAM,CAAC,eAAe,oBAAoB,SAAS,EAAE,CAAC;CAEtD,MAAM,UAAU,UAAU,MAAM;CAEhC,MAAM,EAAE,4BADY,gBAAgB;CAEpC,MAAM,EAAE,wBAAwB,wBAAwB;CACxD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,OAAO,SAAS;CAEtB,MAAM,kCAAkC,cAAc;AACpD,SAAO,cACL,SAAS,wBACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,0BAA0B,cAAc;AAC5C,SAAO,cACL,SAAS,cACT,yBACA,wBACD;IACA,CAAC,wBAAwB,CAAC;CAE7B,MAAM,uBAAuB,cAAc;AACzC,MAAI,kBAAkB,MACpB,QAAO;WACE,kBAAkB,OAC3B,QAAO;MAEP,QAAO;IAER,CAAC,cAAc,CAAC;CAEnB,MAAM,gBAAgB,aACnB,aAAa;EACZ,MAAM,aAAa,EAAE;EACrB,MAAM,eAAe,UAAU;EAC/B,MAAM,oBAAoB,UAAU,qBAAqB;EACzD,IAAI,kBAAkB;EACtB,IAAI,cAAc;EAClB,MAAM,eAAe,MAAM,eAAe,MACvC,SAAS,KAAK,YAAY,wBAAwB,aACpD;AAED,MAAI,cAAc;AAChB,qBAAkB,aAAa;AAC/B,OAAI,CAAC,aAAa,SAChB,eAAc,KAAK,kBAAkB;QAChC;IACL,MAAM,wBACJ,aAAa,YAAY;AAC3B,QAAI,sBACF,eACE,sBAAsB,mBAAmB,eAAe;;;AAIhE,aAAW,cAAc;EAEzB,MAAM,oBAAoB,qBACxB,gBACA,aACD;EACD,MAAM,iBAAiB,EAAE;EAEzB,MAAM,UADc,kBAAkB,MAAM,IAAI,GAAG,IACxB,MAAM,IAAI;AAErC,oBAAkB,SAAS,kBAAkB,UAAU;GACrD,MAAM,cAAc,mBAChB,iBAAiB,OAAO,EAAE,CAAC,aAAa,GAAG,iBAAiB,MAAM,EAAE,GACpE;AACJ,kBAAe,KAAK;IACL;IACb,gBAAgB;IAChB,aAAa,OAAO;IACrB,CAAC;IACF;AAEF,aAAW,eAAe,gBACxB,gBACA,GACA,IACA,MACA,2BAA2B,IAC5B;AAED,aAAW,cAAc;GACvB,qBAAqB;GACJ;GAClB;AAED,SAAO;IAET,CAAC,MAAM,eAAe,CACvB;CAED,MAAM,UAAU,aACb,aAAa;EACZ,MAAM,eAAe,UAAU;AAI/B,UAHqB,MAAM,eAAe,MACvC,SAAS,KAAK,YAAY,wBAAwB,aACpD,GACoB,YAAY,eAAe,EAAE;IAEpD,CAAC,KAAK,CACP;CAED,MAAM,aAAa,aAAa,cAAc,cAAc;EAC1D,MAAM,kBAAkB,CAAC,GAAG,aAAa;AACzC,MAAI,cAAc,MAChB,iBAAgB,MACb,GAAG,MAAM,IAAI,KAAK,EAAE,aAAa,GAAG,IAAI,KAAK,EAAE,aAAa,CAC9D;WACQ,cAAc,OACvB,iBAAgB,MACb,GAAG,MAAM,IAAI,KAAK,EAAE,aAAa,GAAG,IAAI,KAAK,EAAE,aAAa,CAC9D;AAEH,eAAa,gBAAgB;IAC5B,EAAE,CAAC;CAEN,MAAM,OAAO,kBAAkB;AAC7B,aAAW,WAAW,iBAAiB,OAAO;AAC9C,MAAI,kBAAkB,UAAU,CAAC,cAC/B,kBAAiB,MAAM;WACd,kBAAkB,MAC3B,kBAAiB,OAAO;IAEzB;EAAC;EAAW;EAAY;EAAc,CAAC;CAE1C,MAAM,eAAe,YACnB,OAAO,eAAe,OAAO,uBAAuB;EAClD,IAAI,gBAAgB,EAAE;EACtB,MAAM,WAAW,EAAE;AAEnB,MAAI,CAAC,UACH,YAAW,KAAK;EAGlB,IAAI,iBAAiB;GACnB;IACE,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,SAAS;IACV;GACD;IACE,aAAa;IACb,6BAAa,IAAI,MAAM;IACvB,gBAAgB;IAChB,SAAS;IACV;GACD;IACE,aAAa;IACb,aAAa,wBAAwB;IACrC,gBAAgB;IAChB,SAAS;IACV;GACD;IACE,aAAa;IACb,aAAa,wBAAwB;IACrC,gBAAgB;IAChB,SAAS;IACV;GAED;IACE,aAAa;IACb,aAAa,KAAK;IAClB,gBAAgB;IAChB,SAAS;IACV;GACF;EAED,IAAI,eAAe;GACjB;IACE,SAAS;IACT,uBAAuB,2BAA2B;IAClD,eAAe;IAChB;GACD;IACE,SAAS;IACT,uBAAuB,2BAA2B;IAClD,eAAe;IAChB;GACD;IACE,SAAS;IACT,uBAAuB,2BAA2B;IAClD,eAAe;IAChB;GACF;AAED,MAAI,cAAc;AAChB,oBAAiB;IACf;KACE,aAAa;KACb,aAAa,wBAAwB;KACrC,gBAAgB;KAChB,SAAS;KACV;IACD;KACE,aAAa;KACb,aAAa,wBAAwB;KACrC,gBAAgB;KAChB,SAAS;KACV;IACD;KACE,aAAa;KACb,aAAa,KAAK;KAClB,gBAAgB;KAChB,SAAS;KACV;IACF;AAED,kBAAe,CACb;IACE,SAAS;IACT,uBAAuB,2BAA2B;IAClD,eAAe;IAChB,EACD;IACE,SAAS;IACT,uBAAuB,2BAA2B;IAClD,eAAe;IAChB,CACF;;EAWH,MAAM,OAAO,EAAE,MARM,gBACnB,gBACA,GACA,KACA,MACA,2BAA2B,KAC3B,aACD,EACkC;AAEnC,MAAI,mBACF,KAAI,CAAC,mBAAmB,YACtB,UAAS,KAAK;GACZ,IAAIA,IAAM;GACV,UAAU;GACV,SAAS,EAAE,8CAA8C;GAC1D,CAAC;OACG;GACL,MAAM,WAAW,MAAM,kBACrB,MACA,mBAAmB,YACpB,CAAC,OAAO,MAAM;AACb,eAAW,MAAM;KACjB;AAEF,OAAI,UAAU,WAAW,KAAK;IAC5B,MAAM,WAAW,SAAS,KAAK;AAC/B,QAAI,UAAU,OACZ,iBAAgB,SAAS,KAAK,UAAU;KACtC,GAAG,KAAK;KACR,cAAc,KAAK;KACnB,aAAa,KAAK;KAClB,mBAAmB,KAAK;KACzB,EAAE;SAGL,UAAS,KAAK;IACZ,IAAIA,IAAM;IACV,UAAU;IACV,SAAS,EAAE,+BAA+B;IAC3C,CAAC;;EAKR,MAAM,cAAc,MAAM,cAAc,KACrC,SAAS,KAAK,YAAY,oBAC5B;AACD,MAAI,YAAY,OACd,iBAAgB,cAAc,QAAQ,aACpC,YAAY,SAAS,SAAS,aAAa,CAC5C;MAED,iBAAgB,EAAE;AAEpB,mBAAiB,SAAS;AAC1B,aAAW,MAAM;AACjB,aAAW,eAAe,qBAAqB;IAEjD;EAAC;EAAG;EAAM;EAAW;EAAY;EAAsB;EAAK,CAC7D;CAED,MAAM,iCAAiC,YACrC,OAAO,gBAAc;AACnB,MAAI,yBAAyB;GAC3B,MAAM,kBAAkB,EAAE;AAC1B,eAAU,SAAS,aAAa;AAC9B,aAAS,eAAe,SAAS;IACjC,MAAM,OAAO,EACX,aAAa,EACX,GAAG,UACJ,EACF;AACD,SAAK,UAAU,SAAS;AACxB,oBAAgB,KACd,2BACE,EAAE,MAAM,EACR,wBAAwB,YACzB,CACF;KACD;AACF,SAAM,QAAQ,IAAI,gBAAgB,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAC9D,cAAc;AACb,cAAU,SAAS,aAAa;AAC9B,SAAI,SAAS,WAAW,KAAK;MAC3B,MAAM,oBAAoB,SAAS,KAAK;AAIxC,UAAI,CAHqBC,aAAW,MACjC,SAAS,KAAK,UAAU,kBAC1B,CAEC,SAAQ,KAAK,gDAAgD;;MAGjE;KAEL;QAED,qBAAoB,MAAM,sCAAsC;IAGpE,CAAC,yBAAyB,oBAAoB,CAC/C;CAED,MAAM,yBAAyB,YAAY,YAAY;EACrD,MAAM,wBAAwB,WAAW,QAAQ,MAAM,EAAE,QAAQ;AACjE,MAAI,sBAAsB,QAAQ;AAChC,qBAAkB,KAAK;AACvB,SAAM,+BAA+B,sBAAsB;AAC3D,qBAAkB,MAAM;AACxB,gBAAa,uBAAuB,gCAAgC;;IAErE;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,qBAAqB,YACzB,OAAO,UAAU;AACf,aAAW,KAAK;AAChB,MAAI,MAAM,OAAO,SAAS;AACxB,4BAAyB,MAAM,OAAO,QAAQ;AAC9C,SAAM,aAAa,MAAM,gCAAgC;SACpD;AACL,4BAAyB,MAAM;AAC/B,SAAM,aAAa,OAAO,gCAAgC;;AAE5D,aAAW,MAAM;IAEnB,CAAC,cAAc,gCAAgC,CAChD;AAGD,iBAAgB;AACd,MAAI,gCACF,cAAa,OAAO,gCAAgC;IAGrD,CAAC,gCAAgC,CAAC;AAErC,QACE,oCAACC;EACM;EAEW;EAChB,eACE,oCAAC,SAAI,WAAW,QAAQ,WACtB,oCAAC;GACC,SACE,oCAAC;IACC,IAAG;IACH,aAAY;IACZ,MAAK;IACL,UAAU;KACV;GAEJ,OAAM;GACN,OAAO,EAAE,aAAa,GAAG;IACzB,EACF,oCAAC;GACC,IAAG;GACH,aAAY;GACZ,MAAM;GACN,SAAS;GACT,OAAO,EAAE,aAAa,GAAG;IACzB,EACF,oCAAC,SAAI,WAAW,QAAQ,gBACtB,oCAAC;GACC,IAAG;GACH,aAAY;GACZ,SAAQ;GACR,OAAM;GACN,SAAS;KAER,kBACC,oCAAC;GACC,MAAM;GACN,OAAM;GACN,WAAW,QAAQ;IACnB,EAEH,EAAE,WAAW,CACD,CACX,CACF;EAER,GAAI;IAEH,cAAc,SACb,cAAc,KAAK,YACjB,oCAAC,SAAM,UAAU,QAAQ,YAAY,aAClC,QAAQ,WAAW,GACd,CACR,GAEF,oCAAC;EACY;EACG;EACL;EACU;EACJ;EACN;EACuB;GAChC,EAGH,SACU;;AAIjB,8BAAe,WAAW,gBAAgB"}
@@ -0,0 +1,3 @@
1
+ import { t as Reports_default } from "./Reports-Cz5Pl1rM.js";
2
+
3
+ export { Reports_default as default };
@@ -17,4 +17,4 @@ var Reports_default = Reports;
17
17
 
18
18
  //#endregion
19
19
  export { Reports_default as t };
20
- //# sourceMappingURL=Reports-CxRaLcxr.js.map
20
+ //# sourceMappingURL=Reports-Cz5Pl1rM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Reports-CxRaLcxr.js","names":[],"sources":["../src/reports/Reports.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { PowerBIReport } from './PowerBIReport';\n\nconst Reports = props => {\n const { match, location } = props;\n const id = match.params?.id;\n const menuItemReportParams = useMemo(() => {\n return location?.state?.params?.ReportDefaultParameters;\n }, [location?.state?.params?.ReportDefaultParameters]);\n\n return <PowerBIReport id={id} reportParameters={menuItemReportParams} />;\n};\n\nexport default Reports;\n"],"mappings":";;;;AAGA,MAAM,WAAU,UAAS;CACvB,MAAM,EAAE,OAAO,aAAa;CAC5B,MAAM,KAAK,MAAM,QAAQ;CACzB,MAAM,uBAAuB,cAAc;AACzC,SAAO,UAAU,OAAO,QAAQ;IAC/B,CAAC,UAAU,OAAO,QAAQ,wBAAwB,CAAC;AAEtD,QAAO,oCAAC;EAAkB;EAAI,kBAAkB;GAAwB;;AAG1E,sBAAe"}
1
+ {"version":3,"file":"Reports-Cz5Pl1rM.js","names":[],"sources":["../src/reports/Reports.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { PowerBIReport } from './PowerBIReport';\n\nconst Reports = props => {\n const { match, location } = props;\n const id = match.params?.id;\n const menuItemReportParams = useMemo(() => {\n return location?.state?.params?.ReportDefaultParameters;\n }, [location?.state?.params?.ReportDefaultParameters]);\n\n return <PowerBIReport id={id} reportParameters={menuItemReportParams} />;\n};\n\nexport default Reports;\n"],"mappings":";;;;AAGA,MAAM,WAAU,UAAS;CACvB,MAAM,EAAE,OAAO,aAAa;CAC5B,MAAM,KAAK,MAAM,QAAQ;CACzB,MAAM,uBAAuB,cAAc;AACzC,SAAO,UAAU,OAAO,QAAQ;IAC/B,CAAC,UAAU,OAAO,QAAQ,wBAAwB,CAAC;AAEtD,QAAO,oCAAC;EAAkB;EAAI,kBAAkB;GAAwB;;AAG1E,sBAAe"}
@@ -1,5 +1,5 @@
1
1
  import { D as SearchGroupingType, O as SearchSortDirection, f as LogicalSearchOperatorEnums } from "./unitySystemEnums-e5F9Jr7m.js";
2
- import { r as getSearchObject } from "./SearchUtilities-CNz302LN.js";
2
+ import { r as getSearchObject } from "./SearchUtilities-B1TCyppF.js";
3
3
  import { t as FilterOperators } from "./SearchOperator-D9838PIe.js";
4
4
  import { cloneDeep } from "lodash";
5
5
 
@@ -153,4 +153,4 @@ const SearchServiceDatasource = (queryData, apiMethodId, searchFilterElements, l
153
153
 
154
154
  //#endregion
155
155
  export { SearchServiceDatasource as t };
156
- //# sourceMappingURL=SearchServiceDatasource-CeBOfTB0.js.map
156
+ //# sourceMappingURL=SearchServiceDatasource-BrfkHkEq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchServiceDatasource-CeBOfTB0.js","names":["element"],"sources":["../src/utilities/aggrid/datasources/SearchServiceDatasource.js"],"sourcesContent":["import {\n LogicalSearchOperatorEnums,\n SearchGroupingType,\n SearchSortDirection\n} from '../../../enums/unitySystemEnums';\nimport { getSearchObject } from '../../search/SearchUtilities';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { cloneDeep } from 'lodash';\n\nexport const SearchServiceDatasource = (\n queryData,\n apiMethodId,\n searchFilterElements,\n logicalSearchOperator = LogicalSearchOperatorEnums.And,\n executeQuery,\n storeRowData,\n lookupsMap,\n eagerLoad = false,\n getCleanData = null\n) => {\n return {\n async getRows(params) {\n const {\n startRow,\n endRow,\n rowGroupCols,\n groupKeys,\n valueCols,\n filterModel,\n sortModel\n } = params.request;\n const page = endRow / 20;\n const originalSearchObject = getSearchObject(\n searchFilterElements,\n page,\n null,\n eagerLoad,\n logicalSearchOperator\n );\n\n const searchObject = cloneDeep(originalSearchObject);\n\n // handle server-side sorting on ag-grid\n if (sortModel.length) {\n const orderElements = searchObject.orderElements;\n sortModel.forEach((sortItem) => {\n const formattedPropertyName =\n sortItem.colId.charAt(0).toUpperCase() + sortItem.colId.slice(1);\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (element) {\n element.sortDirection = sortItem.sort.toUpperCase();\n } else {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: sortItem.sort.toUpperCase()\n });\n }\n });\n }\n\n // handle server-side filtering on ag-grid\n if (Object.keys(filterModel).length) {\n const filterElements = searchObject.filterElements;\n Object.keys(filterModel).forEach((key) => {\n const filterItem = filterModel[key];\n const formattedPropertyName =\n key.charAt(0).toUpperCase() + key.slice(1);\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type]\n });\n });\n }\n\n // construct search for initial grouping\n if (rowGroupCols.length && !groupKeys.length) {\n const formattedPropertyName =\n rowGroupCols[0].field.charAt(0).toUpperCase() +\n rowGroupCols[0].field.slice(1);\n searchObject.groupingType = SearchGroupingType.Distinct;\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n\n // construct the filter for grouped columns\n if (groupKeys.length) {\n // construct search for last grouped element\n if (groupKeys.length === rowGroupCols.length) {\n searchObject.groupingType = '';\n const filterElements = searchObject.filterElements;\n groupKeys.forEach((key, index) => {\n const rowGroupCol = rowGroupCols[index];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyName?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n if (element) {\n element.searchValue = searchValue;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: searchValue,\n searchOperator: '='\n });\n }\n });\n } else {\n // construct search for the next grouped element\n groupKeys.forEach((key, index) => {\n const formattedPropertyNameForSearch =\n rowGroupCols[index].field.charAt(0).toUpperCase() +\n rowGroupCols[index].field.slice(1);\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyNameForSearch?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: searchValue,\n searchOperator: '='\n });\n });\n\n searchObject.groupingType = SearchGroupingType.Distinct;\n const searchIndex = groupKeys.length;\n const rowGroupCol = rowGroupCols[searchIndex];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n }\n\n if (\n !startRow &&\n rowGroupCols.length === 0 &&\n !sortModel.length &&\n !Object.keys(filterModel).length &&\n !groupKeys.length &&\n queryData\n ) {\n if (queryData.pageList && queryData.pageList) {\n params.success({\n rowData: queryData.pageList,\n rowCount: parseInt(queryData.total)\n });\n if (storeRowData) {\n storeRowData(queryData.pageList);\n }\n } else {\n // TODO: add an overlay to display no rows\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n let response = null;\n if (executeQuery) {\n const data = { data: searchObject };\n response = await executeQuery(data, apiMethodId, lookupsMap).catch(\n (e) =>\n params.success({\n rowData: [],\n rowCount: 0\n })\n );\n }\n const rowData = response?.status === 200 ? response?.data : response;\n if (rowData && response) {\n if (rowData?.pageList?.length > 0) {\n params.success({\n rowData: rowData.pageList,\n rowCount: parseInt(rowData.total)\n });\n if (storeRowData) {\n storeRowData(rowData.pageList);\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n }\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchServiceDatasource-BrfkHkEq.js","names":["element"],"sources":["../src/utilities/aggrid/datasources/SearchServiceDatasource.js"],"sourcesContent":["import {\n LogicalSearchOperatorEnums,\n SearchGroupingType,\n SearchSortDirection\n} from '../../../enums/unitySystemEnums';\nimport { getSearchObject } from '../../search/SearchUtilities';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { cloneDeep } from 'lodash';\n\nexport const SearchServiceDatasource = (\n queryData,\n apiMethodId,\n searchFilterElements,\n logicalSearchOperator = LogicalSearchOperatorEnums.And,\n executeQuery,\n storeRowData,\n lookupsMap,\n eagerLoad = false,\n getCleanData = null\n) => {\n return {\n async getRows(params) {\n const {\n startRow,\n endRow,\n rowGroupCols,\n groupKeys,\n valueCols,\n filterModel,\n sortModel\n } = params.request;\n const page = endRow / 20;\n const originalSearchObject = getSearchObject(\n searchFilterElements,\n page,\n null,\n eagerLoad,\n logicalSearchOperator\n );\n\n const searchObject = cloneDeep(originalSearchObject);\n\n // handle server-side sorting on ag-grid\n if (sortModel.length) {\n const orderElements = searchObject.orderElements;\n sortModel.forEach((sortItem) => {\n const formattedPropertyName =\n sortItem.colId.charAt(0).toUpperCase() + sortItem.colId.slice(1);\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (element) {\n element.sortDirection = sortItem.sort.toUpperCase();\n } else {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: sortItem.sort.toUpperCase()\n });\n }\n });\n }\n\n // handle server-side filtering on ag-grid\n if (Object.keys(filterModel).length) {\n const filterElements = searchObject.filterElements;\n Object.keys(filterModel).forEach((key) => {\n const filterItem = filterModel[key];\n const formattedPropertyName =\n key.charAt(0).toUpperCase() + key.slice(1);\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type]\n });\n });\n }\n\n // construct search for initial grouping\n if (rowGroupCols.length && !groupKeys.length) {\n const formattedPropertyName =\n rowGroupCols[0].field.charAt(0).toUpperCase() +\n rowGroupCols[0].field.slice(1);\n searchObject.groupingType = SearchGroupingType.Distinct;\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n\n // construct the filter for grouped columns\n if (groupKeys.length) {\n // construct search for last grouped element\n if (groupKeys.length === rowGroupCols.length) {\n searchObject.groupingType = '';\n const filterElements = searchObject.filterElements;\n groupKeys.forEach((key, index) => {\n const rowGroupCol = rowGroupCols[index];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyName?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n if (element) {\n element.searchValue = searchValue;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: searchValue,\n searchOperator: '='\n });\n }\n });\n } else {\n // construct search for the next grouped element\n groupKeys.forEach((key, index) => {\n const formattedPropertyNameForSearch =\n rowGroupCols[index].field.charAt(0).toUpperCase() +\n rowGroupCols[index].field.slice(1);\n\n let currentNode = null;\n params.api.forEachNode((node) => {\n const nodeKey = node.field;\n if (\n nodeKey?.toLowerCase() ===\n formattedPropertyNameForSearch?.toLowerCase() &&\n node?.data?.[nodeKey] === key\n ) {\n currentNode = node;\n return;\n }\n });\n let searchValue = key;\n if (currentNode) {\n const cleanData = getCleanData\n ? getCleanData(currentNode.data, lookupsMap)\n : null;\n if (cleanData) {\n searchValue = cleanData[currentNode.field];\n }\n }\n\n searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: searchValue,\n searchOperator: '='\n });\n });\n\n searchObject.groupingType = SearchGroupingType.Distinct;\n const searchIndex = groupKeys.length;\n const rowGroupCol = rowGroupCols[searchIndex];\n const formattedPropertyName =\n rowGroupCol.field.charAt(0).toUpperCase() +\n rowGroupCol.field.slice(1);\n\n if (!searchObject.groupProperty.includes(formattedPropertyName)) {\n searchObject.groupProperty.push(formattedPropertyName);\n\n const orderElements = searchObject.orderElements;\n const element = orderElements.find(\n (element) => element.sortColumn === formattedPropertyName\n );\n if (!element) {\n orderElements.push({\n sortColumn: formattedPropertyName,\n sortDirection: SearchSortDirection.Asc\n });\n }\n }\n }\n }\n\n if (\n !startRow &&\n rowGroupCols.length === 0 &&\n !sortModel.length &&\n !Object.keys(filterModel).length &&\n !groupKeys.length &&\n queryData\n ) {\n if (queryData.pageList && queryData.pageList) {\n params.success({\n rowData: queryData.pageList,\n rowCount: parseInt(queryData.total)\n });\n if (storeRowData) {\n storeRowData(queryData.pageList);\n }\n } else {\n // TODO: add an overlay to display no rows\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n let response = null;\n if (executeQuery) {\n const data = { data: searchObject };\n response = await executeQuery(data, apiMethodId, lookupsMap).catch(\n (e) =>\n params.success({\n rowData: [],\n rowCount: 0\n })\n );\n }\n const rowData = response?.status === 200 ? response?.data : response;\n if (rowData && response) {\n if (rowData?.pageList?.length > 0) {\n params.success({\n rowData: rowData.pageList,\n rowCount: parseInt(rowData.total)\n });\n if (storeRowData) {\n storeRowData(rowData.pageList);\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n } else {\n params.success({\n rowData: [],\n rowCount: 0\n });\n if (storeRowData) {\n storeRowData([]);\n }\n }\n }\n }\n };\n};\n"],"mappings":"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"}