udp-react-enterprise-component-library 25.18.2 → 25.18.3-beta.10

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 (478) hide show
  1. package/dist/{ActionProvider-BGugOmjV.js → ActionProvider-B1-CUDQT.js} +7 -7
  2. package/dist/{ActionProvider-BGugOmjV.js.map → ActionProvider-B1-CUDQT.js.map} +1 -1
  3. package/dist/{ActionSplitScreen-D6_7PlK-.js → ActionSplitScreen-DjSUjE6M.js} +8 -8
  4. package/dist/{ActionSplitScreen-D6_7PlK-.js.map → ActionSplitScreen-DjSUjE6M.js.map} +1 -1
  5. package/dist/{ActionWrapper-DnP7lGDq.js → ActionWrapper-BwnB_Qw4.js} +14 -14
  6. package/dist/{ActionWrapper-DnP7lGDq.js.map → ActionWrapper-BwnB_Qw4.js.map} +1 -1
  7. package/dist/{ActionsRenderer-DbrPKZ1o.js → ActionsRenderer-DbMlilVW.js} +2 -2
  8. package/dist/{ActionsRenderer-DbrPKZ1o.js.map → ActionsRenderer-DbMlilVW.js.map} +1 -1
  9. package/dist/{AggregateChip-BF7S3x_K.js → AggregateChip-Dm3js2LK.js} +5 -5
  10. package/dist/{AggregateChip-BF7S3x_K.js.map → AggregateChip-Dm3js2LK.js.map} +1 -1
  11. package/dist/{AmbientChipButton-DYAYXuKp.js → AmbientChipButton-XFBUrwCb.js} +2 -2
  12. package/dist/AmbientChipButton-XFBUrwCb.js.map +1 -0
  13. package/dist/{AmbientGridTemplate-D1TMpzxb.js → AmbientGridTemplate-UXA3KgIL.js} +7 -7
  14. package/dist/{AmbientGridTemplate-D1TMpzxb.js.map → AmbientGridTemplate-UXA3KgIL.js.map} +1 -1
  15. package/dist/{AmbientTokenButton-B53E25r2.js → AmbientTokenButton-F3Wg-88V.js} +2 -2
  16. package/dist/AmbientTokenButton-F3Wg-88V.js.map +1 -0
  17. package/dist/{AppMenu-oGJtO6Vp.js → AppMenu-C_Bl1RvA.js} +5 -4
  18. package/dist/AppMenu-C_Bl1RvA.js.map +1 -0
  19. package/dist/{AuthProvider-J79EBNDc.js → AuthProvider-DtiKAaWb.js} +5 -5
  20. package/dist/{AuthProvider-J79EBNDc.js.map → AuthProvider-DtiKAaWb.js.map} +1 -1
  21. package/dist/{BarChartWidget-u-8fxMn5.js → BarChartWidget-DDsXC3pz.js} +3 -3
  22. package/dist/BarChartWidget-DDsXC3pz.js.map +1 -0
  23. package/dist/{BaseTreeMenu-Dg8MW4TD.js → BaseTreeMenu-Ceq3glfG.js} +6 -7
  24. package/dist/BaseTreeMenu-Ceq3glfG.js.map +1 -0
  25. package/dist/{BioCardWrapper-D1ZOHyA4.js → BioCardWrapper-CUuubD2U.js} +3 -3
  26. package/dist/{BioCardWrapper-D1ZOHyA4.js.map → BioCardWrapper-CUuubD2U.js.map} +1 -1
  27. package/dist/{BubbleWidget-CMJYN-7J.js → BubbleWidget-Bx4c0P2X.js} +3 -3
  28. package/dist/BubbleWidget-Bx4c0P2X.js.map +1 -0
  29. package/dist/{BulkActionsGridButton-JYgIABWU.js → BulkActionsGridButton-zrOoVMFg.js} +8 -8
  30. package/dist/{BulkActionsGridButton-JYgIABWU.js.map → BulkActionsGridButton-zrOoVMFg.js.map} +1 -1
  31. package/dist/{CardList-B8nTYXo7.js → CardList-mxsKMn2s.js} +6 -6
  32. package/dist/{CardList-B8nTYXo7.js.map → CardList-mxsKMn2s.js.map} +1 -1
  33. package/dist/{ChatBotProvider-CmrKYl2I.js → ChatBotProvider-BgWP6rfO.js} +6 -6
  34. package/dist/{ChatBotProvider-CmrKYl2I.js.map → ChatBotProvider-BgWP6rfO.js.map} +1 -1
  35. package/dist/{ChatContainer-CXzPIP9R.js → ChatContainer-C5pau9eF.js} +2 -2
  36. package/dist/{ChatContainer-CXzPIP9R.js.map → ChatContainer-C5pau9eF.js.map} +1 -1
  37. package/dist/{ChatUDP-DYAsqqXk.js → ChatUDP-rGP1IC_e.js} +2 -2
  38. package/dist/{ChatUDP-DYAsqqXk.js.map → ChatUDP-rGP1IC_e.js.map} +1 -1
  39. package/dist/{CircleButton-CrvnPHDw.js → CircleButton-CwA9EAmx.js} +2 -2
  40. package/dist/{CircleButton-CrvnPHDw.js.map → CircleButton-CwA9EAmx.js.map} +1 -1
  41. package/dist/{CrudBrowserContainer-UJvAMHYL.js → CrudBrowserContainer-4xalY8qW.js} +2 -2
  42. package/dist/{CrudBrowserContainer-UJvAMHYL.js.map → CrudBrowserContainer-4xalY8qW.js.map} +1 -1
  43. package/dist/{CrudForm-C9xMnPoA.js → CrudForm-B9K31dMq.js} +8 -8
  44. package/dist/{CrudForm-C9xMnPoA.js.map → CrudForm-B9K31dMq.js.map} +1 -1
  45. package/dist/{CrudTableSidePanel-D8UYaXhS.js → CrudTableSidePanel-DmC2bKKS.js} +5 -5
  46. package/dist/{CrudTableSidePanel-D8UYaXhS.js.map → CrudTableSidePanel-DmC2bKKS.js.map} +1 -1
  47. package/dist/{DataBrowserContainer-DGEL52Un.js → DataBrowserContainer-zVg6Htb9.js} +10 -10
  48. package/dist/{DataBrowserContainer-DGEL52Un.js.map → DataBrowserContainer-zVg6Htb9.js.map} +1 -1
  49. package/dist/{DensePlotWidget-lJW-uzdQ.js → DensePlotWidget-C3hgu_PW.js} +3 -3
  50. package/dist/DensePlotWidget-C3hgu_PW.js.map +1 -0
  51. package/dist/{DynamicContainerWithMenu-lYZyNyb_.js → DynamicContainerWithMenu-DB27WYKY.js} +2 -2
  52. package/dist/{DynamicContainerWithMenu-lYZyNyb_.js.map → DynamicContainerWithMenu-DB27WYKY.js.map} +1 -1
  53. package/dist/{EntityHeader-CPvUEp7i.js → EntityHeader-CuQJ8F5K.js} +4 -4
  54. package/dist/{EntityHeader-CPvUEp7i.js.map → EntityHeader-CuQJ8F5K.js.map} +1 -1
  55. package/dist/{EntitySideBarContent-Bl_8gI69.js → EntitySideBarContent-DfmL6BdB.js} +2 -2
  56. package/dist/{EntitySideBarContent-Bl_8gI69.js.map → EntitySideBarContent-DfmL6BdB.js.map} +1 -1
  57. package/dist/{ExportSidesheet-eHGdT42e.js → ExportSidesheet-CM6A7I6E.js} +3 -3
  58. package/dist/{ExportSidesheet-eHGdT42e.js.map → ExportSidesheet-CM6A7I6E.js.map} +1 -1
  59. package/dist/{FieldArrayCard-CkVvDF-N.js → FieldArrayCard-vX6wT9RN.js} +13 -13
  60. package/dist/{FieldArrayCard-CkVvDF-N.js.map → FieldArrayCard-vX6wT9RN.js.map} +1 -1
  61. package/dist/{FluentCell-CuJJAwCD.js → FluentCell-BxgROwUy.js} +2 -2
  62. package/dist/{FluentCell-CuJJAwCD.js.map → FluentCell-BxgROwUy.js.map} +1 -1
  63. package/dist/{FluentDataTable-CYNp3-qT.js → FluentDataTable-BLAHPWUk.js} +2 -2
  64. package/dist/{FluentDataTable-CYNp3-qT.js.map → FluentDataTable-BLAHPWUk.js.map} +1 -1
  65. package/dist/{FluentSimpleSelect-BfoxBQj4.js → FluentSimpleSelect-BnXJTE2z.js} +2 -2
  66. package/dist/{FluentSimpleSelect-BfoxBQj4.js.map → FluentSimpleSelect-BnXJTE2z.js.map} +1 -1
  67. package/dist/{GridFunctions-D76ygiH2.js → GridFunctions-quS_QhSZ.js} +4 -4
  68. package/dist/GridFunctions-quS_QhSZ.js.map +1 -0
  69. package/dist/{GridGroupingSidebar-D-ozXbff.js → GridGroupingSidebar-CfXk_nd_.js} +2 -2
  70. package/dist/{GridGroupingSidebar-D-ozXbff.js.map → GridGroupingSidebar-CfXk_nd_.js.map} +1 -1
  71. package/dist/{GroupNode-CZX--ble.js → GroupNode-BVz5rDVG.js} +2 -2
  72. package/dist/{GroupNode-CZX--ble.js.map → GroupNode-BVz5rDVG.js.map} +1 -1
  73. package/dist/{IconRenderer-BEezfZ3N.js → IconRenderer-BKy2VlFt.js} +2 -2
  74. package/dist/{IconRenderer-BEezfZ3N.js.map → IconRenderer-BKy2VlFt.js.map} +1 -1
  75. package/dist/{ImportDataFromFileMapping-Dy1iJMkI.js → ImportDataFromFileMapping-ByNxnvjo.js} +6 -6
  76. package/dist/{ImportDataFromFileMapping-Dy1iJMkI.js.map → ImportDataFromFileMapping-ByNxnvjo.js.map} +1 -1
  77. package/dist/InputFieldTypeEnums-CtR8GR5A.js +14 -0
  78. package/dist/{InputFieldTypeEnums-Mg684vvi.js.map → InputFieldTypeEnums-CtR8GR5A.js.map} +1 -1
  79. package/dist/{Inquiry-D6nWpzu2.js → Inquiry-DAhC82sz.js} +20 -20
  80. package/dist/{Inquiry-D6nWpzu2.js.map → Inquiry-DAhC82sz.js.map} +1 -1
  81. package/dist/Inquiry-UieTwtBP.js +3 -0
  82. package/dist/{InquiryNodeControls-DeK_hTzo.js → InquiryNodeControls-ivQYYK6C.js} +2 -2
  83. package/dist/{InquiryNodeControls-DeK_hTzo.js.map → InquiryNodeControls-ivQYYK6C.js.map} +1 -1
  84. package/dist/{InquirySearchContainer-zxbukV51.js → InquirySearchContainer-Di8nXQP_.js} +6 -6
  85. package/dist/{InquirySearchContainer-zxbukV51.js.map → InquirySearchContainer-Di8nXQP_.js.map} +1 -1
  86. package/dist/{LineGraphWidget-Ly1fmTyr.js → LineGraphWidget-CrPDR99w.js} +3 -3
  87. package/dist/LineGraphWidget-CrPDR99w.js.map +1 -0
  88. package/dist/MenuPage-BJ4uxotv.js +3 -0
  89. package/dist/{MenuPage-KiNfnc7P.js → MenuPage-SA6u84EV.js} +7 -7
  90. package/dist/MenuPage-SA6u84EV.js.map +1 -0
  91. package/dist/{MenuProvider-BqEZve2y.js → MenuProvider-CqV76ZaL.js} +3 -3
  92. package/dist/{MenuProvider-BqEZve2y.js.map → MenuProvider-CqV76ZaL.js.map} +1 -1
  93. package/dist/{MttMainTimeline-DbaaXXQv.js → MttMainTimeline-CinommZ-.js} +3 -3
  94. package/dist/{MttMainTimeline-DbaaXXQv.js.map → MttMainTimeline-CinommZ-.js.map} +1 -1
  95. package/dist/{MttSummary-DNc71fHh.js → MttSummary-C9BFDiPS.js} +4 -4
  96. package/dist/{MttSummary-DNc71fHh.js.map → MttSummary-C9BFDiPS.js.map} +1 -1
  97. package/dist/{MyExportsPage-C-pr-R0K.js → MyExportsPage-CvYXdQux.js} +6 -6
  98. package/dist/{MyExportsPage-C-pr-R0K.js.map → MyExportsPage-CvYXdQux.js.map} +1 -1
  99. package/dist/MyExportsPage-zDOtLpTr.js +3 -0
  100. package/dist/{NestedGrid-DAqsZ216.js → NestedGrid-BYfgg6bn.js} +3 -3
  101. package/dist/NestedGrid-BYfgg6bn.js.map +1 -0
  102. package/dist/{NotesScreen-D8-QnWaB.js → NotesScreen-B1Kf1FUL.js} +8 -8
  103. package/dist/{NotesScreen-D8-QnWaB.js.map → NotesScreen-B1Kf1FUL.js.map} +1 -1
  104. package/dist/{NumberOperator-p4HsHHx3.js → NumberOperator-BhGfG6ZY.js} +10 -10
  105. package/dist/{NumberOperator-p4HsHHx3.js.map → NumberOperator-BhGfG6ZY.js.map} +1 -1
  106. package/dist/{OutlookCallback-D3no-Urx.js → OutlookCallback-ChCk_gx1.js} +2 -2
  107. package/dist/{OutlookCallback-D3no-Urx.js.map → OutlookCallback-ChCk_gx1.js.map} +1 -1
  108. package/dist/{PageActionWrapper-Bm6J0thr.js → PageActionWrapper-B2NHh8V9.js} +4 -4
  109. package/dist/{PageActionWrapper-Bm6J0thr.js.map → PageActionWrapper-B2NHh8V9.js.map} +1 -1
  110. package/dist/{PageContainer-ButX_XVS.js → PageContainer-B6aRZIrC.js} +2 -2
  111. package/dist/{PageContainer-ButX_XVS.js.map → PageContainer-B6aRZIrC.js.map} +1 -1
  112. package/dist/{PageRenderer-hxobUKe_.js → PageRenderer-BaE_3AVi.js} +2 -2
  113. package/dist/{PageRenderer-hxobUKe_.js.map → PageRenderer-BaE_3AVi.js.map} +1 -1
  114. package/dist/{PaymentForm-C4IXoROF.js → PaymentForm-u1QxkAwH.js} +5 -5
  115. package/dist/{PaymentForm-C4IXoROF.js.map → PaymentForm-u1QxkAwH.js.map} +1 -1
  116. package/dist/{PowerBIReport-CMrcDCCK.js → PowerBIReport-D4IhLgYA.js} +2 -2
  117. package/dist/{PowerBIReport-CMrcDCCK.js.map → PowerBIReport-D4IhLgYA.js.map} +1 -1
  118. package/dist/{RecentlyLoadedNodesTable-BzvR0L0h.js → RecentlyLoadedNodesTable-Bih97GZe.js} +2 -2
  119. package/dist/{RecentlyLoadedNodesTable-BzvR0L0h.js.map → RecentlyLoadedNodesTable-Bih97GZe.js.map} +1 -1
  120. package/dist/{RecentlyLoadedNodesWidget-7c9IngMR.js → RecentlyLoadedNodesWidget-C_SvOidH.js} +2 -2
  121. package/dist/{RecentlyLoadedNodesWidget-7c9IngMR.js.map → RecentlyLoadedNodesWidget-C_SvOidH.js.map} +1 -1
  122. package/dist/{RemindersCard-C1_GeqUW.js → RemindersCard-DtILCRPZ.js} +4 -4
  123. package/dist/{RemindersCard-C1_GeqUW.js.map → RemindersCard-DtILCRPZ.js.map} +1 -1
  124. package/dist/{RemindersScreen-BDgMIUaq.js → RemindersScreen-CR_7sXWV.js} +8 -8
  125. package/dist/{RemindersScreen-BDgMIUaq.js.map → RemindersScreen-CR_7sXWV.js.map} +1 -1
  126. package/dist/{RemindersWidget-u_d6RoVv.js → RemindersWidget-VugVy-04.js} +7 -7
  127. package/dist/{RemindersWidget-u_d6RoVv.js.map → RemindersWidget-VugVy-04.js.map} +1 -1
  128. package/dist/Reports-ChMzlAeX.js +3 -0
  129. package/dist/{Reports-D6LOvcOA.js → Reports-XnOyqOdW.js} +2 -2
  130. package/dist/{Reports-D6LOvcOA.js.map → Reports-XnOyqOdW.js.map} +1 -1
  131. package/dist/{RequiredFieldsMappingForm-rstcZ1W0.js → RequiredFieldsMappingForm-_Faww_eR.js} +2 -2
  132. package/dist/{RequiredFieldsMappingForm-rstcZ1W0.js.map → RequiredFieldsMappingForm-_Faww_eR.js.map} +1 -1
  133. package/dist/{SearchServiceDatasource-D8egrLwe.js → SearchServiceDatasource-DxoCnnUT.js} +3 -3
  134. package/dist/{SearchServiceDatasource-D8egrLwe.js.map → SearchServiceDatasource-DxoCnnUT.js.map} +1 -1
  135. package/dist/{SearchUtilities-DUW0kaw_.js → SearchUtilities-4D3aArPk.js} +45 -45
  136. package/dist/SearchUtilities-4D3aArPk.js.map +1 -0
  137. package/dist/{Shell-n8SMDgV0.js → Shell-XnaXB62L.js} +11 -11
  138. package/dist/{Shell-n8SMDgV0.js.map → Shell-XnaXB62L.js.map} +1 -1
  139. package/dist/{ShortcutContentFinder-BR-Gd55o.js → ShortcutContentFinder-DJveYwAo.js} +6 -6
  140. package/dist/{ShortcutContentFinder-BR-Gd55o.js.map → ShortcutContentFinder-DJveYwAo.js.map} +1 -1
  141. package/dist/SidebarCollapseButton-_UUtsftD.js.map +1 -1
  142. package/dist/{SiteHeader-DaL_Dy45.js → SiteHeader-CduuXQZG.js} +8 -8
  143. package/dist/{SiteHeader-DaL_Dy45.js.map → SiteHeader-CduuXQZG.js.map} +1 -1
  144. package/dist/{SparsePlotWidget-DuHbmEom.js → SparsePlotWidget-ZYrmPIXJ.js} +3 -3
  145. package/dist/SparsePlotWidget-ZYrmPIXJ.js.map +1 -0
  146. package/dist/{Statistic-DWW8GxYI.js → Statistic-D_p5eqdf.js} +2 -2
  147. package/dist/{Statistic-DWW8GxYI.js.map → Statistic-D_p5eqdf.js.map} +1 -1
  148. package/dist/{SupportCaseSideSheet-6P8CVloZ.js → SupportCaseSideSheet-B9BxUCym.js} +2 -2
  149. package/dist/{SupportCaseSideSheet-6P8CVloZ.js.map → SupportCaseSideSheet-B9BxUCym.js.map} +1 -1
  150. package/dist/{SupportCaseSideSheet-BKAsjpN1.js → SupportCaseSideSheet-D9IjAIwL.js} +1 -1
  151. package/dist/{TableContainer-B0IAjIA3.js → TableContainer-mo1phK4j.js} +5 -5
  152. package/dist/{TableContainer-B0IAjIA3.js.map → TableContainer-mo1phK4j.js.map} +1 -1
  153. package/dist/{TenantProvider-BeFMHYP8.js → TenantProvider-CBiqIIsu.js} +5 -5
  154. package/dist/{TenantProvider-BeFMHYP8.js.map → TenantProvider-CBiqIIsu.js.map} +1 -1
  155. package/dist/{TreeUtilities-jEhtZNg5.js → TreeUtilities-Iv9nOf-6.js} +4 -4
  156. package/dist/{TreeUtilities-jEhtZNg5.js.map → TreeUtilities-Iv9nOf-6.js.map} +1 -1
  157. package/dist/UI/accordion/index.js +1 -1
  158. package/dist/UI/charts/index.js +1 -1
  159. package/dist/UI/containers/index.js +1 -1
  160. package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +1 -1
  161. package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
  162. package/dist/UI/dataDisplay/cardList/index.js +1 -1
  163. package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
  164. package/dist/UI/dataDisplay/index.js +1 -1
  165. package/dist/UI/fileViewer/index.js +1 -1
  166. package/dist/UI/floorplans/index.js +1 -1
  167. package/dist/UI/forms/index.js +3 -3
  168. package/dist/UI/index.js +21 -21
  169. package/dist/UI/inputs/buttons/index.js +2 -2
  170. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  171. package/dist/UI/inputs/menus/index.js +1 -1
  172. package/dist/UI/mapLayout/index.js +1 -1
  173. package/dist/UI/mapLayout/ui/index.js +1 -1
  174. package/dist/UI/navigation/index.js +1 -1
  175. package/dist/UI/navigation/menus/index.js +1 -1
  176. package/dist/UI/support/index.js +1 -1
  177. package/dist/UI/surfaces/NestedGrid/index.js +1 -1
  178. package/dist/UI/surfaces/index.js +1 -1
  179. package/dist/UI/templates/deprecated/AmbientGridTemplate/index.js +1 -1
  180. package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
  181. package/dist/UI/templates/newGrid/index.js +1 -1
  182. package/dist/UI/templates/ui/index.js +1 -1
  183. package/dist/UI/templates/ui/renderers/index.js +2 -2
  184. package/dist/UI/timeline/fluentTimeline/index.js +1 -1
  185. package/dist/UI/timeline/index.js +1 -1
  186. package/dist/UI/utilityDisplay/alerts/index.js +1 -1
  187. package/dist/UI/utilityDisplay/index.js +6 -6
  188. package/dist/UI/utilityDisplay/utilities/index.js +1 -1
  189. package/dist/UI/widgets/library/BarChartWidget/index.js +1 -1
  190. package/dist/UI/widgets/library/BubbleWidget/index.js +1 -1
  191. package/dist/UI/widgets/library/DensePlotWidget/index.js +1 -1
  192. package/dist/UI/widgets/library/LineGraphWidget/index.js +1 -1
  193. package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
  194. package/dist/UI/widgets/library/RemindersWidget/index.js +1 -1
  195. package/dist/UI/widgets/library/SparsePlotWidget/index.js +1 -1
  196. package/dist/{UdpAlertsContainer-CbiqX1P0.js → UdpAlertsContainer-C9r41A58.js} +5 -5
  197. package/dist/{UdpAlertsContainer-CbiqX1P0.js.map → UdpAlertsContainer-C9r41A58.js.map} +1 -1
  198. package/dist/{UdpAppProvider-DXgzyeHZ.js → UdpAppProvider-DaFJNNnP.js} +4 -4
  199. package/dist/{UdpAppProvider-DXgzyeHZ.js.map → UdpAppProvider-DaFJNNnP.js.map} +1 -1
  200. package/dist/{UdpAuditEvents-CoD2y2CV.js → UdpAuditEvents-SVdK01j4.js} +2 -2
  201. package/dist/{UdpAuditEvents-CoD2y2CV.js.map → UdpAuditEvents-SVdK01j4.js.map} +1 -1
  202. package/dist/{UdpAuditEventsPage-B0yZyLfH.js → UdpAuditEventsPage-B8wDHsxq.js} +9 -9
  203. package/dist/{UdpAuditEventsPage-B0yZyLfH.js.map → UdpAuditEventsPage-B8wDHsxq.js.map} +1 -1
  204. package/dist/UdpAuditEventsPage-bigxgoZ7.js +3 -0
  205. package/dist/{UdpDataBrowserPage-Br0DJTMq.js → UdpDataBrowserPage-DO-d-rsj.js} +14 -14
  206. package/dist/{UdpDataBrowserPage-Br0DJTMq.js.map → UdpDataBrowserPage-DO-d-rsj.js.map} +1 -1
  207. package/dist/{UdpFormsPrivateForm-ip2aj9xl.js → UdpFormsPrivateForm-_yiSaFcM.js} +2 -2
  208. package/dist/{UdpFormsPrivateForm-ip2aj9xl.js.map → UdpFormsPrivateForm-_yiSaFcM.js.map} +1 -1
  209. package/dist/{UdpFormsPublicForm-YjrVSCGi.js → UdpFormsPublicForm-3J1HBXQU.js} +2 -2
  210. package/dist/{UdpFormsPublicForm-YjrVSCGi.js.map → UdpFormsPublicForm-3J1HBXQU.js.map} +1 -1
  211. package/dist/{UdpFormsSubmissionGrid-fhcfXjlD.js → UdpFormsSubmissionGrid-DFUaQDgZ.js} +97 -40
  212. package/dist/UdpFormsSubmissionGrid-DFUaQDgZ.js.map +1 -0
  213. package/dist/{UdpGridPanelManagementPage-CkeP9nO-.js → UdpGridPanelManagementPage-DrQKKAKQ.js} +5 -5
  214. package/dist/{UdpGridPanelManagementPage-CkeP9nO-.js.map → UdpGridPanelManagementPage-DrQKKAKQ.js.map} +1 -1
  215. package/dist/{UdpGridTemplate-BjsxZFOQ.js → UdpGridTemplate-DDsHQyJt.js} +2 -2
  216. package/dist/{UdpGridTemplate-BjsxZFOQ.js.map → UdpGridTemplate-DDsHQyJt.js.map} +1 -1
  217. package/dist/{UdpImportFromFileMappingPage-xfq_3nOx.js → UdpImportFromFileMappingPage-DxGrLgP4.js} +2 -2
  218. package/dist/{UdpImportFromFileMappingPage-xfq_3nOx.js.map → UdpImportFromFileMappingPage-DxGrLgP4.js.map} +1 -1
  219. package/dist/{UdpInquiryMaintenanceEnginePage-WRu7l1i_.js → UdpInquiryMaintenanceEnginePage-niKERvHU.js} +3 -3
  220. package/dist/{UdpInquiryMaintenanceEnginePage-WRu7l1i_.js.map → UdpInquiryMaintenanceEnginePage-niKERvHU.js.map} +1 -1
  221. package/dist/{UdpMaintenanceEnginePage-D5pCaMao.js → UdpMaintenanceEnginePage-SlGEwD-7.js} +12 -12
  222. package/dist/{UdpMaintenanceEnginePage-D5pCaMao.js.map → UdpMaintenanceEnginePage-SlGEwD-7.js.map} +1 -1
  223. package/dist/{UdpNotesPage-Bc1J9jHc.js → UdpNotesPage-D0p12dX2.js} +9 -9
  224. package/dist/{UdpNotesPage-Bc1J9jHc.js.map → UdpNotesPage-D0p12dX2.js.map} +1 -1
  225. package/dist/{UdpRemindersPage-BmNTjbO_.js → UdpRemindersPage-kPco6gzY.js} +9 -9
  226. package/dist/{UdpRemindersPage-BmNTjbO_.js.map → UdpRemindersPage-kPco6gzY.js.map} +1 -1
  227. package/dist/{UdpReportsPage-ljtdb45L.js → UdpReportsPage-n1ymR1VK.js} +2 -2
  228. package/dist/{UdpReportsPage-ljtdb45L.js.map → UdpReportsPage-n1ymR1VK.js.map} +1 -1
  229. package/dist/{UdpTransactionTypesPage-Uk2cRhpd.js → UdpTransactionTypesPage-BD8K_tZp.js} +6 -6
  230. package/dist/{UdpTransactionTypesPage-Uk2cRhpd.js.map → UdpTransactionTypesPage-BD8K_tZp.js.map} +1 -1
  231. package/dist/{UdpTransactionsPage-RiMTr1cK.js → UdpTransactionsPage-B-0Z5NDA.js} +100 -75
  232. package/dist/UdpTransactionsPage-B-0Z5NDA.js.map +1 -0
  233. package/dist/{UdpVerticalManagementPage-DQAI1xe3.js → UdpVerticalManagementPage-Dl3ub3z_.js} +6 -6
  234. package/dist/{UdpVerticalManagementPage-DQAI1xe3.js.map → UdpVerticalManagementPage-Dl3ub3z_.js.map} +1 -1
  235. package/dist/{UdpVerticalManagementSidesheet-heFj83jt.js → UdpVerticalManagementSidesheet-UA0aBt8U.js} +7 -7
  236. package/dist/{UdpVerticalManagementSidesheet-heFj83jt.js.map → UdpVerticalManagementSidesheet-UA0aBt8U.js.map} +1 -1
  237. package/dist/{UserForm-DhBINx6I.js → UserForm-CkInKaUZ.js} +3 -3
  238. package/dist/{UserForm-DhBINx6I.js.map → UserForm-CkInKaUZ.js.map} +1 -1
  239. package/dist/UserFormSideSheet-ClbFBL2A.js +3 -0
  240. package/dist/{UserFormSideSheet-Cj7IyfX1.js → UserFormSideSheet-CwC3BnSQ.js} +4 -4
  241. package/dist/{UserFormSideSheet-Cj7IyfX1.js.map → UserFormSideSheet-CwC3BnSQ.js.map} +1 -1
  242. package/dist/{UtilitySideBar-BU3ppHrv.js → UtilitySideBar-DcWKNOfr.js} +14 -13
  243. package/dist/UtilitySideBar-DcWKNOfr.js.map +1 -0
  244. package/dist/{VirtualBrowser-qF1k097T.js → VirtualBrowser-B8-wmiLh.js} +10 -10
  245. package/dist/{VirtualBrowser-qF1k097T.js.map → VirtualBrowser-B8-wmiLh.js.map} +1 -1
  246. package/dist/VirtualBrowser-C5uqdpHU.js +3 -0
  247. package/dist/{VirtualForm-Cw3gjug-.js → VirtualForm-tukfZj85.js} +2 -2
  248. package/dist/{VirtualForm-Cw3gjug-.js.map → VirtualForm-tukfZj85.js.map} +1 -1
  249. package/dist/{WorkflowContainer-Cec3FFwP.js → WorkflowContainer-Cs6LBgWw.js} +7 -7
  250. package/dist/{WorkflowContainer-Cec3FFwP.js.map → WorkflowContainer-Cs6LBgWw.js.map} +1 -1
  251. package/dist/{WorkflowContainer-DecC3Yux.js → WorkflowContainer-Cwt061ez.js} +1 -1
  252. package/dist/{WorkflowContent-HlBHhWl8.js → WorkflowContent-C_1mXaJA.js} +5 -5
  253. package/dist/{WorkflowContent-HlBHhWl8.js.map → WorkflowContent-C_1mXaJA.js.map} +1 -1
  254. package/dist/{WorkflowTreeMenu-HHtwkDzu.js → WorkflowTreeMenu-BfKb88w4.js} +4 -4
  255. package/dist/{WorkflowTreeMenu-HHtwkDzu.js.map → WorkflowTreeMenu-BfKb88w4.js.map} +1 -1
  256. package/dist/{accordion-CQ1AqRla.js → accordion-M9f7ltSo.js} +2 -2
  257. package/dist/{accordion-CQ1AqRla.js.map → accordion-M9f7ltSo.js.map} +1 -1
  258. package/dist/{actionSummary-DwSHY1Tt.js → actionSummary-4uornpGM.js} +2 -2
  259. package/dist/{actionSummary-DwSHY1Tt.js.map → actionSummary-4uornpGM.js.map} +1 -1
  260. package/dist/{actionUtils-CPmiSAig.js → actionUtils-BU2Z1V_c.js} +3 -3
  261. package/dist/{actionUtils-CPmiSAig.js.map → actionUtils-BU2Z1V_c.js.map} +1 -1
  262. package/dist/actions/actionSummary/index.js +1 -1
  263. package/dist/actions/index.js +6 -6
  264. package/dist/actions/sidebar/index.js +1 -1
  265. package/dist/actions/utils/index.js +1 -1
  266. package/dist/{aggregateUtils-UcpEjFnf.js → aggregateUtils-BQEbw0_E.js} +3 -3
  267. package/dist/{aggregateUtils-UcpEjFnf.js.map → aggregateUtils-BQEbw0_E.js.map} +1 -1
  268. package/dist/{aggridHelpers-BvrSzjdD.js → aggridHelpers-DVAyzpUF.js} +3 -3
  269. package/dist/{aggridHelpers-BvrSzjdD.js.map → aggridHelpers-DVAyzpUF.js.map} +1 -1
  270. package/dist/{apiHelpers-WIR8pqy0.js → apiHelpers-CMlmFUix.js} +2 -2
  271. package/dist/{apiHelpers-WIR8pqy0.js.map → apiHelpers-CMlmFUix.js.map} +1 -1
  272. package/dist/{auth-BWJ4-JF-.js → auth-09twu9dt.js} +3 -3
  273. package/dist/{auth-BWJ4-JF-.js.map → auth-09twu9dt.js.map} +1 -1
  274. package/dist/{axiosInterceptors-MZ6xeLRS.js → axiosInterceptors-C27H4uT-.js} +2 -2
  275. package/dist/{axiosInterceptors-MZ6xeLRS.js.map → axiosInterceptors-C27H4uT-.js.map} +1 -1
  276. package/dist/{charts--rJXTRtu.js → charts-CPeB-__9.js} +2 -2
  277. package/dist/{charts--rJXTRtu.js.map → charts-CPeB-__9.js.map} +1 -1
  278. package/dist/chatBot/index.js +1 -1
  279. package/dist/componentSystems/multiThreadTimeline/index.js +3 -3
  280. package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
  281. package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +1 -1
  282. package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
  283. package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
  284. package/dist/componentSystems/pageRenderer/index.js +3 -3
  285. package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
  286. package/dist/{crudActions-C1Ur7cS5.js → crudActions-BNDjc56_.js} +4 -4
  287. package/dist/{crudActions-C1Ur7cS5.js.map → crudActions-BNDjc56_.js.map} +1 -1
  288. package/dist/dataBrowser/forms/index.js +1 -1
  289. package/dist/dataBrowser/index.js +2 -2
  290. package/dist/enums/index.js +8 -8
  291. package/dist/{fileViewer-CtY7cOmL.js → fileViewer-CJmEQUZM.js} +2 -2
  292. package/dist/{fileViewer-CtY7cOmL.js.map → fileViewer-CJmEQUZM.js.map} +1 -1
  293. package/dist/{floorplans-9voWXvF2.js → floorplans-ClCj18Qu.js} +2 -2
  294. package/dist/{floorplans-9voWXvF2.js.map → floorplans-ClCj18Qu.js.map} +1 -1
  295. package/dist/{fluentTimeline-CiONGsTd.js → fluentTimeline-WyxEgKFr.js} +2 -2
  296. package/dist/{fluentTimeline-CiONGsTd.js.map → fluentTimeline-WyxEgKFr.js.map} +1 -1
  297. package/dist/{forms-DsdldFST.js → forms-HlBYZESz.js} +3 -3
  298. package/dist/{forms-DsdldFST.js.map → forms-HlBYZESz.js.map} +1 -1
  299. package/dist/hooks/index.js +9 -9
  300. package/dist/{hooks-BNndjGer.js → hooks-B_0PVsdp.js} +3 -3
  301. package/dist/{hooks-BNndjGer.js.map → hooks-B_0PVsdp.js.map} +1 -1
  302. package/dist/index.js +101 -101
  303. package/dist/inquiry/dashboard/index.js +1 -1
  304. package/dist/inquiry/index.js +4 -4
  305. package/dist/inquiry/inquiryBar/index.js +1 -1
  306. package/dist/inquiry/search/index.js +1 -1
  307. package/dist/maintenanceEngine/crudBrowser/index.js +2 -2
  308. package/dist/maintenanceEngine/index.js +4 -4
  309. package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
  310. package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
  311. package/dist/{mapLayout-DNtsBpcK.js → mapLayout-BaAcodmS.js} +2 -2
  312. package/dist/{mapLayout-DNtsBpcK.js.map → mapLayout-BaAcodmS.js.map} +1 -1
  313. package/dist/menuPage/index.js +1 -1
  314. package/dist/{menuPage-BHXchSeD.js → menuPage-DoZR4-kk.js} +3 -6
  315. package/dist/menuPage-DoZR4-kk.js.map +1 -0
  316. package/dist/{menuUtilities-BOnqojY6.js → menuUtilities-CkZ_pe8p.js} +4 -4
  317. package/dist/{menuUtilities-BOnqojY6.js.map → menuUtilities-CkZ_pe8p.js.map} +1 -1
  318. package/dist/{methodUtils-CDx9usdO.js → methodUtils-BmW5r7qU.js} +2 -2
  319. package/dist/{methodUtils-CDx9usdO.js.map → methodUtils-BmW5r7qU.js.map} +1 -1
  320. package/dist/models/index.js +1 -1
  321. package/dist/{newGrid-B6oyV5FZ.js → newGrid-tFtQU1l7.js} +2 -2
  322. package/dist/{newGrid-B6oyV5FZ.js.map → newGrid-tFtQU1l7.js.map} +1 -1
  323. package/dist/notes/index.js +1 -1
  324. package/dist/page/PageContainer/index.js +1 -1
  325. package/dist/pageEnums-Bw4Yfa6D.js +22 -0
  326. package/dist/{pageEnums-DHCYa0ey.js.map → pageEnums-Bw4Yfa6D.js.map} +1 -1
  327. package/dist/paymentVendorFactoryEnum-Mq0LPnfG.js +38 -0
  328. package/dist/{paymentVendorFactoryEnum-CwnzkF9A.js.map → paymentVendorFactoryEnum-Mq0LPnfG.js.map} +1 -1
  329. package/dist/{profile-7BieC5qc.js → profile-DGLuxYkB.js} +3 -3
  330. package/dist/{profile-7BieC5qc.js.map → profile-DGLuxYkB.js.map} +1 -1
  331. package/dist/propertyTypeEnums-kRCZNBn6.js +15 -0
  332. package/dist/{propertyTypeEnums-Dys-84NL.js.map → propertyTypeEnums-kRCZNBn6.js.map} +1 -1
  333. package/dist/providers/index.js +1 -1
  334. package/dist/reminders/index.js +2 -2
  335. package/dist/reports/index.js +1 -1
  336. package/dist/routes/index.js +1 -1
  337. package/dist/{routes-BC24z6ls.js → routes-CzJd_612.js} +9 -9
  338. package/dist/{routes-BC24z6ls.js.map → routes-CzJd_612.js.map} +1 -1
  339. package/dist/searchEnums-DruwPmGC.js +11 -0
  340. package/dist/{searchEnums-BTFUwf6v.js.map → searchEnums-DruwPmGC.js.map} +1 -1
  341. package/dist/shell/index.js +3 -3
  342. package/dist/shell/ui/addUser/index.js +1 -1
  343. package/dist/shell/ui/index.js +2 -2
  344. package/dist/shell/ui/profile/index.js +1 -1
  345. package/dist/stores/index.js +1 -1
  346. package/dist/tagEnums-pSvvqkV3.js +11 -0
  347. package/dist/{tagEnums-Bc9xOKJw.js.map → tagEnums-pSvvqkV3.js.map} +1 -1
  348. package/dist/{tenantStore-CFYu7ndZ.js → tenantStore-BUT7oepr.js} +2 -2
  349. package/dist/{tenantStore-CFYu7ndZ.js.map → tenantStore-BUT7oepr.js.map} +1 -1
  350. package/dist/{theme-_CEHumbt.js → theme-ubmTDmGy.js} +2 -2
  351. package/dist/{theme-_CEHumbt.js.map → theme-ubmTDmGy.js.map} +1 -1
  352. package/dist/treeMenu/index.js +1 -1
  353. package/dist/types/src/UI/navigation/menus/AppMenuItem.d.ts.map +1 -1
  354. package/dist/types/src/UI/utilityDisplay/UtilitySideBar.d.ts.map +1 -1
  355. package/dist/types/src/enums/unitySystemEnums.d.ts +2 -1
  356. package/dist/types/src/enums/unitySystemEnums.d.ts.map +1 -1
  357. package/dist/types/src/hooks/useUdpGridFilterModel.d.ts.map +1 -1
  358. package/dist/types/src/menuPage/CustomMenuPage.d.ts +1 -1
  359. package/dist/types/src/menuPage/CustomMenuPage.d.ts.map +1 -1
  360. package/dist/types/src/menuPage/MenuPage.d.ts.map +1 -1
  361. package/dist/types/src/shell/ui/SidebarCollapseButton.d.ts.map +1 -1
  362. package/dist/types/src/treeMenu/BaseTreeMenuItem.d.ts.map +1 -1
  363. package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts +2 -1
  364. package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
  365. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.d.ts.map +1 -1
  366. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.d.ts.map +1 -1
  367. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionsPage.d.ts.map +1 -1
  368. package/dist/types/src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.d.ts.map +1 -1
  369. package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.d.ts.map +1 -1
  370. package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.d.ts.map +1 -1
  371. package/dist/types/src/utilities/search/SearchUtilities.d.ts.map +1 -1
  372. package/dist/types/tsconfig.tsbuildinfo +1 -1
  373. package/dist/udp/ShortcutContent/index.js +1 -1
  374. package/dist/udp/export/index.js +2 -2
  375. package/dist/udp/fileImportMapping/index.js +8 -8
  376. package/dist/udp/fileImportMapping/index.js.map +1 -1
  377. package/dist/udp/pages/ChatUDP/index.js +1 -1
  378. package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
  379. package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
  380. package/dist/udp/pages/UdpFormsPrivateForm/index.js +1 -1
  381. package/dist/udp/pages/UdpFormsPublicForm/index.js +1 -1
  382. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  383. package/dist/udp/pages/UdpGridPanelManagementPage/index.js +1 -1
  384. package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
  385. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
  386. package/dist/udp/pages/UdpMaintenanceConfigPage/index.js +2 -2
  387. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
  388. package/dist/udp/pages/UdpNotesPage/index.js +1 -1
  389. package/dist/udp/pages/UdpPages/index.js +17 -17
  390. package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
  391. package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
  392. package/dist/udp/pages/UdpReportsPage/index.js +1 -1
  393. package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
  394. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  395. package/dist/udp/pages/UdpVerticalManagementPage/index.js +1 -1
  396. package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +1 -1
  397. package/dist/udp/utilities/index.js +1 -1
  398. package/dist/unitySystemEnums-BhRg17du.js +344 -0
  399. package/dist/{unitySystemEnums-CZDCsD5t.js.map → unitySystemEnums-BhRg17du.js.map} +1 -1
  400. package/dist/uploader/index.js +1 -1
  401. package/dist/{uploader-D_e-kKhB.js → uploader-D8ZrNmfQ.js} +8 -8
  402. package/dist/{uploader-D_e-kKhB.js.map → uploader-D8ZrNmfQ.js.map} +1 -1
  403. package/dist/{useActions-DZe6YlEm.js → useActions-Ct3UAtTb.js} +4 -4
  404. package/dist/{useActions-DZe6YlEm.js.map → useActions-Ct3UAtTb.js.map} +1 -1
  405. package/dist/{useApiCatalog-cpchDfC1.js → useApiCatalog-CFnv-X8K.js} +2 -2
  406. package/dist/{useApiCatalog-cpchDfC1.js.map → useApiCatalog-CFnv-X8K.js.map} +1 -1
  407. package/dist/{useAxiosGet-CYnt6Hd0.js → useAxiosGet-B3uusywz.js} +3 -3
  408. package/dist/{useAxiosGet-CYnt6Hd0.js.map → useAxiosGet-B3uusywz.js.map} +1 -1
  409. package/dist/{useAxiosMutate-DeqKSi5z.js → useAxiosMutate-CChDJc0L.js} +3 -3
  410. package/dist/{useAxiosMutate-DeqKSi5z.js.map → useAxiosMutate-CChDJc0L.js.map} +1 -1
  411. package/dist/{usePromotedMethodEntities-D-GoZJZB.js → usePromotedMethodEntities-CKfXJwBP.js} +3 -3
  412. package/dist/{usePromotedMethodEntities-D-GoZJZB.js.map → usePromotedMethodEntities-CKfXJwBP.js.map} +1 -1
  413. package/dist/{usePromotedMethodEntity-B4rk75tH.js → usePromotedMethodEntity-Fr6JxDuh.js} +2 -2
  414. package/dist/{usePromotedMethodEntity-B4rk75tH.js.map → usePromotedMethodEntity-Fr6JxDuh.js.map} +1 -1
  415. package/dist/{useQueryExecutors-DuuHrj2M.js → useQueryExecutors-6dxzYiaQ.js} +3 -3
  416. package/dist/{useQueryExecutors-DuuHrj2M.js.map → useQueryExecutors-6dxzYiaQ.js.map} +1 -1
  417. package/dist/{useSearchFilterParamsMap-hAHx2Rav.js → useSearchFilterParamsMap-BR31_fpl.js} +3 -3
  418. package/dist/{useSearchFilterParamsMap-hAHx2Rav.js.map → useSearchFilterParamsMap-BR31_fpl.js.map} +1 -1
  419. package/dist/utilities/aggrid/datasources/index.js +1 -1
  420. package/dist/utilities/aggrid/index.js +2 -2
  421. package/dist/utilities/auth/index.js +4 -4
  422. package/dist/utilities/chatBot/index.js +1 -1
  423. package/dist/utilities/form/paymentForm/index.js +1 -1
  424. package/dist/utilities/index.js +3 -3
  425. package/dist/utilities/menus/index.js +1 -1
  426. package/dist/utilities/provider/index.js +1 -1
  427. package/dist/utilities/redirect/pages/index.js +1 -1
  428. package/dist/utilities/search/index.js +1 -1
  429. package/dist/utilities/tenant/index.js +1 -1
  430. package/dist/utilities/theme/index.js +1 -1
  431. package/dist/utilities/tree/index.js +1 -1
  432. package/dist/utilities/workflow/index.js +1 -1
  433. package/dist/{utilityDisplay-DtdjV7V1.js → utilityDisplay-lia_3vnq.js} +2 -2
  434. package/dist/{utilityDisplay-DtdjV7V1.js.map → utilityDisplay-lia_3vnq.js.map} +1 -1
  435. package/dist/{virtualActions-B788CBd7.js → virtualActions-DGiVDudB.js} +2 -2
  436. package/dist/{virtualActions-B788CBd7.js.map → virtualActions-DGiVDudB.js.map} +1 -1
  437. package/dist/{withEngineComponent-Bcnxug3h.js → withEngineComponent-CoMj91Ad.js} +2 -2
  438. package/dist/{withEngineComponent-Bcnxug3h.js.map → withEngineComponent-CoMj91Ad.js.map} +1 -1
  439. package/dist/workflow/index.js +3 -3
  440. package/dist/workflow/menus/index.js +1 -1
  441. package/dist/workflowEnums-ztRFwx_L.js +48 -0
  442. package/dist/{workflowEnums-BJmSE_P8.js.map → workflowEnums-ztRFwx_L.js.map} +1 -1
  443. package/dist/{workflowUtilities-Brby0vts.js → workflowUtilities-DBcBJOKf.js} +2 -2
  444. package/dist/{workflowUtilities-Brby0vts.js.map → workflowUtilities-DBcBJOKf.js.map} +1 -1
  445. package/export-map.json +1 -1
  446. package/package.json +3 -3
  447. package/dist/AmbientChipButton-DYAYXuKp.js.map +0 -1
  448. package/dist/AmbientTokenButton-B53E25r2.js.map +0 -1
  449. package/dist/AppMenu-oGJtO6Vp.js.map +0 -1
  450. package/dist/BarChartWidget-u-8fxMn5.js.map +0 -1
  451. package/dist/BaseTreeMenu-Dg8MW4TD.js.map +0 -1
  452. package/dist/BubbleWidget-CMJYN-7J.js.map +0 -1
  453. package/dist/DensePlotWidget-lJW-uzdQ.js.map +0 -1
  454. package/dist/GridFunctions-D76ygiH2.js.map +0 -1
  455. package/dist/InputFieldTypeEnums-Mg684vvi.js +0 -14
  456. package/dist/Inquiry-C6fDp46v.js +0 -3
  457. package/dist/LineGraphWidget-Ly1fmTyr.js.map +0 -1
  458. package/dist/MenuPage-CdzHSWBt.js +0 -3
  459. package/dist/MenuPage-KiNfnc7P.js.map +0 -1
  460. package/dist/MyExportsPage-DNvL1_1X.js +0 -3
  461. package/dist/NestedGrid-DAqsZ216.js.map +0 -1
  462. package/dist/Reports-B5vRQpl0.js +0 -3
  463. package/dist/SearchUtilities-DUW0kaw_.js.map +0 -1
  464. package/dist/SparsePlotWidget-DuHbmEom.js.map +0 -1
  465. package/dist/UdpAuditEventsPage-u7pIg9Z9.js +0 -3
  466. package/dist/UdpFormsSubmissionGrid-fhcfXjlD.js.map +0 -1
  467. package/dist/UdpTransactionsPage-RiMTr1cK.js.map +0 -1
  468. package/dist/UserFormSideSheet-LAR4fJpW.js +0 -3
  469. package/dist/UtilitySideBar-BU3ppHrv.js.map +0 -1
  470. package/dist/VirtualBrowser-CbL5X-W-.js +0 -3
  471. package/dist/menuPage-BHXchSeD.js.map +0 -1
  472. package/dist/pageEnums-DHCYa0ey.js +0 -22
  473. package/dist/paymentVendorFactoryEnum-CwnzkF9A.js +0 -38
  474. package/dist/propertyTypeEnums-Dys-84NL.js +0 -15
  475. package/dist/searchEnums-BTFUwf6v.js +0 -11
  476. package/dist/tagEnums-Bc9xOKJw.js +0 -11
  477. package/dist/unitySystemEnums-CZDCsD5t.js +0 -343
  478. package/dist/workflowEnums-BJmSE_P8.js +0 -48
@@ -1 +1 @@
1
- {"version":3,"file":"ExportSidesheet-eHGdT42e.js","names":["entity","searchObject","Typography","LinearProgress"],"sources":["../src/udp/export/useUdpExport.js","../src/udp/export/VisualSearchObject.jsx","../src/udp/export/ExportSidesheet.jsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const useUdpExport = (apiCatalogId, productId) => {\n const [entity, setEntity] = useState();\n const [searchObject, setSearchObject] = useState();\n const [fileFormat, setFileFormat] = useState('.XLSX');\n const [numRowsToExport, setNumRowsToExport] = useState(null);\n const [validSearch, setValidSearch] = useState(false);\n const [errorList, setErrorList] = useState([]);\n const [activeExportJob, setActiveExportJob] = useState();\n const [exportLoading, setExportLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n\n const { data: selectedEntity, loading: entityLoading } =\n usePromotedMethodEntity(entity, true, apiCatalogId, productId);\n const { data: udpJobEntity } = usePromotedMethodEntity(\n 'udpJob',\n true,\n apiCatalogId,\n productId\n );\n\n const refetchActiveJobData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { id: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'jobstatus',\n 'Error getting job status ',\n 'error'\n );\n });\n }\n }, [activeExportJob?.id, udpJobEntity?.unityBaseGetMethod?.apiMethodId]);\n\n const refetchfileResultData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { JobId: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists('fileError', 'Error getting file ', 'error');\n });\n }\n }, [\n activeExportJob?.id,\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ]);\n\n const clearParameters = useCallback(() => {\n setEntity(null);\n setSearchObject(null);\n setNumRowsToExport(null);\n setActiveExportJob(null);\n setErrorList([]);\n }, []);\n\n const updateExportParameters = useCallback((entity, searchObject) => {\n setEntity(entity);\n setSearchObject(searchObject);\n }, []);\n\n const addErrorIfNotExists = (id, message, severity = 'error') => {\n setErrorList((prev) => {\n const exists = prev.some((error) => error.id === id);\n if (!exists) {\n return [...prev, { id, message, severity }];\n }\n return prev;\n });\n };\n\n const initialSearchWithParams = useCallback(async () => {\n await executeQueryAdHoc(\n {\n data: {\n ...searchObject,\n pageSize: 1\n }\n },\n selectedEntity?.unityBaseSearchMethod?.apiMethodId\n )\n .then((res) => {\n setNumRowsToExport(res?.data?.total);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'searchObject',\n 'Error fetching row count',\n 'error'\n );\n });\n }, [searchObject, selectedEntity]);\n\n const createExport = useCallback(async () => {\n if (selectedEntity?.unityBaseExportMethod?.apiMethodId) {\n setExportLoading(true);\n await executeQueryWithParameters(\n {\n data: {\n requestBody: {\n debug: true,\n exportAcrossAssociations: false,\n exportOnAllAssociations: false,\n exportSiblings: false,\n search: searchObject\n }\n }\n },\n selectedEntity?.unityBaseExportMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res?.data);\n setExportLoading(false);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'exportRequest',\n 'Error creating the export job',\n 'error'\n );\n setExportLoading(false);\n });\n }\n }, [searchObject, selectedEntity?.unityBaseExportMethod?.apiMethodId]);\n\n useEffect(() => {\n if (!entityLoading) {\n if (selectedEntity?.unityBaseSearchMethod === null) {\n addErrorIfNotExists(\n 'search',\n `${getSanitizedName(entity)}'s search method must be promoted`,\n 'error'\n );\n } else {\n initialSearchWithParams();\n }\n if (selectedEntity?.unityBaseExportMethod === null) {\n addErrorIfNotExists(\n 'export',\n `${getSanitizedName(entity)}'s export method must be promoted`,\n 'error'\n );\n }\n }\n }, [initialSearchWithParams, selectedEntity, entity, entityLoading]);\n\n useEffect(() => {\n if (entity) {\n if (\n udpJobEntity &&\n !udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ) {\n addErrorIfNotExists(\n 'fileResultGet',\n `UdpJob's GetFileResult must be promoted to download the file`,\n 'warning'\n );\n }\n\n if (udpJobEntity && !udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n addErrorIfNotExists(\n 'fileBaseGet',\n `UdpJob's Get method must be promoted to view job status`,\n 'warning'\n );\n }\n }\n }, [entity, udpJobEntity]);\n\n useEffect(() => {\n let isValid = true;\n errorList?.forEach((item) => {\n if (item.severity === 'error') {\n isValid = false;\n }\n });\n setValidSearch(isValid);\n }, [errorList]);\n\n useEffect(() => {\n if (\n !activeExportJob ||\n activeExportJob?.statusId === 3 ||\n activeExportJob?.statusId === 4\n )\n return;\n\n const intervalId = setInterval(() => {\n refetchActiveJobData();\n }, 5000);\n\n return () => clearInterval(intervalId);\n }, [activeExportJob, refetchActiveJobData]);\n\n useEffect(() => {\n if (activeExportJob?.statusId === 3) {\n refetchfileResultData();\n }\n }, [activeExportJob?.statusId, refetchfileResultData]);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }, [fileResultData?.link]);\n\n return {\n updateExportParameters,\n createExport,\n entity,\n searchObject,\n fileFormat,\n numRowsToExport,\n validSearch,\n errorList,\n activeExportJob,\n exportLoading,\n handleFileDownload,\n clearParameters\n };\n};\n","import React, { useMemo } from 'react';\nimport { Box, Chip } from '@material-ui/core';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\n\nexport const VisualSearchObject = ({ searchObject }) => {\n // 1️⃣ Safely default to an empty object if searchObject is null/undefined:\n const safeSO = searchObject || {};\n\n // 2️⃣ Destructure with defaults for each property:\n const {\n filterElements = [],\n filterGroups = [],\n logicalSearchOperator = 1,\n } = safeSO;\n\n const filtersByGroup = useMemo(() => {\n return filterElements.reduce((acc, fe) => {\n const gid = fe.groupId ?? 0;\n (acc[gid] = acc[gid] || []).push(fe);\n return acc;\n }, {});\n }, [filterElements]);\n\n const groupLookup = useMemo(() => {\n const lookup = {};\n filterGroups.forEach(g => {\n lookup[g.groupId] = { ...g, children: [] };\n });\n filterGroups.forEach(g => {\n if (g.parentGroupId && lookup[g.parentGroupId]) {\n lookup[g.parentGroupId].children.push(lookup[g.groupId]);\n }\n });\n return lookup;\n }, [filterGroups]);\n\n const topLevelGroups = useMemo(() => {\n return filterGroups\n .filter(g => !g.parentGroupId)\n .map(g => groupLookup[g.groupId]);\n }, [filterGroups, groupLookup]);\n\n // virtual root\n const rootGroup = {\n groupId: 0,\n logicalSearchOperator,\n children: topLevelGroups,\n };\n\n // 4️⃣ Recursive render\n const OpLabel = { 1: 'AND', 2: 'OR' };\n const renderGroup = (group, level = 0) => (\n <Box\n key={group.groupId}\n border={1}\n borderColor=\"grey.300\"\n borderRadius={4}\n p={1}\n ml={level * 2}\n mb={1}\n bgcolor={level === 0 ? 'grey.100' : 'transparent'}\n >\n <Box mb={1}>\n <StatusChip\n label={OpLabel[group.logicalSearchOperator] || 'AND'}\n status=\"info\"\n size=\"small\"\n />\n </Box>\n <Box display=\"flex\" flexWrap=\"wrap\" mb={group.children.length ? 1 : 0}>\n {(filtersByGroup[group.groupId] || []).map((fe, i) => (\n <Chip\n key={`g${group.groupId}-f${i}`}\n size=\"small\"\n label={`${fe.searchField} ${fe.searchOperator} ${fe.searchValue}`}\n style={{ marginRight: 4, marginBottom: 4 }}\n />\n ))}\n </Box>\n {group.children.map(c => renderGroup(c, level + 1))}\n </Box>\n );\n\n // 5️⃣ Finally, render nothing if truly empty:\n const hasAnything =\n filterElements.length > 0 || filterGroups.length > 0;\n\n if (!hasAnything) return null;\n\n return (\n <Box>\n {renderGroup(rootGroup)}\n </Box>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentListItem } from '../../UI/dataDisplay/FluentListItem';\nimport { VisualSearchObject } from './VisualSearchObject';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { Skeleton } from '@material-ui/lab';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\nimport { Slide } from '@material-ui/core';\nimport { LinearProgress } from '../../UI/loading/LinearProgress';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { StatusCircleCheckmarkIcon } from '@fluentui/react-icons';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useHistory } from 'react-router-dom';\n\nexport const ExportSidesheet = (props) => {\n const {\n entity,\n numRowsToExport,\n fileFormat,\n searchObject,\n errorList,\n activeExportJob,\n handleFileDownload,\n exportSidesheetOpen,\n handleCloseExportSidesheet,\n createExport,\n exportLoading,\n validSearch\n } = props;\n\n const history = useHistory();\n const [page, setPage] = useState('exportSummary');\n\n useEffect(() => {\n if (activeExportJob?.id) {\n setPage('transition');\n }\n }, [activeExportJob?.id]);\n\n const handleSummaryExited = () => {\n setPage('exportProgress');\n };\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return { status: null, label: 'Pending' };\n } else if (value === 2) {\n return { status: 'info', label: 'Running' };\n } else if (value === 3) {\n return { status: 'success', label: 'Completed' };\n } else if (value === 4) {\n return { status: 'error', label: 'Failed' };\n }\n };\n\n const onCloseSidesheet = () => {\n setPage('exportSummary');\n handleCloseExportSidesheet();\n };\n\n return (\n <SideSheet\n open={exportSidesheetOpen}\n onClose={onCloseSidesheet}\n width={'50%'}\n onSubmit={createExport}\n buttonLabel={'Create Export'}\n buttonTwoLabel='My Exports'\n buttonTwoAction={() => history.push('/myexports')}\n progress={exportLoading}\n buttonOneDisabled={!validSearch || activeExportJob}\n >\n <div>\n {errorList?.map((error) => (\n <AmbientAlert\n alertMessage={error.message}\n showAlert={true}\n alertSeverity={error.severity}\n />\n ))}\n <Slide\n in={page === 'exportSummary'}\n onExited={handleSummaryExited}\n direction='right'\n unmountOnExit\n appear={false}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title='Export Summary' fullWidth removeTopLayoutUnit>\n <Typography>\n You are about to export all records from this table using your\n search criteria.\n </Typography>\n <div style={{ marginTop: 16 }}>\n <FluentListItem\n subject='Table'\n value={getSanitizedName(entity)}\n />\n <FluentListItem\n subject='Number of Rows'\n value={numRowsToExport ?? <Skeleton width={40} height={26} />}\n />\n </div>\n </AmbientCard>\n <AmbientCard title='Applied Filters' fullWidth>\n <VisualSearchObject searchObject={searchObject} />\n </AmbientCard>\n <AmbientCard title='Export Options' fullWidth>\n <FluentListItem subject='File Format' value={fileFormat} />\n </AmbientCard>\n </div>\n </Slide>\n <Slide in={page === 'exportProgress'} direction='left' mountOnEnter>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title={`Job Details`} fullWidth removeTopLayoutUnit>\n <div style={{ marginBottom: 25 }}>\n <Typography>\n Exports are handled in the background. You can safely close\n this window.\n </Typography>\n </div>\n <FluentListItem subject='Job Id' value={activeExportJob?.id} />\n <FluentListItem\n subject='Status'\n value={\n <StatusChip\n status={getJobStatus(activeExportJob?.statusId)?.status}\n label={getJobStatus(activeExportJob?.statusId)?.label}\n />\n }\n />\n </AmbientCard>\n <AmbientCard\n title={`Export ${getJobStatus(activeExportJob?.statusId)?.label}`}\n fullWidth\n removeTopLayoutUnit\n >\n {(activeExportJob?.statusId === 1 ||\n activeExportJob?.statusId === 2) && <LinearProgress />}\n {activeExportJob?.statusId === 3 &&\n (!errorList.some((err) => err?.id === 'fileResultGet') ? (\n <EmptyStateDisplay\n icon={StatusCircleCheckmarkIcon}\n primaryText={'File is ready!'}\n actionLabel='Download'\n action={handleFileDownload && (() => handleFileDownload())}\n />\n ) : (\n <Typography>\n To download the file, please go to the My Exports page.\n </Typography>\n ))}\n </AmbientCard>\n </div>\n </Slide>\n </div>\n </SideSheet>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExportSidesheet-CM6A7I6E.js","names":["entity","searchObject","Typography","LinearProgress"],"sources":["../src/udp/export/useUdpExport.js","../src/udp/export/VisualSearchObject.jsx","../src/udp/export/ExportSidesheet.jsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const useUdpExport = (apiCatalogId, productId) => {\n const [entity, setEntity] = useState();\n const [searchObject, setSearchObject] = useState();\n const [fileFormat, setFileFormat] = useState('.XLSX');\n const [numRowsToExport, setNumRowsToExport] = useState(null);\n const [validSearch, setValidSearch] = useState(false);\n const [errorList, setErrorList] = useState([]);\n const [activeExportJob, setActiveExportJob] = useState();\n const [exportLoading, setExportLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n\n const { data: selectedEntity, loading: entityLoading } =\n usePromotedMethodEntity(entity, true, apiCatalogId, productId);\n const { data: udpJobEntity } = usePromotedMethodEntity(\n 'udpJob',\n true,\n apiCatalogId,\n productId\n );\n\n const refetchActiveJobData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { id: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'jobstatus',\n 'Error getting job status ',\n 'error'\n );\n });\n }\n }, [activeExportJob?.id, udpJobEntity?.unityBaseGetMethod?.apiMethodId]);\n\n const refetchfileResultData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { JobId: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists('fileError', 'Error getting file ', 'error');\n });\n }\n }, [\n activeExportJob?.id,\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ]);\n\n const clearParameters = useCallback(() => {\n setEntity(null);\n setSearchObject(null);\n setNumRowsToExport(null);\n setActiveExportJob(null);\n setErrorList([]);\n }, []);\n\n const updateExportParameters = useCallback((entity, searchObject) => {\n setEntity(entity);\n setSearchObject(searchObject);\n }, []);\n\n const addErrorIfNotExists = (id, message, severity = 'error') => {\n setErrorList((prev) => {\n const exists = prev.some((error) => error.id === id);\n if (!exists) {\n return [...prev, { id, message, severity }];\n }\n return prev;\n });\n };\n\n const initialSearchWithParams = useCallback(async () => {\n await executeQueryAdHoc(\n {\n data: {\n ...searchObject,\n pageSize: 1\n }\n },\n selectedEntity?.unityBaseSearchMethod?.apiMethodId\n )\n .then((res) => {\n setNumRowsToExport(res?.data?.total);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'searchObject',\n 'Error fetching row count',\n 'error'\n );\n });\n }, [searchObject, selectedEntity]);\n\n const createExport = useCallback(async () => {\n if (selectedEntity?.unityBaseExportMethod?.apiMethodId) {\n setExportLoading(true);\n await executeQueryWithParameters(\n {\n data: {\n requestBody: {\n debug: true,\n exportAcrossAssociations: false,\n exportOnAllAssociations: false,\n exportSiblings: false,\n search: searchObject\n }\n }\n },\n selectedEntity?.unityBaseExportMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res?.data);\n setExportLoading(false);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'exportRequest',\n 'Error creating the export job',\n 'error'\n );\n setExportLoading(false);\n });\n }\n }, [searchObject, selectedEntity?.unityBaseExportMethod?.apiMethodId]);\n\n useEffect(() => {\n if (!entityLoading) {\n if (selectedEntity?.unityBaseSearchMethod === null) {\n addErrorIfNotExists(\n 'search',\n `${getSanitizedName(entity)}'s search method must be promoted`,\n 'error'\n );\n } else {\n initialSearchWithParams();\n }\n if (selectedEntity?.unityBaseExportMethod === null) {\n addErrorIfNotExists(\n 'export',\n `${getSanitizedName(entity)}'s export method must be promoted`,\n 'error'\n );\n }\n }\n }, [initialSearchWithParams, selectedEntity, entity, entityLoading]);\n\n useEffect(() => {\n if (entity) {\n if (\n udpJobEntity &&\n !udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ) {\n addErrorIfNotExists(\n 'fileResultGet',\n `UdpJob's GetFileResult must be promoted to download the file`,\n 'warning'\n );\n }\n\n if (udpJobEntity && !udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n addErrorIfNotExists(\n 'fileBaseGet',\n `UdpJob's Get method must be promoted to view job status`,\n 'warning'\n );\n }\n }\n }, [entity, udpJobEntity]);\n\n useEffect(() => {\n let isValid = true;\n errorList?.forEach((item) => {\n if (item.severity === 'error') {\n isValid = false;\n }\n });\n setValidSearch(isValid);\n }, [errorList]);\n\n useEffect(() => {\n if (\n !activeExportJob ||\n activeExportJob?.statusId === 3 ||\n activeExportJob?.statusId === 4\n )\n return;\n\n const intervalId = setInterval(() => {\n refetchActiveJobData();\n }, 5000);\n\n return () => clearInterval(intervalId);\n }, [activeExportJob, refetchActiveJobData]);\n\n useEffect(() => {\n if (activeExportJob?.statusId === 3) {\n refetchfileResultData();\n }\n }, [activeExportJob?.statusId, refetchfileResultData]);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }, [fileResultData?.link]);\n\n return {\n updateExportParameters,\n createExport,\n entity,\n searchObject,\n fileFormat,\n numRowsToExport,\n validSearch,\n errorList,\n activeExportJob,\n exportLoading,\n handleFileDownload,\n clearParameters\n };\n};\n","import React, { useMemo } from 'react';\nimport { Box, Chip } from '@material-ui/core';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\n\nexport const VisualSearchObject = ({ searchObject }) => {\n // 1️⃣ Safely default to an empty object if searchObject is null/undefined:\n const safeSO = searchObject || {};\n\n // 2️⃣ Destructure with defaults for each property:\n const {\n filterElements = [],\n filterGroups = [],\n logicalSearchOperator = 1,\n } = safeSO;\n\n const filtersByGroup = useMemo(() => {\n return filterElements.reduce((acc, fe) => {\n const gid = fe.groupId ?? 0;\n (acc[gid] = acc[gid] || []).push(fe);\n return acc;\n }, {});\n }, [filterElements]);\n\n const groupLookup = useMemo(() => {\n const lookup = {};\n filterGroups.forEach(g => {\n lookup[g.groupId] = { ...g, children: [] };\n });\n filterGroups.forEach(g => {\n if (g.parentGroupId && lookup[g.parentGroupId]) {\n lookup[g.parentGroupId].children.push(lookup[g.groupId]);\n }\n });\n return lookup;\n }, [filterGroups]);\n\n const topLevelGroups = useMemo(() => {\n return filterGroups\n .filter(g => !g.parentGroupId)\n .map(g => groupLookup[g.groupId]);\n }, [filterGroups, groupLookup]);\n\n // virtual root\n const rootGroup = {\n groupId: 0,\n logicalSearchOperator,\n children: topLevelGroups,\n };\n\n // 4️⃣ Recursive render\n const OpLabel = { 1: 'AND', 2: 'OR' };\n const renderGroup = (group, level = 0) => (\n <Box\n key={group.groupId}\n border={1}\n borderColor=\"grey.300\"\n borderRadius={4}\n p={1}\n ml={level * 2}\n mb={1}\n bgcolor={level === 0 ? 'grey.100' : 'transparent'}\n >\n <Box mb={1}>\n <StatusChip\n label={OpLabel[group.logicalSearchOperator] || 'AND'}\n status=\"info\"\n size=\"small\"\n />\n </Box>\n <Box display=\"flex\" flexWrap=\"wrap\" mb={group.children.length ? 1 : 0}>\n {(filtersByGroup[group.groupId] || []).map((fe, i) => (\n <Chip\n key={`g${group.groupId}-f${i}`}\n size=\"small\"\n label={`${fe.searchField} ${fe.searchOperator} ${fe.searchValue}`}\n style={{ marginRight: 4, marginBottom: 4 }}\n />\n ))}\n </Box>\n {group.children.map(c => renderGroup(c, level + 1))}\n </Box>\n );\n\n // 5️⃣ Finally, render nothing if truly empty:\n const hasAnything =\n filterElements.length > 0 || filterGroups.length > 0;\n\n if (!hasAnything) return null;\n\n return (\n <Box>\n {renderGroup(rootGroup)}\n </Box>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentListItem } from '../../UI/dataDisplay/FluentListItem';\nimport { VisualSearchObject } from './VisualSearchObject';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { Skeleton } from '@material-ui/lab';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\nimport { Slide } from '@material-ui/core';\nimport { LinearProgress } from '../../UI/loading/LinearProgress';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { StatusCircleCheckmarkIcon } from '@fluentui/react-icons';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useHistory } from 'react-router-dom';\n\nexport const ExportSidesheet = (props) => {\n const {\n entity,\n numRowsToExport,\n fileFormat,\n searchObject,\n errorList,\n activeExportJob,\n handleFileDownload,\n exportSidesheetOpen,\n handleCloseExportSidesheet,\n createExport,\n exportLoading,\n validSearch\n } = props;\n\n const history = useHistory();\n const [page, setPage] = useState('exportSummary');\n\n useEffect(() => {\n if (activeExportJob?.id) {\n setPage('transition');\n }\n }, [activeExportJob?.id]);\n\n const handleSummaryExited = () => {\n setPage('exportProgress');\n };\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return { status: null, label: 'Pending' };\n } else if (value === 2) {\n return { status: 'info', label: 'Running' };\n } else if (value === 3) {\n return { status: 'success', label: 'Completed' };\n } else if (value === 4) {\n return { status: 'error', label: 'Failed' };\n }\n };\n\n const onCloseSidesheet = () => {\n setPage('exportSummary');\n handleCloseExportSidesheet();\n };\n\n return (\n <SideSheet\n open={exportSidesheetOpen}\n onClose={onCloseSidesheet}\n width={'50%'}\n onSubmit={createExport}\n buttonLabel={'Create Export'}\n buttonTwoLabel='My Exports'\n buttonTwoAction={() => history.push('/myexports')}\n progress={exportLoading}\n buttonOneDisabled={!validSearch || activeExportJob}\n >\n <div>\n {errorList?.map((error) => (\n <AmbientAlert\n alertMessage={error.message}\n showAlert={true}\n alertSeverity={error.severity}\n />\n ))}\n <Slide\n in={page === 'exportSummary'}\n onExited={handleSummaryExited}\n direction='right'\n unmountOnExit\n appear={false}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title='Export Summary' fullWidth removeTopLayoutUnit>\n <Typography>\n You are about to export all records from this table using your\n search criteria.\n </Typography>\n <div style={{ marginTop: 16 }}>\n <FluentListItem\n subject='Table'\n value={getSanitizedName(entity)}\n />\n <FluentListItem\n subject='Number of Rows'\n value={numRowsToExport ?? <Skeleton width={40} height={26} />}\n />\n </div>\n </AmbientCard>\n <AmbientCard title='Applied Filters' fullWidth>\n <VisualSearchObject searchObject={searchObject} />\n </AmbientCard>\n <AmbientCard title='Export Options' fullWidth>\n <FluentListItem subject='File Format' value={fileFormat} />\n </AmbientCard>\n </div>\n </Slide>\n <Slide in={page === 'exportProgress'} direction='left' mountOnEnter>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title={`Job Details`} fullWidth removeTopLayoutUnit>\n <div style={{ marginBottom: 25 }}>\n <Typography>\n Exports are handled in the background. You can safely close\n this window.\n </Typography>\n </div>\n <FluentListItem subject='Job Id' value={activeExportJob?.id} />\n <FluentListItem\n subject='Status'\n value={\n <StatusChip\n status={getJobStatus(activeExportJob?.statusId)?.status}\n label={getJobStatus(activeExportJob?.statusId)?.label}\n />\n }\n />\n </AmbientCard>\n <AmbientCard\n title={`Export ${getJobStatus(activeExportJob?.statusId)?.label}`}\n fullWidth\n removeTopLayoutUnit\n >\n {(activeExportJob?.statusId === 1 ||\n activeExportJob?.statusId === 2) && <LinearProgress />}\n {activeExportJob?.statusId === 3 &&\n (!errorList.some((err) => err?.id === 'fileResultGet') ? (\n <EmptyStateDisplay\n icon={StatusCircleCheckmarkIcon}\n primaryText={'File is ready!'}\n actionLabel='Download'\n action={handleFileDownload && (() => handleFileDownload())}\n />\n ) : (\n <Typography>\n To download the file, please go to the My Exports page.\n </Typography>\n ))}\n </AmbientCard>\n </div>\n </Slide>\n </div>\n </SideSheet>\n );\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { r as useAgGridApi } from "./AgTable-B2xTzAm2.js";
2
2
  import { t as Field } from "./Field-Cda5rJe2.js";
3
- import { t as apiMutate } from "./useAxiosMutate-DeqKSi5z.js";
3
+ import { t as apiMutate } from "./useAxiosMutate-CChDJc0L.js";
4
4
  import { t as DateTimeField } from "./DateTimeField-CUzs3MIq.js";
5
5
  import { t as FluentTextFieldAutoComplete } from "./FluentTextFieldAutoComplete-5Hp3qpk6.js";
6
6
  import { t as FluentToggle } from "./FluentToggle-B1DqTfua.js";
@@ -10,7 +10,7 @@ import { n as SideSheet } from "./SideSheet-CDXVa_Kr.js";
10
10
  import { t as AmbientCard } from "./AmbientCard-DhAiVDYD.js";
11
11
  import { t as FluentDatePicker } from "./FluentDatePicker-C6WEywwM.js";
12
12
  import { t as FilterOperators } from "./SearchOperator-D9838PIe.js";
13
- import { t as AmbientGridTemplate } from "./AmbientGridTemplate-D1TMpzxb.js";
13
+ import { t as AmbientGridTemplate } from "./AmbientGridTemplate-UXA3KgIL.js";
14
14
  import { t as IconButtonWithTooltip } from "./IconButtonWithToolTip-DswviiJB.js";
15
15
  import { t as FluentTextField } from "./FluentTextField-WfFk-koa.js";
16
16
  import { t as FormControlLabel$1 } from "./FormControlLabel-C_X37EhG.js";
@@ -25,16 +25,16 @@ import { useTranslation } from "react-i18next";
25
25
  import { FieldArray } from "react-final-form-arrays";
26
26
 
27
27
  //#region src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts
28
- let FieldType = /* @__PURE__ */ function(FieldType$1) {
29
- FieldType$1["Text"] = "text";
30
- FieldType$1["Date"] = "date";
31
- FieldType$1["DateRange"] = "dateRange";
32
- FieldType$1["Time"] = "time";
33
- FieldType$1["DateTime"] = "dateTime";
34
- FieldType$1["Toggle"] = "toggle";
35
- FieldType$1["Checkbox"] = "checkbox";
36
- FieldType$1["DropdownMenu"] = "dropdownMenu";
37
- return FieldType$1;
28
+ let FieldType = /* @__PURE__ */ function(FieldType) {
29
+ FieldType["Text"] = "text";
30
+ FieldType["Date"] = "date";
31
+ FieldType["DateRange"] = "dateRange";
32
+ FieldType["Time"] = "time";
33
+ FieldType["DateTime"] = "dateTime";
34
+ FieldType["Toggle"] = "toggle";
35
+ FieldType["Checkbox"] = "checkbox";
36
+ FieldType["DropdownMenu"] = "dropdownMenu";
37
+ return FieldType;
38
38
  }({});
39
39
 
40
40
  //#endregion
@@ -401,4 +401,4 @@ const FieldArrayCard = (props) => {
401
401
 
402
402
  //#endregion
403
403
  export { FieldType as n, FieldArrayCard as t };
404
- //# sourceMappingURL=FieldArrayCard-CkVvDF-N.js.map
404
+ //# sourceMappingURL=FieldArrayCard-vX6wT9RN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldArrayCard-CkVvDF-N.js","names":["Grid","AutocompleteFinalField","DateRangeField","FormControlLabel","Typography","Grid","SearchSideSheet"],"sources":["../src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts","../src/UI/inputs/fieldArrayCard/SearchSideSheet.jsx","../src/UI/inputs/fieldArrayCard/AutocompleteFinalField.jsx","../src/UI/inputs/fieldArrayCard/DateRangeField.jsx","../src/UI/inputs/fieldArrayCard/FieldArrayCard.jsx"],"sourcesContent":["export enum FieldType {\n Text = 'text',\n Date = 'date',\n DateRange = 'dateRange',\n Time = 'time',\n DateTime = 'dateTime',\n Toggle = 'toggle',\n Checkbox = 'checkbox',\n DropdownMenu = 'dropdownMenu',\n}","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientGridTemplate } from '../../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { SideSheet } from '../../surfaces/SideSheet';\nimport { useAgGridApi } from '../../../utilities/aggrid/AgTable';\n\nconst SearchSideSheet = props => {\n const {\n open,\n handleClose,\n exclude,\n title,\n productApiBase,\n searchApi,\n colDefs = [],\n gridTitle,\n idField,\n formIdField,\n handleSearch,\n width = '800px',\n height='58vh'\n } = props;\n const [selectedData, setSelectedData] = useState([]);\n const { t } = useTranslation();\n const { gridApi, onGridReady, gridColumnApi } = useAgGridApi();\n const paginationPageSize = 20;\n\n // TODO: use queryId or new data grid from stencil\n const searchData = useCallback(\n async data =>\n apiMutate(\n productApiBase,\n searchApi,\n {\n method: 'post',\n },\n data\n ),\n [productApiBase, searchApi]\n );\n\n const onSelectionChanged = useCallback(() => {\n const selectedRows = gridApi?.getSelectedRows() ?? [];\n setSelectedData(selectedRows);\n }, [gridApi]);\n\n const handleCloseSideSheet = useCallback(\n data => {\n handleClose(data);\n setSelectedData([]);\n },\n [handleClose]\n );\n\n const dataSource = useMemo(\n () => ({\n getRows: async ({ request, success, fail }) => {\n if (handleSearch) {\n handleSearch(paginationPageSize, request, success, fail);\n return;\n }\n const filterElements = request?.filterModel\n ? Object.entries(request.filterModel)?.map(([key, value]) => {\n return {\n searchField: key,\n searchOperator: FilterOperators[value?.type],\n searchValue: value?.filter,\n };\n })\n : [];\n\n const orderElements = request?.sortModel\n ? request.sortModel?.map(sortObj => {\n return {\n sortColumn: sortObj?.colId,\n sortDirection: sortObj?.sort?.toUpperCase(),\n };\n })\n : [];\n await searchData({\n data: {\n filterElements: filterElements,\n orderElements: orderElements,\n pagesize: paginationPageSize,\n pageNumber: (request?.startRow ?? 0) / paginationPageSize + 1,\n },\n })\n .then(response => {\n success({\n rowData: response.data?.pageList,\n rowCount: response.data?.total,\n });\n })\n .catch(error => {\n fail();\n });\n\n },\n }),\n [searchData, handleSearch]\n );\n return (\n <SideSheet\n open={open}\n onClose={() => handleCloseSideSheet()}\n title={title}\n width={width}\n buttonLabel={t('Choose')}\n onSubmit={() => {\n handleCloseSideSheet(selectedData);\n }}\n >\n <AmbientGridTemplate\n title={gridTitle}\n rowModelType=\"serverSide\"\n serverSideDatasource={dataSource}\n cacheBlockSize={paginationPageSize}\n serverSideStoreType=\"partial\"\n paginationPageSize={paginationPageSize}\n columnDefs={[\n {\n field: '',\n checkboxSelection: true,\n maxWidth: 60,\n minWidth: 60,\n cellRenderer: params => {\n console.log({\n exclude,\n formIdField,\n idField,\n bool: exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n ),\n });\n if (\n params?.data &&\n !!exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n )\n ) {\n params.node.setSelected(true);\n }\n },\n },\n ...colDefs,\n ]}\n hideGroupTab\n hideColumnTab\n suppressRowClickSelection={true}\n onSelectionChanged={onSelectionChanged}\n rowSelection=\"multiple\"\n api={gridApi}\n gridReady={onGridReady}\n columnApi={gridColumnApi}\n dynamicSizing={true}\n height={height}\n />\n </SideSheet>\n );\n};\n\nexport default SearchSideSheet;\n","import React, { useMemo } from 'react';\nimport { FluentTextFieldAutoComplete } from '../textField/FluentTextFieldAutoComplete';\n\n// this is only to used in FieldArrayCard\nconst AutocompleteFinalField = props => {\n const { value, options, idField = 'id' ,...otherProps } = props;\n\n const currentValue = useMemo(() => {\n if (typeof value === 'object') {\n return value;\n }\n\n return options.find(option => option[idField] === value) || null;\n }, [idField, options, value]);\n\n return (\n <FluentTextFieldAutoComplete\n {...otherProps}\n options={options}\n value={currentValue}\n />\n );\n};\n\nexport default AutocompleteFinalField;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field } from '../../../utilities/form';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { Grid } from '../../Grid';\n\nconst DateRangeField = props => {\n const {\n fieldName,\n startDateProps = {},\n endDateProps = {},\n sameRow = false,\n initialValues,\n } = props;\n const [maxStartDate, setMaxStartDate] = useState();\n const [minEndDate, setMinEndDate] = useState();\n const { t } = useTranslation();\n\n useEffect(() => {\n const currentStartDate = initialValues[startDateProps?.name ?? 'startDate'];\n if (currentStartDate) {\n let minDate = new Date(currentStartDate);\n minDate.setDate(minDate?.getDate() + 1);\n setMinEndDate(minDate);\n } else {\n setMinEndDate(undefined);\n }\n }, [initialValues, startDateProps.name]);\n\n useEffect(() => {\n const currentEndDate = initialValues[endDateProps?.name ?? 'endDate'];\n if (currentEndDate) {\n let maxDate = new Date(currentEndDate);\n maxDate.setDate(maxDate?.getDate() - 1);\n maxDate.setHours(0, 0, 0, 0);\n setMaxStartDate(maxDate);\n } else {\n setMaxStartDate(undefined);\n }\n }, [endDateProps.name, initialValues]);\n\n return (\n <Grid container spacing={sameRow ? 2 : 0}>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...startDateProps}\n parse={value => (value ? value : null)}\n format={value => (value ? value : null)}\n label={startDateProps?.label ?? t('Start Date')}\n name={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n key={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n maxDate={maxStartDate}\n allowNull\n />\n </Grid>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...endDateProps}\n parse={value => value ?? null}\n format={value => value ?? null}\n label={endDateProps?.label ?? t('End Date')}\n name={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n key={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n minDate={minEndDate}\n allowNull\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default DateRangeField;\n","import { AddIcon, DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport React, { useCallback, useState } from 'react';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { useTranslation } from 'react-i18next';\nimport SearchSideSheet from './SearchSideSheet';\nimport AutocompleteFinalField from './AutocompleteFinalField';\nimport DateRangeField from './DateRangeField';\nimport { FieldType } from './fieldArrayCardEnum';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { DateTimeField } from '../datetimes/DateTimeField';\nimport { EmptyStateDisplay } from '../../dataDisplay/EmptyStateDisplay';\nimport { Field } from '../../../utilities/form';\nimport { FluentCheckbox } from '../checkbox/FluentCheckbox';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { FluentTimePicker } from '../pickers/FluentTimePicker';\nimport { FluentToggle } from '../toggle/FluentToggle';\nimport { FormControlLabel } from '../../utilityDisplay/FormControlLabel';\nimport { Grid } from '../../Grid';\nimport { IconButtonWithTooltip } from '../buttons/IconButtonWithToolTip';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { Typography } from '../../dataDisplay/typography/Typography';\n\nconst useStyles = makeStyles(theme => ({\n toggleWrapper: {\n marginLeft: theme.spacing(-0.1),\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n checkboxField: {\n marginLeft: theme.spacing(-1.1),\n },\n sectionHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n fieldsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n },\n cardHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const FieldArrayCard = props => {\n const {\n title = ' ',\n fieldArrayName,\n getRowTitle,\n fieldConfig,\n removeTopLayoutUnit = false,\n defaultAddedItemValues,\n //search sidesheet props\n enableSearchSideSheet,\n searchSideSheetTitle,\n searchFieldId = 'id',\n formFieldId = 'id',\n formatAddedSearchItems,\n productApiBase,\n searchApi,\n searchGridColDefs,\n searchGridTitle,\n handleSearch,\n disableExcludeInSearch = false,\n searchSideSheetWidth,\n searchSideSheetHeight,\n } = props;\n const classes = useStyles();\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const { t } = useTranslation();\n\n const getField = useCallback(\n (finalFieldName, config, fieldObj) => {\n const { fieldName, fieldType, fieldLabel, componentProps } = config;\n\n let fieldComponent = null;\n\n switch (fieldType) {\n case FieldType.DropdownMenu:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={AutocompleteFinalField}\n label={fieldLabel}\n />\n );\n break;\n case FieldType.Date:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentDatePicker}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.DateRange:\n fieldComponent = (\n <DateRangeField\n {...componentProps}\n fieldName={finalFieldName}\n initialValues={fieldObj}\n />\n );\n break;\n case FieldType.Time:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTimePicker}\n label={fieldLabel}\n size=\"small\"\n />\n );\n break;\n case FieldType.DateTime:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={DateTimeField}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.Toggle:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentToggle}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.toggleWrapper}\n />\n );\n break;\n case FieldType.Checkbox:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentCheckbox}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.checkboxField}\n />\n );\n break;\n default:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTextField}\n label={fieldLabel}\n />\n );\n break;\n }\n\n return fieldComponent;\n },\n [classes.checkboxField, classes.toggleWrapper]\n );\n\n const handleCloseSideSheet = useCallback(\n (selectedRecords, fieldArray) => {\n const formattedRecords = formatAddedSearchItems\n ? formatAddedSearchItems(selectedRecords ?? [])\n : selectedRecords;\n\n if (formattedRecords?.length) {\n for (const record of formattedRecords) {\n if (\n disableExcludeInSearch ||\n !!!fieldArray?.value?.find(\n item => item[formFieldId] === record[formFieldId]\n )\n )\n fieldArray.push(record);\n }\n }\n\n setOpenSideSheet(false);\n },\n [disableExcludeInSearch, formFieldId, formatAddedSearchItems]\n );\n\n const handleAddField = useCallback(\n fields => {\n if (enableSearchSideSheet) {\n setOpenSideSheet(true);\n } else {\n if (defaultAddedItemValues) {\n fields.push(defaultAddedItemValues);\n } else {\n fields.push({});\n }\n }\n },\n [defaultAddedItemValues, enableSearchSideSheet]\n );\n\n return (\n <div>\n <FieldArray name={fieldArrayName}>\n {({ fields }) => {\n return (\n <div>\n <div className={classes.sectionHeader}>\n <div>\n {title && <Typography variant=\"h6\">{title}</Typography>}\n </div>\n <IconButtonWithTooltip\n onClick={() => {\n handleAddField(fields);\n }}\n icon={AddIcon}\n title={t('Add')}\n />\n </div>\n\n <div className={classes.cardsWrapper}>\n {fields?.value?.length > 0 ? (\n fields.map((name, index) => {\n const rowTitle =\n getRowTitle && getRowTitle(fields?.value?.[index]);\n return (\n <AmbientCard fullWidth>\n <div className={classes.cardHeader}>\n <Typography variant=\"h6\">{rowTitle}</Typography>\n\n <IconButtonWithTooltip\n onClick={() => fields.remove(index)}\n icon={DeleteIcon}\n title={t('Delete')}\n />\n </div>\n {rowTitle && !removeTopLayoutUnit && (\n <LayoutUnit unit=\"xxs\" />\n )}\n <div className={classes.fieldsWrapper}>\n {fieldConfig?.map(config => {\n if (Array.isArray(config)) {\n return (\n <Grid container spacing={2}>\n {config?.map(innerConfig => {\n return (\n <Grid\n item\n xs={12}\n sm={12 / config?.length}\n >\n {getField(\n name,\n innerConfig,\n fields?.value?.[index]\n )}\n </Grid>\n );\n })}\n </Grid>\n );\n } else {\n return getField(\n name,\n config,\n fields?.value?.[index]\n );\n }\n })}\n </div>\n </AmbientCard>\n );\n })\n ) : (\n <AmbientCard fullWidth cardHeight=\"155px\">\n <EmptyStateDisplay\n primaryText={t('No records to show')}\n secondaryText={t('Try adding one')}\n />\n </AmbientCard>\n )}\n </div>\n <SearchSideSheet\n open={openSideSheet}\n handleClose={data => {\n handleCloseSideSheet(data, fields);\n }}\n exclude={disableExcludeInSearch ? [] : fields?.value}\n title={searchSideSheetTitle}\n productApiBase={productApiBase}\n searchApi={searchApi}\n colDefs={searchGridColDefs}\n idField={searchFieldId}\n formIdField={formFieldId}\n gridTitle={searchGridTitle}\n handleSearch={handleSearch}\n width={searchSideSheetWidth}\n height={searchSideSheetHeight}\n />\n </div>\n );\n }}\n </FieldArray>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldArrayCard-vX6wT9RN.js","names":["Grid","AutocompleteFinalField","DateRangeField","FormControlLabel","Typography","Grid","SearchSideSheet"],"sources":["../src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts","../src/UI/inputs/fieldArrayCard/SearchSideSheet.jsx","../src/UI/inputs/fieldArrayCard/AutocompleteFinalField.jsx","../src/UI/inputs/fieldArrayCard/DateRangeField.jsx","../src/UI/inputs/fieldArrayCard/FieldArrayCard.jsx"],"sourcesContent":["export enum FieldType {\n Text = 'text',\n Date = 'date',\n DateRange = 'dateRange',\n Time = 'time',\n DateTime = 'dateTime',\n Toggle = 'toggle',\n Checkbox = 'checkbox',\n DropdownMenu = 'dropdownMenu',\n}","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientGridTemplate } from '../../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { SideSheet } from '../../surfaces/SideSheet';\nimport { useAgGridApi } from '../../../utilities/aggrid/AgTable';\n\nconst SearchSideSheet = props => {\n const {\n open,\n handleClose,\n exclude,\n title,\n productApiBase,\n searchApi,\n colDefs = [],\n gridTitle,\n idField,\n formIdField,\n handleSearch,\n width = '800px',\n height='58vh'\n } = props;\n const [selectedData, setSelectedData] = useState([]);\n const { t } = useTranslation();\n const { gridApi, onGridReady, gridColumnApi } = useAgGridApi();\n const paginationPageSize = 20;\n\n // TODO: use queryId or new data grid from stencil\n const searchData = useCallback(\n async data =>\n apiMutate(\n productApiBase,\n searchApi,\n {\n method: 'post',\n },\n data\n ),\n [productApiBase, searchApi]\n );\n\n const onSelectionChanged = useCallback(() => {\n const selectedRows = gridApi?.getSelectedRows() ?? [];\n setSelectedData(selectedRows);\n }, [gridApi]);\n\n const handleCloseSideSheet = useCallback(\n data => {\n handleClose(data);\n setSelectedData([]);\n },\n [handleClose]\n );\n\n const dataSource = useMemo(\n () => ({\n getRows: async ({ request, success, fail }) => {\n if (handleSearch) {\n handleSearch(paginationPageSize, request, success, fail);\n return;\n }\n const filterElements = request?.filterModel\n ? Object.entries(request.filterModel)?.map(([key, value]) => {\n return {\n searchField: key,\n searchOperator: FilterOperators[value?.type],\n searchValue: value?.filter,\n };\n })\n : [];\n\n const orderElements = request?.sortModel\n ? request.sortModel?.map(sortObj => {\n return {\n sortColumn: sortObj?.colId,\n sortDirection: sortObj?.sort?.toUpperCase(),\n };\n })\n : [];\n await searchData({\n data: {\n filterElements: filterElements,\n orderElements: orderElements,\n pagesize: paginationPageSize,\n pageNumber: (request?.startRow ?? 0) / paginationPageSize + 1,\n },\n })\n .then(response => {\n success({\n rowData: response.data?.pageList,\n rowCount: response.data?.total,\n });\n })\n .catch(error => {\n fail();\n });\n\n },\n }),\n [searchData, handleSearch]\n );\n return (\n <SideSheet\n open={open}\n onClose={() => handleCloseSideSheet()}\n title={title}\n width={width}\n buttonLabel={t('Choose')}\n onSubmit={() => {\n handleCloseSideSheet(selectedData);\n }}\n >\n <AmbientGridTemplate\n title={gridTitle}\n rowModelType=\"serverSide\"\n serverSideDatasource={dataSource}\n cacheBlockSize={paginationPageSize}\n serverSideStoreType=\"partial\"\n paginationPageSize={paginationPageSize}\n columnDefs={[\n {\n field: '',\n checkboxSelection: true,\n maxWidth: 60,\n minWidth: 60,\n cellRenderer: params => {\n console.log({\n exclude,\n formIdField,\n idField,\n bool: exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n ),\n });\n if (\n params?.data &&\n !!exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n )\n ) {\n params.node.setSelected(true);\n }\n },\n },\n ...colDefs,\n ]}\n hideGroupTab\n hideColumnTab\n suppressRowClickSelection={true}\n onSelectionChanged={onSelectionChanged}\n rowSelection=\"multiple\"\n api={gridApi}\n gridReady={onGridReady}\n columnApi={gridColumnApi}\n dynamicSizing={true}\n height={height}\n />\n </SideSheet>\n );\n};\n\nexport default SearchSideSheet;\n","import React, { useMemo } from 'react';\nimport { FluentTextFieldAutoComplete } from '../textField/FluentTextFieldAutoComplete';\n\n// this is only to used in FieldArrayCard\nconst AutocompleteFinalField = props => {\n const { value, options, idField = 'id' ,...otherProps } = props;\n\n const currentValue = useMemo(() => {\n if (typeof value === 'object') {\n return value;\n }\n\n return options.find(option => option[idField] === value) || null;\n }, [idField, options, value]);\n\n return (\n <FluentTextFieldAutoComplete\n {...otherProps}\n options={options}\n value={currentValue}\n />\n );\n};\n\nexport default AutocompleteFinalField;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field } from '../../../utilities/form';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { Grid } from '../../Grid';\n\nconst DateRangeField = props => {\n const {\n fieldName,\n startDateProps = {},\n endDateProps = {},\n sameRow = false,\n initialValues,\n } = props;\n const [maxStartDate, setMaxStartDate] = useState();\n const [minEndDate, setMinEndDate] = useState();\n const { t } = useTranslation();\n\n useEffect(() => {\n const currentStartDate = initialValues[startDateProps?.name ?? 'startDate'];\n if (currentStartDate) {\n let minDate = new Date(currentStartDate);\n minDate.setDate(minDate?.getDate() + 1);\n setMinEndDate(minDate);\n } else {\n setMinEndDate(undefined);\n }\n }, [initialValues, startDateProps.name]);\n\n useEffect(() => {\n const currentEndDate = initialValues[endDateProps?.name ?? 'endDate'];\n if (currentEndDate) {\n let maxDate = new Date(currentEndDate);\n maxDate.setDate(maxDate?.getDate() - 1);\n maxDate.setHours(0, 0, 0, 0);\n setMaxStartDate(maxDate);\n } else {\n setMaxStartDate(undefined);\n }\n }, [endDateProps.name, initialValues]);\n\n return (\n <Grid container spacing={sameRow ? 2 : 0}>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...startDateProps}\n parse={value => (value ? value : null)}\n format={value => (value ? value : null)}\n label={startDateProps?.label ?? t('Start Date')}\n name={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n key={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n maxDate={maxStartDate}\n allowNull\n />\n </Grid>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...endDateProps}\n parse={value => value ?? null}\n format={value => value ?? null}\n label={endDateProps?.label ?? t('End Date')}\n name={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n key={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n minDate={minEndDate}\n allowNull\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default DateRangeField;\n","import { AddIcon, DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport React, { useCallback, useState } from 'react';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { useTranslation } from 'react-i18next';\nimport SearchSideSheet from './SearchSideSheet';\nimport AutocompleteFinalField from './AutocompleteFinalField';\nimport DateRangeField from './DateRangeField';\nimport { FieldType } from './fieldArrayCardEnum';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { DateTimeField } from '../datetimes/DateTimeField';\nimport { EmptyStateDisplay } from '../../dataDisplay/EmptyStateDisplay';\nimport { Field } from '../../../utilities/form';\nimport { FluentCheckbox } from '../checkbox/FluentCheckbox';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { FluentTimePicker } from '../pickers/FluentTimePicker';\nimport { FluentToggle } from '../toggle/FluentToggle';\nimport { FormControlLabel } from '../../utilityDisplay/FormControlLabel';\nimport { Grid } from '../../Grid';\nimport { IconButtonWithTooltip } from '../buttons/IconButtonWithToolTip';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { Typography } from '../../dataDisplay/typography/Typography';\n\nconst useStyles = makeStyles(theme => ({\n toggleWrapper: {\n marginLeft: theme.spacing(-0.1),\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n checkboxField: {\n marginLeft: theme.spacing(-1.1),\n },\n sectionHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n fieldsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n },\n cardHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const FieldArrayCard = props => {\n const {\n title = ' ',\n fieldArrayName,\n getRowTitle,\n fieldConfig,\n removeTopLayoutUnit = false,\n defaultAddedItemValues,\n //search sidesheet props\n enableSearchSideSheet,\n searchSideSheetTitle,\n searchFieldId = 'id',\n formFieldId = 'id',\n formatAddedSearchItems,\n productApiBase,\n searchApi,\n searchGridColDefs,\n searchGridTitle,\n handleSearch,\n disableExcludeInSearch = false,\n searchSideSheetWidth,\n searchSideSheetHeight,\n } = props;\n const classes = useStyles();\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const { t } = useTranslation();\n\n const getField = useCallback(\n (finalFieldName, config, fieldObj) => {\n const { fieldName, fieldType, fieldLabel, componentProps } = config;\n\n let fieldComponent = null;\n\n switch (fieldType) {\n case FieldType.DropdownMenu:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={AutocompleteFinalField}\n label={fieldLabel}\n />\n );\n break;\n case FieldType.Date:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentDatePicker}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.DateRange:\n fieldComponent = (\n <DateRangeField\n {...componentProps}\n fieldName={finalFieldName}\n initialValues={fieldObj}\n />\n );\n break;\n case FieldType.Time:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTimePicker}\n label={fieldLabel}\n size=\"small\"\n />\n );\n break;\n case FieldType.DateTime:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={DateTimeField}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.Toggle:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentToggle}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.toggleWrapper}\n />\n );\n break;\n case FieldType.Checkbox:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentCheckbox}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.checkboxField}\n />\n );\n break;\n default:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTextField}\n label={fieldLabel}\n />\n );\n break;\n }\n\n return fieldComponent;\n },\n [classes.checkboxField, classes.toggleWrapper]\n );\n\n const handleCloseSideSheet = useCallback(\n (selectedRecords, fieldArray) => {\n const formattedRecords = formatAddedSearchItems\n ? formatAddedSearchItems(selectedRecords ?? [])\n : selectedRecords;\n\n if (formattedRecords?.length) {\n for (const record of formattedRecords) {\n if (\n disableExcludeInSearch ||\n !!!fieldArray?.value?.find(\n item => item[formFieldId] === record[formFieldId]\n )\n )\n fieldArray.push(record);\n }\n }\n\n setOpenSideSheet(false);\n },\n [disableExcludeInSearch, formFieldId, formatAddedSearchItems]\n );\n\n const handleAddField = useCallback(\n fields => {\n if (enableSearchSideSheet) {\n setOpenSideSheet(true);\n } else {\n if (defaultAddedItemValues) {\n fields.push(defaultAddedItemValues);\n } else {\n fields.push({});\n }\n }\n },\n [defaultAddedItemValues, enableSearchSideSheet]\n );\n\n return (\n <div>\n <FieldArray name={fieldArrayName}>\n {({ fields }) => {\n return (\n <div>\n <div className={classes.sectionHeader}>\n <div>\n {title && <Typography variant=\"h6\">{title}</Typography>}\n </div>\n <IconButtonWithTooltip\n onClick={() => {\n handleAddField(fields);\n }}\n icon={AddIcon}\n title={t('Add')}\n />\n </div>\n\n <div className={classes.cardsWrapper}>\n {fields?.value?.length > 0 ? (\n fields.map((name, index) => {\n const rowTitle =\n getRowTitle && getRowTitle(fields?.value?.[index]);\n return (\n <AmbientCard fullWidth>\n <div className={classes.cardHeader}>\n <Typography variant=\"h6\">{rowTitle}</Typography>\n\n <IconButtonWithTooltip\n onClick={() => fields.remove(index)}\n icon={DeleteIcon}\n title={t('Delete')}\n />\n </div>\n {rowTitle && !removeTopLayoutUnit && (\n <LayoutUnit unit=\"xxs\" />\n )}\n <div className={classes.fieldsWrapper}>\n {fieldConfig?.map(config => {\n if (Array.isArray(config)) {\n return (\n <Grid container spacing={2}>\n {config?.map(innerConfig => {\n return (\n <Grid\n item\n xs={12}\n sm={12 / config?.length}\n >\n {getField(\n name,\n innerConfig,\n fields?.value?.[index]\n )}\n </Grid>\n );\n })}\n </Grid>\n );\n } else {\n return getField(\n name,\n config,\n fields?.value?.[index]\n );\n }\n })}\n </div>\n </AmbientCard>\n );\n })\n ) : (\n <AmbientCard fullWidth cardHeight=\"155px\">\n <EmptyStateDisplay\n primaryText={t('No records to show')}\n secondaryText={t('Try adding one')}\n />\n </AmbientCard>\n )}\n </div>\n <SearchSideSheet\n open={openSideSheet}\n handleClose={data => {\n handleCloseSideSheet(data, fields);\n }}\n exclude={disableExcludeInSearch ? [] : fields?.value}\n title={searchSideSheetTitle}\n productApiBase={productApiBase}\n searchApi={searchApi}\n colDefs={searchGridColDefs}\n idField={searchFieldId}\n formIdField={formFieldId}\n gridTitle={searchGridTitle}\n handleSearch={handleSearch}\n width={searchSideSheetWidth}\n height={searchSideSheetHeight}\n />\n </div>\n );\n }}\n </FieldArray>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAY,gDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACAF,MAAM,mBAAkB,UAAS;CAC/B,MAAM,EACJ,MACA,aACA,SACA,OACA,gBACA,WACA,UAAU,EAAE,EACZ,WACA,SACA,aACA,cACA,QAAQ,SACR,SAAO,WACL;CACJ,MAAM,CAAC,cAAc,mBAAmB,SAAS,EAAE,CAAC;CACpD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,SAAS,aAAa,kBAAkB,cAAc;CAC9D,MAAM,qBAAqB;CAG3B,MAAM,aAAa,YACjB,OAAM,SACJ,UACE,gBACA,WACA,EACE,QAAQ,QACT,EACD,KACD,EACH,CAAC,gBAAgB,UAAU,CAC5B;CAED,MAAM,qBAAqB,kBAAkB;AAE3C,kBADqB,SAAS,iBAAiB,IAAI,EAAE,CACxB;IAC5B,CAAC,QAAQ,CAAC;CAEb,MAAM,uBAAuB,aAC3B,SAAQ;AACN,cAAY,KAAK;AACjB,kBAAgB,EAAE,CAAC;IAErB,CAAC,YAAY,CACd;CAED,MAAM,aAAa,eACV,EACL,SAAS,OAAO,EAAE,SAAS,SAAS,WAAW;AAC7C,MAAI,cAAc;AAChB,gBAAa,oBAAoB,SAAS,SAAS,KAAK;AACxD;;AAoBF,QAAM,WAAW,EACf,MAAM;GACJ,gBApBmB,SAAS,cAC5B,OAAO,QAAQ,QAAQ,YAAY,EAAE,KAAK,CAAC,KAAK,WAAW;AACzD,WAAO;KACL,aAAa;KACb,gBAAgB,gBAAgB,OAAO;KACvC,aAAa,OAAO;KACrB;KACD,GACF,EAAE;GAaF,eAXkB,SAAS,YAC3B,QAAQ,WAAW,KAAI,YAAW;AAChC,WAAO;KACL,YAAY,SAAS;KACrB,eAAe,SAAS,MAAM,aAAa;KAC5C;KACD,GACF,EAAE;GAKF,UAAU;GACV,aAAa,SAAS,YAAY,KAAK,qBAAqB;GAC7D,EACF,CAAC,CACC,MAAK,aAAY;AAChB,WAAQ;IACN,SAAS,SAAS,MAAM;IACxB,UAAU,SAAS,MAAM;IAC1B,CAAC;IACF,CACD,OAAM,UAAS;AACd,SAAM;IACN;IAGP,GACD,CAAC,YAAY,aAAa,CAC3B;AACD,QACE,oCAAC;EACO;EACN,eAAe,sBAAsB;EAC9B;EACA;EACP,aAAa,EAAE,SAAS;EACxB,gBAAgB;AACd,wBAAqB,aAAa;;IAGpC,oCAAC;EACC,OAAO;EACP,cAAa;EACb,sBAAsB;EACtB,gBAAgB;EAChB,qBAAoB;EACA;EACpB,YAAY,CACV;GACE,OAAO;GACP,mBAAmB;GACnB,UAAU;GACV,UAAU;GACV,eAAc,WAAU;AACtB,YAAQ,IAAI;KACV;KACA;KACA;KACA,MAAM,SAAS,MACb,iBACE,aAAa,iBAAiB,OAAO,OAAO,SAC/C;KACF,CAAC;AACF,QACE,QAAQ,QACR,CAAC,CAAC,SAAS,MACT,iBACE,aAAa,iBAAiB,OAAO,OAAO,SAC/C,CAED,QAAO,KAAK,YAAY,KAAK;;GAGlC,EACD,GAAG,QACJ;EACD;EACA;EACA,2BAA2B;EACP;EACpB,cAAa;EACb,KAAK;EACL,WAAW;EACX,WAAW;EACX,eAAe;EACP;GACR,CACQ;;AAIhB,8BAAe;;;;ACjKf,MAAM,0BAAyB,UAAS;CACtC,MAAM,EAAE,OAAO,SAAS,UAAU,MAAM,GAAG,eAAe;CAE1D,MAAM,eAAe,cAAc;AACjC,MAAI,OAAO,UAAU,SACnB,QAAO;AAGT,SAAO,QAAQ,MAAK,WAAU,OAAO,aAAa,MAAM,IAAI;IAC3D;EAAC;EAAS;EAAS;EAAM,CAAC;AAE7B,QACE,oCAAC;EACC,GAAI;EACK;EACT,OAAO;GACP;;AAIN,qCAAe;;;;AClBf,MAAM,kBAAiB,UAAS;CAC9B,MAAM,EACJ,WACA,iBAAiB,EAAE,EACnB,eAAe,EAAE,EACjB,UAAU,OACV,kBACE;CACJ,MAAM,CAAC,cAAc,mBAAmB,UAAU;CAClD,MAAM,CAAC,YAAY,iBAAiB,UAAU;CAC9C,MAAM,EAAE,MAAM,gBAAgB;AAE9B,iBAAgB;EACd,MAAM,mBAAmB,cAAc,gBAAgB,QAAQ;AAC/D,MAAI,kBAAkB;GACpB,IAAI,UAAU,IAAI,KAAK,iBAAiB;AACxC,WAAQ,QAAQ,SAAS,SAAS,GAAG,EAAE;AACvC,iBAAc,QAAQ;QAEtB,eAAc,OAAU;IAEzB,CAAC,eAAe,eAAe,KAAK,CAAC;AAExC,iBAAgB;EACd,MAAM,iBAAiB,cAAc,cAAc,QAAQ;AAC3D,MAAI,gBAAgB;GAClB,IAAI,UAAU,IAAI,KAAK,eAAe;AACtC,WAAQ,QAAQ,SAAS,SAAS,GAAG,EAAE;AACvC,WAAQ,SAAS,GAAG,GAAG,GAAG,EAAE;AAC5B,mBAAgB,QAAQ;QAExB,iBAAgB,OAAU;IAE3B,CAAC,aAAa,MAAM,cAAc,CAAC;AAEtC,QACE,oCAACA;EAAK;EAAU,SAAS,UAAU,IAAI;IACrC,oCAACA;EAAK;EAAK,IAAI;EAAI,IAAI,UAAU,IAAI;IACnC,oCAAC;EACC,GAAI;EACJ,QAAO,UAAU,QAAQ,QAAQ;EACjC,SAAQ,UAAU,QAAQ,QAAQ;EAClC,OAAO,gBAAgB,SAAS,EAAE,aAAa;EAC/C,MAAM,GAAG,UAAU,GAAG,gBAAgB,QAAQ;EAC9C,KAAK,GAAG,UAAU,GAAG,gBAAgB,QAAQ;EAC7C,WAAW;EACX,MAAK;EACL,SAAS;EACT;GACA,CACG,EACP,oCAACA;EAAK;EAAK,IAAI;EAAI,IAAI,UAAU,IAAI;IACnC,oCAAC;EACC,GAAI;EACJ,QAAO,UAAS,SAAS;EACzB,SAAQ,UAAS,SAAS;EAC1B,OAAO,cAAc,SAAS,EAAE,WAAW;EAC3C,MAAM,GAAG,UAAU,GAAG,cAAc,QAAQ;EAC5C,KAAK,GAAG,UAAU,GAAG,cAAc,QAAQ;EAC3C,WAAW;EACX,MAAK;EACL,SAAS;EACT;GACA,CACG,CACF;;AAIX,6BAAe;;;;ACnDf,MAAM,YAAY,YAAW,WAAU;CACrC,eAAe;EACb,YAAY,MAAM,QAAQ,IAAK;EAC/B,KAAK,MAAM,QAAQ,EAAE;EACrB,WAAW,MAAM,QAAQ,GAAI;EAC9B;CACD,eAAe,EACb,YAAY,MAAM,QAAQ,KAAK,EAChC;CACD,eAAe;EACb,SAAS;EACT,gBAAgB;EAChB,KAAK,MAAM,QAAQ,EAAE;EACrB,YAAY;EACZ,cAAc,MAAM,QAAQ,EAAE;EAC/B;CACD,eAAe;EACb,SAAS;EACT,eAAe;EAChB;CACD,cAAc;EACZ,SAAS;EACT,eAAe;EACf,KAAK,MAAM,QAAQ,EAAE;EACtB;CACD,YAAY;EACV,SAAS;EACT,gBAAgB;EAChB,KAAK,MAAM,QAAQ,EAAE;EACrB,YAAY;EACb;CACF,EAAE;AAEH,MAAa,kBAAiB,UAAS;CACrC,MAAM,EACJ,QAAQ,KACR,gBACA,aACA,aACA,sBAAsB,OACtB,wBAEA,uBACA,sBACA,gBAAgB,MAChB,cAAc,MACd,wBACA,gBACA,WACA,mBACA,iBACA,cACA,yBAAyB,OACzB,sBACA,0BACE;CACJ,MAAM,UAAU,WAAW;CAC3B,MAAM,CAAC,eAAe,oBAAoB,SAAS,MAAM;CACzD,MAAM,EAAE,MAAM,gBAAgB;CAE9B,MAAM,WAAW,aACd,gBAAgB,QAAQ,aAAa;EACpC,MAAM,EAAE,WAAW,WAAW,YAAY,mBAAmB;EAE7D,IAAI,iBAAiB;AAErB,UAAQ,WAAR;GACE,KAAK,UAAU;AACb,qBACE,oCAAC;KACC,GAAI;KACJ,MAAM,GAAG,eAAe,GAAG;KAC3B,WAAWC;KACX,OAAO;MACP;AAEJ;GACF,KAAK,UAAU;AACb,qBACE,oCAAC;KACC,GAAI;KACJ,MAAM,GAAG,eAAe,GAAG;KAC3B,WAAW;KACX,OAAO;KACP,MAAK;KACL;MACA;AAEJ;GACF,KAAK,UAAU;AACb,qBACE,oCAACC;KACC,GAAI;KACJ,WAAW;KACX,eAAe;MACf;AAEJ;GACF,KAAK,UAAU;AACb,qBACE,oCAAC;KACC,GAAI;KACJ,MAAM,GAAG,eAAe,GAAG;KAC3B,WAAW;KACX,OAAO;KACP,MAAK;MACL;AAEJ;GACF,KAAK,UAAU;AACb,qBACE,oCAAC;KACC,GAAI;KACJ,MAAM,GAAG,eAAe,GAAG;KAC3B,WAAW;KACX,OAAO;KACP,MAAK;KACL;MACA;AAEJ;GACF,KAAK,UAAU;AACb,qBACE,oCAACC;KACC,SACE,oCAAC;MACC,gBAAgB;MAChB,GAAI;MACJ,MAAM,GAAG,eAAe,GAAG;MAC3B,WAAW;MACX,MAAK;OACL;KAEJ,OAAO;KACP,WAAW,QAAQ;MACnB;AAEJ;GACF,KAAK,UAAU;AACb,qBACE,oCAACA;KACC,SACE,oCAAC;MACC,gBAAgB;MAChB,GAAI;MACJ,MAAM,GAAG,eAAe,GAAG;MAC3B,WAAW;MACX,MAAK;OACL;KAEJ,OAAO;KACP,WAAW,QAAQ;MACnB;AAEJ;GACF;AACE,qBACE,oCAAC;KACC,GAAI;KACJ,MAAM,GAAG,eAAe,GAAG;KAC3B,WAAW;KACX,OAAO;MACP;AAEJ;;AAGJ,SAAO;IAET,CAAC,QAAQ,eAAe,QAAQ,cAAc,CAC/C;CAED,MAAM,uBAAuB,aAC1B,iBAAiB,eAAe;EAC/B,MAAM,mBAAmB,yBACrB,uBAAuB,mBAAmB,EAAE,CAAC,GAC7C;AAEJ,MAAI,kBAAkB,QACpB;QAAK,MAAM,UAAU,iBACnB,KACE,0BACA,CAAC,CAAC,CAAC,YAAY,OAAO,MACpB,SAAQ,KAAK,iBAAiB,OAAO,aACtC,CAED,YAAW,KAAK,OAAO;;AAI7B,mBAAiB,MAAM;IAEzB;EAAC;EAAwB;EAAa;EAAuB,CAC9D;CAED,MAAM,iBAAiB,aACrB,WAAU;AACR,MAAI,sBACF,kBAAiB,KAAK;WAElB,uBACF,QAAO,KAAK,uBAAuB;MAEnC,QAAO,KAAK,EAAE,CAAC;IAIrB,CAAC,wBAAwB,sBAAsB,CAChD;AAED,QACE,oCAAC,aACC,oCAAC,cAAW,MAAM,mBACd,EAAE,aAAa;AACf,SACE,oCAAC,aACC,oCAAC,SAAI,WAAW,QAAQ,iBACtB,oCAAC,aACE,SAAS,oCAACC,gBAAW,SAAQ,QAAM,MAAmB,CACnD,EACN,oCAAC;GACC,eAAe;AACb,mBAAe,OAAO;;GAExB,MAAM;GACN,OAAO,EAAE,MAAM;IACf,CACE,EAEN,oCAAC,SAAI,WAAW,QAAQ,gBACrB,QAAQ,OAAO,SAAS,IACvB,OAAO,KAAK,MAAM,UAAU;GAC1B,MAAM,WACJ,eAAe,YAAY,QAAQ,QAAQ,OAAO;AACpD,UACE,oCAAC,eAAY,mBACX,oCAAC,SAAI,WAAW,QAAQ,cACtB,oCAACA,gBAAW,SAAQ,QAAM,SAAsB,EAEhD,oCAAC;IACC,eAAe,OAAO,OAAO,MAAM;IACnC,MAAM;IACN,OAAO,EAAE,SAAS;KAClB,CACE,EACL,YAAY,CAAC,uBACZ,oCAAC,cAAW,MAAK,QAAQ,EAE3B,oCAAC,SAAI,WAAW,QAAQ,iBACrB,aAAa,KAAI,WAAU;AAC1B,QAAI,MAAM,QAAQ,OAAO,CACvB,QACE,oCAACC;KAAK;KAAU,SAAS;OACtB,QAAQ,KAAI,gBAAe;AAC1B,YACE,oCAACA;MACC;MACA,IAAI;MACJ,IAAI,KAAK,QAAQ;QAEhB,SACC,MACA,aACA,QAAQ,QAAQ,OACjB,CACI;MAET,CACG;QAGT,QAAO,SACL,MACA,QACA,QAAQ,QAAQ,OACjB;KAEH,CACE,CACM;IAEhB,GAEF,oCAAC;GAAY;GAAU,YAAW;KAChC,oCAAC;GACC,aAAa,EAAE,qBAAqB;GACpC,eAAe,EAAE,iBAAiB;IAClC,CACU,CAEZ,EACN,oCAACC;GACC,MAAM;GACN,cAAa,SAAQ;AACnB,yBAAqB,MAAM,OAAO;;GAEpC,SAAS,yBAAyB,EAAE,GAAG,QAAQ;GAC/C,OAAO;GACS;GACL;GACX,SAAS;GACT,SAAS;GACT,aAAa;GACb,WAAW;GACG;GACd,OAAO;GACP,QAAQ;IACR,CACE;GAGC,CACT"}
@@ -1,5 +1,5 @@
1
1
  import { t as UnityFluentIcon } from "./UnityFluentIcon-DrASIcTF.js";
2
- import { S as getIconFromName } from "./TreeUtilities-jEhtZNg5.js";
2
+ import { S as getIconFromName } from "./TreeUtilities-Iv9nOf-6.js";
3
3
  import { t as StatusChip } from "./StatusChip-DZAN88VU.js";
4
4
  import React from "react";
5
5
  import { Box, TableCell, Tooltip, makeStyles, useTheme } from "@material-ui/core";
@@ -78,4 +78,4 @@ var FluentCell_default = FluentCell;
78
78
 
79
79
  //#endregion
80
80
  export { FluentCell_default as t };
81
- //# sourceMappingURL=FluentCell-CuJJAwCD.js.map
81
+ //# sourceMappingURL=FluentCell-BxgROwUy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FluentCell-CuJJAwCD.js","names":[],"sources":["../src/UI/dataDisplay/FluentDataTable/FluentCell/index.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Box, makeStyles, TableCell, Theme, useTheme, Tooltip } from '@material-ui/core';\nimport { format } from 'date-fns';\nimport { UnityFluentIcon } from '../../../../utilities/iconLibrary/UnityFluentIcon';\nimport { getIconFromName } from '../../../../utilities/tree/TreeUtilities';\nimport { StatusChip } from '../../status/StatusChip';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles<Theme, FluentCellProps>((theme) => ({\n labelText: {\n color: theme.palette.text.primary,\n fontSize: '12px'\n },\n tableCell: {\n fontSize: '12px',\n letterSpacing: '0.4px',\n fontWeight: (props) => (props?.bold ? 500 : 400)\n },\n unityIconWrapper: {\n gap: theme.spacing(1)\n }\n}));\n\n/* #region CellUnityIcon */\n\ninterface CellUnityIconProps extends FluentCellProps {\n icon: string;\n size: string;\n color: string;\n align?: 'inherit' | 'left' | 'center' | 'right' | 'justify';\n className?: string;\n}\n\nconst CellUnityIcon = (props: Partial<CellUnityIconProps>) => {\n const theme = useTheme();\n const {\n icon = '',\n size = 'large',\n color = theme.palette.primary.main,\n children\n } = props;\n const classes = useStyles(props as FluentCellProps);\n\n return (\n <FluentCell {...props}>\n { /* @ts-ignore */ }\n <Box display='flex' alignItems='center' className={classes.unityIconWrapper}>\n <UnityFluentIcon\n size={size}\n color={color}\n icon={getIconFromName(icon)}\n />\n {children && children}\n </Box>\n </FluentCell>\n );\n};\n\n/* #endregion */\n\n/* #region CellIcon */\n\ninterface CellImageProps extends FluentCellProps {\n src: string;\n alt: string;\n title: string;\n style?: object;\n children: any;\n}\n\nconst CellImage = (props: CellImageProps) => (\n <FluentCell {...props}>\n <img src={props?.src} alt={props?.alt} style={props?.style} />\n {props?.title}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellIcon */\n\ninterface CellIconProps extends FluentCellProps {\n icon: any;\n label: string;\n style?: object;\n}\n\nconst CellIcon = (props: Partial<CellIconProps>) => (\n <FluentCell {...props}>\n <>\n {props?.label ? (\n // @ts-ignore\n <Box display='flex' alignItems='center' style={{ gap: '8px' }}>\n { /* @ts-ignore */ }\n <Box>{props?.icon}</Box>\n {props?.label}\n </Box>\n ) : (\n props?.icon\n )}\n {props?.children}\n </>\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellNumber */\n\ninterface CellNumberProps extends FluentCellProps {\n decimals?: number | string;\n children: any;\n}\n\nconst CellNumber = (props: CellNumberProps) => (\n <FluentCell {...props}>\n {Number(props?.children).toFixed(Number(props?.decimals ?? 2))}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellDate */\n\ninterface CellDateProps extends FluentCellProps {\n format?: string;\n children: any;\n}\n\nconst CellDate = (props: CellDateProps) => (\n <FluentCell {...props}>\n {format(new Date(props?.children), props?.format || 'MM/dd/yyyy')}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellCurrency */\n\ninterface CellCurrencyProps extends FluentCellProps {\n currencySymbol?: string;\n children: any;\n}\n\nconst CellCurrency = (props: CellCurrencyProps) => (\n <FluentCell {...props}>\n {props?.currencySymbol || '$'}\n {props?.children}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellText */\n\ninterface CellTextProps extends FluentCellProps {\n children: any;\n}\n\nconst CellText = (props: CellTextProps) => (\n <FluentCell {...props}>{props.children}</FluentCell>\n);\n\n/* #endregion */\n\n/* #region Chip */\n\ninterface CellChipProps extends FluentCellProps {\n status?: string;\n size?: string;\n children: any;\n}\n\nconst CellChip = (props: CellChipProps) => (\n <FluentCell {...props}>\n {/* @ts-ignore */}\n <StatusChip\n status={props?.status || 'success'}\n label={props?.children}\n />\n </FluentCell>\n);\n/* #endregion */\n\ninterface FluentCellProps {\n scope?: string;\n bold?: boolean;\n style?: object;\n align?: 'inherit' | 'left' | 'center' | 'right' | 'justify';\n children?: ReactNode;\n className?: string;\n colSpan?: number;\n tooltip?: string;\n}\n\nconst FluentCell = (props: FluentCellProps) => {\n const classes = useStyles(props);\n const { scope = 'row', style, align, colSpan, className, tooltip, children } = props;\n\n const cellContent = children;\n\n return (\n <TableCell\n scope={scope}\n className={clsx(classes.tableCell, className)}\n style={style}\n align={align}\n colSpan={colSpan}\n >\n {tooltip ? (\n <Tooltip title={tooltip || ''} children={<span>{cellContent || ''}</span>} />\n ) : (\n cellContent\n )}\n </TableCell>\n );\n};\n\nFluentCell.UnityIcon = CellUnityIcon;\nFluentCell.Icon = CellIcon;\nFluentCell.Number = CellNumber;\nFluentCell.Text = CellText;\nFluentCell.Currency = CellCurrency;\nFluentCell.Date = CellDate;\nFluentCell.Chip = CellChip;\nFluentCell.Image = CellImage;\n\nexport default FluentCell;\n"],"mappings":";;;;;;;;;AAQA,MAAM,YAAY,YAAoC,WAAW;CAC/D,WAAW;EACT,OAAO,MAAM,QAAQ,KAAK;EAC1B,UAAU;EACX;CACD,WAAW;EACT,UAAU;EACV,eAAe;EACf,aAAa,UAAW,OAAO,OAAO,MAAM;EAC7C;CACD,kBAAkB,EAChB,KAAK,MAAM,QAAQ,EAAE,EACtB;CACF,EAAE;AAYH,MAAM,iBAAiB,UAAuC;CAC5D,MAAM,QAAQ,UAAU;CACxB,MAAM,EACJ,OAAO,IACP,OAAO,SACP,QAAQ,MAAM,QAAQ,QAAQ,MAC9B,aACE;CACJ,MAAM,UAAU,UAAU,MAAyB;AAEnD,QACE,oCAAC,YAAe,OAEd,oCAAC;EAAI,SAAQ;EAAO,YAAW;EAAS,WAAW,QAAQ;IACzD,oCAAC;EACO;EACC;EACP,MAAM,gBAAgB,KAAK;GAC3B,EACD,YAAY,SACT,CACK;;AAgBjB,MAAM,aAAa,UACjB,oCAAC,YAAe,OACd,oCAAC;CAAI,KAAK,OAAO;CAAK,KAAK,OAAO;CAAK,OAAO,OAAO;EAAS,EAC7D,OAAO,MACG;AAaf,MAAM,YAAY,UAChB,oCAAC,YAAe,OACd,0DACG,OAAO,QAEN,oCAAC;CAAI,SAAQ;CAAO,YAAW;CAAS,OAAO,EAAE,KAAK,OAAO;GAE3D,oCAAC,WAAK,OAAO,KAAW,EACvB,OAAO,MACJ,GAEN,OAAO,MAER,OAAO,SACP,CACQ;AAYf,MAAM,cAAc,UAClB,oCAAC,YAAe,OACb,OAAO,OAAO,SAAS,CAAC,QAAQ,OAAO,OAAO,YAAY,EAAE,CAAC,CACnD;AAYf,MAAM,YAAY,UAChB,oCAAC,YAAe,OACb,OAAO,IAAI,KAAK,OAAO,SAAS,EAAE,OAAO,UAAU,aAAa,CACtD;AAYf,MAAM,gBAAgB,UACpB,oCAAC,YAAe,OACb,OAAO,kBAAkB,KACzB,OAAO,SACG;AAWf,MAAM,YAAY,UAChB,oCAAC,YAAe,OAAQ,MAAM,SAAsB;AAatD,MAAM,YAAY,UAChB,oCAAC,YAAe,OAEd,oCAAC;CACC,QAAQ,OAAO,UAAU;CACzB,OAAO,OAAO;EACd,CACS;AAef,MAAM,cAAc,UAA2B;CAC7C,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAS,WAAW,SAAS,aAAa;CAE/E,MAAM,cAAc;AAEpB,QACE,oCAAC;EACQ;EACP,WAAW,KAAK,QAAQ,WAAW,UAAU;EACtC;EACA;EACE;IAER,UACC,oCAAC;EAAQ,OAAO,WAAW;EAAI,UAAU,oCAAC,cAAM,eAAe,GAAU;GAAI,GAE7E,YAEQ;;AAIhB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AAEnB,yBAAe"}
1
+ {"version":3,"file":"FluentCell-BxgROwUy.js","names":[],"sources":["../src/UI/dataDisplay/FluentDataTable/FluentCell/index.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Box, makeStyles, TableCell, Theme, useTheme, Tooltip } from '@material-ui/core';\nimport { format } from 'date-fns';\nimport { UnityFluentIcon } from '../../../../utilities/iconLibrary/UnityFluentIcon';\nimport { getIconFromName } from '../../../../utilities/tree/TreeUtilities';\nimport { StatusChip } from '../../status/StatusChip';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles<Theme, FluentCellProps>((theme) => ({\n labelText: {\n color: theme.palette.text.primary,\n fontSize: '12px'\n },\n tableCell: {\n fontSize: '12px',\n letterSpacing: '0.4px',\n fontWeight: (props) => (props?.bold ? 500 : 400)\n },\n unityIconWrapper: {\n gap: theme.spacing(1)\n }\n}));\n\n/* #region CellUnityIcon */\n\ninterface CellUnityIconProps extends FluentCellProps {\n icon: string;\n size: string;\n color: string;\n align?: 'inherit' | 'left' | 'center' | 'right' | 'justify';\n className?: string;\n}\n\nconst CellUnityIcon = (props: Partial<CellUnityIconProps>) => {\n const theme = useTheme();\n const {\n icon = '',\n size = 'large',\n color = theme.palette.primary.main,\n children\n } = props;\n const classes = useStyles(props as FluentCellProps);\n\n return (\n <FluentCell {...props}>\n { /* @ts-ignore */ }\n <Box display='flex' alignItems='center' className={classes.unityIconWrapper}>\n <UnityFluentIcon\n size={size}\n color={color}\n icon={getIconFromName(icon)}\n />\n {children && children}\n </Box>\n </FluentCell>\n );\n};\n\n/* #endregion */\n\n/* #region CellIcon */\n\ninterface CellImageProps extends FluentCellProps {\n src: string;\n alt: string;\n title: string;\n style?: object;\n children: any;\n}\n\nconst CellImage = (props: CellImageProps) => (\n <FluentCell {...props}>\n <img src={props?.src} alt={props?.alt} style={props?.style} />\n {props?.title}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellIcon */\n\ninterface CellIconProps extends FluentCellProps {\n icon: any;\n label: string;\n style?: object;\n}\n\nconst CellIcon = (props: Partial<CellIconProps>) => (\n <FluentCell {...props}>\n <>\n {props?.label ? (\n // @ts-ignore\n <Box display='flex' alignItems='center' style={{ gap: '8px' }}>\n { /* @ts-ignore */ }\n <Box>{props?.icon}</Box>\n {props?.label}\n </Box>\n ) : (\n props?.icon\n )}\n {props?.children}\n </>\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellNumber */\n\ninterface CellNumberProps extends FluentCellProps {\n decimals?: number | string;\n children: any;\n}\n\nconst CellNumber = (props: CellNumberProps) => (\n <FluentCell {...props}>\n {Number(props?.children).toFixed(Number(props?.decimals ?? 2))}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellDate */\n\ninterface CellDateProps extends FluentCellProps {\n format?: string;\n children: any;\n}\n\nconst CellDate = (props: CellDateProps) => (\n <FluentCell {...props}>\n {format(new Date(props?.children), props?.format || 'MM/dd/yyyy')}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellCurrency */\n\ninterface CellCurrencyProps extends FluentCellProps {\n currencySymbol?: string;\n children: any;\n}\n\nconst CellCurrency = (props: CellCurrencyProps) => (\n <FluentCell {...props}>\n {props?.currencySymbol || '$'}\n {props?.children}\n </FluentCell>\n);\n\n/* #endregion */\n\n/* #region CellText */\n\ninterface CellTextProps extends FluentCellProps {\n children: any;\n}\n\nconst CellText = (props: CellTextProps) => (\n <FluentCell {...props}>{props.children}</FluentCell>\n);\n\n/* #endregion */\n\n/* #region Chip */\n\ninterface CellChipProps extends FluentCellProps {\n status?: string;\n size?: string;\n children: any;\n}\n\nconst CellChip = (props: CellChipProps) => (\n <FluentCell {...props}>\n {/* @ts-ignore */}\n <StatusChip\n status={props?.status || 'success'}\n label={props?.children}\n />\n </FluentCell>\n);\n/* #endregion */\n\ninterface FluentCellProps {\n scope?: string;\n bold?: boolean;\n style?: object;\n align?: 'inherit' | 'left' | 'center' | 'right' | 'justify';\n children?: ReactNode;\n className?: string;\n colSpan?: number;\n tooltip?: string;\n}\n\nconst FluentCell = (props: FluentCellProps) => {\n const classes = useStyles(props);\n const { scope = 'row', style, align, colSpan, className, tooltip, children } = props;\n\n const cellContent = children;\n\n return (\n <TableCell\n scope={scope}\n className={clsx(classes.tableCell, className)}\n style={style}\n align={align}\n colSpan={colSpan}\n >\n {tooltip ? (\n <Tooltip title={tooltip || ''} children={<span>{cellContent || ''}</span>} />\n ) : (\n cellContent\n )}\n </TableCell>\n );\n};\n\nFluentCell.UnityIcon = CellUnityIcon;\nFluentCell.Icon = CellIcon;\nFluentCell.Number = CellNumber;\nFluentCell.Text = CellText;\nFluentCell.Currency = CellCurrency;\nFluentCell.Date = CellDate;\nFluentCell.Chip = CellChip;\nFluentCell.Image = CellImage;\n\nexport default FluentCell;\n"],"mappings":";;;;;;;;;AAQA,MAAM,YAAY,YAAoC,WAAW;CAC/D,WAAW;EACT,OAAO,MAAM,QAAQ,KAAK;EAC1B,UAAU;EACX;CACD,WAAW;EACT,UAAU;EACV,eAAe;EACf,aAAa,UAAW,OAAO,OAAO,MAAM;EAC7C;CACD,kBAAkB,EAChB,KAAK,MAAM,QAAQ,EAAE,EACtB;CACF,EAAE;AAYH,MAAM,iBAAiB,UAAuC;CAC5D,MAAM,QAAQ,UAAU;CACxB,MAAM,EACJ,OAAO,IACP,OAAO,SACP,QAAQ,MAAM,QAAQ,QAAQ,MAC9B,aACE;CACJ,MAAM,UAAU,UAAU,MAAyB;AAEnD,QACE,oCAAC,YAAe,OAEd,oCAAC;EAAI,SAAQ;EAAO,YAAW;EAAS,WAAW,QAAQ;IACzD,oCAAC;EACO;EACC;EACP,MAAM,gBAAgB,KAAK;GAC3B,EACD,YAAY,SACT,CACK;;AAgBjB,MAAM,aAAa,UACjB,oCAAC,YAAe,OACd,oCAAC;CAAI,KAAK,OAAO;CAAK,KAAK,OAAO;CAAK,OAAO,OAAO;EAAS,EAC7D,OAAO,MACG;AAaf,MAAM,YAAY,UAChB,oCAAC,YAAe,OACd,0DACG,OAAO,QAEN,oCAAC;CAAI,SAAQ;CAAO,YAAW;CAAS,OAAO,EAAE,KAAK,OAAO;GAE3D,oCAAC,WAAK,OAAO,KAAW,EACvB,OAAO,MACJ,GAEN,OAAO,MAER,OAAO,SACP,CACQ;AAYf,MAAM,cAAc,UAClB,oCAAC,YAAe,OACb,OAAO,OAAO,SAAS,CAAC,QAAQ,OAAO,OAAO,YAAY,EAAE,CAAC,CACnD;AAYf,MAAM,YAAY,UAChB,oCAAC,YAAe,OACb,OAAO,IAAI,KAAK,OAAO,SAAS,EAAE,OAAO,UAAU,aAAa,CACtD;AAYf,MAAM,gBAAgB,UACpB,oCAAC,YAAe,OACb,OAAO,kBAAkB,KACzB,OAAO,SACG;AAWf,MAAM,YAAY,UAChB,oCAAC,YAAe,OAAQ,MAAM,SAAsB;AAatD,MAAM,YAAY,UAChB,oCAAC,YAAe,OAEd,oCAAC;CACC,QAAQ,OAAO,UAAU;CACzB,OAAO,OAAO;EACd,CACS;AAef,MAAM,cAAc,UAA2B;CAC7C,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAS,WAAW,SAAS,aAAa;CAE/E,MAAM,cAAc;AAEpB,QACE,oCAAC;EACQ;EACP,WAAW,KAAK,QAAQ,WAAW,UAAU;EACtC;EACA;EACE;IAER,UACC,oCAAC;EAAQ,OAAO,WAAW;EAAI,UAAU,oCAAC,cAAM,eAAe,GAAU;GAAI,GAE7E,YAEQ;;AAIhB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AAEnB,yBAAe"}
@@ -1,5 +1,5 @@
1
1
  import { t as FluentBody_default } from "./FluentBody-C_2uP08Y.js";
2
- import { t as FluentCell_default } from "./FluentCell-CuJJAwCD.js";
2
+ import { t as FluentCell_default } from "./FluentCell-BxgROwUy.js";
3
3
  import { t as FluentHead_default } from "./FluentHead-B9oIMLR1.js";
4
4
  import { t as FluentRow_default } from "./FluentRow-BDiPXAgx.js";
5
5
  import React from "react";
@@ -27,4 +27,4 @@ FluentDataTable.FluentRow = FluentRow_default;
27
27
 
28
28
  //#endregion
29
29
  export { FluentDataTable as t };
30
- //# sourceMappingURL=FluentDataTable-CYNp3-qT.js.map
30
+ //# sourceMappingURL=FluentDataTable-BLAHPWUk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FluentDataTable-CYNp3-qT.js","names":["FluentHead","FluentBody","FluentCell","FluentRow"],"sources":["../src/UI/dataDisplay/FluentDataTable/FluentDataTable.tsx"],"sourcesContent":["import { Size, Table, TableContainer, makeStyles } from '@material-ui/core';\nimport React, { ReactElement, ReactNode } from 'react';\nimport FluentBody from './FluentBody';\nimport FluentCell from './FluentCell';\nimport FluentHead from './FluentHead';\nimport FluentRow from './FluentRow';\n\ninterface FluentDataTableProps {\n style?: object;\n size?: Size | undefined;\n children: ReactNode;\n stickyHeader?: boolean;\n containerMaxHeight?: string | number;\n}\n\ntype FluentDataTableComponent = React.FC<FluentDataTableProps> & {\n FluentHead: typeof FluentHead;\n FluentBody: typeof FluentBody;\n FluentCell: typeof FluentCell;\n FluentRow: typeof FluentRow;\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxHeight: (props: any) => props?.containerMaxHeight\n }\n}));\n\nexport const FluentDataTable = ((props: FluentDataTableProps): ReactElement => {\n const { size = 'small', style, stickyHeader = false, containerMaxHeight } = props;\n const classes = useStyles({ containerMaxHeight });\n return (\n <TableContainer\n style={{ maxHeight: containerMaxHeight, height: '100%'}}\n >\n <Table\n aria-label='simple table'\n size={size}\n style={style}\n stickyHeader={stickyHeader}\n >\n {props?.children}\n </Table>\n </TableContainer>\n );\n}) as FluentDataTableComponent;\n\nFluentDataTable.FluentHead = FluentHead;\nFluentDataTable.FluentBody = FluentBody;\nFluentDataTable.FluentCell = FluentCell;\nFluentDataTable.FluentRow = FluentRow;\n"],"mappings":";;;;;;;;AAsBA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM,EACJ,YAAY,UAAe,OAAO,oBACnC,EACF,EAAE;AAEH,MAAa,oBAAoB,UAA8C;CAC7E,MAAM,EAAE,OAAO,SAAS,OAAO,eAAe,OAAO,uBAAuB;AAC5D,WAAU,EAAE,oBAAoB,CAAC;AACjD,QACE,oCAAC,kBACC,OAAO;EAAE,WAAW;EAAoB,QAAQ;EAAO,IAEvD,oCAAC;EACC,cAAW;EACL;EACC;EACO;IAEb,OAAO,SACF,CACO;;AAIrB,gBAAgB,aAAaA;AAC7B,gBAAgB,aAAaC;AAC7B,gBAAgB,aAAaC;AAC7B,gBAAgB,YAAYC"}
1
+ {"version":3,"file":"FluentDataTable-BLAHPWUk.js","names":["FluentHead","FluentBody","FluentCell","FluentRow"],"sources":["../src/UI/dataDisplay/FluentDataTable/FluentDataTable.tsx"],"sourcesContent":["import { Size, Table, TableContainer, makeStyles } from '@material-ui/core';\nimport React, { ReactElement, ReactNode } from 'react';\nimport FluentBody from './FluentBody';\nimport FluentCell from './FluentCell';\nimport FluentHead from './FluentHead';\nimport FluentRow from './FluentRow';\n\ninterface FluentDataTableProps {\n style?: object;\n size?: Size | undefined;\n children: ReactNode;\n stickyHeader?: boolean;\n containerMaxHeight?: string | number;\n}\n\ntype FluentDataTableComponent = React.FC<FluentDataTableProps> & {\n FluentHead: typeof FluentHead;\n FluentBody: typeof FluentBody;\n FluentCell: typeof FluentCell;\n FluentRow: typeof FluentRow;\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxHeight: (props: any) => props?.containerMaxHeight\n }\n}));\n\nexport const FluentDataTable = ((props: FluentDataTableProps): ReactElement => {\n const { size = 'small', style, stickyHeader = false, containerMaxHeight } = props;\n const classes = useStyles({ containerMaxHeight });\n return (\n <TableContainer\n style={{ maxHeight: containerMaxHeight, height: '100%'}}\n >\n <Table\n aria-label='simple table'\n size={size}\n style={style}\n stickyHeader={stickyHeader}\n >\n {props?.children}\n </Table>\n </TableContainer>\n );\n}) as FluentDataTableComponent;\n\nFluentDataTable.FluentHead = FluentHead;\nFluentDataTable.FluentBody = FluentBody;\nFluentDataTable.FluentCell = FluentCell;\nFluentDataTable.FluentRow = FluentRow;\n"],"mappings":";;;;;;;;AAsBA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM,EACJ,YAAY,UAAe,OAAO,oBACnC,EACF,EAAE;AAEH,MAAa,oBAAoB,UAA8C;CAC7E,MAAM,EAAE,OAAO,SAAS,OAAO,eAAe,OAAO,uBAAuB;AAC5D,WAAU,EAAE,oBAAoB,CAAC;AACjD,QACE,oCAAC,kBACC,OAAO;EAAE,WAAW;EAAoB,QAAQ;EAAO,IAEvD,oCAAC;EACC,cAAW;EACL;EACC;EACO;IAEb,OAAO,SACF,CACO;;AAIrB,gBAAgB,aAAaA;AAC7B,gBAAgB,aAAaC;AAC7B,gBAAgB,aAAaC;AAC7B,gBAAgB,YAAYC"}
@@ -1,4 +1,4 @@
1
- import { t as apiMutate } from "./useAxiosMutate-DeqKSi5z.js";
1
+ import { t as apiMutate } from "./useAxiosMutate-CChDJc0L.js";
2
2
  import { t as Box$1 } from "./Box-Colr5GEl.js";
3
3
  import { t as FluentSelectMenu } from "./FluentSelectMenu-Cx274cVa.js";
4
4
  import React, { Children, forwardRef, useCallback, useEffect, useRef, useState } from "react";
@@ -417,4 +417,4 @@ const FluentSimpleSelect = forwardRef(FluentSimpleSelectComponent);
417
417
 
418
418
  //#endregion
419
419
  export { FluentSelectGroupMenu as i, FluentScrollLoadAutocompleteMenu as n, SelectGroupMenu as r, FluentSimpleSelect as t };
420
- //# sourceMappingURL=FluentSimpleSelect-BfoxBQj4.js.map
420
+ //# sourceMappingURL=FluentSimpleSelect-BnXJTE2z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FluentSimpleSelect-BfoxBQj4.js","names":["useStyles","useStyles","useStyles","makeStyles","Box"],"sources":["../src/UI/inputs/menus/FluentSelectDirectoryMenu.jsx","../src/UI/inputs/menus/FluentSelectGroupMenu.jsx","../src/UI/inputs/menus/FluentScrollLoadAutocompleteMenu.jsx","../src/UI/inputs/menus/FluentSimpleSelect.jsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const FluentSelectGroupMenu = ({\n data,\n placeholder,\n id,\n handleChange\n}) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const firstLetter = option.label[0].toUpperCase()\n return {\n firstLetter: /[0-9]/.test(firstLetter) ? '0-9' : firstLetter,\n ...option\n }\n })\n\n return (\n <Autocomplete\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort(\n (a, b) => -b.firstLetter.localeCompare(a.firstLetter)\n )}\n groupBy={(option) => option.firstLetter}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const SelectGroupMenu = ({ data, placeholder, id, handleChange, className }) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const grouping = option.category\n return {\n grouping,\n ...option\n }\n })\n\n return (\n <Autocomplete\n className={className}\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort((a, b) => -b.grouping.localeCompare(a.grouping))}\n groupBy={(option) => option.grouping}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","import React, {\n useState,\n useCallback,\n useEffect,\n forwardRef,\n useRef,\n Children,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CircularProgress } from '@material-ui/core';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FluentSelectMenu } from './FluentSelectMenu';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Box } from '../../Box';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme) => ({\n listbox: {\n position: 'relative',\n maxHeight: 300,\n overflow: 'auto',\n },\n listboxHidden: {\n overflow: 'hidden',\n },\n loadingItem: {\n textAlign: 'center',\n padding: theme.spacing(1),\n },\n overlay: {\n position: 'absolute',\n inset: 0,\n background: 'rgba(255,255,255,.95)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1,\n },\n overlayText: {\n marginTop: theme.spacing(1),\n },\n alert: {\n marginTop: theme.spacing(1),\n },\n}));\n\n/**\n* **FluentScrollLoadAutocompleteMenu**\n*\n* A drop‑in extension for MUI’s `<Autocomplete>` that:\n*\n* 1. Fetches paginated / sortable data from any REST endpoint \n* 2. Implements infinite scrolling with automatic scroll‑position restore \n* 3. Supports client‑side filtering, grouping \n* 4. Displays a Material UI `<CircularProgress>` while loading and a MUI `<Alert>` on errors\n*\n* Internally it wraps **unity‑fluent‑library**’s `<FluentSelectMenu>` so you get the same\n* keyboard navigation and styling as the rest of the Fluent controls.\n*\n* ---\n*\n* ### Typical usage\n* ```jsx\n* const endpoint = (q, page, size, sortCol, sortDir) =>\n* `/api/products?search=${q}&page=${page}&pageSize=${size}&sort=${sortCol}&dir=${sortDir}`;\n*\n* const map = (raw) => ({\n* items: raw.items,\n* total: raw.totalRows,\n* });\n*\n* <FluentScrollLoadAutocompleteMenu\n* apiBaseUrl=\"https://api.example.com\"\n* apiEndpoint={endpoint}\n* mapResponse={map}\n* onChange={(product) => console.log(product)}\n* />\n* ```\n* ---\n*\n* @param {Object} props\n* @param {string} props.apiBaseUrl Base URL forwarded to **apiMutate**\n* @param {Function} props.apiEndpoint `(keyword, page, pageSize, sortCol, sortDir) => string`\n* @param {Function} props.mapResponse Maps raw API payload → `{ items, total }`\n* @param {Function} [props.onChange] Fires when the user selects/clears an option\n* @param {Function} [props.getOptionLabel] Returns the display label for an item (default: `o.name`)\n* @param {Function} [props.groupBy] Returns a group heading string for an item\n* @param {string} [props.placeholder='Search…'] Placeholder text\n* @param {string} [props.displayProperty='name'] Property passed to `<FluentSelectMenu>`\n* @param {number|string} [props.width=300] Fixed width of the component container\n* @param {boolean} [props.fetchEnabled=true] Disable to work fully offline\n* @param {*} [props.initialValue=null] Pre‑selected value shown immediately\n* @param {Array} [props.initialOptions=[]] Pre‑loaded options shown immediately\n* @param {boolean} [props.isPaginated=true] Disable if your API returns the full list\n* @param {boolean} [props.isSortable=true] Disable server‑side sorting\n* @param {boolean} [props.isFilterable=true] Disable server‑side filtering\n* @param {number} [props.pageSize=50] Items per page when paginating\n* @param {string} [props.sortColumn='Name'] Default sort column\n* @param {'ASC'|'DESC'} [props.sortDirection='ASC'] Default sort direction\n*\n* @returns {JSX.Element}\n*/\nexport const FluentScrollLoadAutocompleteMenu = ({\n apiBaseUrl,\n apiEndpoint,\n apiConfig = {},\n apiData = null,\n mapResponse,\n onChange,\n getOptionLabel = (o) => o?.name ?? '',\n groupBy,\n placeholder = 'Search…',\n displayProperty = 'name',\n width = 300,\n fetchEnabled = true,\n initialValue = null,\n initialOptions = [],\n isPaginated = true,\n isSortable = true,\n isFilterable = true,\n pageSize = 50,\n sortColumn = 'Name',\n sortDirection = 'ASC',\n}) => {\n const classes = useStyles();\n const [options, setOptions] = useState(initialOptions);\n const [value, setValue] = useState(initialValue);\n const [inputValue, setInputValue] = useState('');\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n const [error, setError] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalRows, setTotalRows] = useState(0);\n\n const configRef = useRef(apiConfig);\n const dataRef = useRef(apiData);\n const listboxRef = useRef(null);\n const prevScrollPositionRef = useRef(0);\n\n const { t } = useTranslation();\n\n /**\n * Fetches a page of data from the provided API endpoint and updates the component state accordingly.\n *\n * This function supports:\n * - Filtering (if `isFilterable` is true)\n * - Sorting (if `isSortable` is true)\n * - Pagination (based on the `page` and `pageSize` arguments)\n * - Infinite scroll appending (via the `append` flag)\n *\n * @function fetchPage\n * @param {string} keyword - The keyword to filter results by (if filtering is enabled)\n * @param {number} page - The page number to fetch\n * @param {boolean} [append=false] - If true, appends results to the current list; otherwise replaces it\n * @returns {Promise<void>} - Resolves once data is fetched and state is updated\n */\n const fetchPage = useCallback(\n async (keyword, page, append = false) => {\n if (!fetchEnabled) return;\n\n setError(null);\n page === 1 ? setLoading(true) : setLoadingMore(true);\n\n try {\n const url = apiEndpoint(\n isFilterable ? keyword : '',\n page,\n pageSize,\n isSortable ? sortColumn : '',\n isSortable ? sortDirection : 'ASC'\n );\n const resp = await apiMutate(apiBaseUrl, url, configRef.current, dataRef.current);\n const { items, total } = mapResponse(resp.data);\n\n setOptions((prev) => (append ? [...prev, ...items] : items));\n setTotalRows(total);\n setPageNumber(page);\n } catch (err) {\n setError(err.response?.data?.message ?? err.message ?? t('Unknown error'));\n } finally {\n page === 1 ? setLoading(false) : setLoadingMore(false);\n }\n },\n [\n apiBaseUrl,\n apiEndpoint,\n mapResponse,\n pageSize,\n sortColumn,\n sortDirection,\n isFilterable,\n isSortable,\n fetchEnabled,\n t,\n ]\n );\n\n /* ---------- infinite scroll ---------- */\n const handleListboxScroll = (e) => {\n if (!isPaginated) return;\n\n const node = e.currentTarget;\n prevScrollPositionRef.current = node.scrollTop;\n\n if (\n node.scrollTop + node.clientHeight >= node.scrollHeight - 30 &&\n !loadingMore &&\n options.length < totalRows\n ) {\n fetchPage(inputValue, pageNumber + 1, true);\n }\n };\n\n /**\n * **Listbox**\n *\n * Custom scrollable container used by the Autocomplete dropdown.\n * - Attaches a ref to preserve scroll position between pages.\n * - Displays a loading message if no options are present initially.\n * - Shows a full overlay spinner when `loadingMore` is true.\n *\n * This component is passed as the `ListboxComponent` to FluentSelectMenu’s\n * Autocomplete integration, enabling infinite scroll with visual feedback.\n *\n * @param {Object} props\n * @param {React.ReactNode} props.children - Option elements to render\n * @param {boolean} props.initialLoading - Whether to show the “Loading…” message initially\n * @param {React.Ref} ref - Forwarded ref from the Autocomplete dropdown\n * @returns {JSX.Element}\n */\n const Listbox = forwardRef(({ children, initialLoading, ...other }, ref) => (\n <ul\n ref={(inst) => {\n if (inst) listboxRef.current = inst;\n if (typeof ref === 'function') ref(inst);\n else if (ref) ref.current = inst;\n }}\n {...other}\n style={{\n position: 'relative',\n maxHeight: 300,\n overflow: loadingMore ? 'hidden' : 'auto',\n }}\n >\n {Children.count(children) === 0 && initialLoading ? (\n <li style={{ textAlign: 'center', padding: 8 }}>{t('Loading...')}</li>\n ) : (\n children\n )}\n\n {loadingMore && (\n <Box className={classes.overlay}>\n <CircularProgress size={20} />\n <span className={classes.overlayText}>{t('Loading...')}</span>\n </Box>\n )}\n </ul>\n ));\n Listbox.displayName = 'FluentSMAutocompleteListbox';\n\n /* [Initial / filtered fetch] */\n useEffect(() => {\n if (!fetchEnabled || !isFilterable) return;\n if (value && inputValue === getOptionLabel(value)) return;\n\n const timer = setTimeout(() => fetchPage(inputValue, 1, false), 400);\n return () => clearTimeout(timer);\n }, [inputValue, fetchPage, value, getOptionLabel, isFilterable, fetchEnabled]);\n\n // [Initial fetch when filtering is disabled]\n useEffect(() => {\n if (!fetchEnabled || isFilterable) return;\n fetchPage('', 1, false);\n }, [isFilterable, fetchEnabled, fetchPage]);\n\n // [Restores scroll position after loading more items]\n useEffect(() => {\n if (!loadingMore && listboxRef.current) {\n listboxRef.current.scrollTop = prevScrollPositionRef.current;\n }\n }, [options, loadingMore]);\n\n useEffect(() => { configRef.current = apiConfig }, [apiConfig]);\n useEffect(() => { dataRef.current = apiData }, [apiData]);\n\n return (\n <Box width={width}>\n <FluentSelectMenu\n placeholder={placeholder}\n data={options}\n displayProperty={displayProperty}\n onChange={(val) => {\n setValue(val);\n onChange?.(val);\n }}\n InputProps={{\n endAdornment:\n loading && pageNumber === 1 ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null,\n }}\n autoCompleteProps={{\n value,\n inputValue,\n onInputChange: (_e, v) => setInputValue(v),\n loading: loading && pageNumber === 1,\n getOptionLabel,\n groupBy,\n ListboxComponent: Listbox,\n ListboxProps: {\n onScroll: handleListboxScroll,\n initialLoading: loading && pageNumber === 1,\n },\n }}\n />\n\n {error && (\n <Alert severity=\"error\" style={{ marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </Box>\n );\n};\n\nFluentScrollLoadAutocompleteMenu.propTypes = {\n /** Base URL used by apiMutate */\n apiBaseUrl: PropTypes.string.isRequired,\n\n /** Builds the endpoint URL: (keyword, page, pageSize, sortCol, sortDir) => string */\n apiEndpoint: PropTypes.func.isRequired,\n\n /** Additional config passed to apiMutate */\n apiConfig: PropTypes.object,\n\n /** Raw API data passed to apiMutate */\n apiData: PropTypes.any,\n\n /** Maps raw API payload into { items, total } */\n mapResponse: PropTypes.func.isRequired,\n\n /** Called when the user selects or clears an option */\n onChange: PropTypes.func,\n\n /** Returns the text label for a given option */\n getOptionLabel: PropTypes.func,\n\n /** Returns the group heading for a given option */\n groupBy: PropTypes.func,\n\n placeholder: PropTypes.string,\n displayProperty: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /* Behavior flags */\n fetchEnabled: PropTypes.bool,\n initialValue: PropTypes.any,\n initialOptions: PropTypes.array,\n\n isPaginated: PropTypes.bool,\n isSortable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n\n pageSize: PropTypes.number,\n sortColumn: PropTypes.string,\n sortDirection: PropTypes.oneOf(['ASC', 'DESC']),\n};\n","import React, {forwardRef} from 'react'\nimport {\n makeStyles,\n withStyles,\n Typography,\n FormControl,\n NativeSelect,\n InputBase\n} from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst FluentInput = withStyles((theme) => ({\n root: {\n 'label + &': {\n marginTop: theme.spacing(1)\n }\n },\n input: {\n borderRadius: 2,\n position: 'relative',\n border: '1px solid rgba(0, 0, 0, 0.23)',\n fontSize: 14,\n padding: '4px 8px',\n height: 20,\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderRadius: 2\n }\n }\n}))(InputBase)\n\nconst useStyles = makeStyles((theme) => ({\n margin: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n}))\n\nconst FluentSimpleSelectComponent = ({\n label,\n children,\n id,\n value,\n handleChange,\n defaultValue\n}, ref) => {\n const classes = useStyles()\n\n return (\n <div>\n <FormControl className={classes.margin}>\n <Typography\n className={classes.label}\n style={{\n color: 'rgba(0, 0, 0, 0.54)',\n fontWeight: 400,\n letterSpacing: 0\n }}\n >\n {label}\n </Typography>\n <NativeSelect\n id={id}\n inputRef={ref}\n value={value}\n onChange={handleChange}\n defaultValue={defaultValue}\n input={<FluentInput />}\n noShrink='true'\n >\n {children}\n </NativeSelect>\n </FormControl>\n </div>\n )\n}\n\nFluentSimpleSelectComponent.propTypes = {\n /**\n * Label that appears above the selector\n */\n label: PropTypes.string,\n /**\n * Contents of the selected options (<option></option>)\n */\n children: PropTypes.node,\n /**\n * Function to handle option change\n */\n handleChange: PropTypes.func,\n /**\n * Value: the value of the selected item\n */\n value: PropTypes.string\n}\nexport const FluentSimpleSelect = forwardRef(FluentSimpleSelectComponent)\n"],"mappings":"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"}
1
+ {"version":3,"file":"FluentSimpleSelect-BnXJTE2z.js","names":["useStyles","useStyles","useStyles","makeStyles","Box"],"sources":["../src/UI/inputs/menus/FluentSelectDirectoryMenu.jsx","../src/UI/inputs/menus/FluentSelectGroupMenu.jsx","../src/UI/inputs/menus/FluentScrollLoadAutocompleteMenu.jsx","../src/UI/inputs/menus/FluentSimpleSelect.jsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const FluentSelectGroupMenu = ({\n data,\n placeholder,\n id,\n handleChange\n}) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const firstLetter = option.label[0].toUpperCase()\n return {\n firstLetter: /[0-9]/.test(firstLetter) ? '0-9' : firstLetter,\n ...option\n }\n })\n\n return (\n <Autocomplete\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort(\n (a, b) => -b.firstLetter.localeCompare(a.firstLetter)\n )}\n groupBy={(option) => option.firstLetter}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","/* eslint-disable no-use-before-define */\nimport React from 'react'\n\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport { makeStyles, TextField } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1)\n },\n dense: {\n marginTop: theme.spacing(1)\n },\n input: {\n borderRadius: 2,\n height: 32,\n padding: 0,\n marginTop: 3\n },\n formTextInput: {\n fontSize: 14\n },\n labelRoot: {\n fontSize: 14\n }\n}))\n\nexport const SelectGroupMenu = ({ data, placeholder, id, handleChange, className }) => {\n const classes = useStyles()\n const options =\n data &&\n data.map((option) => {\n const grouping = option.category\n return {\n grouping,\n ...option\n }\n })\n\n return (\n <Autocomplete\n className={className}\n id={id}\n onChange={(event, value) => handleChange(value)}\n options={options.sort((a, b) => -b.grouping.localeCompare(a.grouping))}\n groupBy={(option) => option.grouping}\n getOptionLabel={(option) => option.label}\n style={{ width: 300 }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={!params.inputProps.value && placeholder}\n variant='outlined'\n size='small'\n InputLabelProps={{\n shrink: false,\n classes: {\n root: classes.labelRoot,\n focused: classes.labelFocused\n }\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n />\n )}\n />\n )\n}\n","import React, {\n useState,\n useCallback,\n useEffect,\n forwardRef,\n useRef,\n Children,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { CircularProgress } from '@material-ui/core';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FluentSelectMenu } from './FluentSelectMenu';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Box } from '../../Box';\nimport Alert from '@material-ui/lab/Alert';\n\nconst useStyles = makeStyles((theme) => ({\n listbox: {\n position: 'relative',\n maxHeight: 300,\n overflow: 'auto',\n },\n listboxHidden: {\n overflow: 'hidden',\n },\n loadingItem: {\n textAlign: 'center',\n padding: theme.spacing(1),\n },\n overlay: {\n position: 'absolute',\n inset: 0,\n background: 'rgba(255,255,255,.95)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1,\n },\n overlayText: {\n marginTop: theme.spacing(1),\n },\n alert: {\n marginTop: theme.spacing(1),\n },\n}));\n\n/**\n* **FluentScrollLoadAutocompleteMenu**\n*\n* A drop‑in extension for MUI’s `<Autocomplete>` that:\n*\n* 1. Fetches paginated / sortable data from any REST endpoint \n* 2. Implements infinite scrolling with automatic scroll‑position restore \n* 3. Supports client‑side filtering, grouping \n* 4. Displays a Material UI `<CircularProgress>` while loading and a MUI `<Alert>` on errors\n*\n* Internally it wraps **unity‑fluent‑library**’s `<FluentSelectMenu>` so you get the same\n* keyboard navigation and styling as the rest of the Fluent controls.\n*\n* ---\n*\n* ### Typical usage\n* ```jsx\n* const endpoint = (q, page, size, sortCol, sortDir) =>\n* `/api/products?search=${q}&page=${page}&pageSize=${size}&sort=${sortCol}&dir=${sortDir}`;\n*\n* const map = (raw) => ({\n* items: raw.items,\n* total: raw.totalRows,\n* });\n*\n* <FluentScrollLoadAutocompleteMenu\n* apiBaseUrl=\"https://api.example.com\"\n* apiEndpoint={endpoint}\n* mapResponse={map}\n* onChange={(product) => console.log(product)}\n* />\n* ```\n* ---\n*\n* @param {Object} props\n* @param {string} props.apiBaseUrl Base URL forwarded to **apiMutate**\n* @param {Function} props.apiEndpoint `(keyword, page, pageSize, sortCol, sortDir) => string`\n* @param {Function} props.mapResponse Maps raw API payload → `{ items, total }`\n* @param {Function} [props.onChange] Fires when the user selects/clears an option\n* @param {Function} [props.getOptionLabel] Returns the display label for an item (default: `o.name`)\n* @param {Function} [props.groupBy] Returns a group heading string for an item\n* @param {string} [props.placeholder='Search…'] Placeholder text\n* @param {string} [props.displayProperty='name'] Property passed to `<FluentSelectMenu>`\n* @param {number|string} [props.width=300] Fixed width of the component container\n* @param {boolean} [props.fetchEnabled=true] Disable to work fully offline\n* @param {*} [props.initialValue=null] Pre‑selected value shown immediately\n* @param {Array} [props.initialOptions=[]] Pre‑loaded options shown immediately\n* @param {boolean} [props.isPaginated=true] Disable if your API returns the full list\n* @param {boolean} [props.isSortable=true] Disable server‑side sorting\n* @param {boolean} [props.isFilterable=true] Disable server‑side filtering\n* @param {number} [props.pageSize=50] Items per page when paginating\n* @param {string} [props.sortColumn='Name'] Default sort column\n* @param {'ASC'|'DESC'} [props.sortDirection='ASC'] Default sort direction\n*\n* @returns {JSX.Element}\n*/\nexport const FluentScrollLoadAutocompleteMenu = ({\n apiBaseUrl,\n apiEndpoint,\n apiConfig = {},\n apiData = null,\n mapResponse,\n onChange,\n getOptionLabel = (o) => o?.name ?? '',\n groupBy,\n placeholder = 'Search…',\n displayProperty = 'name',\n width = 300,\n fetchEnabled = true,\n initialValue = null,\n initialOptions = [],\n isPaginated = true,\n isSortable = true,\n isFilterable = true,\n pageSize = 50,\n sortColumn = 'Name',\n sortDirection = 'ASC',\n}) => {\n const classes = useStyles();\n const [options, setOptions] = useState(initialOptions);\n const [value, setValue] = useState(initialValue);\n const [inputValue, setInputValue] = useState('');\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n const [error, setError] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalRows, setTotalRows] = useState(0);\n\n const configRef = useRef(apiConfig);\n const dataRef = useRef(apiData);\n const listboxRef = useRef(null);\n const prevScrollPositionRef = useRef(0);\n\n const { t } = useTranslation();\n\n /**\n * Fetches a page of data from the provided API endpoint and updates the component state accordingly.\n *\n * This function supports:\n * - Filtering (if `isFilterable` is true)\n * - Sorting (if `isSortable` is true)\n * - Pagination (based on the `page` and `pageSize` arguments)\n * - Infinite scroll appending (via the `append` flag)\n *\n * @function fetchPage\n * @param {string} keyword - The keyword to filter results by (if filtering is enabled)\n * @param {number} page - The page number to fetch\n * @param {boolean} [append=false] - If true, appends results to the current list; otherwise replaces it\n * @returns {Promise<void>} - Resolves once data is fetched and state is updated\n */\n const fetchPage = useCallback(\n async (keyword, page, append = false) => {\n if (!fetchEnabled) return;\n\n setError(null);\n page === 1 ? setLoading(true) : setLoadingMore(true);\n\n try {\n const url = apiEndpoint(\n isFilterable ? keyword : '',\n page,\n pageSize,\n isSortable ? sortColumn : '',\n isSortable ? sortDirection : 'ASC'\n );\n const resp = await apiMutate(apiBaseUrl, url, configRef.current, dataRef.current);\n const { items, total } = mapResponse(resp.data);\n\n setOptions((prev) => (append ? [...prev, ...items] : items));\n setTotalRows(total);\n setPageNumber(page);\n } catch (err) {\n setError(err.response?.data?.message ?? err.message ?? t('Unknown error'));\n } finally {\n page === 1 ? setLoading(false) : setLoadingMore(false);\n }\n },\n [\n apiBaseUrl,\n apiEndpoint,\n mapResponse,\n pageSize,\n sortColumn,\n sortDirection,\n isFilterable,\n isSortable,\n fetchEnabled,\n t,\n ]\n );\n\n /* ---------- infinite scroll ---------- */\n const handleListboxScroll = (e) => {\n if (!isPaginated) return;\n\n const node = e.currentTarget;\n prevScrollPositionRef.current = node.scrollTop;\n\n if (\n node.scrollTop + node.clientHeight >= node.scrollHeight - 30 &&\n !loadingMore &&\n options.length < totalRows\n ) {\n fetchPage(inputValue, pageNumber + 1, true);\n }\n };\n\n /**\n * **Listbox**\n *\n * Custom scrollable container used by the Autocomplete dropdown.\n * - Attaches a ref to preserve scroll position between pages.\n * - Displays a loading message if no options are present initially.\n * - Shows a full overlay spinner when `loadingMore` is true.\n *\n * This component is passed as the `ListboxComponent` to FluentSelectMenu’s\n * Autocomplete integration, enabling infinite scroll with visual feedback.\n *\n * @param {Object} props\n * @param {React.ReactNode} props.children - Option elements to render\n * @param {boolean} props.initialLoading - Whether to show the “Loading…” message initially\n * @param {React.Ref} ref - Forwarded ref from the Autocomplete dropdown\n * @returns {JSX.Element}\n */\n const Listbox = forwardRef(({ children, initialLoading, ...other }, ref) => (\n <ul\n ref={(inst) => {\n if (inst) listboxRef.current = inst;\n if (typeof ref === 'function') ref(inst);\n else if (ref) ref.current = inst;\n }}\n {...other}\n style={{\n position: 'relative',\n maxHeight: 300,\n overflow: loadingMore ? 'hidden' : 'auto',\n }}\n >\n {Children.count(children) === 0 && initialLoading ? (\n <li style={{ textAlign: 'center', padding: 8 }}>{t('Loading...')}</li>\n ) : (\n children\n )}\n\n {loadingMore && (\n <Box className={classes.overlay}>\n <CircularProgress size={20} />\n <span className={classes.overlayText}>{t('Loading...')}</span>\n </Box>\n )}\n </ul>\n ));\n Listbox.displayName = 'FluentSMAutocompleteListbox';\n\n /* [Initial / filtered fetch] */\n useEffect(() => {\n if (!fetchEnabled || !isFilterable) return;\n if (value && inputValue === getOptionLabel(value)) return;\n\n const timer = setTimeout(() => fetchPage(inputValue, 1, false), 400);\n return () => clearTimeout(timer);\n }, [inputValue, fetchPage, value, getOptionLabel, isFilterable, fetchEnabled]);\n\n // [Initial fetch when filtering is disabled]\n useEffect(() => {\n if (!fetchEnabled || isFilterable) return;\n fetchPage('', 1, false);\n }, [isFilterable, fetchEnabled, fetchPage]);\n\n // [Restores scroll position after loading more items]\n useEffect(() => {\n if (!loadingMore && listboxRef.current) {\n listboxRef.current.scrollTop = prevScrollPositionRef.current;\n }\n }, [options, loadingMore]);\n\n useEffect(() => { configRef.current = apiConfig }, [apiConfig]);\n useEffect(() => { dataRef.current = apiData }, [apiData]);\n\n return (\n <Box width={width}>\n <FluentSelectMenu\n placeholder={placeholder}\n data={options}\n displayProperty={displayProperty}\n onChange={(val) => {\n setValue(val);\n onChange?.(val);\n }}\n InputProps={{\n endAdornment:\n loading && pageNumber === 1 ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null,\n }}\n autoCompleteProps={{\n value,\n inputValue,\n onInputChange: (_e, v) => setInputValue(v),\n loading: loading && pageNumber === 1,\n getOptionLabel,\n groupBy,\n ListboxComponent: Listbox,\n ListboxProps: {\n onScroll: handleListboxScroll,\n initialLoading: loading && pageNumber === 1,\n },\n }}\n />\n\n {error && (\n <Alert severity=\"error\" style={{ marginTop: 8 }}>\n {error}\n </Alert>\n )}\n </Box>\n );\n};\n\nFluentScrollLoadAutocompleteMenu.propTypes = {\n /** Base URL used by apiMutate */\n apiBaseUrl: PropTypes.string.isRequired,\n\n /** Builds the endpoint URL: (keyword, page, pageSize, sortCol, sortDir) => string */\n apiEndpoint: PropTypes.func.isRequired,\n\n /** Additional config passed to apiMutate */\n apiConfig: PropTypes.object,\n\n /** Raw API data passed to apiMutate */\n apiData: PropTypes.any,\n\n /** Maps raw API payload into { items, total } */\n mapResponse: PropTypes.func.isRequired,\n\n /** Called when the user selects or clears an option */\n onChange: PropTypes.func,\n\n /** Returns the text label for a given option */\n getOptionLabel: PropTypes.func,\n\n /** Returns the group heading for a given option */\n groupBy: PropTypes.func,\n\n placeholder: PropTypes.string,\n displayProperty: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /* Behavior flags */\n fetchEnabled: PropTypes.bool,\n initialValue: PropTypes.any,\n initialOptions: PropTypes.array,\n\n isPaginated: PropTypes.bool,\n isSortable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n\n pageSize: PropTypes.number,\n sortColumn: PropTypes.string,\n sortDirection: PropTypes.oneOf(['ASC', 'DESC']),\n};\n","import React, {forwardRef} from 'react'\nimport {\n makeStyles,\n withStyles,\n Typography,\n FormControl,\n NativeSelect,\n InputBase\n} from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst FluentInput = withStyles((theme) => ({\n root: {\n 'label + &': {\n marginTop: theme.spacing(1)\n }\n },\n input: {\n borderRadius: 2,\n position: 'relative',\n border: '1px solid rgba(0, 0, 0, 0.23)',\n fontSize: 14,\n padding: '4px 8px',\n height: 20,\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderRadius: 2\n }\n }\n}))(InputBase)\n\nconst useStyles = makeStyles((theme) => ({\n margin: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n}))\n\nconst FluentSimpleSelectComponent = ({\n label,\n children,\n id,\n value,\n handleChange,\n defaultValue\n}, ref) => {\n const classes = useStyles()\n\n return (\n <div>\n <FormControl className={classes.margin}>\n <Typography\n className={classes.label}\n style={{\n color: 'rgba(0, 0, 0, 0.54)',\n fontWeight: 400,\n letterSpacing: 0\n }}\n >\n {label}\n </Typography>\n <NativeSelect\n id={id}\n inputRef={ref}\n value={value}\n onChange={handleChange}\n defaultValue={defaultValue}\n input={<FluentInput />}\n noShrink='true'\n >\n {children}\n </NativeSelect>\n </FormControl>\n </div>\n )\n}\n\nFluentSimpleSelectComponent.propTypes = {\n /**\n * Label that appears above the selector\n */\n label: PropTypes.string,\n /**\n * Contents of the selected options (<option></option>)\n */\n children: PropTypes.node,\n /**\n * Function to handle option change\n */\n handleChange: PropTypes.func,\n /**\n * Value: the value of the selected item\n */\n value: PropTypes.string\n}\nexport const FluentSimpleSelect = forwardRef(FluentSimpleSelectComponent)\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { l as GridStateTypeEnums } from "./unitySystemEnums-CZDCsD5t.js";
1
+ import { l as GridStateTypeEnums } from "./unitySystemEnums-BhRg17du.js";
2
2
 
3
3
  //#region src/utilities/aggrid/GridFunctions.js
4
4
  const useGridFormat = () => {
@@ -110,9 +110,9 @@ const getGridState = (gridApi, gridColumnApi, gridId) => {
110
110
  gridState.push(pivotGridConfiguration);
111
111
  return gridState;
112
112
  };
113
- const deleteGridState = async (gridApi, gridColumnApi, deleteGridState$1) => {
113
+ const deleteGridState = async (gridApi, gridColumnApi, deleteGridState) => {
114
114
  clearGridState(gridApi, gridColumnApi);
115
- return await deleteGridState$1();
115
+ return await deleteGridState();
116
116
  };
117
117
  const clearGridState = (gridApi, gridColumnApi) => {
118
118
  gridColumnApi.resetColumnState();
@@ -147,4 +147,4 @@ const onFirstDataRendered = (gridApi, gridColumnApi, gridStates) => {
147
147
 
148
148
  //#endregion
149
149
  export { saveGridState as a, useGridFormat as c, onFirstDataRendered as i, useQuickFilter as l, deleteGridState as n, useExport as o, getGridState as r, useGridClear as s, clearGridState as t };
150
- //# sourceMappingURL=GridFunctions-D76ygiH2.js.map
150
+ //# sourceMappingURL=GridFunctions-quS_QhSZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridFunctions-quS_QhSZ.js","names":[],"sources":["../src/utilities/aggrid/GridFunctions.js"],"sourcesContent":["import { GridStateTypeEnums } from '../../enums/unitySystemEnums.ts';\n\nexport const useGridFormat = () => {\n const gridFormat = (gridApi, type) => {\n type === 'expand' && gridApi.expandAll()\n type === 'collapse' && gridApi.collapseAll()\n type === 'resize' && gridApi.sizeColumnsToFit()\n }\n return [gridFormat]\n}\n\nexport const useGridClear = () => {\n const gridClear = (gridApi, gridColumnApi) => {\n gridColumnApi.setRowGroupColumns([])\n gridApi.setFilterModel(null)\n gridApi.setQuickFilter('')\n gridApi.sizeColumnsToFit()\n gridColumnApi.resetColumnState()\n }\n return [gridClear]\n}\n\nexport const useQuickFilter = () => {\n const quickFilter = (gridApi, event) => {\n gridApi.setQuickFilter(event?.target.value)\n }\n return [quickFilter]\n}\n\nexport const useExport = () => {\n const gridExport = (gridApi, type) => {\n type === 'excel' && gridApi.exportDataAsExcel()\n type === 'csv' && gridApi.exportDataAsCsv()\n }\n return [gridExport]\n}\n\nexport const saveGridState = async (\n gridId,\n gridApi,\n gridColumnApi,\n execute\n) => {\n const columnState = gridColumnApi?.getColumnState();\n const columnGroupState = gridColumnApi?.getColumnGroupState();\n const sortModel = gridApi.getSortModel();\n const filterModel = gridApi.getFilterModel();\n const isPivotMode = gridColumnApi.isPivotMode();\n\n const gridState = [];\n const columnGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column,\n gridId: gridId,\n values: JSON.stringify(columnState),\n };\n const columnGroupGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Group,\n gridId: gridId,\n values: JSON.stringify(columnGroupState),\n };\n const columnSortGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Sort,\n gridId: gridId,\n values: JSON.stringify(sortModel),\n };\n const columnFilterGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Filter,\n gridId: gridId,\n values: JSON.stringify(filterModel),\n };\n const pivotGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Pivot_Mode,\n gridId: gridId,\n values: JSON.stringify(isPivotMode),\n };\n gridState.push(columnGridConfiguration);\n gridState.push(columnGroupGridConfiguration);\n gridState.push(columnSortGridConfiguration);\n gridState.push(columnFilterGridConfiguration);\n gridState.push(pivotGridConfiguration);\n\n return await execute({ data: gridState });\n};\n\n\nexport const getGridState = (gridApi, gridColumnApi, gridId) => {\n const columnState = gridColumnApi?.getColumnState();\n const columnGroupState = gridColumnApi?.getColumnGroupState();\n const sortModel = gridApi.getSortModel();\n const filterModel = gridApi.getFilterModel();\n const isPivotMode = gridColumnApi.isPivotMode();\n\n const gridState = [];\n const columnGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column,\n gridId: gridId,\n values: JSON.stringify(columnState),\n };\n const columnGroupGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Group,\n gridId: gridId,\n values: JSON.stringify(columnGroupState),\n };\n const columnSortGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Sort,\n gridId: gridId,\n values: JSON.stringify(sortModel),\n };\n const columnFilterGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Column_Filter,\n gridId: gridId,\n values: JSON.stringify(filterModel),\n };\n const pivotGridConfiguration = {\n gridStateTypeId: GridStateTypeEnums.Pivot_Mode,\n gridId: gridId,\n values: JSON.stringify(isPivotMode),\n };\n gridState.push(columnGridConfiguration);\n gridState.push(columnGroupGridConfiguration);\n gridState.push(columnSortGridConfiguration);\n gridState.push(columnFilterGridConfiguration);\n gridState.push(pivotGridConfiguration);\n\n return gridState;\n}\n\nexport const deleteGridState = async (\n gridApi,\n gridColumnApi,\n deleteGridState\n) => {\n clearGridState(gridApi, gridColumnApi);\n return await deleteGridState();\n};\n\nexport const clearGridState = (gridApi, gridColumnApi) => {\n gridColumnApi.resetColumnState();\n gridColumnApi.resetColumnGroupState();\n gridApi.setFilterModel({});\n gridApi.setSortModel([]);\n gridColumnApi.setPivotMode(false);\n gridApi.sizeColumnsToFit();\n};\n\nexport const onFirstDataRendered = (gridApi, gridColumnApi, gridStates) => {\n if (gridStates && gridStates.length) {\n gridStates.forEach(state => {\n switch (state.gridStateTypeId) {\n case GridStateTypeEnums.Column:\n gridColumnApi.setColumnState(JSON.parse(state.values));\n break;\n case GridStateTypeEnums.Column_Group:\n gridColumnApi.setColumnGroupState(JSON.parse(state.values));\n break;\n case GridStateTypeEnums.Pivot_Mode:\n gridColumnApi.setPivotMode(JSON.parse(state.values));\n break;\n case GridStateTypeEnums.Column_Sort:\n gridApi.setSortModel(JSON.parse(state.values));\n break;\n case GridStateTypeEnums.Column_Filter:\n gridApi.setFilterModel(JSON.parse(state.values));\n break;\n default:\n break;\n }\n });\n }\n};"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
2
- import { t as AmbientTokenButton } from "./AmbientTokenButton-B53E25r2.js";
2
+ import { t as AmbientTokenButton } from "./AmbientTokenButton-F3Wg-88V.js";
3
3
  import { t as Token } from "./Token-rFpVjQT_.js";
4
4
  import { t as AmbientToggleButton } from "./AmbientToggleButton-BjyjXj8S.js";
5
5
  import { t as AmbientToggleButtonGroupDefault_default } from "./AmbientToggleButtonGroupDefault-CngfAplM.js";
@@ -139,4 +139,4 @@ GridGroupingSidebar.propTypes = {
139
139
 
140
140
  //#endregion
141
141
  export { GridGroupingHeader as n, GridSidebarContainer as r, GridGroupingSidebar as t };
142
- //# sourceMappingURL=GridGroupingSidebar-D-ozXbff.js.map
142
+ //# sourceMappingURL=GridGroupingSidebar-CfXk_nd_.js.map