udp-react-enterprise-component-library 25.18.1-beta.71 → 25.18.1-beta.73

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 (233) hide show
  1. package/dist/{ActionProvider-DGzli-X1.js → ActionProvider-BGugOmjV.js} +2 -2
  2. package/dist/{ActionProvider-DGzli-X1.js.map → ActionProvider-BGugOmjV.js.map} +1 -1
  3. package/dist/{ActionSplitScreen-gKH4ISoo.js → ActionSplitScreen-D6_7PlK-.js} +4 -4
  4. package/dist/{ActionSplitScreen-gKH4ISoo.js.map → ActionSplitScreen-D6_7PlK-.js.map} +1 -1
  5. package/dist/{ActionWrapper-Bpp9Mn4j.js → ActionWrapper-DnP7lGDq.js} +4 -4
  6. package/dist/{ActionWrapper-Bpp9Mn4j.js.map → ActionWrapper-DnP7lGDq.js.map} +1 -1
  7. package/dist/{AmbientCard-CLW4bPCu.js → AmbientCard-DhAiVDYD.js} +2 -2
  8. package/dist/{AmbientCard-CLW4bPCu.js.map → AmbientCard-DhAiVDYD.js.map} +1 -1
  9. package/dist/{AmbientVisualizationCard-CAxx4QWe.js → AmbientVisualizationCard-CivQRhmD.js} +4 -4
  10. package/dist/{AmbientVisualizationCard-CAxx4QWe.js.map → AmbientVisualizationCard-CivQRhmD.js.map} +1 -1
  11. package/dist/{AmbientVisualizer-BABKxgsK.js → AmbientVisualizer-buICwVdO.js} +2 -2
  12. package/dist/{AmbientVisualizer-BABKxgsK.js.map → AmbientVisualizer-buICwVdO.js.map} +1 -1
  13. package/dist/{BioCardWrapper-B2bT-4zw.js → BioCardWrapper-D1ZOHyA4.js} +3 -3
  14. package/dist/{BioCardWrapper-B2bT-4zw.js.map → BioCardWrapper-D1ZOHyA4.js.map} +1 -1
  15. package/dist/{CrudTableSidePanel-CNEZxJi0.js → CrudTableSidePanel-Dw8gZSqR.js} +2 -2
  16. package/dist/{CrudTableSidePanel-CNEZxJi0.js.map → CrudTableSidePanel-Dw8gZSqR.js.map} +1 -1
  17. package/dist/{DashboardWidget-CsOrr74H.js → DashboardWidget-D3HStfJA.js} +26 -10
  18. package/dist/DashboardWidget-D3HStfJA.js.map +1 -0
  19. package/dist/{DataBrowserContainer-cU_EEIiR.js → DataBrowserContainer-D4gJ66IC.js} +2 -2
  20. package/dist/{DataBrowserContainer-cU_EEIiR.js.map → DataBrowserContainer-D4gJ66IC.js.map} +1 -1
  21. package/dist/{DynamicRangeSlider-prr4fg8d.js → DynamicRangeSlider-BX4kCzUd.js} +2 -2
  22. package/dist/{DynamicRangeSlider-prr4fg8d.js.map → DynamicRangeSlider-BX4kCzUd.js.map} +1 -1
  23. package/dist/{EmailDisplay-Dm8ynSko.js → EmailDisplay-DZHmPeiL.js} +2 -2
  24. package/dist/{EmailDisplay-Dm8ynSko.js.map → EmailDisplay-DZHmPeiL.js.map} +1 -1
  25. package/dist/{ExportSidesheet-DWkoiwxC.js → ExportSidesheet-BQiNzxN9.js} +4 -4
  26. package/dist/{ExportSidesheet-DWkoiwxC.js.map → ExportSidesheet-BQiNzxN9.js.map} +1 -1
  27. package/dist/{FieldArrayCard-Ds_ysYWL.js → FieldArrayCard-sEe2pmg7.js} +3 -3
  28. package/dist/{FieldArrayCard-Ds_ysYWL.js.map → FieldArrayCard-sEe2pmg7.js.map} +1 -1
  29. package/dist/{FluentListItem-_Nq3fhEY.js → FluentListItem-1fzW--Dq.js} +2 -2
  30. package/dist/{FluentListItem-_Nq3fhEY.js.map → FluentListItem-1fzW--Dq.js.map} +1 -1
  31. package/dist/{GraphCard-BhcSveF4.js → GraphCard-Bdh6VeDb.js} +2 -2
  32. package/dist/{GraphCard-BhcSveF4.js.map → GraphCard-Bdh6VeDb.js.map} +1 -1
  33. package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js → ImportDataFromFileMapping-BIcQmKll.js} +2 -2
  34. package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js.map → ImportDataFromFileMapping-BIcQmKll.js.map} +1 -1
  35. package/dist/{Inquiry-KKLgba3g.js → Inquiry-1o8EuckI.js} +12 -10
  36. package/dist/{Inquiry-KKLgba3g.js.map → Inquiry-1o8EuckI.js.map} +1 -1
  37. package/dist/Inquiry-B9U7e2Iu.js +3 -0
  38. package/dist/{InquirySearchContainer-DKDrIqNO.js → InquirySearchContainer-zxbukV51.js} +3 -3
  39. package/dist/{InquirySearchContainer-DKDrIqNO.js.map → InquirySearchContainer-zxbukV51.js.map} +1 -1
  40. package/dist/MenuPage-CdzHSWBt.js +3 -0
  41. package/dist/{MenuPage-tkkhpco5.js → MenuPage-KiNfnc7P.js} +3 -3
  42. package/dist/{MenuPage-tkkhpco5.js.map → MenuPage-KiNfnc7P.js.map} +1 -1
  43. package/dist/{MttMainTimeline-s0ANW7l-.js → MttMainTimeline-DbaaXXQv.js} +2 -2
  44. package/dist/{MttMainTimeline-s0ANW7l-.js.map → MttMainTimeline-DbaaXXQv.js.map} +1 -1
  45. package/dist/{NotesScreen-DQatppnX.js → NotesScreen-D8-QnWaB.js} +2 -2
  46. package/dist/{NotesScreen-DQatppnX.js.map → NotesScreen-D8-QnWaB.js.map} +1 -1
  47. package/dist/{PDFViewer-B4nJKbIy.js → PDFViewer-BvaqCfIS.js} +2 -2
  48. package/dist/{PDFViewer-B4nJKbIy.js.map → PDFViewer-BvaqCfIS.js.map} +1 -1
  49. package/dist/{Page-fxgRfgm6.js → Page-BNjiUMqy.js} +5 -4
  50. package/dist/Page-BNjiUMqy.js.map +1 -0
  51. package/dist/{PageActionWrapper-BBkGtnC6.js → PageActionWrapper-Bm6J0thr.js} +2 -2
  52. package/dist/{PageActionWrapper-BBkGtnC6.js.map → PageActionWrapper-Bm6J0thr.js.map} +1 -1
  53. package/dist/{PageContainer-DTXNLt_2.js → PageContainer-ButX_XVS.js} +8 -6
  54. package/dist/PageContainer-ButX_XVS.js.map +1 -0
  55. package/dist/{PageRenderer-BTkUO-hr.js → PageRenderer-hxobUKe_.js} +2 -2
  56. package/dist/{PageRenderer-BTkUO-hr.js.map → PageRenderer-hxobUKe_.js.map} +1 -1
  57. package/dist/{PaymentForm-Dum5p1mf.js → PaymentForm-BdWY9dEt.js} +2 -2
  58. package/dist/{PaymentForm-Dum5p1mf.js.map → PaymentForm-BdWY9dEt.js.map} +1 -1
  59. package/dist/{PrimaryActionHeader-DBJpROPu.js → PrimaryActionHeader-H5w3twaM.js} +3 -2
  60. package/dist/PrimaryActionHeader-H5w3twaM.js.map +1 -0
  61. package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js → RecentlyLoadedNodesTable-BzvR0L0h.js} +2 -2
  62. package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js.map → RecentlyLoadedNodesTable-BzvR0L0h.js.map} +1 -1
  63. package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js → RecentlyLoadedNodesWidget-Kt5BElrK.js} +2 -2
  64. package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js.map → RecentlyLoadedNodesWidget-Kt5BElrK.js.map} +1 -1
  65. package/dist/{RemindersScreen-Cp7lMWrE.js → RemindersScreen-BDgMIUaq.js} +2 -2
  66. package/dist/{RemindersScreen-Cp7lMWrE.js.map → RemindersScreen-BDgMIUaq.js.map} +1 -1
  67. package/dist/{Shell-BE_Aq6W2.js → Shell-Bcr0PHnd.js} +6 -6
  68. package/dist/{Shell-BE_Aq6W2.js.map → Shell-Bcr0PHnd.js.map} +1 -1
  69. package/dist/{SiteHeader-CuOFCr7D.js → SiteHeader-DmfTUOmH.js} +4 -4
  70. package/dist/{SiteHeader-CuOFCr7D.js.map → SiteHeader-DmfTUOmH.js.map} +1 -1
  71. package/dist/{SummaryBlock-BjUNDl4q.js → SummaryBlock-Q5Jf4V8A.js} +2 -2
  72. package/dist/{SummaryBlock-BjUNDl4q.js.map → SummaryBlock-Q5Jf4V8A.js.map} +1 -1
  73. package/dist/{SupportCaseSideSheet-DuvvXDWF.js → SupportCaseSideSheet-9iAiZyOu.js} +1 -1
  74. package/dist/{SupportCaseSideSheet-BNec-nDN.js → SupportCaseSideSheet-CT15Dg8h.js} +2 -2
  75. package/dist/{SupportCaseSideSheet-BNec-nDN.js.map → SupportCaseSideSheet-CT15Dg8h.js.map} +1 -1
  76. package/dist/{Typography-BMsa1JYd.js → Typography-FuShOop3.js} +2 -2
  77. package/dist/{Typography-BMsa1JYd.js.map → Typography-FuShOop3.js.map} +1 -1
  78. package/dist/UI/accordion/index.js +1 -1
  79. package/dist/UI/components/dataDisplay/index.js +1 -1
  80. package/dist/UI/components/index.js +1 -1
  81. package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
  82. package/dist/UI/dataDisplay/index.js +2 -2
  83. package/dist/UI/dataDisplay/typography/index.js +1 -1
  84. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  85. package/dist/UI/fileViewer/index.js +1 -1
  86. package/dist/UI/fileViewer/pdfViewer/index.js +1 -1
  87. package/dist/UI/forms/index.js +1 -1
  88. package/dist/UI/index.js +11 -11
  89. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  90. package/dist/UI/mapLayout/index.js +1 -1
  91. package/dist/UI/support/index.js +1 -1
  92. package/dist/UI/surfaces/cards/AmbientCard/index.js +1 -1
  93. package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
  94. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  95. package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
  96. package/dist/UI/templates/newGrid/index.js +1 -1
  97. package/dist/UI/utilityDisplay/index.js +2 -2
  98. package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
  99. package/dist/UI/widgets/index.js +1 -1
  100. package/dist/UI/widgets/library/CircleGaugeWidget/index.js +1 -1
  101. package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
  102. package/dist/{UdpAuditEvents-C5p1KgV0.js → UdpAuditEvents-DotSR4R9.js} +2 -2
  103. package/dist/{UdpAuditEvents-C5p1KgV0.js.map → UdpAuditEvents-DotSR4R9.js.map} +1 -1
  104. package/dist/{UdpAuditEventsPage-CohNvZiq.js → UdpAuditEventsPage-BZ5fMCYW.js} +2 -2
  105. package/dist/{UdpAuditEventsPage-CohNvZiq.js.map → UdpAuditEventsPage-BZ5fMCYW.js.map} +1 -1
  106. package/dist/UdpAuditEventsPage-BtsmPFyR.js +3 -0
  107. package/dist/{UdpDataBrowserPage-DQXaWtYD.js → UdpDataBrowserPage-3fiOCSkx.js} +3 -3
  108. package/dist/{UdpDataBrowserPage-DQXaWtYD.js.map → UdpDataBrowserPage-3fiOCSkx.js.map} +1 -1
  109. package/dist/{UdpFormsSubmissionGrid-DzMuwwTO.js → UdpFormsSubmissionGrid-B3pQiK5q.js} +10 -9
  110. package/dist/UdpFormsSubmissionGrid-B3pQiK5q.js.map +1 -0
  111. package/dist/{UdpGridTemplate-OsS_O6jR.js → UdpGridTemplate-xen0Fvww.js} +2 -2
  112. package/dist/{UdpGridTemplate-OsS_O6jR.js.map → UdpGridTemplate-xen0Fvww.js.map} +1 -1
  113. package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js → UdpImportFromFileMappingPage-BxGvGFua.js} +2 -2
  114. package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js.map → UdpImportFromFileMappingPage-BxGvGFua.js.map} +1 -1
  115. package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js → UdpInquiryMaintenanceEnginePage-CSf7jB35.js} +2 -2
  116. package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js.map → UdpInquiryMaintenanceEnginePage-CSf7jB35.js.map} +1 -1
  117. package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js → UdpMaintenanceEnginePage-C8NLZSPb.js} +3 -3
  118. package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js.map → UdpMaintenanceEnginePage-C8NLZSPb.js.map} +1 -1
  119. package/dist/{UdpNotesPage-DCjDBqqU.js → UdpNotesPage-BABI4D2S.js} +2 -2
  120. package/dist/{UdpNotesPage-DCjDBqqU.js.map → UdpNotesPage-BABI4D2S.js.map} +1 -1
  121. package/dist/{UdpRemindersPage-CrgWmKWD.js → UdpRemindersPage-DuS3aPUk.js} +2 -2
  122. package/dist/{UdpRemindersPage-CrgWmKWD.js.map → UdpRemindersPage-DuS3aPUk.js.map} +1 -1
  123. package/dist/{UdpTransactionTypesPage-DgFxT4pz.js → UdpTransactionTypesPage-BS8Nji4M.js} +4 -3
  124. package/dist/UdpTransactionTypesPage-BS8Nji4M.js.map +1 -0
  125. package/dist/{UdpTransactionsPage-X1Wu4-CC.js → UdpTransactionsPage-DXt_i8vP.js} +6 -6
  126. package/dist/{UdpTransactionsPage-X1Wu4-CC.js.map → UdpTransactionsPage-DXt_i8vP.js.map} +1 -1
  127. package/dist/{UtilitySideBar-wvrocDGI.js → UtilitySideBar-BU3ppHrv.js} +2 -2
  128. package/dist/{UtilitySideBar-wvrocDGI.js.map → UtilitySideBar-BU3ppHrv.js.map} +1 -1
  129. package/dist/VirtualBrowser-CbL5X-W-.js +3 -0
  130. package/dist/{VirtualBrowser-CVs-vW3x.js → VirtualBrowser-qF1k097T.js} +2 -2
  131. package/dist/{VirtualBrowser-CVs-vW3x.js.map → VirtualBrowser-qF1k097T.js.map} +1 -1
  132. package/dist/{WorkOrderCard-s-6QK3Re.js → WorkOrderCard-geZ9o4iP.js} +2 -2
  133. package/dist/{WorkOrderCard-s-6QK3Re.js.map → WorkOrderCard-geZ9o4iP.js.map} +1 -1
  134. package/dist/{WorkflowContainer-Boj87JRI.js → WorkflowContainer-BxBxnHEY.js} +1 -1
  135. package/dist/{WorkflowContainer-DDGm1Cxo.js → WorkflowContainer-Drts8hsZ.js} +3 -3
  136. package/dist/{WorkflowContainer-DDGm1Cxo.js.map → WorkflowContainer-Drts8hsZ.js.map} +1 -1
  137. package/dist/{WorkflowContent-CU_-pOym.js → WorkflowContent-HlBHhWl8.js} +4 -4
  138. package/dist/{WorkflowContent-CU_-pOym.js.map → WorkflowContent-HlBHhWl8.js.map} +1 -1
  139. package/dist/{accordion--zpb1uMC.js → accordion-Ca8ECaw2.js} +3 -3
  140. package/dist/accordion-Ca8ECaw2.js.map +1 -0
  141. package/dist/{actionSummary-D0CwyTXJ.js → actionSummary-DwSHY1Tt.js} +2 -2
  142. package/dist/{actionSummary-D0CwyTXJ.js.map → actionSummary-DwSHY1Tt.js.map} +1 -1
  143. package/dist/actions/actionSummary/index.js +1 -1
  144. package/dist/actions/index.js +4 -4
  145. package/dist/{colorConverter-x64WSLsF.js → colorConverter-5PvESBA1.js} +7 -1
  146. package/dist/colorConverter-5PvESBA1.js.map +1 -0
  147. package/dist/componentSystems/multiThreadTimeline/index.js +2 -2
  148. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
  149. package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
  150. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  151. package/dist/componentSystems/pageRenderer/index.js +3 -3
  152. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  153. package/dist/dashboard/index.js +1 -1
  154. package/dist/dataBrowser/index.js +1 -1
  155. package/dist/{fileViewer-BbIFHura.js → fileViewer-C_Q-hFda.js} +4 -4
  156. package/dist/{fileViewer-BbIFHura.js.map → fileViewer-C_Q-hFda.js.map} +1 -1
  157. package/dist/{forms-BVssUn2h.js → forms-lyNriVSn.js} +3 -3
  158. package/dist/{forms-BVssUn2h.js.map → forms-lyNriVSn.js.map} +1 -1
  159. package/dist/index.js +47 -47
  160. package/dist/inquiry/dashboard/index.js +1 -1
  161. package/dist/inquiry/index.js +3 -3
  162. package/dist/inquiry/search/index.js +1 -1
  163. package/dist/layout/index.js +1 -1
  164. package/dist/{layout-Do6o2q2R.js → layout-IgoykV-U.js} +2 -2
  165. package/dist/{layout-Do6o2q2R.js.map → layout-IgoykV-U.js.map} +1 -1
  166. package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
  167. package/dist/maintenanceEngine/index.js +2 -2
  168. package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
  169. package/dist/{mapLayout-B_m2Fh8n.js → mapLayout-BlHtCf7p.js} +2 -2
  170. package/dist/{mapLayout-B_m2Fh8n.js.map → mapLayout-BlHtCf7p.js.map} +1 -1
  171. package/dist/menuPage/index.js +1 -1
  172. package/dist/{menuPage-7DcUM-Q3.js → menuPage-BHXchSeD.js} +2 -2
  173. package/dist/{menuPage-7DcUM-Q3.js.map → menuPage-BHXchSeD.js.map} +1 -1
  174. package/dist/{newGrid-zmtQXU5G.js → newGrid-Cx_UGQS8.js} +2 -2
  175. package/dist/{newGrid-zmtQXU5G.js.map → newGrid-Cx_UGQS8.js.map} +1 -1
  176. package/dist/notes/index.js +1 -1
  177. package/dist/page/PageContainer/index.js +1 -1
  178. package/dist/reminders/index.js +1 -1
  179. package/dist/routes/index.js +1 -1
  180. package/dist/{routes-DafRlYVQ.js → routes-Cep1JMTf.js} +5 -5
  181. package/dist/{routes-DafRlYVQ.js.map → routes-Cep1JMTf.js.map} +1 -1
  182. package/dist/shell/index.js +2 -2
  183. package/dist/shell/ui/index.js +1 -1
  184. package/dist/types/src/UI/accordion/Accordion.d.ts.map +1 -1
  185. package/dist/types/src/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.d.ts.map +1 -1
  186. package/dist/types/src/dashboard/DashboardCardGrid.d.ts.map +1 -1
  187. package/dist/types/src/inquiry/InquiryContainer.d.ts.map +1 -1
  188. package/dist/types/src/page/Page.d.ts.map +1 -1
  189. package/dist/types/src/page/PageContainer/PageContainer.d.ts.map +1 -1
  190. package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts +3 -1
  191. package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
  192. package/dist/types/src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.d.ts.map +1 -1
  193. package/dist/types/src/utilities/style/colorConverter.d.ts.map +1 -1
  194. package/dist/types/tsconfig.tsbuildinfo +1 -1
  195. package/dist/udp/export/index.js +1 -1
  196. package/dist/udp/fileImportMapping/index.js +1 -1
  197. package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
  198. package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
  199. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  200. package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
  201. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
  202. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
  203. package/dist/udp/pages/UdpNotesPage/index.js +1 -1
  204. package/dist/udp/pages/UdpPages/index.js +10 -10
  205. package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
  206. package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
  207. package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
  208. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  209. package/dist/uploader/index.js +1 -1
  210. package/dist/{uploader-YWjDebFN.js → uploader-BdeUKdYW.js} +2 -2
  211. package/dist/{uploader-YWjDebFN.js.map → uploader-BdeUKdYW.js.map} +1 -1
  212. package/dist/utilities/form/paymentForm/index.js +1 -1
  213. package/dist/utilities/provider/index.js +1 -1
  214. package/dist/utilities/style/index.js +1 -1
  215. package/dist/{widgets-BCHN3J80.js → widgets-Bwklnxz1.js} +2 -2
  216. package/dist/{widgets-BCHN3J80.js.map → widgets-Bwklnxz1.js.map} +1 -1
  217. package/dist/{withEngineComponent-CpOJBSmx.js → withEngineComponent-Bcnxug3h.js} +2 -2
  218. package/dist/{withEngineComponent-CpOJBSmx.js.map → withEngineComponent-Bcnxug3h.js.map} +1 -1
  219. package/dist/workflow/index.js +2 -2
  220. package/export-map.json +1 -1
  221. package/package.json +1 -1
  222. package/dist/DashboardWidget-CsOrr74H.js.map +0 -1
  223. package/dist/Inquiry-C094H1jQ.js +0 -3
  224. package/dist/MenuPage-R6mbeCuS.js +0 -3
  225. package/dist/Page-fxgRfgm6.js.map +0 -1
  226. package/dist/PageContainer-DTXNLt_2.js.map +0 -1
  227. package/dist/PrimaryActionHeader-DBJpROPu.js.map +0 -1
  228. package/dist/UdpAuditEventsPage-BiUdXrGu.js +0 -3
  229. package/dist/UdpFormsSubmissionGrid-DzMuwwTO.js.map +0 -1
  230. package/dist/UdpTransactionTypesPage-DgFxT4pz.js.map +0 -1
  231. package/dist/VirtualBrowser-CcWYHhRb.js +0 -3
  232. package/dist/accordion--zpb1uMC.js.map +0 -1
  233. package/dist/colorConverter-x64WSLsF.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import { t as Inquiry } from "./Inquiry-1o8EuckI.js";
2
+
3
+ export { Inquiry };
@@ -9,8 +9,8 @@ import { t as FluentIconButton } from "./FluentIconButton-Dc95mE3v.js";
9
9
  import { r as getSanitizedName } from "./entityUtilities-_8w-Zjs3.js";
10
10
  import { D as SearchGroupingType, O as SearchSortDirection, f as LogicalSearchOperatorEnums, p as LookupTypeEnums } from "./unitySystemEnums-CZDCsD5t.js";
11
11
  import { n as getSearchIdentifiers, r as getSearchObject } from "./SearchUtilities-DUW0kaw_.js";
12
- import { t as PrimaryActionHeader } from "./PrimaryActionHeader-DBJpROPu.js";
13
- import { t as AmbientCard } from "./AmbientCard-CLW4bPCu.js";
12
+ import { t as PrimaryActionHeader } from "./PrimaryActionHeader-H5w3twaM.js";
13
+ import { t as AmbientCard } from "./AmbientCard-DhAiVDYD.js";
14
14
  import { c as useGridFormat, o as useExport } from "./GridFunctions-D76ygiH2.js";
15
15
  import { n as SearchOperators, t as FilterOperators } from "./SearchOperator-D9838PIe.js";
16
16
  import { t as useSearchFilterParamsMap } from "./useSearchFilterParamsMap-hAHx2Rav.js";
@@ -832,4 +832,4 @@ const InquirySearchContainer = (props) => {
832
832
 
833
833
  //#endregion
834
834
  export { InquiryAdvancedSearchForm as a, InquiryAdvancedSearch as i, InquirySearchTable as n, InquirySearchDatasource as r, InquirySearchContainer as t };
835
- //# sourceMappingURL=InquirySearchContainer-DKDrIqNO.js.map
835
+ //# sourceMappingURL=InquirySearchContainer-zxbukV51.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InquirySearchContainer-DKDrIqNO.js","names":["useStyles","uuid","useStyles","Form","element","useStyles"],"sources":["../src/inquiry/search/InquiryAdvancedSearchForm.jsx","../src/inquiry/search/InquiryAdvancedSearch.jsx","../src/inquiry/search/InquirySearchDatasource.js","../src/inquiry/search/InquirySearchTable.jsx","../src/inquiry/search/InquirySearchContainer.jsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect } from 'react';\nimport { makeStyles, Divider, Typography } from '@material-ui/core';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { SearchOperators } from '../../models/SearchOperator.ts';\nimport clsx from 'clsx';\nimport { v4 as uuid } from 'uuid';\nimport { PropertyTypeEnum } from '../../enums/propertyTypeEnums.ts';\nimport { PropertyField } from '../../UI/property/PropertyFields';\nimport { LookupTypeEnums } from '../../enums/unitySystemEnums.ts';\nimport { csvStrToArrayOfObjects } from '../../utilities/input/SelectUtilities';\nimport { useForm } from 'react-final-form';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1),\n overflowX: 'auto'\n },\n fieldRow: { display: 'flex', alignItems: 'center' },\n dividerContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%'\n },\n divider: { width: '100%', marginTop: theme.spacing(1) },\n autocompleteRoot: {\n width: '38%',\n marginRight: theme.spacing(1)\n }\n}));\n\nexport const InquiryAdvancedSearchForm = (props) => {\n const {\n advancedSearchFields,\n selectedSearchOperators,\n setSelectedSearchOperators,\n catalogProperties,\n entityType,\n lookupPropertyNames,\n classes: classProps,\n executeQueryWithParameters,\n setForm\n } = props;\n const { root } = classProps || {};\n const classes = useStyles();\n\n const form = useForm();\n\n const handleSearchOperatorChange = useCallback(\n (value, fieldName) => {\n if (fieldName) {\n let updatedSelectedSearchOps = {};\n if (selectedSearchOperators) {\n updatedSelectedSearchOps = { ...selectedSearchOperators };\n }\n updatedSelectedSearchOps[fieldName] = value;\n setSelectedSearchOperators(updatedSelectedSearchOps);\n }\n },\n [selectedSearchOperators, setSelectedSearchOperators]\n );\n\n const getPropertyWidgetType = (type, useLookup) => {\n if (!type) {\n return null;\n }\n let propertyWidgetType = '';\n switch (type) {\n case PropertyTypeEnum.Int:\n case PropertyTypeEnum.Long:\n propertyWidgetType = 'IntegerWidget';\n break;\n case PropertyTypeEnum.DateTime:\n propertyWidgetType = 'DateTimeWidget';\n break;\n case PropertyTypeEnum.Boolean:\n propertyWidgetType = 'BooleanWidget';\n break;\n default:\n propertyWidgetType = 'TextWidget';\n }\n\n if (\n useLookup === LookupTypeEnums.Api ||\n useLookup === LookupTypeEnums.Csv\n ) {\n propertyWidgetType = 'AutoCompleteWidget';\n }\n\n return propertyWidgetType;\n };\n\n const getPropertyTypeSearchOperators = useCallback((type) => {\n if (!type) {\n return [];\n }\n switch (type) {\n case PropertyTypeEnum.Boolean:\n return SearchOperators.filter((operator) => operator.value === '=');\n default:\n return SearchOperators;\n }\n }, []);\n\n const fieldRows = useMemo(() => {\n if (!advancedSearchFields || !catalogProperties) {\n return [];\n }\n const keys = Object.keys(advancedSearchFields);\n\n const arrayOfFields = keys.reduce((list, key) => {\n const groupedItems = advancedSearchFields[key];\n let groupHeader = '';\n const foundGroupItem = groupedItems.find((item) => !!item.groupHeader);\n if (foundGroupItem) {\n groupHeader = foundGroupItem.groupHeader;\n }\n list.push({ groupHeader: groupHeader, isDivider: true, id: uuid() });\n groupedItems.forEach(async (item) => {\n const foundProperty = catalogProperties.find(\n (property) => property.name === item.name\n );\n const propertyWidgetType = getPropertyWidgetType(\n foundProperty?.type,\n foundProperty?.extendedProperties?.useLookup\n );\n let apiLookupOptions = null;\n if (\n !item.searchable &&\n !foundProperty?.extendedProperties?.searchable\n ) {\n return;\n }\n if (\n lookupPropertyNames.includes(foundProperty?.name) &&\n foundProperty?.extendedProperties?.useLookup === LookupTypeEnums.Api\n ) {\n // TODO: handle getting lookup data with api call\n // const response = await executeQueryWithParameters(\n // 'aa5d1fe1-1128-4d08-9ddb-58ad4fcf00e4'\n // );\n // console.log(response?.data);\n }\n list.push({\n ...item,\n isDivider: false,\n type: foundProperty?.type,\n propertyWidgetType: propertyWidgetType,\n useLookup: foundProperty?.extendedProperties?.useLookup,\n lookup: foundProperty?.extendedProperties?.lookup,\n apiLookupOptions: apiLookupOptions\n });\n });\n return list;\n }, []);\n return arrayOfFields;\n }, [advancedSearchFields, catalogProperties, lookupPropertyNames]);\n\n const getPropertyFields = useCallback(\n (config) => {\n const searchOperator = selectedSearchOperators\n ? selectedSearchOperators[config?.name]?.value\n : null;\n let options = [];\n if (config?.useLookup === LookupTypeEnums.Csv) {\n options = csvStrToArrayOfObjects(config?.lookup);\n }\n if (searchOperator === 'BETWEEN') {\n return (\n <div style={{ display: 'block', width: '100%' }}>\n <PropertyField\n propertyType={entityType}\n property={{\n key: config?.name,\n label: `${config?.columnName} (From)`,\n type: config?.propertyWidgetType,\n options: options || [],\n valueName: 'value'\n }}\n />\n <PropertyField\n propertyType={entityType}\n property={{\n key: `${config?.name}:between`,\n label: `${config?.columnName} (To)`,\n type: config?.propertyWidgetType,\n options: options || [],\n valueName: 'value'\n }}\n />\n </div>\n );\n }\n\n return (\n <PropertyField\n propertyType={entityType}\n property={{\n key: config?.name,\n label: config?.columnName,\n type: config?.propertyWidgetType,\n options: options || [],\n valueName: 'value'\n }}\n />\n );\n },\n [entityType, selectedSearchOperators]\n );\n\n const fieldComponents = useMemo(() => {\n if (!fieldRows || !fieldRows.length) {\n return null;\n }\n return fieldRows.map((config) => {\n return (\n <div key={config?.id}>\n {!config?.isDivider && (\n <div className={classes.fieldRow}>\n <FluentTextFieldAutoComplete\n id='udpRecord-InquiryAdvancedSearchForm-Text'\n udprecordid='udpRecord-InquiryAdvancedSearchForm-Text'\n label='Operator'\n name='searchOperator'\n variant='outlined'\n margin='dense'\n size='small'\n options={getPropertyTypeSearchOperators(config?.type) || []}\n optionKey='label'\n value={\n (selectedSearchOperators &&\n selectedSearchOperators[config?.name]) ||\n ''\n }\n onChange={(value) =>\n handleSearchOperatorChange(value, config?.name)\n }\n classes={{ autocompleteRoot: classes.autocompleteRoot }}\n />\n {getPropertyFields(config)}\n </div>\n )}\n {config?.isDivider && (\n <div className={classes.dividerContainer}>\n <div className={classes.divider}>\n <Divider orientation='horizontal' />\n </div>\n {config?.groupHeader && (\n <div\n style={{\n marginRight: 8,\n marginLeft: 8,\n textAlign: 'center',\n whiteSpace: 'nowrap'\n }}\n >\n <Typography variant='caption'>\n {config?.groupHeader}\n </Typography>\n </div>\n )}\n <div className={classes.divider}>\n <Divider orientation='horizontal' />\n </div>\n </div>\n )}\n </div>\n );\n });\n }, [\n fieldRows,\n classes,\n handleSearchOperatorChange,\n selectedSearchOperators,\n getPropertyTypeSearchOperators,\n getPropertyFields\n ]);\n\n useEffect(() => {\n if (form) {\n setForm(form);\n }\n }, [form, setForm]);\n\n return <div className={clsx(classes.root, root)}>{fieldComponents}</div>;\n};\n","import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { makeStyles, Divider, Typography } from '@material-ui/core';\nimport { SubmitButton } from '../../utilities/form/SubmitButton.tsx';\nimport { Form } from '../../utilities/form/Form.tsx';\nimport { FormButtons } from '../../utilities/form/FormButtons.tsx';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { orderBy } from 'lodash';\nimport { InquiryAdvancedSearchForm } from './InquiryAdvancedSearchForm';\nimport { LookupTypeEnums } from '../../enums/unitySystemEnums.ts';\nimport { SearchOperators } from '../../models/SearchOperator.ts';\nimport { FluentIconButton } from '../../UI/inputs/buttons/FluentIconButton';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { ClearIcon } from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities.js';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n entitySelect: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n fieldsRoot: {\n height: (props) => 'calc(100vh - 288px)'\n },\n title: {\n display: 'flex',\n justifyContent: 'space-between',\n margin: theme.spacing(1)\n },\n buttonWrapper: {\n textAlign: 'center'\n },\n button: {\n textTransform: 'none',\n padding: 0,\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0)'\n },\n color: theme.palette.secondary\n }\n}));\n\nexport const InquiryAdvancedSearch = (props) => {\n const {\n entityList,\n onSubmit,\n currentNodeCatalogReturnObject,\n catalogObjects,\n entityValue,\n setEntityValue,\n changeSideBarView,\n tree,\n executeQueryWithParameters\n } = props;\n const classes = useStyles(props);\n\n const [initialSelectedSearchOperators, setInitialSelectedSearchOperators] =\n useState(null);\n const [selectedSearchOperators, setSelectedSearchOperators] = useState(null);\n const [form, setForm] = useState(null);\n\n const entityTree = useMemo(() => {\n if (!entityValue || !tree) {\n return null;\n }\n const matchingEntityTree = tree.treeStructure.find(\n (node) => node.properties.catalogReturnObject === entityValue.value\n );\n let nodeTree = tree;\n if (matchingEntityTree?.properties?.associatedInquiryTree) {\n nodeTree = matchingEntityTree?.properties?.associatedInquiryTree;\n }\n return nodeTree;\n }, [tree, entityValue]);\n\n const catalogProperties = useMemo(() => {\n if (!entityValue || !catalogObjects) {\n return [];\n }\n const foundCatalogObject = catalogObjects.find(\n (catalog) => catalog.catalogObjectName === entityValue.value\n );\n return foundCatalogObject?.properties || [];\n }, [catalogObjects, entityValue]);\n\n const advancedSearchFields = useMemo(() => {\n if (!entityTree) {\n return null;\n }\n const parentNode = entityTree.treeStructure.find((node) => !node.parentId);\n const advancedSearchConfiguration =\n parentNode?.properties?.searchConfiguration?.filter(\n (config) => config.advancedSearch\n );\n advancedSearchConfiguration?.forEach(\n (config) =>\n (config.advancedSearch = Number.parseFloat(config.advancedSearch))\n );\n const orderedSearchConfiguration = orderBy(\n advancedSearchConfiguration,\n ['advancedSearch'],\n ['asc']\n );\n\n const groupedAndOrderdFields = {};\n\n orderedSearchConfiguration.forEach((config) => {\n const wholeInt = Math.floor(config.advancedSearch);\n if (!groupedAndOrderdFields[wholeInt]) {\n groupedAndOrderdFields[wholeInt] = [config];\n } else {\n groupedAndOrderdFields[wholeInt].push(config);\n }\n });\n return groupedAndOrderdFields;\n }, [entityTree]);\n\n const asCatalogLookupPropertyNames = useMemo(() => {\n if (!entityTree) {\n return [];\n }\n const parentNode = entityTree.treeStructure.find((node) => !node.parentId);\n const advancedSearchPropertyName =\n parentNode?.properties?.searchConfiguration\n ?.filter((config) => config.advancedSearch)\n .map((asConfig) => asConfig.name);\n const filteredProperties = catalogProperties.filter((property) =>\n advancedSearchPropertyName?.includes(property.name)\n );\n const lookupPropertyNames = [];\n filteredProperties.forEach((property) => {\n if (\n property?.extendedProperties?.useLookup !== LookupTypeEnums.No_Lookup ||\n !property?.extendedProperties?.useLookup\n ) {\n lookupPropertyNames.push(property.name);\n }\n });\n return lookupPropertyNames;\n }, [catalogProperties, entityTree]);\n\n const handleEntityChange = (value) => {\n setEntityValue(value);\n };\n\n const handleOnSubmit = useCallback(\n (values) => {\n if (onSubmit) {\n onSubmit(\n values,\n selectedSearchOperators,\n entityValue?.value,\n asCatalogLookupPropertyNames\n );\n }\n },\n [\n onSubmit,\n selectedSearchOperators,\n entityValue,\n asCatalogLookupPropertyNames\n ]\n );\n\n const handleClearFilter = useCallback(() => {\n if (form) {\n form.reset();\n }\n setSelectedSearchOperators(initialSelectedSearchOperators);\n }, [initialSelectedSearchOperators, form]);\n\n useEffect(() => {\n if (entityList?.length) {\n const foundEntity = entityList.find(\n (entity) => entity.value === currentNodeCatalogReturnObject\n );\n if (foundEntity) {\n setEntityValue(foundEntity);\n }\n }\n }, [entityList, currentNodeCatalogReturnObject, setEntityValue]);\n\n useEffect(() => {\n if (advancedSearchFields) {\n const mergedFields = [].concat.apply(\n [],\n Object.values(advancedSearchFields)\n );\n const initialSearchOperators = mergedFields.reduce((operators, field) => {\n if (field.advancedSearchOperator) {\n const foundOperator = SearchOperators.find(\n (op) => op.value === field.advancedSearchOperator\n );\n operators[field.name] = foundOperator ?? SearchOperators[0];\n } else {\n operators[field.name] = SearchOperators[0];\n }\n return operators;\n }, {});\n\n setInitialSelectedSearchOperators(initialSearchOperators);\n setSelectedSearchOperators(initialSearchOperators);\n }\n }, [advancedSearchFields]);\n\n return (\n <div className={classes.root}>\n <div>\n <Divider />\n </div>\n <div className={classes.title}>\n <Typography variant='subtitle1'>Advanced Search</Typography>\n <FluentIconButton\n id='udpRecord-InquiryAdvancedSearch-ClearIcon'\n udprecordid='udpRecord-InquiryAdvancedSearch-ClearIcon'\n icon={ClearIcon}\n onClick={() => changeSideBarView(0)}\n />\n </div>\n <div className={classes.entitySelect}>\n <FluentTextFieldAutoComplete\n id='udpRecord-InquiryAdvancedSearch-TextField'\n udprecordid='udpRecord-InquiryAdvancedSearch-TextField'\n label='Entity'\n variant='outlined'\n margin='normal'\n size='small'\n fullWidth\n options={entityList}\n optionKey='label'\n value={entityValue}\n onChange={handleEntityChange}\n />\n </div>\n <Form onSubmit={handleOnSubmit}>\n <InquiryAdvancedSearchForm\n advancedSearchFields={advancedSearchFields}\n selectedSearchOperators={selectedSearchOperators}\n setSelectedSearchOperators={setSelectedSearchOperators}\n catalogProperties={catalogProperties}\n entityType={getSanitizedName(entityValue?.value)}\n lookupPropertyNames={asCatalogLookupPropertyNames}\n classes={{ root: classes.fieldsRoot }}\n executeQueryWithParameters={executeQueryWithParameters}\n setForm={setForm}\n />\n <div className={classes.submitWrapper}>\n <div className={classes.buttonWrapper}>\n <FluentButton\n id='udpRecord-InquiryAdvancedSearch-ClearFilter'\n udprecordid='udpRecord-InquiryAdvancedSearch-ClearFilter'\n onClick={handleClearFilter}\n className={classes.button}\n >\n <Typography variant='subtitle1'>Clear Filter</Typography>\n </FluentButton>\n <FormButtons>\n <SubmitButton\n id='udpRecord-InquiryAdvancedSearch-Search'\n udprecordid='udpRecord-InquiryAdvancedSearch-Search'\n variant='contained'\n color='primary'\n disablePristine={false}\n disabled={!entityValue}\n fullWidth\n style={{ marginRight: 8, marginLeft: 8 }}\n >\n Search\n </SubmitButton>\n </FormButtons>\n </div>\n </div>\n </Form>\n </div>\n );\n};\n","import { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { FilterOperators } from '../../models/SearchOperator.ts';\nimport {\n SearchGroupingType,\n SearchSortDirection,\n LogicalSearchOperatorEnums\n} from '../../enums/unitySystemEnums.ts';\n\nexport const InquirySearchDatasource = (\n queryData,\n apiMethodId,\n searchFilterElements,\n logicalSearchOperator = LogicalSearchOperatorEnums.And,\n executeQuery,\n searchFilterGroups\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 searchObject = getSearchObject(\n searchFilterElements,\n page,\n null,\n false,\n logicalSearchOperator,\n searchFilterGroups\n );\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\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\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n if (element) {\n element.searchValue = filterItem.filter;\n element.searchOperator = FilterOperators[filterItem.type];\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type]\n });\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\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\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n if (element) {\n element.searchValue = key;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: key,\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 searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: key,\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.successCallback(queryData.pageList, queryData.total);\n } else {\n // TODO: add an overlay to display no rows\n params.successCallback([], 0);\n }\n } else {\n let response = null;\n if (executeQuery) {\n const data = { data: searchObject };\n response = await executeQuery(data, apiMethodId);\n }\n const rowData = response?.data;\n if (rowData) {\n if (rowData?.pageList?.length > 0) {\n params.successCallback(rowData.pageList, rowData.total);\n } else {\n params.successCallback([], 0);\n }\n } else {\n params.successCallback([], 0);\n }\n }\n }\n };\n};\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { useAgGridApi, AgTable } from '../../utilities/aggrid/AgTable.tsx';\nimport {\n useGridFormat,\n useExport\n} from '../../utilities/aggrid/GridFunctions.js';\nimport { PrimaryActionHeader } from '../../UI/utilityDisplay/utilityHeader/PrimaryActionHeader';\nimport { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';\nimport { camelToPascalCaseWithSpace } from '../../utilities/input/StringUtilities';\nimport { InquirySearchDatasource } from './InquirySearchDatasource';\nimport { getSearchIdentifiers } from '../../utilities/search/SearchUtilities';\nimport { LogicalSearchOperatorEnums } from '../../enums/unitySystemEnums.ts';\nimport { sortBy } from 'lodash';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: (props) => {\n const rowCount =\n props?.queryData?.pageList?.length > 10\n ? 10\n : props?.queryData?.pageList?.length ?? 0;\n const topResultsOnlyHeight = rowCount * 48 + 60;\n const moreResultsHeight = rowCount * 48 + 116;\n return props.topResultsOnly ? topResultsOnlyHeight : moreResultsHeight;\n }\n }\n}));\n\nexport const InquirySearchTable = (props) => {\n const {\n apiMethodId,\n associatedInquiryTree,\n catalogReturnObject,\n catalogObjects,\n columns,\n executeQuery,\n queryColumnsData,\n isAdvancedSearch,\n onRowDoubleClick,\n queryData,\n searchFilterElements,\n searchFilterGroups,\n setSelectedSearchRows,\n treeStructure,\n topResultsOnly = false,\n topResultsSize = 50\n } = props;\n\n const classes = useStyles(props);\n const { gridApi, onGridReady } = useAgGridApi();\n const [agGridOptions] = useState({});\n const [gridFormat] = useGridFormat();\n const [exportGrid] = useExport();\n\n const searchIdentifier = useMemo(() => {\n const identifiers =\n getSearchIdentifiers(catalogObjects, catalogReturnObject) || [];\n return identifiers.toString();\n }, [catalogObjects, catalogReturnObject]);\n\n const columnDefs = useMemo(() => {\n let commonCols = columns.map((column) => {\n let matchingColumnIndex = null;\n const matchingColumn = queryColumnsData.find((c, index) => {\n if (c.name === column?.name) {\n matchingColumnIndex = index;\n }\n return c.name === column?.name;\n });\n\n let def = {\n headerName: column.alias || camelToPascalCaseWithSpace(column.name),\n field: column.name\n // cellStyle: (params) => ValidateCellStylesByConditionals(params, column)\n };\n if (matchingColumn) {\n def = {\n headerName:\n matchingColumn.alias ||\n camelToPascalCaseWithSpace(matchingColumn.name),\n field: matchingColumn.name\n };\n }\n\n if (column?.extendedProperties?.searchable) {\n def = {\n ...def,\n filter: 'agTextColumnFilter',\n filterParams: {\n suppressAndOrCondition: true,\n filterOptions: [\n 'equals',\n 'contains',\n 'notEqual',\n 'greaterThan',\n 'lessThan',\n 'greaterThanOrEqual',\n 'lessThanOrEqual'\n ]\n },\n enableRowGroup: true\n };\n }\n if (column?.extendedProperties?.orderable) {\n def = {\n ...def,\n sortable: true\n };\n }\n def.hide = !matchingColumn;\n def.index = matchingColumnIndex;\n return def;\n });\n\n const currentNode = treeStructure.find(\n (node) => node.properties?.catalogReturnObject === catalogReturnObject\n );\n const searchConfiguration =\n currentNode?.properties?.searchConfiguration || null;\n let requiresOrdering = false;\n if (searchConfiguration) {\n requiresOrdering = searchConfiguration.some(\n (config) => !!config.results.trim()\n );\n }\n if (requiresOrdering) {\n // Sort columns using the searchConfiguration results\n const searchConfigWithResults = searchConfiguration.filter(\n (config) => !!config.results\n );\n commonCols.forEach((col) => {\n col.index = null;\n const foundSearchConfig = searchConfigWithResults.find(\n (config) => config.name === col.field\n );\n if (foundSearchConfig) {\n col.index = parseFloat(foundSearchConfig.results);\n }\n });\n }\n // Sort columns\n commonCols = sortBy(commonCols, (col) => col.index);\n return commonCols;\n }, [columns, queryColumnsData, treeStructure, catalogReturnObject]);\n\n const defaultColDef = useMemo(\n () => ({\n resizable: true,\n editable: false,\n // filter: true,\n enableValue: true,\n allowedAggFuncs: ['sum', 'min', 'max', 'count', 'avg', 'first', 'last']\n }),\n []\n );\n\n const rowData = useMemo(() => {\n if (!queryData) return [];\n return queryData?.pageList?.slice(0, topResultsSize);\n }, [queryData, topResultsSize]);\n\n const handleSelectionChanged = useCallback(() => {\n const selectedRows = gridApi.getSelectedRows();\n setSelectedSearchRows(\n catalogReturnObject,\n selectedRows,\n searchIdentifier,\n apiMethodId,\n treeStructure,\n associatedInquiryTree\n );\n }, [\n gridApi,\n catalogReturnObject,\n setSelectedSearchRows,\n searchIdentifier,\n apiMethodId,\n treeStructure,\n associatedInquiryTree\n ]);\n\n const handleRowDoubleClicked = useCallback(\n (event) => {\n if (!gridApi) return;\n if (onRowDoubleClick) {\n onRowDoubleClick(event.node.data, catalogReturnObject);\n }\n },\n [gridApi, onRowDoubleClick, catalogReturnObject]\n );\n\n useEffect(() => {\n if (!gridApi) return;\n gridApi.sizeColumnsToFit();\n let datasource = InquirySearchDatasource(\n queryData,\n apiMethodId,\n searchFilterElements,\n isAdvancedSearch\n ? LogicalSearchOperatorEnums.And\n : LogicalSearchOperatorEnums.Or,\n executeQuery,\n searchFilterGroups\n );\n // eslint-disable-next-line no-unused-expressions\n gridApi?.setServerSideDatasource(datasource);\n }, [\n gridApi,\n apiMethodId,\n searchFilterElements,\n queryData,\n isAdvancedSearch,\n executeQuery,\n searchFilterGroups\n ]);\n\n return (\n <div>\n {!topResultsOnly && (\n <>\n <PrimaryActionHeader\n hidePAB={true}\n // LAA UNT-2624: remove whitespace caused by the action row\n hideActionRow={true}\n expandAllItems={() => gridFormat(gridApi, 'expand')}\n collapse={() => gridFormat(gridApi, 'collapse')}\n resizeGrid={() => gridFormat(gridApi, 'resize')}\n exportGrid={() => exportGrid(gridApi, 'csv')}\n grid\n // value={value}\n // altInputs={value === 0 && childrenTabSwitcher}\n />\n <AgTable\n className={classes.root}\n modules={[ServerSideRowModelModule]}\n rowModelType={'serverSide'}\n serverSideStoreType={'partial'}\n pagination={true}\n paginationPageSize={20}\n cacheOverflowSize={2}\n maxConcurrentDatasourceRequests={1}\n cacheBlockSize={20}\n onGridReady={onGridReady}\n columnDefs={columnDefs}\n defaultColDef={defaultColDef}\n // getRowNodeId={row => row.channelConfigurationID}\n onRowDoubleClicked={handleRowDoubleClicked}\n rowSelection='multiple'\n rowMultiSelectWithClick={true}\n onSelectionChanged={handleSelectionChanged}\n // animateRows={true}\n api={gridApi}\n dynamicSizing\n {...agGridOptions}\n />\n </>\n )}\n {topResultsOnly && (\n <AgTable\n className={classes.root}\n rowData={rowData || []}\n onGridReady={onGridReady}\n columnDefs={columnDefs}\n defaultColDef={defaultColDef}\n // getRowNodeId={row => row.channelConfigurationID}\n onRowDoubleClicked={handleRowDoubleClicked}\n rowSelection='multiple'\n rowMultiSelectWithClick={true}\n onSelectionChanged={handleSelectionChanged}\n animateRows={true}\n api={gridApi}\n dynamicSizing\n {...agGridOptions}\n />\n )}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { makeStyles, LinearProgress } from '@material-ui/core';\nimport {\n getSearchObject,\n getSearchIdentifiers\n} from '../../utilities/search/SearchUtilities';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { InquirySearchTable } from './InquirySearchTable';\nimport clsx from 'clsx';\nimport { LogicalSearchOperatorEnums } from '../../enums/unitySystemEnums.ts';\nimport { useSearchFilterParamsMap } from '../../hooks/useSearchFilterParamsMap';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n overflowX: 'auto'\n },\n searchCard: {\n paddingBottom: theme.spacing(2)\n },\n emptyStateWrapper: {\n display: 'flex',\n justifyContent: 'center',\n paddingTop: '25vh'\n }\n}));\n\nexport const InquirySearchContainer = (props) => {\n const {\n advancedSearchItems,\n catalogObjects,\n classes: classProps,\n executeQueryAdHoc,\n isAdvancedSearch,\n loadSingleNode,\n onRowDoubleClick,\n searchItems,\n setSelectedSearchRows,\n apiMethodInstanceId\n } = props;\n const { root } = classProps || {};\n const classes = useStyles();\n const [searchList, setSearchList] = useState(null);\n const [loading, setLoading] = useState(false);\n const {\n getQueryFilterElements,\n getQueryFilterGroups,\n getQuerySearchOperator\n } = useSearchFilterParamsMap();\n\n const getQueryColumnsData = useCallback((apiMethodInstance) => {\n if (!apiMethodInstance) return [];\n let catalogMods = [];\n try {\n const catalogModificationStr = apiMethodInstance.catalogModification;\n const catalogModification = JSON.parse(catalogModificationStr);\n catalogMods = catalogModification;\n } catch {\n console.warn('Error parsing apiMethodInstance catalogModification');\n }\n return catalogMods;\n }, []);\n\n useEffect(() => {\n if (!catalogObjects) {\n setLoading(true);\n }\n if (!searchItems || !catalogObjects?.length) return;\n setLoading(true);\n const promises = [];\n let list = [];\n const promiseIndexMap = {};\n const itemsList = !isAdvancedSearch\n ? searchItems\n : advancedSearchItems || [];\n itemsList.forEach((item, index) => {\n //Get filter elements, filter groups, and operator from query\n let filterElementsFromQuery = getQueryFilterElements(\n item.apiMethodInstance\n ); //will this handle groups? if there is group within data builder\n let filterGroups = getQueryFilterGroups(item.apiMethodInstance);\n const logicalOperatorFromQuery = getQuerySearchOperator(\n item.apiMethodInstance\n );\n // Assigning queryColumnsData object here to know which columns are hidden based on\n // data browser query\n item.queryColumnsData = getQueryColumnsData(item.apiMethodInstance);\n\n //create new outer filter group to contain all filters in data builder query\n let outerQueryGroupId = 0;\n let queryOuterGroup = null;\n if (!!filterElementsFromQuery.length) {\n outerQueryGroupId = filterGroups.length + 1;\n queryOuterGroup = {\n groupId: outerQueryGroupId,\n logicalSearchOperator: logicalOperatorFromQuery\n };\n }\n\n //create new outer filter group to contain all filters from tree builder\n let outerTreeBuilderGroupId = 0;\n let inquiryOuterGroup = null;\n if (!!item?.searchFilterElements?.length) {\n outerTreeBuilderGroupId = outerQueryGroupId + 1;\n inquiryOuterGroup = {\n groupId: outerTreeBuilderGroupId,\n logicalSearchOperator: isAdvancedSearch\n ? LogicalSearchOperatorEnums.And\n : LogicalSearchOperatorEnums.Or\n };\n }\n\n //make the new outer query group the parent of non parent query groups (top level groups)\n filterGroups = filterGroups.map((group) => {\n if (!group.parentGroupId) {\n group.parentGroupId = outerQueryGroupId;\n }\n return group;\n });\n\n //make the new outer group the group of filter elements with no group (top level filter elements)\n filterElementsFromQuery = filterElementsFromQuery.map((element) => {\n if (!element.groupId) {\n element.groupId = outerQueryGroupId;\n }\n return element;\n });\n\n //add outer tree builder group Id to all tree builder filter elements\n item.searchFilterElements = item.searchFilterElements.map((element) => {\n element.groupId = outerTreeBuilderGroupId;\n return element;\n });\n\n //combine data builder query filters and tree builder filters\n const searchFilterElements = filterElementsFromQuery.concat(\n item.searchFilterElements || []\n );\n\n // Reassigning searchFilterElements to use the data browser filter elements\n // and the searched one\n item.searchFilterElements = searchFilterElements;\n\n //add new outer filter groups to filter group array\n if (!!inquiryOuterGroup) {\n filterGroups.push(inquiryOuterGroup);\n }\n if (!!queryOuterGroup) {\n filterGroups.push(queryOuterGroup);\n }\n\n item.searchFilterGroups = filterGroups;\n\n const searchObject = getSearchObject(\n searchFilterElements,\n 1,\n null,\n false,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n let shouldSearch = true;\n if (!searchFilterElements.some((sfe) => sfe.searchOperator !== '=')) {\n const equalsSearchFilterElements = searchFilterElements.filter(\n (sfe) => sfe.searchOperator === '='\n );\n if (!!equalsSearchFilterElements.length) {\n const catalogObject = catalogObjects.find(\n (co) => co.catalogObjectName === item.catalogReturnObject\n );\n const coProperties = catalogObject?.properties || [];\n if (!!coProperties.length) {\n equalsSearchFilterElements.forEach((esfe) => {\n if (!shouldSearch) {\n return;\n }\n const matchingProperty = coProperties.find(\n (cop) =>\n cop.name?.toLowerCase() === esfe.searchField?.toLowerCase()\n );\n\n if (matchingProperty?.type) {\n let compareNumber = true;\n let parsedValue = esfe.searchValue;\n switch (matchingProperty.type) {\n case 'int':\n const intRegex = /[^0-9]/;\n if (intRegex.test(esfe.searchValue)) {\n parsedValue = NaN;\n } else {\n parsedValue = parseInt(esfe.searchValue);\n }\n break;\n case 'double':\n case 'decimal':\n case 'float':\n const floatRegex = /[^0-9.]/;\n if (floatRegex.test(esfe.searchValue)) {\n parsedValue = NaN;\n } else {\n parsedValue = parseFloat(esfe.searchValue);\n }\n break;\n // Add additional handling for different types below\n default:\n compareNumber = false;\n break;\n }\n if (compareNumber && isNaN(parsedValue)) {\n shouldSearch = false;\n }\n }\n });\n }\n }\n }\n if (shouldSearch && executeQueryAdHoc) {\n const data = { data: searchObject };\n promiseIndexMap[promises.length] = index;\n promises.push(executeQueryAdHoc(data, item.apiMethodId));\n }\n list.push({ queryData: null, searchItem: item });\n });\n Promise.all(promises.map((p) => p.catch((e) => e))).then((responses) => {\n responses.forEach((response, i) => {\n const index = promiseIndexMap[i];\n if (response.status === 200) {\n const querySearchObj = list[index];\n querySearchObj.queryData = response.data;\n } else if (!response.status) {\n // handle response error\n const querySearchObj = list[index];\n console.error(\n `Retrieval Error Occured for ${querySearchObj?.searchItem?.catalogReturnObject}`\n );\n }\n });\n let matchingItem = list.find(\n (item) =>\n item?.searchItem?.apiMethodInstance?.apiMethodInstanceId ===\n apiMethodInstanceId && item?.queryData?.pageList?.length === 1\n );\n\n // Fallback to first item with single entry\n if (!matchingItem) {\n matchingItem = list.find(\n (item) => item?.queryData?.pageList?.length === 1\n );\n }\n\n if (matchingItem) {\n const querySearchObj = matchingItem;\n const node = {};\n const searchItem = querySearchObj?.searchItem;\n const identifiers =\n getSearchIdentifiers(\n catalogObjects,\n searchItem.catalogReturnObject\n ) || [];\n node[searchItem.catalogReturnObject] = {\n rows: matchingItem?.queryData?.pageList,\n apiMethodId: searchItem.apiMethodId,\n searchIdentifier: identifiers.toString(),\n treeStructure: searchItem.treeStructure\n };\n\n loadSingleNode(node);\n }\n\n setSearchList(list);\n setLoading(false);\n });\n }, [\n searchItems,\n isAdvancedSearch,\n advancedSearchItems,\n loadSingleNode,\n catalogObjects,\n executeQueryAdHoc,\n getQueryFilterElements,\n getQueryColumnsData,\n getQueryFilterGroups,\n getQuerySearchOperator,\n apiMethodInstanceId\n ]);\n\n return (\n <div className={clsx(classes.root, root)}>\n {loading && <LinearProgress />}\n {searchList?.map((searchObj) => {\n return (\n <div\n key={searchObj.searchItem.catalogReturnObject}\n className={classes.searchCard}\n >\n <AmbientCard\n key={`${searchObj.searchItem.catalogReturnObject}-${searchObj?.queryData?.total}`}\n title={`${getSanitizedName(\n searchObj.searchItem.catalogReturnObject\n )} - ${\n searchObj.error\n ? searchObj.error\n : searchObj?.queryData?.total || '0'\n }`}\n moreMessage='Top 10 results...'\n moreButton='Load More'\n moreButtonExpanded='Minimize'\n more={!!searchObj?.queryData?.pageList?.length}\n header\n fullWidth\n globalToggle\n collapseChildrenWhenExpanded\n toggleGlobalExpanded={!!searchObj?.queryData?.total}\n extendedList={\n <InquirySearchTable\n key={searchObj.searchItem.id}\n queryData={searchObj.queryData || []}\n columns={searchObj.searchItem.columns}\n apiMethodId={searchObj.searchItem.apiMethodId}\n searchFilterElements={\n searchObj.searchItem.searchFilterElements\n }\n searchFilterGroups={searchObj.searchItem.searchFilterGroups}\n catalogReturnObject={searchObj.searchItem.catalogReturnObject}\n setSelectedSearchRows={setSelectedSearchRows}\n catalogObjects={catalogObjects}\n treeStructure={searchObj.searchItem.treeStructure}\n associatedInquiryTree={\n searchObj.searchItem.associatedInquiryTree || null\n }\n onRowDoubleClick={onRowDoubleClick}\n isAdvancedSearch={isAdvancedSearch}\n executeQuery={executeQueryAdHoc}\n queryColumnsData={searchObj.searchItem.queryColumnsData}\n />\n }\n >\n {!!searchObj?.queryData?.pageList?.length && (\n <InquirySearchTable\n key={searchObj.searchItem.id}\n queryData={searchObj.queryData || []}\n columns={searchObj.searchItem.columns}\n apiMethodId={searchObj.searchItem.apiMethodId}\n searchFilterElements={\n searchObj.searchItem.searchFilterElements\n }\n searchFilterGroups={searchObj.searchItem.searchFilterGroups}\n catalogReturnObject={searchObj.searchItem.catalogReturnObject}\n setSelectedSearchRows={setSelectedSearchRows}\n catalogObjects={catalogObjects}\n treeStructure={searchObj.searchItem.treeStructure}\n associatedInquiryTree={\n searchObj.searchItem.associatedInquiryTree || null\n }\n onRowDoubleClick={onRowDoubleClick}\n topResultsOnly={true}\n topResultsSize={10}\n isAdvancedSearch={isAdvancedSearch}\n executeQuery={executeQueryAdHoc}\n queryColumnsData={searchObj.searchItem.queryColumnsData}\n />\n )}\n </AmbientCard>\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"InquirySearchContainer-zxbukV51.js","names":["useStyles","uuid","useStyles","Form","element","useStyles"],"sources":["../src/inquiry/search/InquiryAdvancedSearchForm.jsx","../src/inquiry/search/InquiryAdvancedSearch.jsx","../src/inquiry/search/InquirySearchDatasource.js","../src/inquiry/search/InquirySearchTable.jsx","../src/inquiry/search/InquirySearchContainer.jsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect } from 'react';\nimport { makeStyles, Divider, Typography } from '@material-ui/core';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { SearchOperators } from '../../models/SearchOperator.ts';\nimport clsx from 'clsx';\nimport { v4 as uuid } from 'uuid';\nimport { PropertyTypeEnum } from '../../enums/propertyTypeEnums.ts';\nimport { PropertyField } from '../../UI/property/PropertyFields';\nimport { LookupTypeEnums } from '../../enums/unitySystemEnums.ts';\nimport { csvStrToArrayOfObjects } from '../../utilities/input/SelectUtilities';\nimport { useForm } from 'react-final-form';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1),\n overflowX: 'auto'\n },\n fieldRow: { display: 'flex', alignItems: 'center' },\n dividerContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%'\n },\n divider: { width: '100%', marginTop: theme.spacing(1) },\n autocompleteRoot: {\n width: '38%',\n marginRight: theme.spacing(1)\n }\n}));\n\nexport const InquiryAdvancedSearchForm = (props) => {\n const {\n advancedSearchFields,\n selectedSearchOperators,\n setSelectedSearchOperators,\n catalogProperties,\n entityType,\n lookupPropertyNames,\n classes: classProps,\n executeQueryWithParameters,\n setForm\n } = props;\n const { root } = classProps || {};\n const classes = useStyles();\n\n const form = useForm();\n\n const handleSearchOperatorChange = useCallback(\n (value, fieldName) => {\n if (fieldName) {\n let updatedSelectedSearchOps = {};\n if (selectedSearchOperators) {\n updatedSelectedSearchOps = { ...selectedSearchOperators };\n }\n updatedSelectedSearchOps[fieldName] = value;\n setSelectedSearchOperators(updatedSelectedSearchOps);\n }\n },\n [selectedSearchOperators, setSelectedSearchOperators]\n );\n\n const getPropertyWidgetType = (type, useLookup) => {\n if (!type) {\n return null;\n }\n let propertyWidgetType = '';\n switch (type) {\n case PropertyTypeEnum.Int:\n case PropertyTypeEnum.Long:\n propertyWidgetType = 'IntegerWidget';\n break;\n case PropertyTypeEnum.DateTime:\n propertyWidgetType = 'DateTimeWidget';\n break;\n case PropertyTypeEnum.Boolean:\n propertyWidgetType = 'BooleanWidget';\n break;\n default:\n propertyWidgetType = 'TextWidget';\n }\n\n if (\n useLookup === LookupTypeEnums.Api ||\n useLookup === LookupTypeEnums.Csv\n ) {\n propertyWidgetType = 'AutoCompleteWidget';\n }\n\n return propertyWidgetType;\n };\n\n const getPropertyTypeSearchOperators = useCallback((type) => {\n if (!type) {\n return [];\n }\n switch (type) {\n case PropertyTypeEnum.Boolean:\n return SearchOperators.filter((operator) => operator.value === '=');\n default:\n return SearchOperators;\n }\n }, []);\n\n const fieldRows = useMemo(() => {\n if (!advancedSearchFields || !catalogProperties) {\n return [];\n }\n const keys = Object.keys(advancedSearchFields);\n\n const arrayOfFields = keys.reduce((list, key) => {\n const groupedItems = advancedSearchFields[key];\n let groupHeader = '';\n const foundGroupItem = groupedItems.find((item) => !!item.groupHeader);\n if (foundGroupItem) {\n groupHeader = foundGroupItem.groupHeader;\n }\n list.push({ groupHeader: groupHeader, isDivider: true, id: uuid() });\n groupedItems.forEach(async (item) => {\n const foundProperty = catalogProperties.find(\n (property) => property.name === item.name\n );\n const propertyWidgetType = getPropertyWidgetType(\n foundProperty?.type,\n foundProperty?.extendedProperties?.useLookup\n );\n let apiLookupOptions = null;\n if (\n !item.searchable &&\n !foundProperty?.extendedProperties?.searchable\n ) {\n return;\n }\n if (\n lookupPropertyNames.includes(foundProperty?.name) &&\n foundProperty?.extendedProperties?.useLookup === LookupTypeEnums.Api\n ) {\n // TODO: handle getting lookup data with api call\n // const response = await executeQueryWithParameters(\n // 'aa5d1fe1-1128-4d08-9ddb-58ad4fcf00e4'\n // );\n // console.log(response?.data);\n }\n list.push({\n ...item,\n isDivider: false,\n type: foundProperty?.type,\n propertyWidgetType: propertyWidgetType,\n useLookup: foundProperty?.extendedProperties?.useLookup,\n lookup: foundProperty?.extendedProperties?.lookup,\n apiLookupOptions: apiLookupOptions\n });\n });\n return list;\n }, []);\n return arrayOfFields;\n }, [advancedSearchFields, catalogProperties, lookupPropertyNames]);\n\n const getPropertyFields = useCallback(\n (config) => {\n const searchOperator = selectedSearchOperators\n ? selectedSearchOperators[config?.name]?.value\n : null;\n let options = [];\n if (config?.useLookup === LookupTypeEnums.Csv) {\n options = csvStrToArrayOfObjects(config?.lookup);\n }\n if (searchOperator === 'BETWEEN') {\n return (\n <div style={{ display: 'block', width: '100%' }}>\n <PropertyField\n propertyType={entityType}\n property={{\n key: config?.name,\n label: `${config?.columnName} (From)`,\n type: config?.propertyWidgetType,\n options: options || [],\n valueName: 'value'\n }}\n />\n <PropertyField\n propertyType={entityType}\n property={{\n key: `${config?.name}:between`,\n label: `${config?.columnName} (To)`,\n type: config?.propertyWidgetType,\n options: options || [],\n valueName: 'value'\n }}\n />\n </div>\n );\n }\n\n return (\n <PropertyField\n propertyType={entityType}\n property={{\n key: config?.name,\n label: config?.columnName,\n type: config?.propertyWidgetType,\n options: options || [],\n valueName: 'value'\n }}\n />\n );\n },\n [entityType, selectedSearchOperators]\n );\n\n const fieldComponents = useMemo(() => {\n if (!fieldRows || !fieldRows.length) {\n return null;\n }\n return fieldRows.map((config) => {\n return (\n <div key={config?.id}>\n {!config?.isDivider && (\n <div className={classes.fieldRow}>\n <FluentTextFieldAutoComplete\n id='udpRecord-InquiryAdvancedSearchForm-Text'\n udprecordid='udpRecord-InquiryAdvancedSearchForm-Text'\n label='Operator'\n name='searchOperator'\n variant='outlined'\n margin='dense'\n size='small'\n options={getPropertyTypeSearchOperators(config?.type) || []}\n optionKey='label'\n value={\n (selectedSearchOperators &&\n selectedSearchOperators[config?.name]) ||\n ''\n }\n onChange={(value) =>\n handleSearchOperatorChange(value, config?.name)\n }\n classes={{ autocompleteRoot: classes.autocompleteRoot }}\n />\n {getPropertyFields(config)}\n </div>\n )}\n {config?.isDivider && (\n <div className={classes.dividerContainer}>\n <div className={classes.divider}>\n <Divider orientation='horizontal' />\n </div>\n {config?.groupHeader && (\n <div\n style={{\n marginRight: 8,\n marginLeft: 8,\n textAlign: 'center',\n whiteSpace: 'nowrap'\n }}\n >\n <Typography variant='caption'>\n {config?.groupHeader}\n </Typography>\n </div>\n )}\n <div className={classes.divider}>\n <Divider orientation='horizontal' />\n </div>\n </div>\n )}\n </div>\n );\n });\n }, [\n fieldRows,\n classes,\n handleSearchOperatorChange,\n selectedSearchOperators,\n getPropertyTypeSearchOperators,\n getPropertyFields\n ]);\n\n useEffect(() => {\n if (form) {\n setForm(form);\n }\n }, [form, setForm]);\n\n return <div className={clsx(classes.root, root)}>{fieldComponents}</div>;\n};\n","import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { makeStyles, Divider, Typography } from '@material-ui/core';\nimport { SubmitButton } from '../../utilities/form/SubmitButton.tsx';\nimport { Form } from '../../utilities/form/Form.tsx';\nimport { FormButtons } from '../../utilities/form/FormButtons.tsx';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { orderBy } from 'lodash';\nimport { InquiryAdvancedSearchForm } from './InquiryAdvancedSearchForm';\nimport { LookupTypeEnums } from '../../enums/unitySystemEnums.ts';\nimport { SearchOperators } from '../../models/SearchOperator.ts';\nimport { FluentIconButton } from '../../UI/inputs/buttons/FluentIconButton';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport { ClearIcon } from '@fluentui/react-icons';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities.js';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n entitySelect: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n fieldsRoot: {\n height: (props) => 'calc(100vh - 288px)'\n },\n title: {\n display: 'flex',\n justifyContent: 'space-between',\n margin: theme.spacing(1)\n },\n buttonWrapper: {\n textAlign: 'center'\n },\n button: {\n textTransform: 'none',\n padding: 0,\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0)'\n },\n color: theme.palette.secondary\n }\n}));\n\nexport const InquiryAdvancedSearch = (props) => {\n const {\n entityList,\n onSubmit,\n currentNodeCatalogReturnObject,\n catalogObjects,\n entityValue,\n setEntityValue,\n changeSideBarView,\n tree,\n executeQueryWithParameters\n } = props;\n const classes = useStyles(props);\n\n const [initialSelectedSearchOperators, setInitialSelectedSearchOperators] =\n useState(null);\n const [selectedSearchOperators, setSelectedSearchOperators] = useState(null);\n const [form, setForm] = useState(null);\n\n const entityTree = useMemo(() => {\n if (!entityValue || !tree) {\n return null;\n }\n const matchingEntityTree = tree.treeStructure.find(\n (node) => node.properties.catalogReturnObject === entityValue.value\n );\n let nodeTree = tree;\n if (matchingEntityTree?.properties?.associatedInquiryTree) {\n nodeTree = matchingEntityTree?.properties?.associatedInquiryTree;\n }\n return nodeTree;\n }, [tree, entityValue]);\n\n const catalogProperties = useMemo(() => {\n if (!entityValue || !catalogObjects) {\n return [];\n }\n const foundCatalogObject = catalogObjects.find(\n (catalog) => catalog.catalogObjectName === entityValue.value\n );\n return foundCatalogObject?.properties || [];\n }, [catalogObjects, entityValue]);\n\n const advancedSearchFields = useMemo(() => {\n if (!entityTree) {\n return null;\n }\n const parentNode = entityTree.treeStructure.find((node) => !node.parentId);\n const advancedSearchConfiguration =\n parentNode?.properties?.searchConfiguration?.filter(\n (config) => config.advancedSearch\n );\n advancedSearchConfiguration?.forEach(\n (config) =>\n (config.advancedSearch = Number.parseFloat(config.advancedSearch))\n );\n const orderedSearchConfiguration = orderBy(\n advancedSearchConfiguration,\n ['advancedSearch'],\n ['asc']\n );\n\n const groupedAndOrderdFields = {};\n\n orderedSearchConfiguration.forEach((config) => {\n const wholeInt = Math.floor(config.advancedSearch);\n if (!groupedAndOrderdFields[wholeInt]) {\n groupedAndOrderdFields[wholeInt] = [config];\n } else {\n groupedAndOrderdFields[wholeInt].push(config);\n }\n });\n return groupedAndOrderdFields;\n }, [entityTree]);\n\n const asCatalogLookupPropertyNames = useMemo(() => {\n if (!entityTree) {\n return [];\n }\n const parentNode = entityTree.treeStructure.find((node) => !node.parentId);\n const advancedSearchPropertyName =\n parentNode?.properties?.searchConfiguration\n ?.filter((config) => config.advancedSearch)\n .map((asConfig) => asConfig.name);\n const filteredProperties = catalogProperties.filter((property) =>\n advancedSearchPropertyName?.includes(property.name)\n );\n const lookupPropertyNames = [];\n filteredProperties.forEach((property) => {\n if (\n property?.extendedProperties?.useLookup !== LookupTypeEnums.No_Lookup ||\n !property?.extendedProperties?.useLookup\n ) {\n lookupPropertyNames.push(property.name);\n }\n });\n return lookupPropertyNames;\n }, [catalogProperties, entityTree]);\n\n const handleEntityChange = (value) => {\n setEntityValue(value);\n };\n\n const handleOnSubmit = useCallback(\n (values) => {\n if (onSubmit) {\n onSubmit(\n values,\n selectedSearchOperators,\n entityValue?.value,\n asCatalogLookupPropertyNames\n );\n }\n },\n [\n onSubmit,\n selectedSearchOperators,\n entityValue,\n asCatalogLookupPropertyNames\n ]\n );\n\n const handleClearFilter = useCallback(() => {\n if (form) {\n form.reset();\n }\n setSelectedSearchOperators(initialSelectedSearchOperators);\n }, [initialSelectedSearchOperators, form]);\n\n useEffect(() => {\n if (entityList?.length) {\n const foundEntity = entityList.find(\n (entity) => entity.value === currentNodeCatalogReturnObject\n );\n if (foundEntity) {\n setEntityValue(foundEntity);\n }\n }\n }, [entityList, currentNodeCatalogReturnObject, setEntityValue]);\n\n useEffect(() => {\n if (advancedSearchFields) {\n const mergedFields = [].concat.apply(\n [],\n Object.values(advancedSearchFields)\n );\n const initialSearchOperators = mergedFields.reduce((operators, field) => {\n if (field.advancedSearchOperator) {\n const foundOperator = SearchOperators.find(\n (op) => op.value === field.advancedSearchOperator\n );\n operators[field.name] = foundOperator ?? SearchOperators[0];\n } else {\n operators[field.name] = SearchOperators[0];\n }\n return operators;\n }, {});\n\n setInitialSelectedSearchOperators(initialSearchOperators);\n setSelectedSearchOperators(initialSearchOperators);\n }\n }, [advancedSearchFields]);\n\n return (\n <div className={classes.root}>\n <div>\n <Divider />\n </div>\n <div className={classes.title}>\n <Typography variant='subtitle1'>Advanced Search</Typography>\n <FluentIconButton\n id='udpRecord-InquiryAdvancedSearch-ClearIcon'\n udprecordid='udpRecord-InquiryAdvancedSearch-ClearIcon'\n icon={ClearIcon}\n onClick={() => changeSideBarView(0)}\n />\n </div>\n <div className={classes.entitySelect}>\n <FluentTextFieldAutoComplete\n id='udpRecord-InquiryAdvancedSearch-TextField'\n udprecordid='udpRecord-InquiryAdvancedSearch-TextField'\n label='Entity'\n variant='outlined'\n margin='normal'\n size='small'\n fullWidth\n options={entityList}\n optionKey='label'\n value={entityValue}\n onChange={handleEntityChange}\n />\n </div>\n <Form onSubmit={handleOnSubmit}>\n <InquiryAdvancedSearchForm\n advancedSearchFields={advancedSearchFields}\n selectedSearchOperators={selectedSearchOperators}\n setSelectedSearchOperators={setSelectedSearchOperators}\n catalogProperties={catalogProperties}\n entityType={getSanitizedName(entityValue?.value)}\n lookupPropertyNames={asCatalogLookupPropertyNames}\n classes={{ root: classes.fieldsRoot }}\n executeQueryWithParameters={executeQueryWithParameters}\n setForm={setForm}\n />\n <div className={classes.submitWrapper}>\n <div className={classes.buttonWrapper}>\n <FluentButton\n id='udpRecord-InquiryAdvancedSearch-ClearFilter'\n udprecordid='udpRecord-InquiryAdvancedSearch-ClearFilter'\n onClick={handleClearFilter}\n className={classes.button}\n >\n <Typography variant='subtitle1'>Clear Filter</Typography>\n </FluentButton>\n <FormButtons>\n <SubmitButton\n id='udpRecord-InquiryAdvancedSearch-Search'\n udprecordid='udpRecord-InquiryAdvancedSearch-Search'\n variant='contained'\n color='primary'\n disablePristine={false}\n disabled={!entityValue}\n fullWidth\n style={{ marginRight: 8, marginLeft: 8 }}\n >\n Search\n </SubmitButton>\n </FormButtons>\n </div>\n </div>\n </Form>\n </div>\n );\n};\n","import { getSearchObject } from '../../utilities/search/SearchUtilities';\nimport { FilterOperators } from '../../models/SearchOperator.ts';\nimport {\n SearchGroupingType,\n SearchSortDirection,\n LogicalSearchOperatorEnums\n} from '../../enums/unitySystemEnums.ts';\n\nexport const InquirySearchDatasource = (\n queryData,\n apiMethodId,\n searchFilterElements,\n logicalSearchOperator = LogicalSearchOperatorEnums.And,\n executeQuery,\n searchFilterGroups\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 searchObject = getSearchObject(\n searchFilterElements,\n page,\n null,\n false,\n logicalSearchOperator,\n searchFilterGroups\n );\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\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\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n if (element) {\n element.searchValue = filterItem.filter;\n element.searchOperator = FilterOperators[filterItem.type];\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: filterItem.filter,\n searchOperator: FilterOperators[filterItem.type]\n });\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\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\n const element = filterElements.find(\n (element) => element.searchField === formattedPropertyName\n );\n if (element) {\n element.searchValue = key;\n element.searchOperator = '=';\n } else {\n filterElements.push({\n searchField: formattedPropertyName,\n searchValue: key,\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 searchObject.filterElements.push({\n searchField: formattedPropertyNameForSearch,\n searchValue: key,\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.successCallback(queryData.pageList, queryData.total);\n } else {\n // TODO: add an overlay to display no rows\n params.successCallback([], 0);\n }\n } else {\n let response = null;\n if (executeQuery) {\n const data = { data: searchObject };\n response = await executeQuery(data, apiMethodId);\n }\n const rowData = response?.data;\n if (rowData) {\n if (rowData?.pageList?.length > 0) {\n params.successCallback(rowData.pageList, rowData.total);\n } else {\n params.successCallback([], 0);\n }\n } else {\n params.successCallback([], 0);\n }\n }\n }\n };\n};\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { useAgGridApi, AgTable } from '../../utilities/aggrid/AgTable.tsx';\nimport {\n useGridFormat,\n useExport\n} from '../../utilities/aggrid/GridFunctions.js';\nimport { PrimaryActionHeader } from '../../UI/utilityDisplay/utilityHeader/PrimaryActionHeader';\nimport { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';\nimport { camelToPascalCaseWithSpace } from '../../utilities/input/StringUtilities';\nimport { InquirySearchDatasource } from './InquirySearchDatasource';\nimport { getSearchIdentifiers } from '../../utilities/search/SearchUtilities';\nimport { LogicalSearchOperatorEnums } from '../../enums/unitySystemEnums.ts';\nimport { sortBy } from 'lodash';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: (props) => {\n const rowCount =\n props?.queryData?.pageList?.length > 10\n ? 10\n : props?.queryData?.pageList?.length ?? 0;\n const topResultsOnlyHeight = rowCount * 48 + 60;\n const moreResultsHeight = rowCount * 48 + 116;\n return props.topResultsOnly ? topResultsOnlyHeight : moreResultsHeight;\n }\n }\n}));\n\nexport const InquirySearchTable = (props) => {\n const {\n apiMethodId,\n associatedInquiryTree,\n catalogReturnObject,\n catalogObjects,\n columns,\n executeQuery,\n queryColumnsData,\n isAdvancedSearch,\n onRowDoubleClick,\n queryData,\n searchFilterElements,\n searchFilterGroups,\n setSelectedSearchRows,\n treeStructure,\n topResultsOnly = false,\n topResultsSize = 50\n } = props;\n\n const classes = useStyles(props);\n const { gridApi, onGridReady } = useAgGridApi();\n const [agGridOptions] = useState({});\n const [gridFormat] = useGridFormat();\n const [exportGrid] = useExport();\n\n const searchIdentifier = useMemo(() => {\n const identifiers =\n getSearchIdentifiers(catalogObjects, catalogReturnObject) || [];\n return identifiers.toString();\n }, [catalogObjects, catalogReturnObject]);\n\n const columnDefs = useMemo(() => {\n let commonCols = columns.map((column) => {\n let matchingColumnIndex = null;\n const matchingColumn = queryColumnsData.find((c, index) => {\n if (c.name === column?.name) {\n matchingColumnIndex = index;\n }\n return c.name === column?.name;\n });\n\n let def = {\n headerName: column.alias || camelToPascalCaseWithSpace(column.name),\n field: column.name\n // cellStyle: (params) => ValidateCellStylesByConditionals(params, column)\n };\n if (matchingColumn) {\n def = {\n headerName:\n matchingColumn.alias ||\n camelToPascalCaseWithSpace(matchingColumn.name),\n field: matchingColumn.name\n };\n }\n\n if (column?.extendedProperties?.searchable) {\n def = {\n ...def,\n filter: 'agTextColumnFilter',\n filterParams: {\n suppressAndOrCondition: true,\n filterOptions: [\n 'equals',\n 'contains',\n 'notEqual',\n 'greaterThan',\n 'lessThan',\n 'greaterThanOrEqual',\n 'lessThanOrEqual'\n ]\n },\n enableRowGroup: true\n };\n }\n if (column?.extendedProperties?.orderable) {\n def = {\n ...def,\n sortable: true\n };\n }\n def.hide = !matchingColumn;\n def.index = matchingColumnIndex;\n return def;\n });\n\n const currentNode = treeStructure.find(\n (node) => node.properties?.catalogReturnObject === catalogReturnObject\n );\n const searchConfiguration =\n currentNode?.properties?.searchConfiguration || null;\n let requiresOrdering = false;\n if (searchConfiguration) {\n requiresOrdering = searchConfiguration.some(\n (config) => !!config.results.trim()\n );\n }\n if (requiresOrdering) {\n // Sort columns using the searchConfiguration results\n const searchConfigWithResults = searchConfiguration.filter(\n (config) => !!config.results\n );\n commonCols.forEach((col) => {\n col.index = null;\n const foundSearchConfig = searchConfigWithResults.find(\n (config) => config.name === col.field\n );\n if (foundSearchConfig) {\n col.index = parseFloat(foundSearchConfig.results);\n }\n });\n }\n // Sort columns\n commonCols = sortBy(commonCols, (col) => col.index);\n return commonCols;\n }, [columns, queryColumnsData, treeStructure, catalogReturnObject]);\n\n const defaultColDef = useMemo(\n () => ({\n resizable: true,\n editable: false,\n // filter: true,\n enableValue: true,\n allowedAggFuncs: ['sum', 'min', 'max', 'count', 'avg', 'first', 'last']\n }),\n []\n );\n\n const rowData = useMemo(() => {\n if (!queryData) return [];\n return queryData?.pageList?.slice(0, topResultsSize);\n }, [queryData, topResultsSize]);\n\n const handleSelectionChanged = useCallback(() => {\n const selectedRows = gridApi.getSelectedRows();\n setSelectedSearchRows(\n catalogReturnObject,\n selectedRows,\n searchIdentifier,\n apiMethodId,\n treeStructure,\n associatedInquiryTree\n );\n }, [\n gridApi,\n catalogReturnObject,\n setSelectedSearchRows,\n searchIdentifier,\n apiMethodId,\n treeStructure,\n associatedInquiryTree\n ]);\n\n const handleRowDoubleClicked = useCallback(\n (event) => {\n if (!gridApi) return;\n if (onRowDoubleClick) {\n onRowDoubleClick(event.node.data, catalogReturnObject);\n }\n },\n [gridApi, onRowDoubleClick, catalogReturnObject]\n );\n\n useEffect(() => {\n if (!gridApi) return;\n gridApi.sizeColumnsToFit();\n let datasource = InquirySearchDatasource(\n queryData,\n apiMethodId,\n searchFilterElements,\n isAdvancedSearch\n ? LogicalSearchOperatorEnums.And\n : LogicalSearchOperatorEnums.Or,\n executeQuery,\n searchFilterGroups\n );\n // eslint-disable-next-line no-unused-expressions\n gridApi?.setServerSideDatasource(datasource);\n }, [\n gridApi,\n apiMethodId,\n searchFilterElements,\n queryData,\n isAdvancedSearch,\n executeQuery,\n searchFilterGroups\n ]);\n\n return (\n <div>\n {!topResultsOnly && (\n <>\n <PrimaryActionHeader\n hidePAB={true}\n // LAA UNT-2624: remove whitespace caused by the action row\n hideActionRow={true}\n expandAllItems={() => gridFormat(gridApi, 'expand')}\n collapse={() => gridFormat(gridApi, 'collapse')}\n resizeGrid={() => gridFormat(gridApi, 'resize')}\n exportGrid={() => exportGrid(gridApi, 'csv')}\n grid\n // value={value}\n // altInputs={value === 0 && childrenTabSwitcher}\n />\n <AgTable\n className={classes.root}\n modules={[ServerSideRowModelModule]}\n rowModelType={'serverSide'}\n serverSideStoreType={'partial'}\n pagination={true}\n paginationPageSize={20}\n cacheOverflowSize={2}\n maxConcurrentDatasourceRequests={1}\n cacheBlockSize={20}\n onGridReady={onGridReady}\n columnDefs={columnDefs}\n defaultColDef={defaultColDef}\n // getRowNodeId={row => row.channelConfigurationID}\n onRowDoubleClicked={handleRowDoubleClicked}\n rowSelection='multiple'\n rowMultiSelectWithClick={true}\n onSelectionChanged={handleSelectionChanged}\n // animateRows={true}\n api={gridApi}\n dynamicSizing\n {...agGridOptions}\n />\n </>\n )}\n {topResultsOnly && (\n <AgTable\n className={classes.root}\n rowData={rowData || []}\n onGridReady={onGridReady}\n columnDefs={columnDefs}\n defaultColDef={defaultColDef}\n // getRowNodeId={row => row.channelConfigurationID}\n onRowDoubleClicked={handleRowDoubleClicked}\n rowSelection='multiple'\n rowMultiSelectWithClick={true}\n onSelectionChanged={handleSelectionChanged}\n animateRows={true}\n api={gridApi}\n dynamicSizing\n {...agGridOptions}\n />\n )}\n </div>\n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { makeStyles, LinearProgress } from '@material-ui/core';\nimport {\n getSearchObject,\n getSearchIdentifiers\n} from '../../utilities/search/SearchUtilities';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { InquirySearchTable } from './InquirySearchTable';\nimport clsx from 'clsx';\nimport { LogicalSearchOperatorEnums } from '../../enums/unitySystemEnums.ts';\nimport { useSearchFilterParamsMap } from '../../hooks/useSearchFilterParamsMap';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n overflowX: 'auto'\n },\n searchCard: {\n paddingBottom: theme.spacing(2)\n },\n emptyStateWrapper: {\n display: 'flex',\n justifyContent: 'center',\n paddingTop: '25vh'\n }\n}));\n\nexport const InquirySearchContainer = (props) => {\n const {\n advancedSearchItems,\n catalogObjects,\n classes: classProps,\n executeQueryAdHoc,\n isAdvancedSearch,\n loadSingleNode,\n onRowDoubleClick,\n searchItems,\n setSelectedSearchRows,\n apiMethodInstanceId\n } = props;\n const { root } = classProps || {};\n const classes = useStyles();\n const [searchList, setSearchList] = useState(null);\n const [loading, setLoading] = useState(false);\n const {\n getQueryFilterElements,\n getQueryFilterGroups,\n getQuerySearchOperator\n } = useSearchFilterParamsMap();\n\n const getQueryColumnsData = useCallback((apiMethodInstance) => {\n if (!apiMethodInstance) return [];\n let catalogMods = [];\n try {\n const catalogModificationStr = apiMethodInstance.catalogModification;\n const catalogModification = JSON.parse(catalogModificationStr);\n catalogMods = catalogModification;\n } catch {\n console.warn('Error parsing apiMethodInstance catalogModification');\n }\n return catalogMods;\n }, []);\n\n useEffect(() => {\n if (!catalogObjects) {\n setLoading(true);\n }\n if (!searchItems || !catalogObjects?.length) return;\n setLoading(true);\n const promises = [];\n let list = [];\n const promiseIndexMap = {};\n const itemsList = !isAdvancedSearch\n ? searchItems\n : advancedSearchItems || [];\n itemsList.forEach((item, index) => {\n //Get filter elements, filter groups, and operator from query\n let filterElementsFromQuery = getQueryFilterElements(\n item.apiMethodInstance\n ); //will this handle groups? if there is group within data builder\n let filterGroups = getQueryFilterGroups(item.apiMethodInstance);\n const logicalOperatorFromQuery = getQuerySearchOperator(\n item.apiMethodInstance\n );\n // Assigning queryColumnsData object here to know which columns are hidden based on\n // data browser query\n item.queryColumnsData = getQueryColumnsData(item.apiMethodInstance);\n\n //create new outer filter group to contain all filters in data builder query\n let outerQueryGroupId = 0;\n let queryOuterGroup = null;\n if (!!filterElementsFromQuery.length) {\n outerQueryGroupId = filterGroups.length + 1;\n queryOuterGroup = {\n groupId: outerQueryGroupId,\n logicalSearchOperator: logicalOperatorFromQuery\n };\n }\n\n //create new outer filter group to contain all filters from tree builder\n let outerTreeBuilderGroupId = 0;\n let inquiryOuterGroup = null;\n if (!!item?.searchFilterElements?.length) {\n outerTreeBuilderGroupId = outerQueryGroupId + 1;\n inquiryOuterGroup = {\n groupId: outerTreeBuilderGroupId,\n logicalSearchOperator: isAdvancedSearch\n ? LogicalSearchOperatorEnums.And\n : LogicalSearchOperatorEnums.Or\n };\n }\n\n //make the new outer query group the parent of non parent query groups (top level groups)\n filterGroups = filterGroups.map((group) => {\n if (!group.parentGroupId) {\n group.parentGroupId = outerQueryGroupId;\n }\n return group;\n });\n\n //make the new outer group the group of filter elements with no group (top level filter elements)\n filterElementsFromQuery = filterElementsFromQuery.map((element) => {\n if (!element.groupId) {\n element.groupId = outerQueryGroupId;\n }\n return element;\n });\n\n //add outer tree builder group Id to all tree builder filter elements\n item.searchFilterElements = item.searchFilterElements.map((element) => {\n element.groupId = outerTreeBuilderGroupId;\n return element;\n });\n\n //combine data builder query filters and tree builder filters\n const searchFilterElements = filterElementsFromQuery.concat(\n item.searchFilterElements || []\n );\n\n // Reassigning searchFilterElements to use the data browser filter elements\n // and the searched one\n item.searchFilterElements = searchFilterElements;\n\n //add new outer filter groups to filter group array\n if (!!inquiryOuterGroup) {\n filterGroups.push(inquiryOuterGroup);\n }\n if (!!queryOuterGroup) {\n filterGroups.push(queryOuterGroup);\n }\n\n item.searchFilterGroups = filterGroups;\n\n const searchObject = getSearchObject(\n searchFilterElements,\n 1,\n null,\n false,\n LogicalSearchOperatorEnums.And,\n filterGroups\n );\n let shouldSearch = true;\n if (!searchFilterElements.some((sfe) => sfe.searchOperator !== '=')) {\n const equalsSearchFilterElements = searchFilterElements.filter(\n (sfe) => sfe.searchOperator === '='\n );\n if (!!equalsSearchFilterElements.length) {\n const catalogObject = catalogObjects.find(\n (co) => co.catalogObjectName === item.catalogReturnObject\n );\n const coProperties = catalogObject?.properties || [];\n if (!!coProperties.length) {\n equalsSearchFilterElements.forEach((esfe) => {\n if (!shouldSearch) {\n return;\n }\n const matchingProperty = coProperties.find(\n (cop) =>\n cop.name?.toLowerCase() === esfe.searchField?.toLowerCase()\n );\n\n if (matchingProperty?.type) {\n let compareNumber = true;\n let parsedValue = esfe.searchValue;\n switch (matchingProperty.type) {\n case 'int':\n const intRegex = /[^0-9]/;\n if (intRegex.test(esfe.searchValue)) {\n parsedValue = NaN;\n } else {\n parsedValue = parseInt(esfe.searchValue);\n }\n break;\n case 'double':\n case 'decimal':\n case 'float':\n const floatRegex = /[^0-9.]/;\n if (floatRegex.test(esfe.searchValue)) {\n parsedValue = NaN;\n } else {\n parsedValue = parseFloat(esfe.searchValue);\n }\n break;\n // Add additional handling for different types below\n default:\n compareNumber = false;\n break;\n }\n if (compareNumber && isNaN(parsedValue)) {\n shouldSearch = false;\n }\n }\n });\n }\n }\n }\n if (shouldSearch && executeQueryAdHoc) {\n const data = { data: searchObject };\n promiseIndexMap[promises.length] = index;\n promises.push(executeQueryAdHoc(data, item.apiMethodId));\n }\n list.push({ queryData: null, searchItem: item });\n });\n Promise.all(promises.map((p) => p.catch((e) => e))).then((responses) => {\n responses.forEach((response, i) => {\n const index = promiseIndexMap[i];\n if (response.status === 200) {\n const querySearchObj = list[index];\n querySearchObj.queryData = response.data;\n } else if (!response.status) {\n // handle response error\n const querySearchObj = list[index];\n console.error(\n `Retrieval Error Occured for ${querySearchObj?.searchItem?.catalogReturnObject}`\n );\n }\n });\n let matchingItem = list.find(\n (item) =>\n item?.searchItem?.apiMethodInstance?.apiMethodInstanceId ===\n apiMethodInstanceId && item?.queryData?.pageList?.length === 1\n );\n\n // Fallback to first item with single entry\n if (!matchingItem) {\n matchingItem = list.find(\n (item) => item?.queryData?.pageList?.length === 1\n );\n }\n\n if (matchingItem) {\n const querySearchObj = matchingItem;\n const node = {};\n const searchItem = querySearchObj?.searchItem;\n const identifiers =\n getSearchIdentifiers(\n catalogObjects,\n searchItem.catalogReturnObject\n ) || [];\n node[searchItem.catalogReturnObject] = {\n rows: matchingItem?.queryData?.pageList,\n apiMethodId: searchItem.apiMethodId,\n searchIdentifier: identifiers.toString(),\n treeStructure: searchItem.treeStructure\n };\n\n loadSingleNode(node);\n }\n\n setSearchList(list);\n setLoading(false);\n });\n }, [\n searchItems,\n isAdvancedSearch,\n advancedSearchItems,\n loadSingleNode,\n catalogObjects,\n executeQueryAdHoc,\n getQueryFilterElements,\n getQueryColumnsData,\n getQueryFilterGroups,\n getQuerySearchOperator,\n apiMethodInstanceId\n ]);\n\n return (\n <div className={clsx(classes.root, root)}>\n {loading && <LinearProgress />}\n {searchList?.map((searchObj) => {\n return (\n <div\n key={searchObj.searchItem.catalogReturnObject}\n className={classes.searchCard}\n >\n <AmbientCard\n key={`${searchObj.searchItem.catalogReturnObject}-${searchObj?.queryData?.total}`}\n title={`${getSanitizedName(\n searchObj.searchItem.catalogReturnObject\n )} - ${\n searchObj.error\n ? searchObj.error\n : searchObj?.queryData?.total || '0'\n }`}\n moreMessage='Top 10 results...'\n moreButton='Load More'\n moreButtonExpanded='Minimize'\n more={!!searchObj?.queryData?.pageList?.length}\n header\n fullWidth\n globalToggle\n collapseChildrenWhenExpanded\n toggleGlobalExpanded={!!searchObj?.queryData?.total}\n extendedList={\n <InquirySearchTable\n key={searchObj.searchItem.id}\n queryData={searchObj.queryData || []}\n columns={searchObj.searchItem.columns}\n apiMethodId={searchObj.searchItem.apiMethodId}\n searchFilterElements={\n searchObj.searchItem.searchFilterElements\n }\n searchFilterGroups={searchObj.searchItem.searchFilterGroups}\n catalogReturnObject={searchObj.searchItem.catalogReturnObject}\n setSelectedSearchRows={setSelectedSearchRows}\n catalogObjects={catalogObjects}\n treeStructure={searchObj.searchItem.treeStructure}\n associatedInquiryTree={\n searchObj.searchItem.associatedInquiryTree || null\n }\n onRowDoubleClick={onRowDoubleClick}\n isAdvancedSearch={isAdvancedSearch}\n executeQuery={executeQueryAdHoc}\n queryColumnsData={searchObj.searchItem.queryColumnsData}\n />\n }\n >\n {!!searchObj?.queryData?.pageList?.length && (\n <InquirySearchTable\n key={searchObj.searchItem.id}\n queryData={searchObj.queryData || []}\n columns={searchObj.searchItem.columns}\n apiMethodId={searchObj.searchItem.apiMethodId}\n searchFilterElements={\n searchObj.searchItem.searchFilterElements\n }\n searchFilterGroups={searchObj.searchItem.searchFilterGroups}\n catalogReturnObject={searchObj.searchItem.catalogReturnObject}\n setSelectedSearchRows={setSelectedSearchRows}\n catalogObjects={catalogObjects}\n treeStructure={searchObj.searchItem.treeStructure}\n associatedInquiryTree={\n searchObj.searchItem.associatedInquiryTree || null\n }\n onRowDoubleClick={onRowDoubleClick}\n topResultsOnly={true}\n topResultsSize={10}\n isAdvancedSearch={isAdvancedSearch}\n executeQuery={executeQueryAdHoc}\n queryColumnsData={searchObj.searchItem.queryColumnsData}\n />\n )}\n </AmbientCard>\n </div>\n );\n })}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { t as MenuPage_default } from "./MenuPage-KiNfnc7P.js";
2
+
3
+ export { MenuPage_default as default };
@@ -5,10 +5,10 @@ import { n as useShellStore } from "./shellStore-C8zfPsZ-.js";
5
5
  import { H as transformMenuPageTree } from "./TreeUtilities-jEhtZNg5.js";
6
6
  import { t as useAxiosGet } from "./useAxiosGet-CYnt6Hd0.js";
7
7
  import { t as useSetLocationState } from "./useSetLocationState-Kvcc9BTb.js";
8
- import { t as PageContainer } from "./PageContainer-DTXNLt_2.js";
8
+ import { t as PageContainer } from "./PageContainer-ButX_XVS.js";
9
9
  import { n as useBuildEnvironment, t as APP_RIBBON_SPACE } from "./useBuildEnvironment-2gdqpmBX.js";
10
10
  import { t as NodeLoader } from "./NodeLoader-6vxxLuHg.js";
11
- import { t as UtilitySideBar } from "./UtilitySideBar-wvrocDGI.js";
11
+ import { t as UtilitySideBar } from "./UtilitySideBar-BU3ppHrv.js";
12
12
  import { t as BaseTreeMenu } from "./BaseTreeMenu-Dg8MW4TD.js";
13
13
  import React, { useCallback, useEffect, useMemo, useState } from "react";
14
14
  import { makeStyles } from "@material-ui/core";
@@ -237,4 +237,4 @@ var MenuPage_default = MenuPage;
237
237
 
238
238
  //#endregion
239
239
  export { MenuPage_default as t };
240
- //# sourceMappingURL=MenuPage-tkkhpco5.js.map
240
+ //# sourceMappingURL=MenuPage-KiNfnc7P.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPage-tkkhpco5.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n APP_RIBBON_SPACE,\n useBuildEnvironment\n} from '../shell/ui/useBuildEnvironment';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n display: 'grid',\n gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n sidebar: {\n gridArea: 'sidebar',\n marginRight: theme.spacing(1)\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n overflowY: 'auto'\n },\n menuContent: {\n marginTop: theme.spacing(1),\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n overflowX: 'hidden'\n },\n loader: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n }\n}));\n\n// Define a stable constant for empty headers to prevent useEffect loops\nconst EMPTY_HEADERS = {};\n\n// Helper to find a node deep in the tree (Moved outside to ensure stability)\nconst findNodeById = (nodes, id) => {\n if (!nodes || !id) return null;\n for (const node of nodes) {\n if (String(node.id) === String(id)) return node;\n if (node.children) {\n const found = findNodeById(node.children, id);\n if (found) return found;\n }\n }\n return null;\n};\n\nconst MenuPage = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const history = useHistory();\n const location = useLocation();\n const user = useUser();\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n\n const {\n innerMenuOverride,\n mainContent,\n menuTitle,\n allowMissingPageParam = false,\n searchParamsTransformer\n } = props;\n\n // --- STATE ---\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const { setSubHeaderActionHasChildren, setNavigationExpanded } = useShellStore();\n\n // --- DATA FETCHING ---\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n EMPTY_HEADERS,\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n // --- MEMOIZED DATA ---\n const menuItemsList = useMemo(() => {\n if (!innerMenu) return [];\n\n return innerMenu.menuItemInstanceStructureViews?.reduce((acc, menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) acc.push(updatedMenu);\n return acc;\n }, []) ?? [];\n }, [innerMenu]);\n\n // --- CORE REFACTOR: DERIVE SELECTED NODE ---\n const pageId = new URLSearchParams(location.search).get('page');\n\n const selectedNode = useMemo(() => {\n if (!menuItemsList.length) return null;\n\n // 1. Try to find the node requested in URL\n const found = findNodeById(menuItemsList, pageId);\n if (found) return found;\n\n // 2. Default to first item\n // Even if allowMissingPageParam is true, we still want to RETURN the node for rendering,\n // we just don't want the Redirector useEffect to force it into the URL.\n return menuItemsList[0];\n }, [menuItemsList, pageId]);\n\n // Fetch Page Data based on the derived node\n const [{ data: pageData, loading: pageLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n EMPTY_HEADERS,\n !selectedNode?.properties?.page?.id,\n false\n );\n\n // --- ACTIONS ---\n\n const buildSearchString = useCallback((params, node, menuIndex) => {\n if (typeof searchParamsTransformer === 'function') {\n const result = searchParamsTransformer({\n searchParams: params,\n node,\n menuIndex,\n location\n });\n if (result === null) return '';\n if (result instanceof URLSearchParams) return result.toString();\n if (typeof result === 'string') return result;\n if (result !== undefined) return String(result);\n }\n return params.toString();\n }, [location, searchParamsTransformer]);\n\n const handleSelectedNode = useCallback((node, menuIndex) => {\n // 1. Check if we are \"selecting\" the current node to clear query params if needed\n if (allowMissingPageParam) {\n const firstNode = menuItemsList?.[0];\n if (firstNode && String(node?.id) === String(firstNode.id)) {\n if (location.search) {\n history.replace({ pathname: location.pathname, search: '' });\n }\n setHasUnsavedChanges(false);\n return;\n }\n }\n\n // 2. Build URL\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n const searchString = buildSearchString(searchParams, node, menuIndex);\n\n // 3. Navigate (The URL change will trigger the re-render & selectedNode update)\n history.push({\n pathname: location.pathname,\n search: searchString\n });\n\n // Note: We don't set 'selectedNode' manually anymore. It is derived.\n }, [history, location, allowMissingPageParam, menuItemsList, buildSearchString]);\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const handleDropNode = useCallback(() => {\n // TODO: Implement if we need to for next Phase\n }, []);\n\n // --- EFFECTS ---\n\n // 1. URL SYNCHRONIZATION (The \"Redirector\")\n // Ensures URL matches the selected node (e.g. on initial load or default selection)\n useEffect(() => {\n if (selectedNode && !allowMissingPageParam) {\n const currentUrlId = new URLSearchParams(location.search).get('page');\n\n if (String(selectedNode.id) !== String(currentUrlId)) {\n const newParams = new URLSearchParams(location.search);\n newParams.set('page', selectedNode.id);\n\n history.replace({\n pathname: location.pathname,\n search: newParams.toString()\n });\n }\n }\n }, [selectedNode?.id, location.search, history, allowMissingPageParam]);\n\n // 2. UI CLEANUP (The \"Reactor\")\n // Runs only when the ACTUAL selected ID changes to reset UI state\n useEffect(() => {\n if (selectedNode?.id) {\n setNavigationExpanded(false);\n setHasUnsavedChanges(false);\n setSubHeaderActionHasChildren(false);\n }\n }, [selectedNode?.id, setNavigationExpanded, setSubHeaderActionHasChildren]);\n\n // 3. BREADCRUMB / LABEL SYNC\n useEffect(() => {\n if (innerMenu && location.state?.label !== t(innerMenu?.name)) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu, location.state?.label]);\n\n\n // --- RENDER ---\n return (\n <DndProvider backend={HTML5Backend}>\n <Prompt\n when={hasUnsavedChanges}\n message='You have unsaved changes. Are you sure you want to leave this page?'\n />\n <div className={classes.root}>\n <div className={classes.sidebar}>\n <UtilitySideBar\n title={innerMenu?.name || menuTitle}\n isUsingChildren={true}\n resizable={true}\n removePadding={true}\n removeTopLayoutUnit={true}\n onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n collapsedWidth={64}\n >\n <div className={classes.menuContent} key={innerMenuId}>\n {menuItemsList?.length > 0 && !menuLoading &&\n menuItemsList.map((menuItems, index) => (\n <div key={menuItems.id} className={classes.nodeContainer}>\n <BaseTreeMenu\n menuItems={menuItems}\n onSelectNode={handleSelectedNode}\n onDropNode={handleDropNode}\n menuIndex={index}\n selectedNodeId={selectedNode?.id}\n selectedNodeParentId={selectedNode?.parentId}\n sidebarExpanded={sidebarExpanded}\n treeViewMode={TreeViewModeEnums.Classic}\n />\n </div>\n ))}\n {menuLoading && (\n <div className={classes.loader}>\n <NodeLoader loading={menuLoading} />\n </div>\n )}\n </div>\n </UtilitySideBar>\n </div>\n <div className={classes.content}>\n {mainContent ? (\n typeof mainContent === 'function'\n ? mainContent({ selectedNode, menuItemsList })\n : mainContent\n ) : (\n selectedNode?.properties?.page?.id && (\n <PageContainer\n user={user}\n key={selectedNode?.id}\n pageData={pageData}\n pageLoading={pageLoading}\n widgetParams={{\n pageId: pageData?.pageId,\n entityName: selectedNode?.properties?.page?.entity?.entityName,\n pbiReportCode: selectedNode?.properties?.page?.pbiReportCode,\n requiredFieldsMap: selectedNode?.properties?.page?.requiredFieldMapping,\n udpTagId: selectedNode?.properties?.page?.udpTagId,\n queryId: selectedNode?.properties?.page?.queryId,\n inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,\n setHasUnsavedChanges: setHasUnsavedChanges\n }}\n disableMargins={true}\n fromMenu={true}\n />\n )\n )}\n </div>\n </div>\n </DndProvider>\n );\n};\n\nexport default MenuPage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MenuPage-KiNfnc7P.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n APP_RIBBON_SPACE,\n useBuildEnvironment\n} from '../shell/ui/useBuildEnvironment';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n display: 'grid',\n gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n sidebar: {\n gridArea: 'sidebar',\n marginRight: theme.spacing(1)\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n overflowY: 'auto'\n },\n menuContent: {\n marginTop: theme.spacing(1),\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n overflowX: 'hidden'\n },\n loader: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n }\n}));\n\n// Define a stable constant for empty headers to prevent useEffect loops\nconst EMPTY_HEADERS = {};\n\n// Helper to find a node deep in the tree (Moved outside to ensure stability)\nconst findNodeById = (nodes, id) => {\n if (!nodes || !id) return null;\n for (const node of nodes) {\n if (String(node.id) === String(id)) return node;\n if (node.children) {\n const found = findNodeById(node.children, id);\n if (found) return found;\n }\n }\n return null;\n};\n\nconst MenuPage = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const history = useHistory();\n const location = useLocation();\n const user = useUser();\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n\n const {\n innerMenuOverride,\n mainContent,\n menuTitle,\n allowMissingPageParam = false,\n searchParamsTransformer\n } = props;\n\n // --- STATE ---\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const { setSubHeaderActionHasChildren, setNavigationExpanded } = useShellStore();\n\n // --- DATA FETCHING ---\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n EMPTY_HEADERS,\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n // --- MEMOIZED DATA ---\n const menuItemsList = useMemo(() => {\n if (!innerMenu) return [];\n\n return innerMenu.menuItemInstanceStructureViews?.reduce((acc, menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) acc.push(updatedMenu);\n return acc;\n }, []) ?? [];\n }, [innerMenu]);\n\n // --- CORE REFACTOR: DERIVE SELECTED NODE ---\n const pageId = new URLSearchParams(location.search).get('page');\n\n const selectedNode = useMemo(() => {\n if (!menuItemsList.length) return null;\n\n // 1. Try to find the node requested in URL\n const found = findNodeById(menuItemsList, pageId);\n if (found) return found;\n\n // 2. Default to first item\n // Even if allowMissingPageParam is true, we still want to RETURN the node for rendering,\n // we just don't want the Redirector useEffect to force it into the URL.\n return menuItemsList[0];\n }, [menuItemsList, pageId]);\n\n // Fetch Page Data based on the derived node\n const [{ data: pageData, loading: pageLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n EMPTY_HEADERS,\n !selectedNode?.properties?.page?.id,\n false\n );\n\n // --- ACTIONS ---\n\n const buildSearchString = useCallback((params, node, menuIndex) => {\n if (typeof searchParamsTransformer === 'function') {\n const result = searchParamsTransformer({\n searchParams: params,\n node,\n menuIndex,\n location\n });\n if (result === null) return '';\n if (result instanceof URLSearchParams) return result.toString();\n if (typeof result === 'string') return result;\n if (result !== undefined) return String(result);\n }\n return params.toString();\n }, [location, searchParamsTransformer]);\n\n const handleSelectedNode = useCallback((node, menuIndex) => {\n // 1. Check if we are \"selecting\" the current node to clear query params if needed\n if (allowMissingPageParam) {\n const firstNode = menuItemsList?.[0];\n if (firstNode && String(node?.id) === String(firstNode.id)) {\n if (location.search) {\n history.replace({ pathname: location.pathname, search: '' });\n }\n setHasUnsavedChanges(false);\n return;\n }\n }\n\n // 2. Build URL\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n const searchString = buildSearchString(searchParams, node, menuIndex);\n\n // 3. Navigate (The URL change will trigger the re-render & selectedNode update)\n history.push({\n pathname: location.pathname,\n search: searchString\n });\n\n // Note: We don't set 'selectedNode' manually anymore. It is derived.\n }, [history, location, allowMissingPageParam, menuItemsList, buildSearchString]);\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const handleDropNode = useCallback(() => {\n // TODO: Implement if we need to for next Phase\n }, []);\n\n // --- EFFECTS ---\n\n // 1. URL SYNCHRONIZATION (The \"Redirector\")\n // Ensures URL matches the selected node (e.g. on initial load or default selection)\n useEffect(() => {\n if (selectedNode && !allowMissingPageParam) {\n const currentUrlId = new URLSearchParams(location.search).get('page');\n\n if (String(selectedNode.id) !== String(currentUrlId)) {\n const newParams = new URLSearchParams(location.search);\n newParams.set('page', selectedNode.id);\n\n history.replace({\n pathname: location.pathname,\n search: newParams.toString()\n });\n }\n }\n }, [selectedNode?.id, location.search, history, allowMissingPageParam]);\n\n // 2. UI CLEANUP (The \"Reactor\")\n // Runs only when the ACTUAL selected ID changes to reset UI state\n useEffect(() => {\n if (selectedNode?.id) {\n setNavigationExpanded(false);\n setHasUnsavedChanges(false);\n setSubHeaderActionHasChildren(false);\n }\n }, [selectedNode?.id, setNavigationExpanded, setSubHeaderActionHasChildren]);\n\n // 3. BREADCRUMB / LABEL SYNC\n useEffect(() => {\n if (innerMenu && location.state?.label !== t(innerMenu?.name)) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu, location.state?.label]);\n\n\n // --- RENDER ---\n return (\n <DndProvider backend={HTML5Backend}>\n <Prompt\n when={hasUnsavedChanges}\n message='You have unsaved changes. Are you sure you want to leave this page?'\n />\n <div className={classes.root}>\n <div className={classes.sidebar}>\n <UtilitySideBar\n title={innerMenu?.name || menuTitle}\n isUsingChildren={true}\n resizable={true}\n removePadding={true}\n removeTopLayoutUnit={true}\n onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n collapsedWidth={64}\n >\n <div className={classes.menuContent} key={innerMenuId}>\n {menuItemsList?.length > 0 && !menuLoading &&\n menuItemsList.map((menuItems, index) => (\n <div key={menuItems.id} className={classes.nodeContainer}>\n <BaseTreeMenu\n menuItems={menuItems}\n onSelectNode={handleSelectedNode}\n onDropNode={handleDropNode}\n menuIndex={index}\n selectedNodeId={selectedNode?.id}\n selectedNodeParentId={selectedNode?.parentId}\n sidebarExpanded={sidebarExpanded}\n treeViewMode={TreeViewModeEnums.Classic}\n />\n </div>\n ))}\n {menuLoading && (\n <div className={classes.loader}>\n <NodeLoader loading={menuLoading} />\n </div>\n )}\n </div>\n </UtilitySideBar>\n </div>\n <div className={classes.content}>\n {mainContent ? (\n typeof mainContent === 'function'\n ? mainContent({ selectedNode, menuItemsList })\n : mainContent\n ) : (\n selectedNode?.properties?.page?.id && (\n <PageContainer\n user={user}\n key={selectedNode?.id}\n pageData={pageData}\n pageLoading={pageLoading}\n widgetParams={{\n pageId: pageData?.pageId,\n entityName: selectedNode?.properties?.page?.entity?.entityName,\n pbiReportCode: selectedNode?.properties?.page?.pbiReportCode,\n requiredFieldsMap: selectedNode?.properties?.page?.requiredFieldMapping,\n udpTagId: selectedNode?.properties?.page?.udpTagId,\n queryId: selectedNode?.properties?.page?.queryId,\n inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,\n setHasUnsavedChanges: setHasUnsavedChanges\n }}\n disableMargins={true}\n fromMenu={true}\n />\n )\n )}\n </div>\n </div>\n </DndProvider>\n );\n};\n\nexport default MenuPage;\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { t as apiMutate } from "./useAxiosMutate-DeqKSi5z.js";
3
3
  import { n as formatDataWithTimelineCategoryNameOrderedByDate } from "./mttFunctions-5g2DjtR9.js";
4
4
  import { t as IconRenderer } from "./IconRenderer-BEezfZ3N.js";
5
5
  import { t as MttYearTag } from "./MttYearTag-Cw8OyKTy.js";
6
- import { a as TimelineWrapper, i as MultiDot, n as TimelinePreloaderNode, o as TimelineNode, r as VisualizationDot, t as DynamicRangeSlider } from "./DynamicRangeSlider-prr4fg8d.js";
6
+ import { a as TimelineWrapper, i as MultiDot, n as TimelinePreloaderNode, o as TimelineNode, r as VisualizationDot, t as DynamicRangeSlider } from "./DynamicRangeSlider-BX4kCzUd.js";
7
7
  import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
8
8
  import { Button, Fade, IconButton, Slider, Typography, lighten, makeStyles, useTheme } from "@material-ui/core";
9
9
  import { LineSpacingIcon, MinimumValueIcon } from "@fluentui/react-icons";
@@ -885,4 +885,4 @@ const MttMainTimeline = (props) => {
885
885
 
886
886
  //#endregion
887
887
  export { MttTimeline as n, HeightAdjuster as r, MttMainTimeline as t };
888
- //# sourceMappingURL=MttMainTimeline-s0ANW7l-.js.map
888
+ //# sourceMappingURL=MttMainTimeline-DbaaXXQv.js.map