@erpsquad/common 1.11.7 → 1.11.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/dist/api-client/index.esm.js +2 -2
  2. package/dist/chunks/{DynamicDependentField-DOGY6cA_.esm.js → DynamicDependentField-C0XXmMlG.esm.js} +2 -2
  3. package/dist/chunks/{DynamicDependentField-DOGY6cA_.esm.js.map → DynamicDependentField-C0XXmMlG.esm.js.map} +1 -1
  4. package/dist/chunks/{DynamicDependentField-GTIwrPfP.js → DynamicDependentField-CQIfDDqc.js} +2 -2
  5. package/dist/chunks/{DynamicDependentField-GTIwrPfP.js.map → DynamicDependentField-CQIfDDqc.js.map} +1 -1
  6. package/dist/chunks/{ERPUIProvider-Dz0s77BR.esm.js → ERPUIProvider-I4j_X_SD.esm.js} +3 -3
  7. package/dist/chunks/{ERPUIProvider-Dz0s77BR.esm.js.map → ERPUIProvider-I4j_X_SD.esm.js.map} +1 -1
  8. package/dist/chunks/{FORMS-EouVYay1.js → FORMS-CUx32b_4.js} +5 -5
  9. package/dist/chunks/{FORMS-EouVYay1.js.map → FORMS-CUx32b_4.js.map} +1 -1
  10. package/dist/chunks/{FORMS-CR_DlD1m.esm.js → FORMS-pxf6g6xE.esm.js} +8 -8
  11. package/dist/chunks/{FORMS-CR_DlD1m.esm.js.map → FORMS-pxf6g6xE.esm.js.map} +1 -1
  12. package/dist/chunks/{FlexibleReduxExample-CMUylyy1.js → FlexibleReduxExample--GtoEJhc.js} +3 -3
  13. package/dist/chunks/{FlexibleReduxExample-CMUylyy1.js.map → FlexibleReduxExample--GtoEJhc.js.map} +1 -1
  14. package/dist/chunks/{FlexibleReduxExample-B2e7Wa_S.esm.js → FlexibleReduxExample-C-2qOGIw.esm.js} +4 -4
  15. package/dist/chunks/{FlexibleReduxExample-B2e7Wa_S.esm.js.map → FlexibleReduxExample-C-2qOGIw.esm.js.map} +1 -1
  16. package/dist/chunks/SectionFlowEditor-CFfJBYKx.esm.js +5479 -0
  17. package/dist/chunks/SectionFlowEditor-CFfJBYKx.esm.js.map +1 -0
  18. package/dist/chunks/SectionFlowEditor-sKsZ3oQo.js +5478 -0
  19. package/dist/chunks/SectionFlowEditor-sKsZ3oQo.js.map +1 -0
  20. package/dist/chunks/{action-bar-Ci6RlMBM.esm.js → action-bar-C7Alva4T.esm.js} +6 -6
  21. package/dist/chunks/{action-bar-Ci6RlMBM.esm.js.map → action-bar-C7Alva4T.esm.js.map} +1 -1
  22. package/dist/chunks/{action-bar-jLqQTqU7.js → action-bar-DdtpxWNk.js} +3 -3
  23. package/dist/chunks/{action-bar-jLqQTqU7.js.map → action-bar-DdtpxWNk.js.map} +1 -1
  24. package/dist/chunks/{actionCreator-DIdMRO9L.esm.js → actionCreator-CL5ICuqZ.esm.js} +2 -2
  25. package/dist/chunks/{actionCreator-DIdMRO9L.esm.js.map → actionCreator-CL5ICuqZ.esm.js.map} +1 -1
  26. package/dist/chunks/{actionCreator-DKYufGAZ.esm.js → actionCreator-Cb3NxILP.esm.js} +2 -2
  27. package/dist/chunks/{actionCreator-DKYufGAZ.esm.js.map → actionCreator-Cb3NxILP.esm.js.map} +1 -1
  28. package/dist/chunks/{actionCreator-D3uwEAua.esm.js → actionCreator-Cl8vPLVO.esm.js} +3 -3
  29. package/dist/chunks/{actionCreator-D3uwEAua.esm.js.map → actionCreator-Cl8vPLVO.esm.js.map} +1 -1
  30. package/dist/chunks/{actionCreator-B6lXR_k1.esm.js → actionCreator-CpePNxQM.esm.js} +2 -2
  31. package/dist/chunks/{actionCreator-B6lXR_k1.esm.js.map → actionCreator-CpePNxQM.esm.js.map} +1 -1
  32. package/dist/chunks/{actionCreator-DcdyGsIX.esm.js → actionCreator-Dar9Z8_d.esm.js} +3 -3
  33. package/dist/chunks/{actionCreator-DcdyGsIX.esm.js.map → actionCreator-Dar9Z8_d.esm.js.map} +1 -1
  34. package/dist/chunks/add-template-DVvbD9a4.esm.js +11 -0
  35. package/dist/chunks/add-template-DVvbD9a4.esm.js.map +1 -0
  36. package/dist/chunks/add-template-Dohg2bHJ.js +10 -0
  37. package/dist/chunks/add-template-Dohg2bHJ.js.map +1 -0
  38. package/dist/chunks/{address-modal-DFd5sQtR.js → address-modal-CYhiC7ui.js} +2 -2
  39. package/dist/chunks/{address-modal-DFd5sQtR.js.map → address-modal-CYhiC7ui.js.map} +1 -1
  40. package/dist/chunks/{address-modal-DYGLjrqd.esm.js → address-modal-CkDBjnye.esm.js} +2 -2
  41. package/dist/chunks/{address-modal-DYGLjrqd.esm.js.map → address-modal-CkDBjnye.esm.js.map} +1 -1
  42. package/dist/chunks/{ai-summary-x2t8BZCx.esm.js → ai-summary-SKK5KN2s.esm.js} +2 -2
  43. package/dist/chunks/{ai-summary-x2t8BZCx.esm.js.map → ai-summary-SKK5KN2s.esm.js.map} +1 -1
  44. package/dist/chunks/{api-8jutPLh0.esm.js → api-BIVCMSwW.esm.js} +3 -3
  45. package/dist/chunks/{api-8jutPLh0.esm.js.map → api-BIVCMSwW.esm.js.map} +1 -1
  46. package/dist/chunks/{api-yLpQ3k5s.esm.js → api-DBmWILBN.esm.js} +9 -9
  47. package/dist/chunks/{api-yLpQ3k5s.esm.js.map → api-DBmWILBN.esm.js.map} +1 -1
  48. package/dist/chunks/{app-switcher-VhH9z0Rd.js → app-switcher-CyEQmYAN.js} +2 -2
  49. package/dist/chunks/{app-switcher-VhH9z0Rd.js.map → app-switcher-CyEQmYAN.js.map} +1 -1
  50. package/dist/chunks/{app-switcher-B6eapuGG.esm.js → app-switcher-D-Bvz9uO.esm.js} +2 -2
  51. package/dist/chunks/{app-switcher-B6eapuGG.esm.js.map → app-switcher-D-Bvz9uO.esm.js.map} +1 -1
  52. package/dist/chunks/{appbar-B8EgZsrn.esm.js → appbar-BRbO--as.esm.js} +2 -2
  53. package/dist/chunks/{appbar-B8EgZsrn.esm.js.map → appbar-BRbO--as.esm.js.map} +1 -1
  54. package/dist/chunks/{appbar-Is_7kfVo.js → appbar-rqqjZ99v.js} +2 -2
  55. package/dist/chunks/{appbar-Is_7kfVo.js.map → appbar-rqqjZ99v.js.map} +1 -1
  56. package/dist/chunks/{approval-wrapper-_kYfACQp.esm.js → approval-wrapper-BTtmXMlk.esm.js} +2 -2
  57. package/dist/chunks/{approval-wrapper-_kYfACQp.esm.js.map → approval-wrapper-BTtmXMlk.esm.js.map} +1 -1
  58. package/dist/chunks/{chat-bot-DO3vAGxA.esm.js → chat-bot-BpNtrZEL.esm.js} +39 -33
  59. package/dist/chunks/chat-bot-BpNtrZEL.esm.js.map +1 -0
  60. package/dist/chunks/{chat-bot-2Ga_xA_K.js → chat-bot-osiGMG3g.js} +38 -32
  61. package/dist/chunks/chat-bot-osiGMG3g.js.map +1 -0
  62. package/dist/chunks/common-C5AokA7z.js +368 -0
  63. package/dist/chunks/common-C5AokA7z.js.map +1 -0
  64. package/dist/chunks/{common-PH2uWkqL.js → common-CS5L0Ld_.js} +2 -2
  65. package/dist/chunks/{common-PH2uWkqL.js.map → common-CS5L0Ld_.js.map} +1 -1
  66. package/dist/chunks/common-CaomnEjX.esm.js +369 -0
  67. package/dist/chunks/common-CaomnEjX.esm.js.map +1 -0
  68. package/dist/chunks/common-utility-CA_Upser.js.map +1 -1
  69. package/dist/chunks/{common-utility-CS_sNoAC.esm.js → common-utility-DGpbsf7S.esm.js} +2 -2
  70. package/dist/chunks/common-utility-DGpbsf7S.esm.js.map +1 -0
  71. package/dist/chunks/{common-Cl5oGXmX.esm.js → common-yORBIVv-.esm.js} +2 -2
  72. package/dist/chunks/{common-Cl5oGXmX.esm.js.map → common-yORBIVv-.esm.js.map} +1 -1
  73. package/dist/chunks/company-selection-modal-B7jFVWWs.js.map +1 -1
  74. package/dist/chunks/company-selection-modal-Dn2L_skh.esm.js.map +1 -1
  75. package/dist/chunks/{constant-BXPcBhJN.esm.js → constant-Bwg2s_Sn.esm.js} +5 -35
  76. package/dist/chunks/constant-Bwg2s_Sn.esm.js.map +1 -0
  77. package/dist/chunks/{constant-BXeJD4Af.js → constant-ZYAN_teD.js} +5 -35
  78. package/dist/chunks/constant-ZYAN_teD.js.map +1 -0
  79. package/dist/chunks/{constants-D_xuLHSu.js → constants-06kIVUBw.js} +2 -2
  80. package/dist/chunks/{constants-D_xuLHSu.js.map → constants-06kIVUBw.js.map} +1 -1
  81. package/dist/chunks/{constants-BrmMAwu2.esm.js → constants-nmkxkzps.esm.js} +2 -2
  82. package/dist/chunks/{constants-BrmMAwu2.esm.js.map → constants-nmkxkzps.esm.js.map} +1 -1
  83. package/dist/chunks/{custom-editor-C-B5BK-H.esm.js → custom-editor-6-xqhKz6.esm.js} +3 -3
  84. package/dist/chunks/{custom-editor-C-B5BK-H.esm.js.map → custom-editor-6-xqhKz6.esm.js.map} +1 -1
  85. package/dist/chunks/{custom-form-T4yc_sE_.js → custom-form-CFU7NEVb.js} +4 -4
  86. package/dist/chunks/{custom-form-T4yc_sE_.js.map → custom-form-CFU7NEVb.js.map} +1 -1
  87. package/dist/chunks/{custom-form-DNUpk0nq.esm.js → custom-form-DD7YOHMF.esm.js} +7 -7
  88. package/dist/chunks/{custom-form-DNUpk0nq.esm.js.map → custom-form-DD7YOHMF.esm.js.map} +1 -1
  89. package/dist/chunks/{dashboard-eMHQayU_.js → dashboard-BcWVkWZt.js} +3 -3
  90. package/dist/chunks/{dashboard-eMHQayU_.js.map → dashboard-BcWVkWZt.js.map} +1 -1
  91. package/dist/chunks/{dashboard-B4xzJ1Xc.esm.js → dashboard-DL83yYRR.esm.js} +4 -4
  92. package/dist/chunks/{dashboard-B4xzJ1Xc.esm.js.map → dashboard-DL83yYRR.esm.js.map} +1 -1
  93. package/dist/chunks/default-data-6IxhqPTP.esm.js.map +1 -1
  94. package/dist/chunks/default-data-yreKVx_z.js.map +1 -1
  95. package/dist/chunks/{dynamic-report-CMguvXj2.esm.js → dynamic-report-tKn-KqAd.esm.js} +4 -4
  96. package/dist/chunks/{dynamic-report-CMguvXj2.esm.js.map → dynamic-report-tKn-KqAd.esm.js.map} +1 -1
  97. package/dist/chunks/{dynamic-rows-CmAE9nbA.esm.js → dynamic-rows-CTGETfcP.esm.js} +2 -2
  98. package/dist/chunks/{dynamic-rows-CmAE9nbA.esm.js.map → dynamic-rows-CTGETfcP.esm.js.map} +1 -1
  99. package/dist/chunks/{dynamic-text-editor-CSWdR1lK.esm.js → dynamic-text-editor-CPvlGcLK.esm.js} +2 -2
  100. package/dist/chunks/{dynamic-text-editor-CSWdR1lK.esm.js.map → dynamic-text-editor-CPvlGcLK.esm.js.map} +1 -1
  101. package/dist/chunks/{edit-section-modal-HihKbN6K.esm.js → edit-section-modal-BW-aZmUv.esm.js} +2 -2
  102. package/dist/chunks/edit-section-modal-BW-aZmUv.esm.js.map +1 -0
  103. package/dist/chunks/edit-section-modal-Br2ITvLk.js.map +1 -1
  104. package/dist/chunks/{filter-D9BHP_qc.esm.js → filter-COXKBEER.esm.js} +5 -5
  105. package/dist/chunks/{filter-D9BHP_qc.esm.js.map → filter-COXKBEER.esm.js.map} +1 -1
  106. package/dist/chunks/{filter-DtCrOG6W.js → filter-Cr_OSIpb.js} +3 -3
  107. package/dist/chunks/{filter-DtCrOG6W.js.map → filter-Cr_OSIpb.js.map} +1 -1
  108. package/dist/chunks/{footer-DioOh69g.js → footer-CD3kMRdS.js} +2 -2
  109. package/dist/chunks/{footer-DioOh69g.js.map → footer-CD3kMRdS.js.map} +1 -1
  110. package/dist/chunks/{footer-Bv5NOAf9.esm.js → footer-m3_dlNl8.esm.js} +2 -2
  111. package/dist/chunks/{footer-Bv5NOAf9.esm.js.map → footer-m3_dlNl8.esm.js.map} +1 -1
  112. package/dist/chunks/{form-fields-Di-p9XKG.esm.js → form-fields-hMMnB_wE.esm.js} +2 -2
  113. package/dist/chunks/{form-fields-Di-p9XKG.esm.js.map → form-fields-hMMnB_wE.esm.js.map} +1 -1
  114. package/dist/chunks/{form-fields-BYDhbAgB.js → form-fields-yE9kwjvb.js} +2 -2
  115. package/dist/chunks/{form-fields-BYDhbAgB.js.map → form-fields-yE9kwjvb.js.map} +1 -1
  116. package/dist/chunks/{form-parser-ZQpEVrzG.esm.js → form-parser-DbnSn5eY.esm.js} +2 -2
  117. package/dist/chunks/{form-parser-ZQpEVrzG.esm.js.map → form-parser-DbnSn5eY.esm.js.map} +1 -1
  118. package/dist/chunks/{form-parser-BnMdMDSb.js → form-parser-m4fnw38a.js} +2 -2
  119. package/dist/chunks/{form-parser-BnMdMDSb.js.map → form-parser-m4fnw38a.js.map} +1 -1
  120. package/dist/chunks/{form-section-CFeWD-tF.js → form-section-CPIyMdk2.js} +5 -5
  121. package/dist/chunks/{form-section-CFeWD-tF.js.map → form-section-CPIyMdk2.js.map} +1 -1
  122. package/dist/chunks/{form-section-BJ7Iqb9R.esm.js → form-section-TMjdOVeW.esm.js} +5 -5
  123. package/dist/chunks/{form-section-BJ7Iqb9R.esm.js.map → form-section-TMjdOVeW.esm.js.map} +1 -1
  124. package/dist/chunks/{fullScreen-h0JqBN4O.js → fullScreen-BLLa9ogA.js} +5 -5
  125. package/dist/chunks/fullScreen-BLLa9ogA.js.map +1 -0
  126. package/dist/chunks/{fullScreen-Cz3FIdU4.esm.js → fullScreen-DFgzE41_.esm.js} +5 -5
  127. package/dist/chunks/fullScreen-DFgzE41_.esm.js.map +1 -0
  128. package/dist/chunks/{global-search-CGmupYFQ.esm.js → global-search-BOkxXiZ0.esm.js} +3 -3
  129. package/dist/chunks/{global-search-CGmupYFQ.esm.js.map → global-search-BOkxXiZ0.esm.js.map} +1 -1
  130. package/dist/chunks/{global-search-BTV5iL6-.js → global-search-BjKPmzsQ.js} +2 -2
  131. package/dist/chunks/{global-search-BTV5iL6-.js.map → global-search-BjKPmzsQ.js.map} +1 -1
  132. package/dist/chunks/{grid-view-BMfleQMC.esm.js → grid-view-Bo86x7YL.esm.js} +2 -2
  133. package/dist/chunks/{grid-view-BMfleQMC.esm.js.map → grid-view-Bo86x7YL.esm.js.map} +1 -1
  134. package/dist/chunks/{header-BnVzqpGs.esm.js → header-B-HaoeK7.esm.js} +10 -12
  135. package/dist/chunks/{header-BnVzqpGs.esm.js.map → header-B-HaoeK7.esm.js.map} +1 -1
  136. package/dist/chunks/{header-jWPMgcy6.js → header-BHsex2As.js} +9 -11
  137. package/dist/chunks/{header-jWPMgcy6.js.map → header-BHsex2As.js.map} +1 -1
  138. package/dist/chunks/{header-enhanced-CkROCaOF.esm.js → header-enhanced-BjfqyQ1a.esm.js} +3 -3
  139. package/dist/chunks/{header-enhanced-CkROCaOF.esm.js.map → header-enhanced-BjfqyQ1a.esm.js.map} +1 -1
  140. package/dist/chunks/{header-enhanced-Dxdetx0I.js → header-enhanced-gJl4iC4m.js} +3 -3
  141. package/dist/chunks/{header-enhanced-Dxdetx0I.js.map → header-enhanced-gJl4iC4m.js.map} +1 -1
  142. package/dist/chunks/{index-BCmGHdos.esm.js → index-ALqg8b5U.esm.js} +2 -2
  143. package/dist/chunks/{index-BCmGHdos.esm.js.map → index-ALqg8b5U.esm.js.map} +1 -1
  144. package/dist/chunks/{inline-edit-fields-VOIx3qmC.esm.js → inline-edit-fields-BYhRpPcH.esm.js} +2 -2
  145. package/dist/chunks/{inline-edit-fields-VOIx3qmC.esm.js.map → inline-edit-fields-BYhRpPcH.esm.js.map} +1 -1
  146. package/dist/chunks/{inline-edit-fields-Cd_qUOjU.js → inline-edit-fields-atDP84QL.js} +2 -2
  147. package/dist/chunks/{inline-edit-fields-Cd_qUOjU.js.map → inline-edit-fields-atDP84QL.js.map} +1 -1
  148. package/dist/chunks/{inventory-reports-title-bar-BfUMM54c.js → inventory-reports-title-bar-Bog2i0dr.js} +2 -2
  149. package/dist/chunks/{inventory-reports-title-bar-BfUMM54c.js.map → inventory-reports-title-bar-Bog2i0dr.js.map} +1 -1
  150. package/dist/chunks/{inventory-reports-title-bar-CZZFFqDc.esm.js → inventory-reports-title-bar-CP8FzW6A.esm.js} +3 -3
  151. package/dist/chunks/{inventory-reports-title-bar-CZZFFqDc.esm.js.map → inventory-reports-title-bar-CP8FzW6A.esm.js.map} +1 -1
  152. package/dist/chunks/{item-response-details-BheThTTK.js → item-response-details-DsGQ7Dlc.js} +2 -2
  153. package/dist/chunks/{item-response-details-BheThTTK.js.map → item-response-details-DsGQ7Dlc.js.map} +1 -1
  154. package/dist/chunks/{item-response-details-BTHf6ZvN.esm.js → item-response-details-SHSD-nBh.esm.js} +4 -4
  155. package/dist/chunks/{item-response-details-BTHf6ZvN.esm.js.map → item-response-details-SHSD-nBh.esm.js.map} +1 -1
  156. package/dist/chunks/{listing-ELQeM6S3.esm.js → listing-C0Yb6MVq.esm.js} +4 -4
  157. package/dist/chunks/{listing-ELQeM6S3.esm.js.map → listing-C0Yb6MVq.esm.js.map} +1 -1
  158. package/dist/chunks/{listing-Dr_1DDBr.js → listing-DIuzQrzb.js} +4 -4
  159. package/dist/chunks/{listing-Dr_1DDBr.js.map → listing-DIuzQrzb.js.map} +1 -1
  160. package/dist/chunks/{location-select-z1C88kCy.esm.js → location-select-CFa00fy4.esm.js} +2 -2
  161. package/dist/chunks/{location-select-z1C88kCy.esm.js.map → location-select-CFa00fy4.esm.js.map} +1 -1
  162. package/dist/chunks/{location-select-CLyRUilk.js → location-select-g5uczAUF.js} +2 -2
  163. package/dist/chunks/{location-select-CLyRUilk.js.map → location-select-g5uczAUF.js.map} +1 -1
  164. package/dist/chunks/{material-editable-table-DFGB0q-s.js → material-editable-table-BGLjrTzT.js} +3 -3
  165. package/dist/chunks/{material-editable-table-DFGB0q-s.js.map → material-editable-table-BGLjrTzT.js.map} +1 -1
  166. package/dist/chunks/{material-editable-table-DyGdqNkX.esm.js → material-editable-table-pAyK7KYf.esm.js} +4 -4
  167. package/dist/chunks/{material-editable-table-DyGdqNkX.esm.js.map → material-editable-table-pAyK7KYf.esm.js.map} +1 -1
  168. package/dist/chunks/{module-reducer-CEv3LZCX.esm.js → module-reducer-DMxxForv.esm.js} +2 -2
  169. package/dist/chunks/{module-reducer-CEv3LZCX.esm.js.map → module-reducer-DMxxForv.esm.js.map} +1 -1
  170. package/dist/chunks/{modules-enwLrpfQ.esm.js → modules-BBu2Y-K9.esm.js} +5 -5
  171. package/dist/chunks/{modules-enwLrpfQ.esm.js.map → modules-BBu2Y-K9.esm.js.map} +1 -1
  172. package/dist/chunks/{modules-DTRr7zwt.js → modules-maXT99-4.js} +5 -5
  173. package/dist/chunks/{modules-DTRr7zwt.js.map → modules-maXT99-4.js.map} +1 -1
  174. package/dist/chunks/{notification-menu-B00hDUbn.js → notification-menu-D7ASm-K1.js} +2 -2
  175. package/dist/chunks/{notification-menu-B00hDUbn.js.map → notification-menu-D7ASm-K1.js.map} +1 -1
  176. package/dist/chunks/{notification-menu-CehCt5fA.esm.js → notification-menu-XAadkn-e.esm.js} +4 -4
  177. package/dist/chunks/{notification-menu-CehCt5fA.esm.js.map → notification-menu-XAadkn-e.esm.js.map} +1 -1
  178. package/dist/chunks/{page-action-TMFOytDw.js → page-action-BPzaL2KJ.js} +2 -2
  179. package/dist/chunks/{page-action-TMFOytDw.js.map → page-action-BPzaL2KJ.js.map} +1 -1
  180. package/dist/chunks/{page-action-RqVevciV.esm.js → page-action-C07iGjvN.esm.js} +4 -4
  181. package/dist/chunks/{page-action-RqVevciV.esm.js.map → page-action-C07iGjvN.esm.js.map} +1 -1
  182. package/dist/chunks/{page-navigator-CuIJ0KGf.esm.js → page-navigator-8gZpp9_P.esm.js} +2 -2
  183. package/dist/chunks/{page-navigator-CuIJ0KGf.esm.js.map → page-navigator-8gZpp9_P.esm.js.map} +1 -1
  184. package/dist/chunks/{page-navigator-DdRsmtLy.js → page-navigator-Cgbh3tTG.js} +2 -2
  185. package/dist/chunks/{page-navigator-DdRsmtLy.js.map → page-navigator-Cgbh3tTG.js.map} +1 -1
  186. package/dist/chunks/{page-view-Daz-OKd_.esm.js → page-view-CokUNMBn.esm.js} +3 -3
  187. package/dist/chunks/{page-view-Daz-OKd_.esm.js.map → page-view-CokUNMBn.esm.js.map} +1 -1
  188. package/dist/chunks/{page-view-CvfqzV03.js → page-view-DJ6HS_dV.js} +3 -3
  189. package/dist/chunks/{page-view-CvfqzV03.js.map → page-view-DJ6HS_dV.js.map} +1 -1
  190. package/dist/chunks/{pathname.rental-CwK6JuID.js → pathname.rental-DgH4LoG7.js} +7 -2
  191. package/dist/chunks/{pathname.rental-CwK6JuID.js.map → pathname.rental-DgH4LoG7.js.map} +1 -1
  192. package/dist/chunks/{pathname.rental-CqHO_l_D.esm.js → pathname.rental-qsAe3XFd.esm.js} +81 -76
  193. package/dist/chunks/{pathname.rental-CqHO_l_D.esm.js.map → pathname.rental-qsAe3XFd.esm.js.map} +1 -1
  194. package/dist/chunks/{quick-approval-modal-B-jvkgue.esm.js → quick-approval-modal-CPWs8htH.esm.js} +2 -2
  195. package/dist/chunks/{quick-approval-modal-B-jvkgue.esm.js.map → quick-approval-modal-CPWs8htH.esm.js.map} +1 -1
  196. package/dist/chunks/{reducer-BOwyP0QZ.esm.js → reducer-3tSO6RW6.esm.js} +3 -3
  197. package/dist/chunks/{reducer-BOwyP0QZ.esm.js.map → reducer-3tSO6RW6.esm.js.map} +1 -1
  198. package/dist/chunks/{reducer-BMkh_0Py.esm.js → reducer-CdJ6znKF.esm.js} +3 -3
  199. package/dist/chunks/{reducer-BMkh_0Py.esm.js.map → reducer-CdJ6znKF.esm.js.map} +1 -1
  200. package/dist/chunks/{reducer-BTfG9J4W.esm.js → reducer-IsgN83rP.esm.js} +2 -2
  201. package/dist/chunks/{reducer-BTfG9J4W.esm.js.map → reducer-IsgN83rP.esm.js.map} +1 -1
  202. package/dist/chunks/{reducer-CD1VDqeT.esm.js → reducer-sgaK2vfW.esm.js} +2 -2
  203. package/dist/chunks/{reducer-CD1VDqeT.esm.js.map → reducer-sgaK2vfW.esm.js.map} +1 -1
  204. package/dist/chunks/{reducer-BWiX5vxL.esm.js → reducer-yyZtsg1A.esm.js} +2 -2
  205. package/dist/chunks/{reducer-BWiX5vxL.esm.js.map → reducer-yyZtsg1A.esm.js.map} +1 -1
  206. package/dist/chunks/{reports-title-bar-Kl8XQe-K.esm.js → reports-title-bar-Cay4E8SQ.esm.js} +4 -4
  207. package/dist/chunks/{reports-title-bar-Kl8XQe-K.esm.js.map → reports-title-bar-Cay4E8SQ.esm.js.map} +1 -1
  208. package/dist/chunks/{reports-title-bar-B1_IweEc.js → reports-title-bar-Kz6JjqsY.js} +2 -2
  209. package/dist/chunks/{reports-title-bar-B1_IweEc.js.map → reports-title-bar-Kz6JjqsY.js.map} +1 -1
  210. package/dist/chunks/{route-page-map-D6-7jBQT.esm.js → route-page-map-DkWoisiB.esm.js} +133 -76
  211. package/dist/chunks/{route-page-map-D6-7jBQT.esm.js.map → route-page-map-DkWoisiB.esm.js.map} +1 -1
  212. package/dist/chunks/{route-page-map-CzFUh-SC.js → route-page-map-Dn-SAbdf.js} +60 -3
  213. package/dist/chunks/{route-page-map-CzFUh-SC.js.map → route-page-map-Dn-SAbdf.js.map} +1 -1
  214. package/dist/chunks/{routes-D9y_XQRu.esm.js → routes-CAc76Zan.esm.js} +4 -4
  215. package/dist/chunks/{routes-D9y_XQRu.esm.js.map → routes-CAc76Zan.esm.js.map} +1 -1
  216. package/dist/chunks/{routes-Dsumzjw0.js → routes-CfqLAYgR.js} +4 -4
  217. package/dist/chunks/{routes-Dsumzjw0.js.map → routes-CfqLAYgR.js.map} +1 -1
  218. package/dist/chunks/{schedule-report-BwmZ5jea.js → schedule-report-B4ZfEuiU.js} +4 -4
  219. package/dist/chunks/{schedule-report-BwmZ5jea.js.map → schedule-report-B4ZfEuiU.js.map} +1 -1
  220. package/dist/chunks/{schedule-report-CJXHVZ68.esm.js → schedule-report-CLXjjfjc.esm.js} +6 -6
  221. package/dist/chunks/{schedule-report-CJXHVZ68.esm.js.map → schedule-report-CLXjjfjc.esm.js.map} +1 -1
  222. package/dist/chunks/{schedule-report-modal-D8Y-TZ4u.esm.js → schedule-report-modal-CB3G9H7x.esm.js} +3 -3
  223. package/dist/chunks/{schedule-report-modal-D8Y-TZ4u.esm.js.map → schedule-report-modal-CB3G9H7x.esm.js.map} +1 -1
  224. package/dist/chunks/{schedule-report-modal-iNnWP9s4.js → schedule-report-modal-iwoDI-sg.js} +2 -2
  225. package/dist/chunks/{schedule-report-modal-iNnWP9s4.js.map → schedule-report-modal-iwoDI-sg.js.map} +1 -1
  226. package/dist/chunks/{searchable-select-BQtcqBKV.esm.js → searchable-select-0F6E4XAr.esm.js} +6 -6
  227. package/dist/chunks/{searchable-select-BQtcqBKV.esm.js.map → searchable-select-0F6E4XAr.esm.js.map} +1 -1
  228. package/dist/chunks/{searchable-select-DVUCWWti.js → searchable-select-_DCkITfk.js} +2 -2
  229. package/dist/chunks/{searchable-select-DVUCWWti.js.map → searchable-select-_DCkITfk.js.map} +1 -1
  230. package/dist/chunks/{share-modal-BOyLBawK.esm.js → share-modal-BaEyZs2h.esm.js} +3 -3
  231. package/dist/chunks/{share-modal-BOyLBawK.esm.js.map → share-modal-BaEyZs2h.esm.js.map} +1 -1
  232. package/dist/chunks/{share-modal-CobK7BN7.js → share-modal-DrXvh-fV.js} +2 -2
  233. package/dist/chunks/{share-modal-CobK7BN7.js.map → share-modal-DrXvh-fV.js.map} +1 -1
  234. package/dist/chunks/{share-modal-enhanced-DVarD-jt.js → share-modal-enhanced-BTr0zRhF.js} +2 -2
  235. package/dist/chunks/{share-modal-enhanced-DVarD-jt.js.map → share-modal-enhanced-BTr0zRhF.js.map} +1 -1
  236. package/dist/chunks/{share-modal-enhanced-CTp-tQw8.esm.js → share-modal-enhanced-DnEdDBmu.esm.js} +2 -2
  237. package/dist/chunks/{share-modal-enhanced-CTp-tQw8.esm.js.map → share-modal-enhanced-DnEdDBmu.esm.js.map} +1 -1
  238. package/dist/chunks/{sidebarScreen-lR6rw8bW.esm.js → sidebarScreen-DiOAiXeU.esm.js} +4 -4
  239. package/dist/chunks/{sidebarScreen-lR6rw8bW.esm.js.map → sidebarScreen-DiOAiXeU.esm.js.map} +1 -1
  240. package/dist/chunks/{sidebarScreen-K-dlM6NA.js → sidebarScreen-DpYj_wlK.js} +3 -3
  241. package/dist/chunks/{sidebarScreen-K-dlM6NA.js.map → sidebarScreen-DpYj_wlK.js.map} +1 -1
  242. package/dist/chunks/{store-DJh8C3Vv.esm.js → store-BL5VFPie.esm.js} +6 -6
  243. package/dist/chunks/{store-DJh8C3Vv.esm.js.map → store-BL5VFPie.esm.js.map} +1 -1
  244. package/dist/chunks/{table-Bpt6ggr3.js → table-DWx7x8zw.js} +2 -2
  245. package/dist/chunks/{table-Bpt6ggr3.js.map → table-DWx7x8zw.js.map} +1 -1
  246. package/dist/chunks/{table-form-8_f3FwhX.esm.js → table-form-DsTwCUcs.esm.js} +2 -2
  247. package/dist/chunks/{table-form-8_f3FwhX.esm.js.map → table-form-DsTwCUcs.esm.js.map} +1 -1
  248. package/dist/chunks/{table-DI3MyTNm.esm.js → table-gxAlAeTq.esm.js} +3 -3
  249. package/dist/chunks/{table-DI3MyTNm.esm.js.map → table-gxAlAeTq.esm.js.map} +1 -1
  250. package/dist/chunks/{template-editor-router-uzghBOap.esm.js → template-editor-router-BXLUTvsk.esm.js} +2 -2
  251. package/dist/chunks/{template-editor-router-uzghBOap.esm.js.map → template-editor-router-BXLUTvsk.esm.js.map} +1 -1
  252. package/dist/chunks/{template-editor-router-DugWbCh0.js → template-editor-router-D4NIwVws.js} +2 -2
  253. package/dist/chunks/{template-editor-router-DugWbCh0.js.map → template-editor-router-D4NIwVws.js.map} +1 -1
  254. package/dist/chunks/{template-modal-D7aLacan.esm.js → template-modal-B2VgotrF.esm.js} +6 -7
  255. package/dist/chunks/template-modal-B2VgotrF.esm.js.map +1 -0
  256. package/dist/chunks/{template-modal-Df7gF4QI.js → template-modal-X-iSmlki.js} +4 -5
  257. package/dist/chunks/template-modal-X-iSmlki.js.map +1 -0
  258. package/dist/chunks/{template-name-modal-ClreVUaz.js → template-name-modal-CeqxIE2r.js} +5 -12
  259. package/dist/chunks/template-name-modal-CeqxIE2r.js.map +1 -0
  260. package/dist/chunks/{template-name-modal-Dwe7U72p.esm.js → template-name-modal-Dctn8t3t.esm.js} +5 -12
  261. package/dist/chunks/template-name-modal-Dctn8t3t.esm.js.map +1 -0
  262. package/dist/chunks/{templates-9ZMHwRR6.esm.js → templates-CCy1eG6A.esm.js} +17 -10
  263. package/dist/chunks/templates-CCy1eG6A.esm.js.map +1 -0
  264. package/dist/chunks/{templates-DCXbeOtH.js → templates-CUREMwYo.js} +14 -7
  265. package/dist/chunks/templates-CUREMwYo.js.map +1 -0
  266. package/dist/chunks/{text-measurement-DMVkqP6b.esm.js → text-measurement-BCjauPbB.esm.js} +2 -2
  267. package/dist/chunks/{text-measurement-DMVkqP6b.esm.js.map → text-measurement-BCjauPbB.esm.js.map} +1 -1
  268. package/dist/chunks/{translations-JcE6qyDJ.esm.js → translations-BrwQcVN3.esm.js} +3 -3
  269. package/dist/chunks/{translations-JcE6qyDJ.esm.js.map → translations-BrwQcVN3.esm.js.map} +1 -1
  270. package/dist/chunks/{uom-field-wrapper-CWTsSsSi.esm.js → uom-field-wrapper-CTbEc-MB.esm.js} +2 -2
  271. package/dist/chunks/{uom-field-wrapper-CWTsSsSi.esm.js.map → uom-field-wrapper-CTbEc-MB.esm.js.map} +1 -1
  272. package/dist/chunks/{uom-field-wrapper-CSqeiVPY.js → uom-field-wrapper-DXZgzOYB.js} +2 -2
  273. package/dist/chunks/{uom-field-wrapper-CSqeiVPY.js.map → uom-field-wrapper-DXZgzOYB.js.map} +1 -1
  274. package/dist/chunks/{upload-excel-CkEQqZW2.esm.js → upload-excel-BZPP13tP.esm.js} +2 -2
  275. package/dist/chunks/{upload-excel-CkEQqZW2.esm.js.map → upload-excel-BZPP13tP.esm.js.map} +1 -1
  276. package/dist/chunks/{use-translations-Cn3b4Kqh.js → use-translations-5wUQBxMm.js} +2 -2
  277. package/dist/chunks/{use-translations-Cn3b4Kqh.js.map → use-translations-5wUQBxMm.js.map} +1 -1
  278. package/dist/chunks/{use-translations-BqBPN1DM.esm.js → use-translations-CcjSFA3F.esm.js} +3 -3
  279. package/dist/chunks/{use-translations-BqBPN1DM.esm.js.map → use-translations-CcjSFA3F.esm.js.map} +1 -1
  280. package/dist/chunks/{useAccountSetting-DsU5zsjb.esm.js → useAccountSetting-vAqgEiJB.esm.js} +2 -2
  281. package/dist/chunks/{useAccountSetting-DsU5zsjb.esm.js.map → useAccountSetting-vAqgEiJB.esm.js.map} +1 -1
  282. package/dist/chunks/{useCheckSkuAndName-5ua30aZf.esm.js → useCheckSkuAndName-Dl24wQO-.esm.js} +2 -2
  283. package/dist/chunks/{useCheckSkuAndName-5ua30aZf.esm.js.map → useCheckSkuAndName-Dl24wQO-.esm.js.map} +1 -1
  284. package/dist/chunks/{useReduxIntegration-BlLpfwk6.esm.js → useReduxIntegration-DZBfKF7d.esm.js} +2 -2
  285. package/dist/chunks/{useReduxIntegration-BlLpfwk6.esm.js.map → useReduxIntegration-DZBfKF7d.esm.js.map} +1 -1
  286. package/dist/chunks/{useUniquenessCheck-CiR2q5bM.esm.js → useUniquenessCheck-bYjnp_0P.esm.js} +2 -2
  287. package/dist/chunks/{useUniquenessCheck-CiR2q5bM.esm.js.map → useUniquenessCheck-bYjnp_0P.esm.js.map} +1 -1
  288. package/dist/chunks/{useVendorAICompare-DMJvJJ3Y.esm.js → useVendorAICompare-DZRFDk4i.esm.js} +2 -2
  289. package/dist/chunks/{useVendorAICompare-DMJvJJ3Y.esm.js.map → useVendorAICompare-DZRFDk4i.esm.js.map} +1 -1
  290. package/dist/chunks/{value-editor-Br7X_wEB.js → value-editor-BSS9Ns2T.js} +2 -2
  291. package/dist/chunks/{value-editor-Br7X_wEB.js.map → value-editor-BSS9Ns2T.js.map} +1 -1
  292. package/dist/chunks/{value-editor-BxFdnUyM.esm.js → value-editor-DQ1qgZ2u.esm.js} +4 -4
  293. package/dist/chunks/{value-editor-BxFdnUyM.esm.js.map → value-editor-DQ1qgZ2u.esm.js.map} +1 -1
  294. package/dist/chunks/{vendor-ai-summary-Cpx90QOx.esm.js → vendor-ai-summary-BA6m2dH9.esm.js} +2 -2
  295. package/dist/chunks/{vendor-ai-summary-Cpx90QOx.esm.js.map → vendor-ai-summary-BA6m2dH9.esm.js.map} +1 -1
  296. package/dist/chunks/{vendor-ai-summary-zranZkfk.js → vendor-ai-summary-DWmAaQ_N.js} +2 -2
  297. package/dist/chunks/{vendor-ai-summary-zranZkfk.js.map → vendor-ai-summary-DWmAaQ_N.js.map} +1 -1
  298. package/dist/components/action-bar/action-bar/index.esm.js +1 -1
  299. package/dist/components/action-bar/action-bar/index.js +1 -1
  300. package/dist/components/action-bar/index.esm.js +1 -1
  301. package/dist/components/action-bar/index.js +1 -1
  302. package/dist/components/address-modal/index.esm.js +1 -1
  303. package/dist/components/address-modal/index.js +1 -1
  304. package/dist/components/ai-summary/ai-summary/index.esm.js +1 -1
  305. package/dist/components/ai-summary/index.esm.js +1 -1
  306. package/dist/components/appbar/appbar/index.esm.js +1 -1
  307. package/dist/components/appbar/appbar/index.js +1 -1
  308. package/dist/components/appbar/index.esm.js +1 -1
  309. package/dist/components/appbar/index.js +1 -1
  310. package/dist/components/approval-wrapper/approval-wrapper/index.esm.js +1 -1
  311. package/dist/components/approval-wrapper/index.esm.js +1 -1
  312. package/dist/components/chat-bot/index.esm.js +1 -1
  313. package/dist/components/chat-bot/index.js +1 -1
  314. package/dist/components/custom-forms/FORMS/index.esm.js +1 -1
  315. package/dist/components/custom-forms/FORMS/index.js +1 -1
  316. package/dist/components/custom-forms/grid-view/grid-view/index.esm.js +1 -1
  317. package/dist/components/custom-forms/grid-view/index.esm.js +1 -1
  318. package/dist/components/custom-forms/index.esm.js +2 -2
  319. package/dist/components/custom-forms/index.js +1 -1
  320. package/dist/components/department-add-modal/index.esm.js +1 -1
  321. package/dist/components/department-add-modal/index.js +1 -1
  322. package/dist/components/designation-add-modal/index.esm.js +1 -1
  323. package/dist/components/designation-add-modal/index.js +1 -1
  324. package/dist/components/editor/custom-editor/index.esm.js +1 -1
  325. package/dist/components/editor/index.esm.js +1 -1
  326. package/dist/components/examples/FlexibleReduxExample/index.esm.js +1 -1
  327. package/dist/components/examples/FlexibleReduxExample/index.js +1 -1
  328. package/dist/components/examples/index.esm.js +1 -1
  329. package/dist/components/examples/index.js +1 -1
  330. package/dist/components/filter/components/index.esm.js +1 -1
  331. package/dist/components/filter/components/index.js +1 -1
  332. package/dist/components/filter/components/value-editor/index.esm.js +1 -1
  333. package/dist/components/filter/components/value-editor/index.js +1 -1
  334. package/dist/components/filter/filter/index.esm.js +1 -1
  335. package/dist/components/filter/filter/index.js +1 -1
  336. package/dist/components/filter/index.esm.js +2 -2
  337. package/dist/components/filter/index.js +2 -2
  338. package/dist/components/footer/footer/index.esm.js +1 -1
  339. package/dist/components/footer/footer/index.js +1 -1
  340. package/dist/components/footer/index.esm.js +1 -1
  341. package/dist/components/footer/index.js +1 -1
  342. package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.esm.js +1 -1
  343. package/dist/components/form-control/form-builder/form-builder-element/dynamic-dependent-field/index.js +1 -1
  344. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.esm.js +1 -1
  345. package/dist/components/form-control/form-builder/form-builder-element/dynamic-select/index.js +1 -1
  346. package/dist/components/form-control/form-builder/form-builder-element/dynamic-text-editor/index.esm.js +1 -1
  347. package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.esm.js +1 -1
  348. package/dist/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/index.js +1 -1
  349. package/dist/components/form-control/form-builder/form-builder-element/index.esm.js +4 -4
  350. package/dist/components/form-control/form-builder/form-builder-element/index.js +3 -3
  351. package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.esm.js +1 -1
  352. package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/index.js +1 -1
  353. package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.esm.js +1 -1
  354. package/dist/components/form-control/form-builder/form-builder-element/select-configuration/index.js +1 -1
  355. package/dist/components/form-control/form-builder/form-builder-element/table/index.esm.js +1 -1
  356. package/dist/components/form-control/form-builder/form-builder-element/table/index.js +1 -1
  357. package/dist/components/form-control/form-builder/index.esm.js +4 -4
  358. package/dist/components/form-control/form-builder/index.js +3 -3
  359. package/dist/components/form-control/form-parser/form-parser/index.esm.js +1 -1
  360. package/dist/components/form-control/form-parser/form-parser/index.js +1 -1
  361. package/dist/components/form-control/form-parser/form-section/index.esm.js +1 -1
  362. package/dist/components/form-control/form-parser/form-section/index.js +1 -1
  363. package/dist/components/form-control/form-parser/index.esm.js +2 -2
  364. package/dist/components/form-control/form-parser/index.js +2 -2
  365. package/dist/components/form-control/index.esm.js +6 -6
  366. package/dist/components/form-control/index.js +5 -5
  367. package/dist/components/header/components/app-switcher/index.esm.js +1 -1
  368. package/dist/components/header/components/app-switcher/index.js +1 -1
  369. package/dist/components/header/components/global-search/index.esm.js +1 -1
  370. package/dist/components/header/components/global-search/index.js +1 -1
  371. package/dist/components/header/components/index.esm.js +1 -1
  372. package/dist/components/header/components/index.js +1 -1
  373. package/dist/components/header/components/notification-menu/index.esm.js +1 -1
  374. package/dist/components/header/components/notification-menu/index.js +1 -1
  375. package/dist/components/header/components/notification-menu/notification-menu/index.esm.js +1 -1
  376. package/dist/components/header/components/notification-menu/notification-menu/index.js +1 -1
  377. package/dist/components/header/header/index.esm.js +1 -1
  378. package/dist/components/header/header/index.js +1 -1
  379. package/dist/components/header/header-enhanced/index.esm.js +1 -1
  380. package/dist/components/header/header-enhanced/index.js +1 -1
  381. package/dist/components/header/index.esm.js +5 -5
  382. package/dist/components/header/index.js +3 -3
  383. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  384. package/dist/components/header/redux/index.esm.js +2 -2
  385. package/dist/components/header/redux/reducer/index.esm.js +1 -1
  386. package/dist/components/index.esm.js +36 -36
  387. package/dist/components/index.js +27 -27
  388. package/dist/components/inventory-reports-title-bar/index.esm.js +3 -3
  389. package/dist/components/inventory-reports-title-bar/index.js +1 -1
  390. package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.esm.js +1 -1
  391. package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar/index.js +1 -1
  392. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  393. package/dist/components/inventory-reports-title-bar/redux/index.esm.js +2 -2
  394. package/dist/components/inventory-reports-title-bar/redux/reducer/index.esm.js +1 -1
  395. package/dist/components/listing/index.esm.js +1 -1
  396. package/dist/components/listing/index.js +1 -1
  397. package/dist/components/listing/listing/index.esm.js +1 -1
  398. package/dist/components/listing/listing/index.js +1 -1
  399. package/dist/components/location-select/index.esm.js +1 -1
  400. package/dist/components/location-select/index.js +1 -1
  401. package/dist/components/material-editable-table/components/index.esm.js +1 -1
  402. package/dist/components/material-editable-table/components/index.js +1 -1
  403. package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js +1 -1
  404. package/dist/components/material-editable-table/components/inline-edit-fields/index.js +1 -1
  405. package/dist/components/material-editable-table/index.esm.js +2 -2
  406. package/dist/components/material-editable-table/index.js +2 -2
  407. package/dist/components/material-editable-table/material-editable-table/index.esm.js +1 -1
  408. package/dist/components/material-editable-table/material-editable-table/index.js +1 -1
  409. package/dist/components/material-table/components/index.esm.js +1 -1
  410. package/dist/components/material-table/components/index.js +1 -1
  411. package/dist/components/material-table/components/inline-edit-fields/index.esm.js +1 -1
  412. package/dist/components/material-table/components/inline-edit-fields/index.js +1 -1
  413. package/dist/components/material-table/index.esm.js +1 -1
  414. package/dist/components/material-table/index.js +1 -1
  415. package/dist/components/material-table/material-table/index.esm.js +1 -1
  416. package/dist/components/material-table/material-table/index.js +1 -1
  417. package/dist/components/page-navigator/components/index.esm.js +1 -1
  418. package/dist/components/page-navigator/components/index.js +1 -1
  419. package/dist/components/page-navigator/components/page-action/index.esm.js +1 -1
  420. package/dist/components/page-navigator/components/page-action/index.js +1 -1
  421. package/dist/components/page-navigator/index.esm.js +2 -2
  422. package/dist/components/page-navigator/index.js +2 -2
  423. package/dist/components/page-navigator/page-navigator/index.esm.js +1 -1
  424. package/dist/components/page-navigator/page-navigator/index.js +1 -1
  425. package/dist/components/parties-modal/index.esm.js +1 -1
  426. package/dist/components/parties-modal/index.js +1 -1
  427. package/dist/components/parties-modal/parties-modal/index.esm.js +1 -1
  428. package/dist/components/parties-modal/parties-modal/index.js +1 -1
  429. package/dist/components/providers/ERPUIProvider/index.esm.js +1 -1
  430. package/dist/components/providers/index.esm.js +1 -1
  431. package/dist/components/quick-approval-modal/index.esm.js +1 -1
  432. package/dist/components/quick-approval-modal/quick-approval-modal/index.esm.js +1 -1
  433. package/dist/components/reports/dynamic-report/dynamic-report/index.esm.js +1 -1
  434. package/dist/components/reports/dynamic-report/dynamic-rows/index.esm.js +1 -1
  435. package/dist/components/reports/dynamic-report/index.esm.js +2 -2
  436. package/dist/components/reports/index.esm.js +2 -2
  437. package/dist/components/reports-title-bar/index.esm.js +3 -3
  438. package/dist/components/reports-title-bar/index.js +1 -1
  439. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  440. package/dist/components/reports-title-bar/redux/index.esm.js +2 -2
  441. package/dist/components/reports-title-bar/redux/reducer/index.esm.js +1 -1
  442. package/dist/components/reports-title-bar/reports-title-bar/index.esm.js +1 -1
  443. package/dist/components/reports-title-bar/reports-title-bar/index.js +1 -1
  444. package/dist/components/rfq-response/index.esm.js +1 -1
  445. package/dist/components/rfq-response/index.js +1 -1
  446. package/dist/components/rfq-response/item-response-details/index.esm.js +1 -1
  447. package/dist/components/rfq-response/item-response-details/index.js +1 -1
  448. package/dist/components/schedule-report/index.esm.js +2 -2
  449. package/dist/components/schedule-report/index.js +2 -2
  450. package/dist/components/schedule-report/schedule-report/index.esm.js +1 -1
  451. package/dist/components/schedule-report/schedule-report/index.js +1 -1
  452. package/dist/components/schedule-report/schedule-report-modal/index.esm.js +1 -1
  453. package/dist/components/schedule-report/schedule-report-modal/index.js +1 -1
  454. package/dist/components/schedule-report/utils/common/index.esm.js +1 -1
  455. package/dist/components/searchable-select/index.esm.js +1 -1
  456. package/dist/components/searchable-select/index.js +1 -1
  457. package/dist/components/share-modal/index.esm.js +4 -4
  458. package/dist/components/share-modal/index.js +2 -2
  459. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  460. package/dist/components/share-modal/redux/index.esm.js +2 -2
  461. package/dist/components/share-modal/redux/reducer/index.esm.js +1 -1
  462. package/dist/components/share-modal/share-modal/index.esm.js +1 -1
  463. package/dist/components/share-modal/share-modal/index.js +1 -1
  464. package/dist/components/share-modal/share-modal-enhanced/index.esm.js +1 -1
  465. package/dist/components/share-modal/share-modal-enhanced/index.js +1 -1
  466. package/dist/components/team-add-modal/index.esm.js +1 -1
  467. package/dist/components/team-add-modal/index.js +1 -1
  468. package/dist/components/uom-field-wrapper/index.esm.js +1 -1
  469. package/dist/components/uom-field-wrapper/index.js +1 -1
  470. package/dist/components/uom-field-wrapper/uom-field-wrapper/index.esm.js +1 -1
  471. package/dist/components/uom-field-wrapper/uom-field-wrapper/index.js +1 -1
  472. package/dist/components/upload-excel/index.esm.js +1 -1
  473. package/dist/components/upload-excel/upload-excel/index.esm.js +1 -1
  474. package/dist/components/vendor-ai-summary/index.esm.js +1 -1
  475. package/dist/components/vendor-ai-summary/index.js +1 -1
  476. package/dist/constants/index.esm.js +145 -143
  477. package/dist/constants/index.js +5 -3
  478. package/dist/constants/index.js.map +1 -1
  479. package/dist/hooks/index.esm.js +6 -6
  480. package/dist/hooks/index.js +1 -1
  481. package/dist/hooks/use-translations/index.esm.js +1 -1
  482. package/dist/hooks/use-translations/index.js +1 -1
  483. package/dist/hooks/useAccountSetting/index.esm.js +1 -1
  484. package/dist/hooks/useCheckSkuAndName/index.esm.js +1 -1
  485. package/dist/hooks/useReduxIntegration/index.esm.js +1 -1
  486. package/dist/hooks/useUniquenessCheck/index.esm.js +1 -1
  487. package/dist/images/index.esm.js +5 -5
  488. package/dist/images/index.esm.js.map +1 -1
  489. package/dist/images/index.js +5 -5
  490. package/dist/images/index.js.map +1 -1
  491. package/dist/index.esm.js +232 -235
  492. package/dist/index.esm.js.map +1 -1
  493. package/dist/index.js +64 -67
  494. package/dist/index.js.map +1 -1
  495. package/dist/layout/fullScreen/index.esm.js +1 -1
  496. package/dist/layout/fullScreen/index.js +1 -1
  497. package/dist/layout/index.esm.js +2 -2
  498. package/dist/layout/index.js +2 -2
  499. package/dist/layout/sidebarScreen/index.esm.js +1 -1
  500. package/dist/layout/sidebarScreen/index.js +1 -1
  501. package/dist/redux/index.esm.js +3 -3
  502. package/dist/runtime/index.esm.js +4 -4
  503. package/dist/runtime/index.js +2 -2
  504. package/dist/src/components/chat-bot/chat-bot-welcome.d.ts +2 -1
  505. package/dist/src/components/chat-bot/chat-bot.d.ts +5 -1
  506. package/dist/src/constants/defaultColumns.d.ts +1 -0
  507. package/dist/src/constants/pathnames/pathname.procurement.d.ts +4 -0
  508. package/dist/src/layout/fullScreen/fullScreen.d.ts +1 -0
  509. package/dist/src/views/template-editor/components/EditorCanvas.d.ts +12 -30
  510. package/dist/src/views/template-editor/components/EditorHeader.d.ts +0 -6
  511. package/dist/src/views/template-editor/components/EditorSection.d.ts +0 -1
  512. package/dist/src/views/template-editor/components/SectionFlowEditor.d.ts +3 -2
  513. package/dist/src/views/template-editor/components/SectionFormatPanel.d.ts +1 -2
  514. package/dist/src/views/template-editor/components/controllers/TableControls.d.ts +0 -23
  515. package/dist/src/views/template-editor/components/controllers/TextControls.d.ts +0 -3
  516. package/dist/src/views/template-editor/types/editor.d.ts +108 -20
  517. package/dist/src/views/template-editor/utils/common.d.ts +1 -10
  518. package/dist/src/views/template-editor/utils/constant.d.ts +1 -4
  519. package/dist/style.css +100 -4629
  520. package/dist/utils/api/index.esm.js +1 -1
  521. package/dist/utils/common/index.esm.js +1 -1
  522. package/dist/utils/common-utility/index.esm.js +1 -1
  523. package/dist/utils/export-filters/index.esm.js +1 -0
  524. package/dist/utils/export-filters/index.esm.js.map +1 -1
  525. package/dist/utils/export-filters/index.js +1 -0
  526. package/dist/utils/export-filters/index.js.map +1 -1
  527. package/dist/utils/index.esm.js +8 -8
  528. package/dist/utils/server/index.esm.js +2 -2
  529. package/dist/utils/text-measurement/index.esm.js +1 -1
  530. package/dist/views/afterAuth/dashboard/index.esm.js +1 -1
  531. package/dist/views/afterAuth/dashboard/index.js +1 -1
  532. package/dist/views/afterAuth/index.esm.js +2 -2
  533. package/dist/views/afterAuth/index.js +2 -2
  534. package/dist/views/afterAuth/page-view/index.esm.js +1 -1
  535. package/dist/views/afterAuth/page-view/index.js +1 -1
  536. package/dist/views/form-builder/custom-form/index.esm.js +1 -1
  537. package/dist/views/form-builder/custom-form/index.js +1 -1
  538. package/dist/views/form-builder/element-edit-forms/index.esm.js +1 -1
  539. package/dist/views/form-builder/form-fields/index.esm.js +1 -1
  540. package/dist/views/form-builder/form-fields/index.js +1 -1
  541. package/dist/views/form-builder/index.esm.js +5 -5
  542. package/dist/views/form-builder/index.js +3 -3
  543. package/dist/views/form-builder/redux/index.esm.js +1 -1
  544. package/dist/views/form-builder/utils/index.esm.js +1 -1
  545. package/dist/views/form-builder/utils/index.js +1 -1
  546. package/dist/views/index.esm.js +34 -39
  547. package/dist/views/index.esm.js.map +1 -1
  548. package/dist/views/index.js +31 -36
  549. package/dist/views/index.js.map +1 -1
  550. package/dist/views/template-editor/add-template/index.esm.js +1 -1
  551. package/dist/views/template-editor/add-template/index.js +1 -1
  552. package/dist/views/template-editor/components/index.esm.js +6 -7
  553. package/dist/views/template-editor/components/index.esm.js.map +1 -1
  554. package/dist/views/template-editor/components/index.js +3 -4
  555. package/dist/views/template-editor/components/index.js.map +1 -1
  556. package/dist/views/template-editor/edit-section-modal/index.esm.js +1 -1
  557. package/dist/views/template-editor/index.esm.js +20 -25
  558. package/dist/views/template-editor/index.esm.js.map +1 -1
  559. package/dist/views/template-editor/index.js +11 -16
  560. package/dist/views/template-editor/index.js.map +1 -1
  561. package/dist/views/template-editor/routes/index.esm.js +1 -1
  562. package/dist/views/template-editor/routes/index.js +1 -1
  563. package/dist/views/template-editor/template-modal/index.esm.js +1 -1
  564. package/dist/views/template-editor/template-modal/index.js +1 -1
  565. package/dist/views/template-editor/template-name-modal/index.esm.js +1 -1
  566. package/dist/views/template-editor/template-name-modal/index.js +1 -1
  567. package/dist/views/template-editor/templates/index.esm.js +1 -1
  568. package/dist/views/template-editor/templates/index.js +1 -1
  569. package/dist/views/template-editor/utils/index.esm.js +6 -10
  570. package/dist/views/template-editor/utils/index.js +2 -6
  571. package/dist/views/template-editor/utils/index.js.map +1 -1
  572. package/package.json +1 -1
  573. package/dist/chunks/EditorSection-BLGcgQFm.esm.js +0 -849
  574. package/dist/chunks/EditorSection-BLGcgQFm.esm.js.map +0 -1
  575. package/dist/chunks/EditorSection-D6yaBfjP.js +0 -848
  576. package/dist/chunks/EditorSection-D6yaBfjP.js.map +0 -1
  577. package/dist/chunks/SectionFlowEditor-Dp-mjWT9.esm.js +0 -12543
  578. package/dist/chunks/SectionFlowEditor-Dp-mjWT9.esm.js.map +0 -1
  579. package/dist/chunks/SectionFlowEditor-Dz1SuCm2.js +0 -12542
  580. package/dist/chunks/SectionFlowEditor-Dz1SuCm2.js.map +0 -1
  581. package/dist/chunks/add-template-CUPbU0z7.js +0 -10
  582. package/dist/chunks/add-template-CUPbU0z7.js.map +0 -1
  583. package/dist/chunks/add-template-CxvhzFMF.esm.js +0 -11
  584. package/dist/chunks/add-template-CxvhzFMF.esm.js.map +0 -1
  585. package/dist/chunks/chat-bot-2Ga_xA_K.js.map +0 -1
  586. package/dist/chunks/chat-bot-DO3vAGxA.esm.js.map +0 -1
  587. package/dist/chunks/common-BgXEAs_y.esm.js +0 -851
  588. package/dist/chunks/common-BgXEAs_y.esm.js.map +0 -1
  589. package/dist/chunks/common-D6T6NGWY.js +0 -850
  590. package/dist/chunks/common-D6T6NGWY.js.map +0 -1
  591. package/dist/chunks/common-utility-CS_sNoAC.esm.js.map +0 -1
  592. package/dist/chunks/constant-BXPcBhJN.esm.js.map +0 -1
  593. package/dist/chunks/constant-BXeJD4Af.js.map +0 -1
  594. package/dist/chunks/edit-section-modal-HihKbN6K.esm.js.map +0 -1
  595. package/dist/chunks/fullScreen-Cz3FIdU4.esm.js.map +0 -1
  596. package/dist/chunks/fullScreen-h0JqBN4O.js.map +0 -1
  597. package/dist/chunks/template-modal-D7aLacan.esm.js.map +0 -1
  598. package/dist/chunks/template-modal-Df7gF4QI.js.map +0 -1
  599. package/dist/chunks/template-name-modal-ClreVUaz.js.map +0 -1
  600. package/dist/chunks/template-name-modal-Dwe7U72p.esm.js.map +0 -1
  601. package/dist/chunks/templates-9ZMHwRR6.esm.js.map +0 -1
  602. package/dist/chunks/templates-DCXbeOtH.js.map +0 -1
  603. package/dist/src/views/template-editor/components/EditorCanvas/FreeCanvas.d.ts +0 -34
  604. package/dist/src/views/template-editor/components/EditorCanvas/FreeElement.d.ts +0 -30
  605. package/dist/src/views/template-editor/components/stationery/StationeryPreview.d.ts +0 -24
  606. package/dist/src/views/template-editor/components/stationery/StationerySidebar.d.ts +0 -9
  607. package/dist/src/views/template-editor/engine/ai.d.ts +0 -12
  608. package/dist/src/views/template-editor/engine/app.d.ts +0 -1
  609. package/dist/src/views/template-editor/engine/controls.d.ts +0 -4
  610. package/dist/src/views/template-editor/engine/design-canvas.d.ts +0 -24
  611. package/dist/src/views/template-editor/engine/editor.d.ts +0 -17
  612. package/dist/src/views/template-editor/engine/engine.d.ts +0 -18
  613. package/dist/src/views/template-editor/engine/icons.d.ts +0 -91
  614. package/dist/src/views/template-editor/engine/letterpads.d.ts +0 -1
  615. package/dist/src/views/template-editor/engine/model.d.ts +0 -20
  616. package/dist/src/views/template-editor/engine/paginator.d.ts +0 -30
  617. package/dist/src/views/template-editor/engine/picker.d.ts +0 -20
  618. package/dist/src/views/template-editor/engine/schema.d.ts +0 -647
  619. package/dist/src/views/template-editor/engine/stationery-app.d.ts +0 -10
  620. package/dist/src/views/template-editor/engine/stationery-doc.d.ts +0 -62
  621. package/dist/src/views/template-editor/engine/stationery-free-element.d.ts +0 -22
  622. package/dist/src/views/template-editor/engine/stationery-store.d.ts +0 -154
  623. package/dist/src/views/template-editor/engine/templatebuilder.d.ts +0 -51
  624. package/dist/src/views/template-editor/engine/templates.d.ts +0 -11
  625. package/dist/src/views/template-editor/icons/custom-styled-icon.d.ts +0 -7
  626. package/dist/src/views/template-editor/icons/edit.d.ts +0 -4
  627. package/dist/src/views/template-editor/icons/trash.d.ts +0 -4
  628. package/dist/src/views/template-editor/types/stationery.d.ts +0 -66
  629. package/dist/src/views/template-editor/utils/compiler.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"searchable-select-DVUCWWti.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx","../../src/components/material-table/components/inline-edit-fields.tsx","../../src/components/material-table/material-table.tsx","../../src/components/parties-modal/parties-modal.tsx","../../src/components/team-add-modal.tsx","../../src/components/department-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/location-add-modal/location-add-modal.tsx","../../src/components/designation-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/fixed-asset-item-add-modal.tsx","../../src/components/payment-term-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select-configuration.tsx","../../src/components/searchable-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\nimport { dynamicSelectAdd } from './select-configuration';\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n MenuItemProps,\n OutlinedInput,\n Tooltip\n} from '@mui/material';\nimport { debounce } from 'lodash';\nimport { sortBy } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { Add, Close } from '@mui/icons-material';\n\nimport Select from '../../../select/select';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport Chip from '../../../chip/chip';\nimport { MoreIcon } from '../../../icons';\nimport { fetchApi } from '../../../../utils/api';\nimport './element.scss';\nimport { useAuth } from '@/contexts';\nimport { useApi, useLanguage } from '@/hooks';\nimport { useDefaultConfig } from '@/hooks/useSetDefaultConfig';\nimport { auth } from '../../../../constants/auth';\n\n\ninterface DynamicSelectProps {\n formControl: any;\n fieldArrayName: string;\n name: string;\n label?: string;\n placeholder?: string;\n defaultValue?: any;\n required?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n options?: Array<{ label: string; value: any }>;\n multiple?: boolean;\n searchable?: boolean;\n onSearch?: (query: string) => void;\n}\n\n// Types\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface IMenuItemsProps extends MenuItemProps {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: IDynamicSearchSelectProps;\n disabledIds: (string | number)[];\n onChange: (value: string | string[]) => void;\n handleChange?: (value: string | string[]) => void;\n hasParent: boolean;\n t: (key: string) => string;\n // onFooterClick?: () => void;\n}\n\ninterface IDynamicSearchSelectProps {\n name: string;\n placeholder: string;\n label: string;\n size?: 'small' | 'medium';\n options: IOption[];\n formControl: Control<any>;\n defaultValue?: string | string[];\n fieldArrayName: string;\n id?: string;\n required?: boolean;\n is_multiselect?: boolean;\n position?: number;\n formType?: string;\n typeOfField?: string;\n disabled?: boolean;\n onChipRemove?: (value: string) => void;\n enable_footer?: boolean;\n footer_action?: string;\n onFooterClick?: () => void;\n is_loading?: boolean;\n selectedLabel?: string;\n isInternal?: boolean;\n disabledIds?: (string | number)[];\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\n attributes?: string[];\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n sortOrder?: string;\n apiType?: string;\n handleOptions?: (value: any) => void;\n filterKey?: string;\n customeFilter?: Record<string, any>;\n refresh?: boolean;\n addType?: string;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n isMergeOptions?: boolean;\n showItemTooltip?: boolean;\n modalComponentProps?: any;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\n// Helper function to generate menu items\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n // field,\n disabledIds,\n onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick\n}: IMenuItemsProps): React.ReactElement[] => {\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{t(placeholder)}</em>\n </Typography>\n </MenuItem>\n );\n }\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\n\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n onChange(updatedValues);\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n if (Array.isArray(options) && options.length > 0) {\n options.forEach((option) => {\n items.push(\n <MenuItem\n value={option.value}\n key={option.value}\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n if (option.isGroup && Array.isArray(option.options)) {\n option.options.forEach((opt) => {\n items.push(\n <MenuItem\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.id || opt.value)}\n sx={{ pl: 5 }}\n key={`${option.value}-${opt.value}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values.includes(opt.value))}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n }\n\n // if (field.enable_footer) {\n\n // }\n\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\n// Selected items component\nconst SelectedItems: React.FC<{\n data: (string | number)[];\n options: IOption[];\n}> = ({ data, options }) => {\n const displayTitle = data.map(\n (selectedItem) =>\n options?.find((option) => option.value == selectedItem)?.label || ''\n );\n const filteredDisplayTitle = displayTitle.filter(Boolean);\n\n return (\n <Typography\n type='s4'\n color='inherit'\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\n >\n {filteredDisplayTitle.slice(0, 4).join(', ')}\n {data.length > 4 && (\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\n )}\n </Typography>\n );\n};\n\nconst Loading = () => (\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\n)\n\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\n const watchedValue = useWatch({\n control: props.formControl,\n name: `${props.fieldArrayName}.${props.name}`\n });\n\n const { callApi } = useApi()\n // In MFE mode each federated module ships its own copy of react-hook-form,\n // so the FormContext created by the host's FormProvider is invisible here\n // and useFormContext() returns null.\n // The internal `control` object (passed as formControl prop) does NOT expose\n // setValue — that lives only on the useForm() return value. We build a\n // stable fallback using useCallback so that useDefaultConfig's useEffect\n // (which has setValue as a dependency) does NOT re-fire on every render.\n const formContext = useFormContext();\n const { setValue: contextSetValue } = formContext || {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mfeFallbackSetValue = useCallback((fieldPath: string, value: any) => {\n const ctrl = props.formControl as any;\n if (!ctrl) return;\n // Write into internal form values\n const parts = fieldPath.split('.');\n let obj = ctrl._formValues;\n for (let i = 0; i < parts.length - 1; i++) {\n if (!obj[parts[i]]) obj[parts[i]] = {};\n obj = obj[parts[i]];\n }\n obj[parts[parts.length - 1]] = value;\n // Notify RHF subscribers so React re-renders\n ctrl._subjects?.state?.next({ name: fieldPath, values: { ...ctrl._formValues } });\n // props.formControl is stable for the lifetime of the form\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.formControl]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const setValue: any = contextSetValue ?? mfeFallbackSetValue;\n const { t } = useTranslation();\n const { isRtl } = useLanguage();\n const { user: authUser } = useAuth();\n const contextUser = useMemo(() => {\n if (authUser) return authUser;\n try {\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\n return stored ? JSON.parse(stored) : null;\n } catch {\n return null;\n }\n }, [authUser]);\n const selectRef = useRef<HTMLDivElement>(null);\n\n // State management\n const [options, setOptions] = useState<IOption[]>([]);\n const [selectedValue, setSelectedValue] = useState<any>(null);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\n const [addConfig, setAddConfig] = useState<any>(null);\n\n // Modal states\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n // Props destructuring with defaults\n const {\n handleOptions,\n isInternal = false,\n disabledIds = [],\n getSelectedData,\n attributes = [],\n filterKey = 'id',\n customeFilter = {},\n refresh,\n handleChange,\n hasParent = false,\n sortOrder = 'id:-1',\n apiType,\n addType,\n showCancelButton = true,\n customFetchApi,\n isMergeOptions = false,\n } = props;\n\n const showItemTooltip = props.showItemTooltip ?? (apiType === 'salesItems');\n\n const limit = 25;\n\n // Memoized values\n // Memoized values\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return (!apiType && !customFetchApi) || (isInternal ? (apiType || customFetchApi) && props.options?.length == 0 ? false : true : false);\n }, [isInternal, apiType, customFetchApi, props.options?.length, isMergeOptions]);\n\n\n //eslint-disable-next-line\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\n\n\n\n\n const { defaultOptions = [] } = useDefaultConfig({\n props,\n setValue,\n isInternalOptions,\n watchedValue\n });\n\n\n // Local search function\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (props.options && props.options.length > 0) ? props.options : (defaultOptions || []);\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? currentOptions?.reduce((acc: IOption[], opt: IOption) => {\n const searchedOptions = opt.options?.filter((item: IOption) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : currentOptions?.filter((opt: IOption) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n //eslint-disable-next-line\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line\n }, [props.options, hasParent, defaultOptions]);\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n let selectedValues = Array.isArray(value) ? value : [value];\n selectedValues = selectedValues.map((item) => Number(item));\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index == -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Filtered options with pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, watchedValue);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, watchedValue);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Helper to get selected item data for tooltip\n const getSelectedDataOptions = useMemo(() => {\n if (!watchedValue || !filteredOptions.length) return null;\n const selected = filteredOptions.find(opt =>\n opt.id === watchedValue || opt.value === watchedValue\n );\n return selected || null;\n }, [watchedValue, filteredOptions]);\n\n // API Functions\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters: flt,\n limit,\n skip: (page - 1) * limit,\n select: attributes?.join(','),\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters: flt,\n select: attributes,\n order: sortOrder\n }\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n const newOptions = append ? [...options, ...data] : data;\n\n updateOptions(newOptions, append);\n handleSelectedValue(data);\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line\n }, [apiType, customFetchApi, options, attributes, sortOrder, limit, cf]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, cf, nextPage, true);\n }\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\n\n // Update options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? options : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [options, selectedOptions, getUniqueOptions]);\n\n // Handle selected value\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\n if (!watchedValue) return;\n let filterValue = props.is_multiselect ? watchedValue : [watchedValue];\n filterValue = Array.isArray(filterValue) ? filterValue?.filter(i => i) : [];\n filterValue = Array.isArray(filterValue) ? filterValue?.map((item) => Number(item)) : [];\n const isInOptions = updateOptions?.filter((item) =>\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\n );\n\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\n return true;\n }\n return false;\n //eslint-disable-next-line\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\n\n // Fetch options by ID\n const fetchIdOptions = useCallback(async () => {\n if (open) return;\n if (await handleSelectedValue(filteredOptions)) return;\n\n const condition = props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.length > 0 :\n Boolean(watchedValue);\n\n if (condition) {\n setInitialLoading(true);\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\n setInitialLoading(false);\n\n if (response.length == 0 && setValue && !isInternalOptions) {\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\n }\n }\n //eslint-disable-next-line\n }, [open, watchedValue, JSON.stringify(cf)]);\n\n // Initial fetch\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\n\n if (condition) {\n setPrevFilter(cf);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, cf, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cf, isInternalOptions, isAlreadyLoaded]);\n\n // Debounced search\n const debouncedSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', cf, 1, false);\n }\n if (searchTerm.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, cf, 1, false);\n }\n }, 700),\n //eslint-disable-next-line\n [isInternalOptions, searchInitiate, cf]\n );\n\n // Reset value function\n const resetValue = useCallback((field: any) => {\n field.onChange(props.is_multiselect ? [] : null);\n if (getSelectedData) {\n getSelectedData(null, props.name);\n }\n }, [props.is_multiselect, props.name, getSelectedData]);\n\n // Handle close\n const handleClose = useCallback(() => {\n setOpen(false);\n if (searchQuery.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }, [searchQuery]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n\n callApi({\n apiFunc: () => addConfig.api(payload),\n successMessage: `${props.label} ${t('common.added_successfully')}`,\n loadingState: setIsAddLoading,\n onSuccess: async (result) => {\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', cf, 1, false);\n }\n if (result && result.data) {\n const newValue = props.is_multiselect\n ? [...(watchedValue || []), result.data.id]\n : result.data.id;\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\n if (getSelectedData) {\n getSelectedData(result.data, props.name, true);\n }\n }\n },\n onError: () => {\n setIsAddLoading(false);\n }\n })\n\n\n\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\n\n // Effects\n useEffect(() => {\n if (handleOptions) {\n handleOptions(selectedValue);\n }\n }, [handleOptions, selectedValue]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (refresh) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n fetchOptions('', cf, 1, false);\n }\n }, [refresh, fetchOptions, cf]);\n\n useEffect(() => {\n if (open) {\n debouncedSearch(searchQuery);\n }\n return () => debouncedSearch.cancel();\n }, [searchQuery, open, debouncedSearch]);\n\n useEffect(() => {\n if (watchedValue && !open) {\n const selectedData = options?.filter((item) =>\n props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\n (item.id || item.value) == watchedValue\n );\n setSelectedOptions(selectedData || []);\n }\n }, [watchedValue, options, props.is_multiselect]);\n\n const removeUndefined = useCallback((selectOptions: any[]) => {\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\n }, []);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType);\n setAddConfig(config);\n }, [addType])\n\n\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\n {showItemTooltip ? (\n <Tooltip\n title={getSelectedDataOptions?.label ? String(getSelectedDataOptions.label) : ''}\n placement='top'\n arrow\n slotProps={{\n popper: {\n modifiers: [{ name: 'offset', options: { offset: [0, -25] } }],\n },\n tooltip: {\n sx: { maxWidth: 500 },\n },\n }}\n >\n <span>\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n </span>\n </Tooltip>\n ) : (\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n )}\n\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n\n {props.is_multiselect && Array.isArray(field.value) && (\n <SelectedItems\n data={field.value}\n options={filteredOptions}\n />\n )}\n </>\n )}\n />\n );\n});\nexport default DynamicSearchSelect;","import React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseState\n} from 'react';\n\nimport { Box } from '@mui/material';\n\nimport Typography from '../../typography/typography';\nimport DatePicker from '../../date-picker/date-picker';\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\nimport TextField from '../../text-field/text-field';\nimport UploadMedia from '../../upload-media/upload-media';\n\nimport * as yup from 'yup';\nimport _ from 'lodash';\nimport dayjs from 'dayjs';\nimport PhoneInput from '../../phone-input/phone-input';\nimport Checkbox from '../../checkbox/checkbox';\nimport SearchableSelect from '../../searchable-select';\n\n/* ------------------------------------------------------------------ *\n * Types\n * ------------------------------------------------------------------ */\n\ntype ValuesCache = Record<string, any>;\n\ninterface IInlineEditFields {\n\tcell?: any;\n\tcolumn: any;\n\trow: any;\n\ttable?: any;\n\tcol: any;\n\tcallback?: (value: any, column: any, rowId: any) => any;\n\terrors: Record<string, string>;\n\tvalidationSchema: any;\n\tsetValidationErrors: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n\tonChangeRowField?: (\n\t\tevent: any,\n\t\ttype: string,\n\t\trow: any,\n\t\tcol: any,\n\t\tselectedData: any\n\t) => any;\n\tgetSelectedData?: (fieldName: string, selectedRow: any) => any;\n}\n\n/* ------------------------------------------------------------------ *\n * Module level constants and helpers (allocated once, not per render)\n * ------------------------------------------------------------------ */\n\nconst EMPTY_EDIT_PROPERTIES = Object.freeze({}) as Record<string, any>;\n\n/**\n * Marks a `_valuesCache` object as already normalised by this component.\n * A Symbol key is invisible to Object.keys / JSON.stringify / lodash, so it\n * never leaks into the payload sent to the API, yet it survives the object\n * spreads we do on every change. `Symbol.for` keeps it stable across module\n * federation remotes that each get their own copy of this bundle.\n */\nconst CACHE_NORMALISED = Symbol.for('erpsquad.inlineEdit.cacheNormalised');\n\nconst isCacheNormalised = (cache: any): boolean =>\n\tBoolean(cache && cache[CACHE_NORMALISED]);\n\nconst markCacheNormalised = (cache: ValuesCache): ValuesCache => {\n\t(cache as any)[CACHE_NORMALISED] = true;\n\treturn cache;\n};\n\nconst isBlank = (value: any): boolean =>\n\tvalue === undefined || value === null || value === '';\n\nconst shallowEqual = (a: ValuesCache = {}, b: ValuesCache = {}): boolean => {\n\tif (a === b) return true;\n\tconst aKeys = Object.keys(a);\n\tconst bKeys = Object.keys(b);\n\tif (aKeys.length !== bKeys.length) return false;\n\treturn aKeys.every((key) => Object.is(a[key], b[key]));\n};\n\n/* ------------------------------------------------------------------ *\n * Row scoped pub/sub\n * Replaces the global window CustomEvent bus. Only the cells belonging to\n * the same row are woken up, instead of every editing cell on the page.\n * ------------------------------------------------------------------ */\n\ntype CacheListener = (cache: ValuesCache) => void;\n\nconst rowSubscribers = new Map<string, Set<CacheListener>>();\n\nconst subscribeToRow = (rowId: string, listener: CacheListener) => {\n\tlet listeners = rowSubscribers.get(rowId);\n\tif (!listeners) {\n\t\tlisteners = new Set();\n\t\trowSubscribers.set(rowId, listeners);\n\t}\n\tlisteners.add(listener);\n\n\treturn () => {\n\t\tlisteners?.delete(listener);\n\t\tif (listeners && listeners.size === 0) rowSubscribers.delete(rowId);\n\t};\n};\n\nconst publishRowCache = (rowId: string, cache: ValuesCache) => {\n\trowSubscribers.get(rowId)?.forEach((listener) => listener(cache));\n};\n\n/* ------------------------------------------------------------------ *\n * Value resolution\n * ------------------------------------------------------------------ */\n\n/**\n * Resolves the value a field should start with, straight from `row.original`.\n *\n * THE FIX: when a column declares a `valueKey` that differs from its own\n * accessor id, the accessor holds the human readable label (`item` -> \"Steel\n * Coil\") while the bound value lives at the `valueKey` (`item_id` -> 42).\n * In that situation we must NEVER fall back to the accessor, otherwise the\n * label ends up in the payload as if it were the id. Date variants are the\n * one exception, where the accessor legitimately carries a date string.\n */\nconst readInitialValue = (mrtColumn: any, row: any): any => {\n\tconst columnDef = mrtColumn?.columnDef ?? {};\n\tconst columnId = mrtColumn?.id;\n\tconst {\n\t\tvalueKey,\n\t\tis_multiple: isMultiple,\n\t\tdefaultValue\n\t} = (columnDef.editProperties ?? EMPTY_EDIT_PROPERTIES) as Record<string, any>;\n\n\t// Per cell variant. The previous implementation leaked the host cell's\n\t// variant into every other column's resolution.\n\tconst variant = columnDef.editVariant;\n\n\tconst accessorValue = row?.original?.[columnId];\n\tconst boundValue = valueKey ? _.get(row?.original, valueKey) : accessorValue;\n\n\t// Fallback to the accessor only when it cannot be a label.\n\tconst accessorIsSafeFallback = !valueKey || valueKey === columnId;\n\tconst rawValue =\n\t\tboundValue !== undefined\n\t\t\t? boundValue\n\t\t\t: accessorIsSafeFallback\n\t\t\t\t? accessorValue\n\t\t\t\t: undefined;\n\n\tif (variant === 'select' && isMultiple) {\n\t\tif (isBlank(boundValue)) return defaultValue ?? [];\n\t\treturn Array.isArray(boundValue) ? boundValue : [boundValue];\n\t}\n\n\tif (variant === 'date' || variant === 'date_time') {\n\t\tconst dateSource = boundValue !== undefined ? boundValue : accessorValue;\n\t\tif (isBlank(dateSource)) return undefined;\n\t\treturn dayjs(dateSource).isValid() ? dayjs(dateSource) : undefined;\n\t}\n\n\tif (variant === 'select') {\n\t\treturn isBlank(boundValue) ? defaultValue ?? '' : boundValue;\n\t}\n\n\tif (variant === 'checkbox') {\n\t\treturn isBlank(rawValue) ? Boolean(defaultValue) : Boolean(rawValue);\n\t}\n\n\treturn isBlank(rawValue) && defaultValue !== undefined ? defaultValue : rawValue;\n};\n\n/** Builds the normalised cache for every editable cell of the row, once. */\nconst buildInitialCache = (row: any): ValuesCache => {\n\tconst cache: ValuesCache = {};\n\n\trow.getAllCells().forEach((cell: any) => {\n\t\tconst enableEditing = cell.column.columnDef?.enableEditing;\n\t\tif (enableEditing === undefined || enableEditing === true) {\n\t\t\tcache[cell.column.id] = readInitialValue(cell.column, row);\n\t\t}\n\t});\n\n\treturn markCacheNormalised(cache);\n};\n\n/** Normalises the many shapes the child components emit into a raw value. */\nconst extractValue = (event: any, type?: string): any => {\n\tswitch (type) {\n\t\tcase 'date':\n\t\tcase 'file':\n\t\tcase 'image':\n\t\tcase 'phone':\n\t\t\treturn event;\n\t\tcase 'checkbox':\n\t\t\treturn event?.target?.checked;\n\t\tdefault:\n\t\t\treturn event?.target ? event.target.value : event;\n\t}\n};\n\n/* ------------------------------------------------------------------ *\n * Component\n * ------------------------------------------------------------------ */\n\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\n\tcolumn,\n\trow,\n\tcol,\n\terrors,\n\tvalidationSchema,\n\tsetValidationErrors,\n\tonChangeRowField,\n\tgetSelectedData\n}) => {\n\tconst [values, setValues] = useState<ValuesCache>(() => row?._valuesCache ?? {});\n\tconst [customFilter, setCustomFilter] = useState<any>(null);\n\n\tconst editVariant = col?.editVariant;\n\t// Stable reference: `|| {}` allocated a fresh object on every render, which\n\t// invalidated every hook that depended on it.\n\tconst fieldProperties: Record<string, any> =\n\t\tcolumn.columnDef?.editProperties ?? EMPTY_EDIT_PROPERTIES;\n\n\tconst columnId = column.id;\n\tconst rowId = row.id;\n\n\t/* -------------------------------------------------------------- *\n\t * 1. Cross cell synchronisation (row scoped)\n\t * -------------------------------------------------------------- */\n\tuseEffect(\n\t\t() =>\n\t\t\tsubscribeToRow(rowId, (cache) => {\n\t\t\t\t// Bail out when nothing this cell can observe actually moved.\n\t\t\t\t// The cell reads its own value, but `disable()` and\n\t\t\t\t// `customeFilter()` receive the whole cache, so a shallow\n\t\t\t\t// compare of the cache is the correct granularity here.\n\t\t\t\tsetValues((prev) => (shallowEqual(prev, cache) ? prev : cache));\n\t\t\t}),\n\t\t[rowId]\n\t);\n\n\t/* -------------------------------------------------------------- *\n\t * 2. One time cache normalisation, per row instead of per cell\n\t * -------------------------------------------------------------- */\n\tuseEffect(() => {\n\t\tconst existing = row._valuesCache;\n\n\t\tif (isCacheNormalised(existing)) {\n\t\t\t// A sibling cell already normalised this row, just adopt it.\n\t\t\tsetValues(existing);\n\t\t\treturn;\n\t\t}\n\n\t\tconst seeded = buildInitialCache(row);\n\t\trow._valuesCache = seeded;\n\t\tsetValues(seeded);\n\t\tpublishRowCache(rowId, seeded);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowId]);\n\n\t/* -------------------------------------------------------------- *\n\t * 3. Custom filter resolution (state, not a ref, so the select\n\t * actually re-renders once the async filter resolves)\n\t * -------------------------------------------------------------- */\n\tconst rawCustomFilter = fieldProperties.customeFilter;\n\n\tuseEffect(() => {\n\t\tif (editVariant !== 'select' || rawCustomFilter === undefined) return;\n\n\t\tif (typeof rawCustomFilter !== 'function') {\n\t\t\tsetCustomFilter(rawCustomFilter ?? null);\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tconst filter = await rawCustomFilter(row, row._valuesCache);\n\t\t\t\tif (!cancelled) setCustomFilter(filter ?? null);\n\t\t\t} catch {\n\t\t\t\tif (!cancelled) setCustomFilter(null);\n\t\t\t}\n\t\t})();\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t\t// `values` is the dependency that represents \"some field in this row\n\t\t// changed\", which is what a dependent filter reacts to.\n\t}, [rawCustomFilter, editVariant, row, values]);\n\n\t/* -------------------------------------------------------------- *\n\t * 4. Derived state\n\t * -------------------------------------------------------------- */\n\n\tconst isFieldDisabled = useMemo(() => {\n\t\tconst { disable } = fieldProperties;\n\t\tif (typeof disable === 'function') {\n\t\t\treturn Boolean(disable(row, row._valuesCache));\n\t\t}\n\t\treturn Boolean(disable);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [fieldProperties, row, values]);\n\n\tconst shouldAutoFocus = useMemo(() => {\n\t\tconst firstEditable = row\n\t\t\t.getAllCells()\n\t\t\t.map((cell: any) => cell.column.columnDef)\n\t\t\t.find(\n\t\t\t\t(def: any) =>\n\t\t\t\t\tdef?.enableEditing === undefined || def?.enableEditing === true\n\t\t\t);\n\t\treturn firstEditable?.accessorKey === columnId;\n\t}, [row, columnId]);\n\n\t// Correct id based default, shared by the field and the initial paint,\n\t// so the inputs are never uncontrolled on the very first render.\n\tconst columnDefaultValue = useMemo(\n\t\t() => readInitialValue(column, row),\n\t\t[column, row]\n\t);\n\n\tconst currentValue =\n\t\tvalues?.[columnId] !== undefined ? values[columnId] : columnDefaultValue;\n\n\tconst dateValue = useMemo(() => {\n\t\tif (isBlank(currentValue)) return undefined;\n\t\treturn dayjs(currentValue).isValid() ? dayjs(currentValue) : undefined;\n\t}, [currentValue]);\n\n\tconst fieldError = errors?.[columnId];\n\n\t/* -------------------------------------------------------------- *\n\t * 5. Validation\n\t * -------------------------------------------------------------- */\n\tconst validate = useCallback(\n\t\tasync (value: any) => {\n\t\t\tif (!validationSchema) return;\n\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validateAt(\n\t\t\t\t\tcolumnId,\n\t\t\t\t\t{ [columnId]: value },\n\t\t\t\t\t{ abortEarly: false }\n\t\t\t\t);\n\n\t\t\t\t// Functional update: two sibling cells validating in the same\n\t\t\t\t// tick no longer overwrite each other's errors.\n\t\t\t\tsetValidationErrors((prev) => {\n\t\t\t\t\tif (!prev || prev[columnId] === undefined) return prev ?? {};\n\t\t\t\t\tconst next = { ...prev };\n\t\t\t\t\tdelete next[columnId];\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tconst fieldErrors: Record<string, string> = {};\n\t\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\t\tif (error.path) fieldErrors[error.path] = error.message;\n\t\t\t\t\t});\n\t\t\t\t\tif (!err.inner.length && err.path) {\n\t\t\t\t\t\tfieldErrors[err.path] = err.message;\n\t\t\t\t\t}\n\t\t\t\t\tsetValidationErrors((prev) => ({ ...(prev ?? {}), ...fieldErrors }));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[columnId, setValidationErrors, validationSchema]\n\t);\n\n\t/* -------------------------------------------------------------- *\n\t * 6. Change handling\n\t * -------------------------------------------------------------- */\n\tconst handleChange = useCallback(\n\t\tasync (event: any, type?: string, selectedData?: any) => {\n\t\t\tconst value = extractValue(event, type);\n\n\t\t\t// Commit synchronously first so a slow async `onChangeRowField`\n\t\t\t// can never swallow a keystroke.\n\t\t\tconst optimistic = { ...(row._valuesCache ?? {}), [columnId]: value };\n\t\t\trow._valuesCache = optimistic;\n\t\t\tsetValues(optimistic);\n\t\t\tpublishRowCache(rowId, optimistic);\n\n\t\t\tif (onChangeRowField) {\n\t\t\t\tconst patch = await onChangeRowField(event, type as string, row, col, selectedData);\n\t\t\t\tif (patch) {\n\t\t\t\t\t// The edited column keeps precedence over the patch, matching\n\t\t\t\t\t// the original ordering.\n\t\t\t\t\tconst merged = { ...row._valuesCache, ...patch, [columnId]: value };\n\t\t\t\t\trow._valuesCache = merged;\n\t\t\t\t\tsetValues(merged);\n\t\t\t\t\tpublishRowCache(rowId, merged);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait validate(value);\n\t\t},\n\t\t[col, columnId, onChangeRowField, row, rowId, validate]\n\t);\n\n\tconst resolveDateBoundary = useCallback(\n\t\t(boundary: any) => (typeof boundary === 'function' ? boundary(row) : boundary),\n\t\t[row]\n\t);\n\n\t/* -------------------------------------------------------------- *\n\t * 7. Render\n\t * -------------------------------------------------------------- */\n\n\tif (!editVariant || editVariant === 'number') {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\tonChange={(e: any) => handleChange(e, editVariant)}\n\t\t\t\tvalue={currentValue ?? ''}\n\t\t\t\tautoFocus={shouldAutoFocus}\n\t\t\t\ttype={editVariant || 'text'}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'select') {\n\t\tconst isMultiple = Boolean(fieldProperties?.is_multiple);\n\t\tconst selectValue = isMultiple\n\t\t\t? Array.isArray(currentValue)\n\t\t\t\t? currentValue\n\t\t\t\t: []\n\t\t\t: currentValue ?? '';\n\n\t\treturn (\n\t\t\t<Box display='flex' flexDirection='column' width='100%'>\n\t\t\t\t<SearchableSelect\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\tsearchPlaceholder={`Search ${col?.header ?? ''}`}\n\t\t\t\t\tonChange={(e: any, selectedRow: any) =>\n\t\t\t\t\t\thandleChange(e, 'select', selectedRow)\n\t\t\t\t\t}\n\t\t\t\t\tapiType={fieldProperties?.apiType}\n\t\t\t\t\tautoFocus={shouldAutoFocus}\n\t\t\t\t\toptions={col?.editSelectOptions}\n\t\t\t\t\tcustomeFilter={customFilter}\n\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\n\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\n\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\n\t\t\t\t\tattributes={fieldProperties?.attributes}\n\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\n\t\t\t\t\tmultiple={isMultiple}\n\t\t\t\t\tvalue={selectValue}\n\t\t\t\t\tgetSelectedData={(selectedRow: any) =>\n\t\t\t\t\t\tgetSelectedData?.(fieldProperties?.field_name, selectedRow)\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t\t/>\n\t\t\t\t{fieldError && (\n\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t{fieldError}\n\t\t\t\t\t</Typography>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t);\n\t}\n\n\tif (editVariant === 'date') {\n\t\treturn (\n\t\t\t<DatePicker\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'date')}\n\t\t\t\ttextFieldProps={{ autoFocus: shouldAutoFocus }}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || fieldProperties?.dateFormat}\n\t\t\t\tvalue={dateValue}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t\tminDate={() => resolveDateBoundary(fieldProperties?.min_date)}\n\t\t\t\tmaxDate={() => resolveDateBoundary(fieldProperties?.max_date)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'date_time') {\n\t\treturn (\n\t\t\t<DateTimePicker\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'date')}\n\t\t\t\ttextFieldProps={{ autoFocus: shouldAutoFocus }}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || fieldProperties?.dateFormat}\n\t\t\t\tvalue={dateValue}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'file' || editVariant === 'image') {\n\t\treturn (\n\t\t\t<Box display='flex' flexDirection='column'>\n\t\t\t\t<UploadMedia\n\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\n\t\t\t\t\tdataPosition={0}\n\t\t\t\t\tdataName='table_file'\n\t\t\t\t\tlabel=''\n\t\t\t\t\ttype={editVariant}\n\t\t\t\t\tmax_size={10}\n\t\t\t\t\tonChange={(v: any) => handleChange(v, 'file')}\n\t\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\t\tmultiple={Boolean(fieldProperties?.is_multiple ?? col?.is_multiple)}\n\t\t\t\t\tvalue={currentValue}\n\t\t\t\t/>\n\t\t\t\t{fieldError && (\n\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t{fieldError}\n\t\t\t\t\t</Typography>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t);\n\t}\n\n\tif (editVariant === 'phone') {\n\t\treturn (\n\t\t\t<PhoneInput\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefault_value={columnDefaultValue}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'phone')}\n\t\t\t\ttextFieldProps={{ autoFocus: shouldAutoFocus }}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || fieldProperties?.dateFormat}\n\t\t\t\tvalue={currentValue}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t\tisInlineEditing\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'checkbox') {\n\t\treturn (\n\t\t\t<Checkbox\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefaultChecked={Boolean(columnDefaultValue)}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'checkbox')}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tplaceholder={fieldProperties?.placeholder}\n\t\t\t\tvalue={Boolean(currentValue)}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n};\n\nexport default React.memo(InlineEditFields);","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * MaterialTable\n * -----------------------------------------------------------------------------\n * Hardened / memoised rewrite of the custom Material React Table wrapper.\n *\n * Key engineering decisions (see PR notes for the full rationale):\n * - Zero work in render: no canvas text measurement, no per-render column\n * rebuild, no derived-state duplication of the `columns` prop.\n * - Every callback prop is wrapped in `useEventCallback` so that the memoised\n * column defs / table options never invalidate because a parent forgot to\n * memoise an inline arrow function.\n * - Inline-edit state (validation errors + schema) travels through context, so\n * typing / validating never invalidates the column definitions.\n * - All persistence side effects (`updatePageInfo`) are edge triggered.\n * -----------------------------------------------------------------------------\n */\n\nimport React, {\n\tcloneElement,\n\tcreateContext,\n\tmemo,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState\n} from 'react';\nimport {\n\tMRT_Cell,\n\tMRT_ColumnDef,\n\tMRT_ColumnPinningState,\n\tMRT_ColumnSizingInfoState,\n\tMRT_ColumnSizingState,\n\tMRT_Header,\n\tMRT_Row,\n\tMRT_RowData,\n\tMRT_RowSelectionState,\n\tMRT_SortingState,\n\tMRT_TableInstance,\n\tMRT_TableState,\n\tMaterialReactTable,\n\tMaterialReactTableProps,\n\tuseMaterialReactTable\n} from 'material-react-table';\nimport {\n\tBox,\n\tDivider,\n\tIconButton,\n\tListItemIcon,\n\tListItemText,\n\tMenuItem,\n\tSvgIconProps,\n\tstyled\n} from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport Add from '@mui/icons-material/Add';\nimport dayjs from 'dayjs';\nimport * as yup from 'yup';\nimport { useTranslation } from 'react-i18next';\nimport { enqueueSnackbar } from 'notistack';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { PageState, usePages } from '@erpsquad/common/runtime';\n\nimport { IPaginationModel } from '../../@types/pagination-model';\nimport { getApiConfigSafe } from '../../utils/api-config';\nimport Menu from '../menu/menu';\nimport Typography from '../typography/typography';\nimport SearchBar from '../search-bar/search-bar';\nimport images from '../../assets/images';\nimport {\n\tArrowUpDown,\n\tCheckBoxIcon,\n\tClose,\n\tEdit,\n\tRecgtangleIcon,\n\tSave,\n\tTrash\n} from '../icons';\nimport InlineEditFields from './components/inline-edit-fields';\nimport Tooltip from '../tooltip/Tooltip';\nimport Button from '../button/button';\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\nimport useDeepMemo from '../../hooks/use-deep-memo';\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\nimport { PathnameHrms } from '@/constants';\n\nimport './material-table.scss';\n\n/* ============================================================================\n * Types\n * ==========================================================================*/\n\ntype ExtraEditVariants =\n\t| 'file'\n\t| 'image'\n\t| 'date'\n\t| 'number'\n\t| 'time'\n\t| 'date_time'\n\t| 'phone'\n\t| 'checkbox';\n\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\n\nexport type TypeBooleanLabels = {\n\t1: string;\n\t0: string;\n\ttrue: string;\n\tfalse: string;\n};\n\nexport interface MaterialTableColumnProps\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\n\tvisible?: boolean;\n\ttype?: string;\n\trequired?: boolean;\n\tshowDefaultCurrency?: boolean;\n\tvalueGet?: string;\n\tcustom_class?: string;\n\t/** when type is an array of objects */\n\ttypeArrayAccessorKey?: string;\n\t/** when type is a boolean */\n\ttypeBooleanLabels?: TypeBooleanLabels;\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\n\teditProperties?: {\n\t\tfield_name?: string;\n\t\tvalueKey?: string;\n\t\tplaceholder?: string;\n\t\tdateFormat?: string;\n\t\tvalidations?: any[];\n\t\tis_multiple?: boolean;\n\t\tis_multiline?: boolean;\n\t\tdisable?: boolean | DisableFunction;\n\t};\n\tredirectionPathWithId?: string;\n\thandleRowClick?: (row: any) => void;\n\tidField?: string;\n}\n\nexport interface MaterialTableColumnHeaderProps {\n\tcolumn: MRT_ColumnDef<any, any>;\n\theader: MRT_Header<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\ntype RowSelectionCallback = (row: MRT_Row<any>) => boolean;\n\nexport interface MaterialTablePropsType {\n\trows: any[];\n\tcolumns: MaterialTableColumnProps[];\n\ttotalPages: number;\n\tpaginationModel: IPaginationModel;\n\tgetSelectedData: any;\n\n\tenablePagination?: boolean;\n\tdisableMaxHeight?: boolean;\n columnOrder?: string[];\n\tcolumnPinning?: MRT_ColumnPinningState;\n\tupdateData?: (value: any, column: any, rowId: any) => void;\n\thandleColumnOrdering?: (colOrder: any) => void;\n\tenableEditing?: boolean | ((row: MRT_Row<any>) => boolean);\n\tenableColumnDragging?: boolean;\n\trowActionMenu?: any[];\n\tdestructiveActionMenu?: any[];\n\tgetRowId?: (row: any, index: number) => string;\n\tstates?: Partial<MRT_TableState<any>>;\n\tonSortingChange?: any;\n\tdisableDefaultActionColumn?: boolean;\n\tenableRowSelection?: boolean | RowSelectionCallback;\n\tdefaultActionColumnItems?: React.ReactElement[];\n\tenableBottomToolbar?: boolean;\n\tSetSelectedRowId?: (rows: MRT_Row<any>[]) => void;\n\tisResetRow?: boolean;\n\tonCreateRow?: (data: any) => Promise<unknown>;\n\tonEditRow?: (data: any, action?: string) => Promise<unknown>;\n\tonDeleteRow?: (data: any) => Promise<unknown>;\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\n\tenableRowCreate?: boolean;\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\n\tonRowClick?: (row: MRT_Row<any>) => void;\n\tenableColumnResizing?: boolean;\n\t/**\n\t * `onEnd` (default) commits the width once the drag finishes: no per-mousemove\n\t * re-render of the whole table, which is the main source of visible jitter.\n\t * Pass `onChange` to restore the previous live-resize behaviour.\n\t */\n\tcolumnResizeMode?: 'onChange' | 'onEnd';\n\tselectedRowIds?: any[];\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void;\n\tenableAddCustomField?: boolean;\n\tdisableAddColumn?: boolean;\n\tdisabledDefaultActionColumnIcon?: boolean;\n\tenableRowDragging?: boolean;\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void;\n\tcolumnSizes?: MRT_ColumnSizingState;\n\tshowPreview?: boolean;\n\thandlePreview?: (row: MRT_RowData) => void;\n\t/** Opaque background applied to every pinned header/body cell. */\n\tpinnedColumnBgColor?: string;\n\tdefaultColumnProps?: Partial<MRT_ColumnDef<any>>;\n\tdeleteConfirmTitle?: string;\n\tdeleteConfirmDescription?: string;\n\t[key: string]: any;\n}\n\n/* ============================================================================\n * Module-level constants — hoisted so their identity never changes.\n * ==========================================================================*/\n\nconst EMPTY_ARRAY: any[] = [];\nconst EMPTY_OBJECT: any = Object.freeze({});\nconst DEFAULT_COLUMN_ORDER = ['mrt-row-select'];\nconst DEFAULT_PINNING = { left: ['actions', 'mrt-row-actions'] };\nconst SPAR_DECIMALS = 4;\n\nconst DEFAULT_COLUMN: Partial<MRT_ColumnDef<any>> = {\n\t// `minSize: 0` allowed columns to collapse to zero width mid-drag; 40 keeps\n\t// the grid layout stable without preventing narrow columns.\n\tminSize: 40,\n\tmaxSize: 800\n};\n\nconst DEFAULT_SIZING_INFO: MRT_ColumnSizingInfoState = {\n\tcolumnSizingStart: [],\n\tdeltaOffset: null,\n\tdeltaPercentage: null,\n\tisResizingColumn: false,\n\tstartOffset: null,\n\tstartSize: null\n};\n\nconst CUSTOM_FORM_PATH_BY_MODULE: Record<string, string> = {\n\taccounting: PathnameAccounting.CUSTOM_FORM,\n\tinventory: PathnameInventory.CUSTOM_FORM,\n\tmanufacturing: PathnameManufacturing.CUSTOM_FORM,\n\tprocurement: PathnamePurchase.CUSTOM_FORM,\n\tcrm: PathnameCrm.CUSTOM_FORM,\n\tuser: PathnameUsers.CUSTOM_FORM,\n\trental: PathnameRental.CUSTOM_FORM,\n\tdrive: PathnameDocument.ADD_CUSTOM_FIELDS,\n\thrms: PathnameHrms.CUSTOM_FORM\n};\n\nconst DISPLAY_COLUMN_DEF_OPTIONS = {\n\t'mrt-row-expand': { size: 70 },\n\t'mrt-row-select': { size: 50 }\n};\n\nconst HEAD_CELL_SX: Record<string, any> = {\n\tlineHeight: '140%',\n\tletterSpacing: '-0.28px',\n\tfontWeight: '500',\n\tfontSize: '0.875rem',\n\t'& .Mui-TableHeadCell-Content': { height: '100%' },\n\t'& .Mui-TableHeadCell-Content-Labels': {\n\t\twidth: '100%',\n\t\tjustifyContent: 'space-between'\n\t},\n\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\n\t\tpadding: 0,\n\t\tmargin: 0,\n\t\tright: '-5px',\n\t\topacity: 0\n\t}\n};\n\nconst BODY_CELL_SX: Record<string, any> = {\n\tlineHeight: '140%',\n\tletterSpacing: '-0.26px',\n\tfontWeight: '400',\n\tfontSize: '0.8125rem',\n\t// NOTE: this is intentionally NOT applied to pinned cells — a transparent\n\t// hover background is exactly what makes a sticky column see-through.\n\t'&:hover': { backgroundColor: 'transparent' }\n};\n\n/**\n * Opaque-background overrides for a pinned (sticky) cell.\n *\n * Rather than guessing at DOM markers (`.pinned-column`, `[data-pinned]`), which\n * differ between MRT majors, these are applied per-cell based on MRT's own\n * `column.getIsPinned()`. MRT merges consumer `sx` AFTER its internal pinned\n * styles, so this wins regardless of version.\n *\n * Four things have to be neutralised for a sticky cell to be truly opaque:\n * 1. `backgroundColor` — MRT uses a semi-transparent `alpha(...)` value.\n * 2. `backgroundImage` — MRT sets `inherit`, pulling in the Paper gradient.\n * 3. `::before` — MRT v3 paints the pinned overlay here.\n * 4. `:hover` — must not fall back to `transparent`.\n */\nconst buildPinnedCellSx = (bg: string) => ({\n\tbackgroundColor: `${bg} !important`,\n\tbackgroundImage: 'none !important',\n\topacity: 1,\n\t'&::before': { backgroundColor: `${bg} !important`, opacity: 1 },\n\t'&:hover': { backgroundColor: `${bg} !important` }\n});\n\nconst BODY_PROPS = { sx: { zIndex: 500 } } as const;\nconst HEAD_PROPS = { sx: { zIndex: 600 } } as const;\nconst BOTTOM_TOOLBAR_PROPS = {\n\tsx: { boxShadow: 'none', '& .MuiBox-root': { paddingLeft: 0 } }\n} as const;\nconst CIRCULAR_PROGRESS_PROPS = {\n\tComponent: null,\n\tsx: { color: '#289B64' }\n} as const;\nconst CHECKBOX_SX = {\n\tcolor: 'theme.secondary.300',\n\t'&.Mui-checked': {\n\t\tcolor: 'theme.primary.600',\n\t\t'&:hover': { color: 'theme.primary.500' }\n\t},\n\t'&.Mui-disabled': { color: 'theme.secondary.200' }\n} as const;\nconst ICON_SX = { color: 'theme.secondary.1000' } as const;\nconst PINNED_HEAD_PROPS = { className: 'pinned-column' };\nconst PINNED_BODY_PROPS = { className: 'pinned-column' };\n// Column-level cell props replace the table-level ones wholesale for the same\n// key, so the shared typography has to be merged back in here explicitly.\nconst PINNED_BODY_PROPS_WRAP = {\n\tclassName: 'pinned-column',\n\tsx: { ...BODY_CELL_SX, whiteSpace: 'pre-wrap' }\n};\n\nconst TABLE_ICONS = {\n\tArrowDownwardIcon: (props: SvgIconProps) => (\n\t\t<ArrowUpDown fontSize='medium' {...props} />\n\t),\n\tSortIcon: (props: SvgIconProps) => <ArrowUpDown fontSize='medium' {...props} />,\n\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\n\tCancelIcon: (props: SvgIconProps) => (\n\t\t<Close fontSize='small' {...props} sx={ICON_SX} />\n\t),\n\tSaveIcon: (props: SvgIconProps) => (\n\t\t<Save {...props} fontSize='small' sx={ICON_SX} />\n\t)\n};\n\n/* ============================================================================\n * Pure helpers — hoisted out of the component (they closed over nothing).\n * ==========================================================================*/\n\nconst shallowEqual = (a: Record<string, any> = {}, b: Record<string, any> = {}) => {\n\tif (a === b) return true;\n\tconst aKeys = Object.keys(a);\n\tconst bKeys = Object.keys(b);\n\tif (aKeys.length !== bKeys.length) return false;\n\treturn aKeys.every((k) => a[k] === b[k]);\n};\n\nconst getValidationType = (column: MaterialTableColumnProps) => {\n\tswitch (column.editVariant) {\n\t\tcase 'select':\n\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\n\n\t\tcase 'number':\n\t\t\treturn yup\n\t\t\t\t.number()\n\t\t\t\t.nullable()\n\t\t\t\t.transform((value, originalValue) =>\n\t\t\t\t\toriginalValue === '' ? null : value\n\t\t\t\t);\n\n\t\tcase 'url':\n\t\t\treturn yup\n\t\t\t\t.string()\n\t\t\t\t.matches(\n\t\t\t\t\t/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/,\n\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\n\t\t\t\t);\n\n\t\tcase 'date':\n\t\tcase 'date_time':\n\t\tcase 'time':\n\t\t\treturn yup\n\t\t\t\t.date()\n\t\t\t\t.transform((value, originalValue) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\toriginalValue &&\n\t\t\t\t\t\ttypeof originalValue === 'object' &&\n\t\t\t\t\t\t'toDate' in originalValue\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn (originalValue as any).toDate();\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t})\n\t\t\t\t.typeError('Valid date is required');\n\n\t\tcase 'file':\n\t\tcase 'image':\n\t\t\treturn yup.mixed().nullable();\n\n\t\tdefault:\n\t\t\treturn yup.string();\n\t}\n};\n\nconst validationReducer = (\n\tvalidations: any,\n\tvalidation: any,\n\tcolumn: MaterialTableColumnProps\n): any => {\n\tlet vld = validations;\n\n\tswitch (validation.type) {\n\t\tcase 'required':\n\t\t\tvld = validation.value\n\t\t\t\t? validations.required(validation.msg_en).typeError(validation.msg_en)\n\t\t\t\t: column?.editProperties?.is_multiple\n\t\t\t\t\t? validations.min(1, validation.msg_en)\n\t\t\t\t\t: validations;\n\t\t\tbreak;\n\t\tcase 'min':\n\t\t\tvld = validations.min(validation.value, validation.msg_en);\n\t\t\tbreak;\n\t\tcase 'email':\n\t\t\tvld = validations.email(validation.value, validation.msg_en);\n\t\t\tbreak;\n\t\tcase 'max':\n\t\t\tvld = validations.max(validation.value, validation.msg_en);\n\t\t\tbreak;\n\t\tcase 'positive':\n\t\t\tvld =\n\t\t\t\tvalidation.value === true\n\t\t\t\t\t? validations.test(\n\t\t\t\t\t\t\t'is-positive-number',\n\t\t\t\t\t\t\t'Value must be a positive number',\n\t\t\t\t\t\t\t(value: any) => !value || value >= 0\n\t\t\t\t\t\t)\n\t\t\t\t\t: validations;\n\t\t\tbreak;\n\t\tcase 'when':\n\t\t\treturn validations.when(validation.relation, {\n\t\t\t\tis: (val: any) => val === validation.values,\n\t\t\t\tthen: () =>\n\t\t\t\t\tvalidation?.thenValidations?.reduce(\n\t\t\t\t\t\t(acc: any, v: any) => validationReducer(acc, v, column),\n\t\t\t\t\t\tvalidations\n\t\t\t\t\t) || validations,\n\t\t\t\totherwise: () =>\n\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\n\t\t\t\t\t\t(acc: any, v: any) => validationReducer(acc, v, column),\n\t\t\t\t\t\tvalidations\n\t\t\t\t\t) || validations\n\t\t\t});\n\t\tcase 'validate':\n\t\t\tif (typeof validation.callback === 'function') {\n\t\t\t\tvld = vld.test(\n\t\t\t\t\tvalidation.name || 'custom-validate',\n\t\t\t\t\tvalidation.msg_en || 'Validation failed',\n\t\t\t\t\tfunction (this: yup.TestContext, value: any) {\n\t\t\t\t\t\treturn validation.callback(value, this.parent);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tvld = validations;\n\t\t\tbreak;\n\t}\n\n\tif (\n\t\tvalidation.type === 'required' &&\n\t\tvalidation.value &&\n\t\t(!column?.editVariant || column?.editVariant === 'text')\n\t) {\n\t\tvld = vld.test(\n\t\t\t'no-blank-spaces',\n\t\t\t'Blank space is not allowed',\n\t\t\t(value: any) => {\n\t\t\t\tif (!value) return true; // let .required() handle empty\n\t\t\t\treturn String(value).trim().length > 0;\n\t\t\t}\n\t\t);\n\t}\n\n\treturn vld;\n};\n\nconst buildValidationSchema = (columns: MaterialTableColumnProps[]) => {\n\tconst schema: Record<string, any> = {};\n\tcolumns.forEach((clm) => {\n\t\tif (clm?.editProperties?.validations?.length && clm.accessorKey) {\n\t\t\tschema[clm.accessorKey] = clm.editProperties.validations.reduce(\n\t\t\t\t(acc: any, validation: any) => validationReducer(acc, validation, clm),\n\t\t\t\tgetValidationType(clm)\n\t\t\t);\n\t\t}\n\t});\n\treturn yup.object().shape(schema);\n};\n\nconst hasRequiredValidation = (editProperties?: MaterialTableColumnProps['editProperties']) =>\n\tBoolean(\n\t\teditProperties?.validations?.some((v: any) => v.type === 'required' && v.value !== false)\n\t);\n\nconst formatValues = (values: Record<string, any>, cells: any[]) => {\n\tconst result: Record<string, any> = {};\n\tconst cellByKey = new Map<string, any>(\n\t\tcells.map((c) => [c.accessorKey ?? c.id, c])\n\t);\n\n\tObject.keys(values).forEach((key) => {\n\t\tconst val = values[key];\n\t\tresult[key] = val;\n\t\tif (!val) return;\n\n\t\tconst cell = cellByKey.get(key);\n\t\tif (val instanceof File) {\n\t\t\tresult[key] = val.name;\n\t\t}\n\t\tif (cell?.editVariant === 'date') {\n\t\t\tresult[key] = dayjs(val).format(\n\t\t\t\tcell?.editProperties?.dateFormat || cell?.dateFormat || 'DD-MM-YYYY'\n\t\t\t);\n\t\t}\n\t});\n\n\treturn result;\n};\n\nconst collectYupErrors = (err: yup.ValidationError) => {\n\tconst errors: Record<string, string> = {};\n\terr.inner.forEach((error) => {\n\t\tif (error.path) errors[error.path] = error.message;\n\t});\n\treturn errors;\n};\n\n/* ============================================================================\n * Hooks\n * ==========================================================================*/\n\n/**\n * Returns a referentially stable function that always calls the latest `fn`.\n * Lets callers pass inline arrows without invalidating memoised column defs.\n */\nfunction useEventCallback<T extends (...args: any[]) => any>(fn?: T) {\n\tconst ref = useRef(fn);\n\tuseLayoutEffect(() => {\n\t\tref.current = fn;\n\t});\n\treturn useCallback(\n\t\t(...args: Parameters<T>): ReturnType<T> | undefined => ref.current?.(...args),\n\t\t[]\n\t);\n}\n\nfunction useLatestRef<T>(value: T) {\n\tconst ref = useRef(value);\n\tref.current = value;\n\treturn ref;\n}\n\n/* ============================================================================\n * Inline-edit context\n *\n * Validation errors change on every save attempt / keystroke-driven revalidation.\n * Passing them through context (instead of closing over them in the column defs)\n * keeps the memoised `columns` array stable while still re-rendering edit cells.\n * ==========================================================================*/\n\ninterface InlineEditContextValue {\n\terrors: Record<string, string>;\n\tvalidationSchema: yup.ObjectSchema<any>;\n\tsetValidationErrors: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n\tonChangeRowField: (e: any, type: string, row: any) => void;\n\tgetSelectedData: (name: any, row: any) => any;\n}\n\nconst InlineEditContext = createContext<InlineEditContextValue | null>(null);\n\ninterface EditCellProps {\n\tcol: MaterialTableColumnProps;\n\tcell: MRT_Cell<any>;\n\tcolumn: any;\n\trow: MRT_Row<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\nconst EditCell = memo(({ col, cell, column, row, table }: EditCellProps) => {\n\tconst ctx = useContext(InlineEditContext);\n\tif (!ctx) return null;\n\n\treturn (\n\t\t<InlineEditFields\n\t\t\tcell={cell}\n\t\t\tcolumn={column}\n\t\t\tcol={col}\n\t\t\trow={row}\n\t\t\ttable={table}\n\t\t\terrors={ctx.errors}\n\t\t\tvalidationSchema={ctx.validationSchema}\n\t\t\tsetValidationErrors={ctx.setValidationErrors}\n\t\t\tonChangeRowField={ctx.onChangeRowField}\n\t\t\tgetSelectedData={ctx.getSelectedData}\n\t\t/>\n\t);\n});\nEditCell.displayName = 'EditCell';\n\n/* ============================================================================\n * Small presentational pieces\n * ==========================================================================*/\n\nconst ColumnHeaderLabel = memo(\n\t({ label, required }: { label: React.ReactNode; required: boolean }) => (\n\t\t<Box display='flex' alignItems='center'>\n\t\t\t{label}\n\t\t\t{required && (\n\t\t\t\t<Typography type='s5' color='theme.error.600'>\n\t\t\t\t\t*\n\t\t\t\t</Typography>\n\t\t\t)}\n\t\t</Box>\n\t)\n);\nColumnHeaderLabel.displayName = 'ColumnHeaderLabel';\n\nconst SparCurrencyCell = ({ cell }: { cell: MRT_Cell<any> }) => {\n\tconst raw = cell.getValue<any>();\n\tif (raw === null || raw === undefined || raw === '') return '-';\n\tconst num = Number(raw);\n\treturn Number.isNaN(num) ? '-' : num.toFixed(SPAR_DECIMALS);\n};\n\n/**\n * Belt-and-braces CSS layer for pinned cells.\n *\n * The authoritative fix lives in `muiTableHeadCellProps` / `muiTableBodyCellProps`,\n * which key off `column.getIsPinned()`. These selectors additionally cover cells\n * that carry a pinned marker but are not pinned through MRT state (e.g. the\n * `preview` column, which ships the `.pinned-column` class), and any markup that\n * a future MRT major renders. `box-shadow` is deliberately left alone so MRT's\n * separator between the pinned block and the scrolling area survives.\n */\nconst PINNED_CELL_SELECTORS = [\n\t'.MuiTableCell-root[data-pinned=\"true\"]',\n\t'.MuiTableCell-root.pinned-column',\n\t'th[data-pinned=\"true\"]',\n\t'td[data-pinned=\"true\"]'\n].join(', ');\n\nconst TableWrapper = styled(Box, {\n\tshouldForwardProp: (prop) =>\n\t\tprop !== 'disableMaxHeight' && prop !== 'pinnedColumnBgColor'\n})<{ disableMaxHeight?: boolean; pinnedColumnBgColor?: string }>(\n\t({ theme: { palette }, disableMaxHeight, pinnedColumnBgColor = '#fff' }) => ({\n\t\t[PINNED_CELL_SELECTORS]: {\n\t\t\tbackgroundColor: `${pinnedColumnBgColor} !important`,\n\t\t\tbackgroundImage: 'none !important',\n\t\t\topacity: 1,\n\t\t\t'&::before': {\n\t\t\t\tbackgroundColor: `${pinnedColumnBgColor} !important`,\n\t\t\t\topacity: 1\n\t\t\t},\n\t\t\t'&:hover': { backgroundColor: `${pinnedColumnBgColor} !important` }\n\t\t},\n\t\t'.MuiTableCell-root': {\n\t\t\tborder: '1px solid #efefef',\n\t\t\tborderBottom: 0,\n\t\t\tborderLeft: 0,\n\t\t\tpadding: '0 0.5rem',\n\t\t\tlineHeight: '19px',\n\t\t\tfontSize: '14px',\n\t\t\tminHeight: 32\n\t\t},\n\t\t'.MuiTableCell-head': {\n\t\t\tbackgroundColor: palette.theme?.secondary[100]\n\t\t},\n\t\t'.MuiTableContainer-root': {\n\t\t\t...(!disableMaxHeight && {\n\t\t\t\tmaxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important'\n\t\t\t})\n\t\t},\n\t\t'.MuiPaper-root': { boxShadow: 'none' },\n\t\t'.MuiPaginationItem-root': {\n\t\t\t'&.Mui-selected': {\n\t\t\t\tbackgroundColor: palette?.theme?.primary[700],\n\t\t\t\tcolor: 'white'\n\t\t\t}\n\t\t},\n\t\t'.MuiTableRow-root': {\n\t\t\t'&.Mui-selected': {\n\t\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\n\t\t\t\tcolor: 'white'\n\t\t\t}\n\t\t},\n\t\t'.MuiCheckbox-indeterminate': {\n\t\t\tcolor: `${palette?.theme?.primary[700]} !important`,\n\t\t\t'& svg': { height: '20px !important', width: '20px !important' }\n\t\t}\n\t})\n);\n\n/* ============================================================================\n * Component\n * ==========================================================================*/\n\nconst MaterialTableBase = ({\n\trows,\n\tcolumns,\n\ttotalPages,\n\tpaginationModel,\n\tgetSelectedData,\n\n\tenablePagination = false,\n columnOrder = DEFAULT_COLUMN_ORDER,\n\tcolumnPinning = DEFAULT_PINNING,\n\tupdateData,\n\thandleColumnOrdering,\n\tenableEditing,\n\tenableColumnDragging,\n\tstates,\n\trowActionMenu,\n\tdestructiveActionMenu,\n\tdisableDefaultActionColumn,\n\tenableRowSelection,\n\tdefaultActionColumnItems = EMPTY_ARRAY,\n\tenableBottomToolbar,\n\tSetSelectedRowId,\n\tisResetRow,\n\tonCreateRow,\n\tonEditRow,\n\tonDeleteRow,\n\teditDisplayMode,\n\tenableRowCreate,\n\tonChangeRowField,\n\tonSelectRow,\n\tonRowClick,\n\tenableColumnResizing = true,\n\tcolumnResizeMode = 'onEnd',\n\tselectedRowIds = EMPTY_ARRAY,\n\tonColumnVisibility,\n\tonSortingChange,\n\tdisabledDefaultActionColumnIcon = false,\n\tenableAddCustomField = true,\n\tdisableAddColumn = false,\n\tenableRowDragging = false,\n\thandleColumnResizing,\n\tcolumnSizes,\n\tdisableMaxHeight = false,\n\tshowPreview = false,\n\thandlePreview,\n\tpinnedColumnBgColor = '#fff',\n\tgetRowId,\n\tdefaultColumnProps,\n\tdeleteConfirmTitle,\n\tdeleteConfirmDescription,\n\t...rest\n}: MaterialTablePropsType) => {\n\tconst { t } = useTranslation();\n\tconst navigate = useNavigate();\n\tconst location = useLocation();\n\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages();\n\tconst activePage = useDeepMemo<PageState>(aPage);\n\tconst { pageNo } = paginationModel;\n\n\t/* ---------------------------------------------------------------- config */\n\n\tconst isSpar = useMemo(() => getApiConfigSafe()?.countryEnv === 'spar', []);\n\n\tconst customFieldPath = useMemo(() => {\n\t\tconst currentModule = location.pathname.split('/')[2];\n\t\treturn `/dashboard/${currentModule}${CUSTOM_FORM_PATH_BY_MODULE[currentModule] ?? ''}`;\n\t}, [location.pathname]);\n\n\t/* ------------------------------------------------------- stable callbacks */\n\n\tconst onColumnVisibilityStable = useEventCallback(onColumnVisibility);\n\tconst onChangeRowFieldStable = useEventCallback(onChangeRowField);\n\tconst getSelectedDataStable = useEventCallback(getSelectedData);\n\tconst handlePreviewStable = useEventCallback(handlePreview);\n\tconst handleColumnResizingStable = useEventCallback(handleColumnResizing);\n\tconst handleColumnOrderingStable = useEventCallback(handleColumnOrdering);\n\tconst updateDataStable = useEventCallback(updateData);\n\tconst onSelectRowStable = useEventCallback(onSelectRow);\n\tconst setSelectedRowIdStable = useEventCallback(SetSelectedRowId);\n\tconst onRowClickStable = useEventCallback(onRowClick);\n\tconst updatePageInfoRef = useLatestRef(updatePageInfo);\n\n\t/* ------------------------------------------------------------------ state */\n\n\t/**\n\t * Column visibility is stored as a sparse override map instead of a full\n\t * mirror of the `columns` prop. This removes the props->state duplication\n\t * (and the extra render it caused) while keeping fresh column defs — dynamic\n\t * select options, Cell renderers etc. — always up to date.\n\t */\n\tconst [visibilityOverrides, setVisibilityOverrides] = useState<\n\t\tRecord<string, boolean>\n\t>(EMPTY_OBJECT);\n\tconst [columnSearch, setColumnSearch] = useState('');\n\n\tconst [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [showAddColumnPanel, setShowAddColumnPanel] = useState(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [activeMenuRow, setActiveMenuRow] = useState<any>(EMPTY_OBJECT);\n\n\tconst [validationErrors, setValidationErrors] = useState<Record<string, string>>(\n\t\tEMPTY_OBJECT\n\t);\n\tconst [isCreatingRow, setIsCreatingRow] = useState(false);\n\tconst [isEditingRow, setIsEditingRow] = useState(false);\n\tconst [isDeletingRow, setIsDeletingRow] = useState(false);\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>(\n\t\tEMPTY_OBJECT\n\t);\n\tconst [sorting, setSorting] = useState<MRT_SortingState>(EMPTY_ARRAY);\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\n\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(() => ({\n\t\t...(aPage?.column_sizes ?? {}),\n\t\t...(columnSizes ?? {})\n\t}));\n\tconst [columnSizingInfo, setColumnSizingInfo] =\n\t\tuseState<MRT_ColumnSizingInfoState>(DEFAULT_SIZING_INFO);\n\n\t/* --------------------------------------------------- derived column model */\n\n\tconst resolvedColumns = useMemo<MaterialTableColumnProps[]>(\n\t\t() =>\n\t\t\t(columns ?? EMPTY_ARRAY).map((col) => {\n\t\t\t\tconst key = (col.accessorKey ?? col.id) as string;\n\t\t\t\tconst override = visibilityOverrides[key];\n\t\t\t\tif (override === undefined || override === Boolean(col.visible)) return col;\n\t\t\t\treturn { ...col, visible: override };\n\t\t\t}),\n\t\t[columns, visibilityOverrides]\n\t);\n\n\tconst visibleColumns = useMemo(\n\t\t() => resolvedColumns.filter((c) => Boolean(c.visible)),\n\t\t[resolvedColumns]\n\t);\n\n\tconst hiddenColumns = useMemo(\n\t\t() => resolvedColumns.filter((c) => !c.visible),\n\t\t[resolvedColumns]\n\t);\n\n\t/** Replaces the `filteredOptions` state, which went stale on column changes. */\n\tconst filteredHiddenColumns = useMemo(() => {\n\t\tconst q = columnSearch.trim().toLowerCase();\n\t\tif (!q) return hiddenColumns;\n\t\treturn hiddenColumns.filter((c) =>\n\t\t\tString(c.header ?? '').toLowerCase().includes(q)\n\t\t);\n\t}, [hiddenColumns, columnSearch]);\n\n\tconst validationSchema = useMemo(\n\t\t() => buildValidationSchema(resolvedColumns),\n\t\t[resolvedColumns]\n\t);\n\n\t/* -------------------------------------------------------- menu handlers */\n\n\tconst handleHeaderClick = useCallback((event: React.MouseEvent<HTMLElement>) => {\n\t\tsetMenuAnchorEl(event.currentTarget);\n\t}, []);\n\n\tconst handleHeaderClose = useCallback(() => {\n\t\tsetMenuAnchorEl(null);\n\t\tsetShowAddColumnPanel(false);\n\t\tsetColumnSearch('');\n\t}, []);\n\n\tconst emitColumnVisibility = useCallback(\n\t\t(overrides: Record<string, boolean>) => {\n\t\t\tif (!onColumnVisibilityStable) return;\n\t\t\tconst next = (columns ?? EMPTY_ARRAY).map((col) => {\n\t\t\t\tconst key = (col.accessorKey ?? col.id) as string;\n\t\t\t\tconst override = overrides[key];\n\t\t\t\treturn override === undefined ? { ...col } : { ...col, visible: override };\n\t\t\t});\n\t\t\tonColumnVisibilityStable(next);\n\t\t},\n\t\t[columns, onColumnVisibilityStable]\n\t);\n\n\tconst setColumnVisible = useCallback(\n\t\t(column: MaterialTableColumnProps, visible: boolean) => {\n\t\t\tconst key = (column.accessorKey ?? column.id) as string;\n\t\t\tsetVisibilityOverrides((prev) => {\n\t\t\t\tif (prev[key] === visible) return prev;\n\t\t\t\tconst next = { ...prev, [key]: visible };\n\t\t\t\temitColumnVisibility(next);\n\t\t\t\treturn next;\n\t\t\t});\n\t\t\tsetMenuAnchorEl(null);\n\t\t\tsetShowAddColumnPanel(false);\n\t\t\tsetColumnSearch('');\n\t\t},\n\t\t[emitColumnVisibility]\n\t);\n\n\tconst handleHideColumn = useCallback(\n\t\t(column: MaterialTableColumnProps) => setColumnVisible(column, false),\n\t\t[setColumnVisible]\n\t);\n\n\tconst handleAddColumn = useCallback(\n\t\t(column: MaterialTableColumnProps) => setColumnVisible(column, true),\n\t\t[setColumnVisible]\n\t);\n\n\tconst handleCustomAddColumn = useCallback(() => {\n\t\tnavigate(customFieldPath, { state: formData });\n\t\tsetMenuAnchorEl(null);\n\t\tsetShowAddColumnPanel(false);\n\t}, [navigate, customFieldPath, formData]);\n\n\tconst handleActionsClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>, data: any) => {\n\t\t\tsetActiveMenuRow(data);\n\t\t\tsetRowAnchorEl(event.currentTarget);\n\t\t},\n\t\t[]\n\t);\n\n\tconst handleActionsClose = useCallback(() => setRowAnchorEl(null), []);\n\n\tconst handlePreviewClick = useCallback(\n\t\t(row: MRT_RowData) => handlePreviewStable(row),\n\t\t[handlePreviewStable]\n\t);\n\n\t/* ------------------------------------------------------------ row delete */\n\n\tconst handleRowDelete = useCallback(async () => {\n\t\tif (!rowToDelete) return;\n\t\tsetIsDeletingRow(true);\n\t\ttry {\n\t\t\tawait onDeleteRow?.(rowToDelete);\n\t\t\tsetRowToDelete(null);\n\t\t} catch (err) {\n\t\t\tenqueueSnackbar(\n\t\t\t\terr instanceof Error ? err.message : 'Something went wrong',\n\t\t\t\t{ variant: 'error' }\n\t\t\t);\n\t\t} finally {\n\t\t\tsetIsDeletingRow(false);\n\t\t}\n\t}, [rowToDelete, onDeleteRow]);\n\n\tconst resetEditingState = useCallback(() => {\n\t\tsetRowSelection(EMPTY_OBJECT);\n\t\tsetDisableNextEdit(false);\n\t\tsetValidationErrors(EMPTY_OBJECT);\n\t}, []);\n\n\t/* ------------------------------------------------------ save handlers */\n\n\tconst handleSaveError = useCallback((err: unknown) => {\n\t\tif (err instanceof yup.ValidationError) {\n\t\t\tsetValidationErrors(collectYupErrors(err));\n\t\t} else if (err instanceof Error) {\n\t\t\tenqueueSnackbar(err.message, { variant: 'error' });\n\t\t} else {\n\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' });\n\t\t}\n\t}, []);\n\n\tconst handleEditingRowSave = useCallback(\n\t\tasync (data: any) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, { abortEarly: false });\n\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\tsetIsEditingRow(true);\n\t\t\t\tsetDisableNextEdit(false);\n\n\t\t\t\tconst cells = data.row.getAllCells().map((c: any) => c.column.columnDef);\n\t\t\t\tdata.row._valuesCache = formatValues(data.values, cells);\n\n\t\t\t\tawait onEditRow?.(data, 'edit');\n\t\t\t\tdata.table.setEditingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\thandleSaveError(err);\n\t\t\t} finally {\n\t\t\t\tsetIsEditingRow(false);\n\t\t\t}\n\t\t},\n\t\t[validationSchema, onEditRow, handleSaveError]\n\t);\n\n\tconst handleCreatingRowSave = useCallback(\n\t\tasync (data: any) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, { abortEarly: false });\n\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\tsetIsCreatingRow(true);\n\t\t\t\tsetDisableNextEdit(false);\n\n\t\t\t\tconst cells = data.row.getAllCells().map((c: any) => c.column.columnDef);\n\t\t\t\tdata.row._valuesCache = formatValues(data.values, cells);\n\n\t\t\t\tawait onCreateRow?.(data);\n\t\t\t\tdata.table.setCreatingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\thandleSaveError(err);\n\t\t\t} finally {\n\t\t\t\tsetIsCreatingRow(false);\n\t\t\t}\n\t\t},\n\t\t[validationSchema, onCreateRow, handleSaveError]\n\t);\n\n\t/* ---------------------------------------------------------- column defs */\n\n\tconst tableColumnDefs = useMemo(() => {\n\t\tconst isRowEdit = editDisplayMode === 'row';\n\n\t\tconst dataColumns = visibleColumns.map((c) => {\n\t\t\tconst isCurrency = c.type === 'currency' || c.type === 'amount';\n\n\t\t\treturn {\n\t\t\t\t...c,\n\t\t\t\t...(isSpar && isCurrency && !c.Cell ? { Cell: SparCurrencyCell } : {}),\n\t\t\t\t...(isRowEdit\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tEdit: (props: any) => <EditCell {...props} col={c} />\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tHeader: (\n\t\t\t\t\t<ColumnHeaderLabel\n\t\t\t\t\t\tlabel={c.header}\n\t\t\t\t\t\trequired={Boolean(c.required) || hasRequiredValidation(c.editProperties)}\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tenableColumnDragging: c.id !== 'actions',\n\t\t\t\tsize: undefined,\n\t\t\t\tmaxSize: 800\n\t\t\t} as MRT_ColumnDef<any>;\n\t\t});\n\n\t\tconst previewColumn = showPreview\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'preview',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: 70,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\tsx={{ ml: '20px', '&:hover': { backgroundColor: 'transparent' } }}>\n\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: PINNED_HEAD_PROPS,\n\t\t\t\t\t\tmuiTableBodyCellProps: PINNED_BODY_PROPS_WRAP,\n\t\t\t\t\t\tCell: ({ row }: any) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\tvariant='outlined'\n\t\t\t\t\t\t\t\tonClick={() => handlePreviewClick(row.original)}>\n\t\t\t\t\t\t\t\t{t('common.preview', { defaultValue: 'Preview' })}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)\n\t\t\t\t\t} as unknown as MRT_ColumnDef<any>\n\t\t\t\t]\n\t\t\t: EMPTY_ARRAY;\n\n\t\tconst hasAnyRowMenu =\n\t\t\tBoolean(rowActionMenu?.length) || Boolean(destructiveActionMenu?.length);\n\n\t\tconst actionColumn = !disableDefaultActionColumn\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'actions',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: defaultActionColumnItems.length > 1 ? 80 : 50,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\tsx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }}\n\t\t\t\t\t\t\t\tonClick={handleHeaderClick}>\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: PINNED_HEAD_PROPS,\n\t\t\t\t\t\tmuiTableBodyCellProps: PINNED_BODY_PROPS,\n\t\t\t\t\t\tCell: (props: any) =>\n\t\t\t\t\t\t\tdefaultActionColumnItems.length\n\t\t\t\t\t\t\t\t? defaultActionColumnItems.map((item, index) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement(item, {\n\t\t\t\t\t\t\t\t\t\t\t...item.props,\n\t\t\t\t\t\t\t\t\t\t\tkey: item.key ?? `default-action-${index}`,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => item.props?.onClick?.(props)\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: !disabledDefaultActionColumnIcon && (\n\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={!hasAnyRowMenu}>\n\t\t\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t} as unknown as MRT_ColumnDef<any>\n\t\t\t\t]\n\t\t\t: EMPTY_ARRAY;\n\n\t\treturn [...dataColumns, ...previewColumn, ...actionColumn];\n\t}, [\n\t\tvisibleColumns,\n\t\tisSpar,\n\t\teditDisplayMode,\n\t\tshowPreview,\n\t\thandlePreviewClick,\n\t\tdisableDefaultActionColumn,\n\t\tdefaultActionColumnItems,\n\t\tdisabledDefaultActionColumnIcon,\n\t\trowActionMenu,\n\t\tdestructiveActionMenu,\n\t\thandleHeaderClick,\n\t\thandleActionsClick,\n\t\tt\n\t]);\n\n\t/* --------------------------------------------------------- table options */\n\n\tconst tableState = useMemo<Partial<MRT_TableState<any>>>(\n\t\t() => ({\n\t\t\tcolumnOrder,\n\t\t\tcolumnPinning,\n\t\t\tisSaving: isCreatingRow || isEditingRow,\n\t\t\tshowProgressBars: false,\n\t\t\trowSelection,\n\t\t\t...states,\n\t\t\tsorting: Array.isArray(states?.sorting)\n\t\t\t\t? states.sorting\n\t\t\t\t: Array.isArray(sorting)\n\t\t\t\t\t? sorting\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\tcolumnSizing,\n\t\t\tshowLoadingOverlay: false\n\t\t}),\n\t\t[columnOrder, isCreatingRow, isEditingRow, rowSelection, states, sorting, columnSizing, columnPinning]\n\t);\n\n\tconst mergedDefaultColumn = useMemo(\n\t\t() => ({ ...DEFAULT_COLUMN, ...defaultColumnProps }),\n\t\t[defaultColumnProps]\n\t);\n\n\tconst containerProps = useMemo(\n\t\t() => ({ sx: { ...(disableMaxHeight && { maxHeight: 'none !important' }) } }),\n\t\t[disableMaxHeight]\n\t);\n\n\t/**\n\t * Four cached props objects (pinned / unpinned × head / body). The per-cell\n\t * callbacks below only pick between these references, so making them\n\t * functions costs nothing: no object is allocated during render or scroll.\n\t */\n\tconst cellPropVariants = useMemo(() => {\n\t\tconst pinned = buildPinnedCellSx(pinnedColumnBgColor);\n\t\treturn {\n\t\t\thead: { sx: HEAD_CELL_SX },\n\t\t\theadPinned: { sx: { ...HEAD_CELL_SX, ...pinned } },\n\t\t\tbody: { sx: BODY_CELL_SX },\n\t\t\tbodyPinned: { sx: { ...BODY_CELL_SX, ...pinned } }\n\t\t};\n\t}, [pinnedColumnBgColor]);\n\n\tconst muiTableHeadCellProps = useCallback(\n\t\t({ column }: any) =>\n\t\t\tcolumn?.getIsPinned?.() ? cellPropVariants.headPinned : cellPropVariants.head,\n\t\t[cellPropVariants]\n\t);\n\n\tconst muiTableBodyCellProps = useCallback(\n\t\t({ column }: any) =>\n\t\t\tcolumn?.getIsPinned?.() ? cellPropVariants.bodyPinned : cellPropVariants.body,\n\t\t[cellPropVariants]\n\t);\n\n\tconst paginationProps = useMemo(\n\t\t() => ({\n\t\t\tshape: 'rounded' as const,\n\t\t\tpage: pageNo,\n\t\t\tcount: totalPages,\n\t\t\tshowRowsPerPage: false,\n\t\t\tboundaryCount: 3\n\t\t}),\n\t\t[pageNo, totalPages]\n\t);\n\n\tconst selectCheckboxProps = useMemo(\n\t\t() => ({\n\t\t\tsx: CHECKBOX_SX,\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t}),\n\t\t[]\n\t);\n\n\tconst selectAllCheckboxProps = useMemo(\n\t\t() => ({\n\t\t\tsx: { ...CHECKBOX_SX, '&.Mui-disabled': { color: 'theme.secondary.600' } },\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t}),\n\t\t[]\n\t);\n\n\tconst displayColumnDefOptions = useMemo(\n\t\t() => ({\n\t\t\t...DISPLAY_COLUMN_DEF_OPTIONS,\n\t\t\t'mrt-row-actions': {\n\t\t\t\tHeader: (\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t</IconButton>\n\t\t\t\t),\n\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\tsx: { '& .MuiBox-root': { gap: 0 }, backgroundColor: '#fff' }\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\t[handleHeaderClick]\n\t);\n\n\tconst renderRowActions = useCallback(\n\t\t({ row, table }: { row: MRT_Row<any>; table: MRT_TableInstance<any> }) => {\n\t\t\tconst startEditing = () => {\n\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\ttable.setEditingRow(row);\n\t\t\t\tsetDisableNextEdit(true);\n\t\t\t};\n\n\t\t\tconst actions = (\n\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t<Tooltip title={t('common.edit', { defaultValue: 'Edit' })}>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={startEditing} size='small'>\n\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={ICON_SX} />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{onDeleteRow && (\n\t\t\t\t\t\t<Tooltip title={t('common.delete', { defaultValue: 'Delete' })}>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\t\t\t\t\t\tonClick={() => setRowToDelete(row)}\n\t\t\t\t\t\t\t\t\tsize='small'>\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={ICON_SX} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t);\n\n\t\t\tif (rest?.enableExpanding) return row?.parentId ? actions : null;\n\t\t\treturn actions;\n\t\t},\n\t\t[disableNextEdit, onDeleteRow, rest?.enableExpanding, t]\n\t);\n\n\tconst renderBottomToolbarCustomActions = useCallback(\n\t\t({ table }: { table: MRT_TableInstance<any> }) => (\n\t\t\t<Button\n\t\t\t\tvariant='outlined'\n\t\t\t\tstartIcon={<Add />}\n\t\t\t\tclassName='add-row-btn'\n\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\t\ttable.setCreatingRow(true);\n\t\t\t\t\tsetDisableNextEdit(true);\n\t\t\t\t}}>\n\t\t\t\t{t('common.add')}\n\t\t\t</Button>\n\t\t),\n\t\t[disableNextEdit, t]\n\t);\n\n\tconst renderEmptyRowsFallback = useCallback(\n\t\t() => (\n\t\t\t<Box className='no-data'>\n\t\t\t\t<img src={images.common.tableNoData} alt='' />\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t{t('common.noData')}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t),\n\t\t[t]\n\t);\n\n\tconst muiTableBodyRowProps = useCallback(\n\t\t({ row, table }: { row: MRT_Row<any>; table: MRT_TableInstance<any> }) => {\n\t\t\tconst tState = table.getState();\n\t\t\tconst isRowBeingEdited = Boolean(tState?.editingRow?.id || tState?.creatingRow?.id);\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error);\n\n\t\t\treturn {\n\t\t\t\t...(onRowClick ? { onClick: () => onRowClickStable(row) } : {}),\n\t\t\t\tsx: {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\tbackgroundColor: !isRowBeingEdited\n\t\t\t\t\t\t? isErrorRow\n\t\t\t\t\t\t\t? 'theme.error.100'\n\t\t\t\t\t\t\t: 'inherit'\n\t\t\t\t\t\t: 'inherit',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: isRowBeingEdited\n\t\t\t\t\t\t\t? 'transparent'\n\t\t\t\t\t\t\t: isErrorRow\n\t\t\t\t\t\t\t\t? 'theme.error.200'\n\t\t\t\t\t\t\t\t: '#e8e8e8'\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover td:after': { backgroundColor: 'transparent' }\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t[onRowClick, onRowClickStable]\n\t);\n\n\tconst muiEditTextFieldProps = useCallback(\n\t\t({ row, column }: any) => ({\n\t\t\tInputProps: { disableUnderline: true },\n\t\t\tonBlur: (e: React.FocusEvent<HTMLInputElement>) =>\n\t\t\t\tupdateDataStable(e.target.value, column, row.id),\n\t\t\tvariant: 'outlined' as const,\n\t\t\tsx: ({ palette }: any) => ({\n\t\t\t\t'& .MuiOutlinedInput-root': {\n\t\t\t\t\t'& fieldset': {\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}),\n\t\t[updateDataStable]\n\t);\n\n\tconst resolvedGetRowId = useCallback(\n\t\t(row: any, index: number) =>\n\t\t\tgetRowId ? getRowId(row, index) : (row?.id ?? `row-${index}`),\n\t\t[getRowId]\n\t);\n\n\tconst table = useMaterialReactTable({\n\t\tcolumns: tableColumnDefs,\n\t\tdata: rows ?? EMPTY_ARRAY,\n\t\tdefaultColumn: mergedDefaultColumn,\n\t\tstate: tableState,\n\t\tgetRowId: resolvedGetRowId,\n\n\t\tmuiTableContainerProps: containerProps,\n\t\tcolumnResizeMode,\n\n\t\tonEditingRowSave: handleEditingRowSave,\n\t\tonCreatingRowSave: handleCreatingRowSave,\n\t\tonCreatingRowCancel: resetEditingState,\n\t\tonEditingRowCancel: resetEditingState,\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\n\t\tonRowSelectionChange: setRowSelection,\n\t\tonColumnOrderChange: handleColumnOrderingStable,\n\t\tonColumnSizingChange: setColumnSizing,\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\n\n\t\tdisplayColumnDefOptions,\n\t\trenderRowActions,\n\t\trenderEmptyRowsFallback,\n\t\t...(enableRowCreate ? { renderBottomToolbarCustomActions } : {}),\n\n\t\tenableColumnOrdering: true,\n\t\tenableRowSelection: enableRowSelection ?? true,\n\t\tenableEditing: enableEditing ?? true,\n\t\teditDisplayMode: editDisplayMode ?? 'cell',\n\t\tcreateDisplayMode: 'row',\n\t\tenableColumnResizing,\n\t\tenableRowDragging,\n\t\tenableTopToolbar: false,\n\t\tenableColumnActions: false,\n\t\tenableSorting: true,\n\t\tenableGrouping: true,\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\n\t\tenableColumnDragging: enableColumnDragging ?? true,\n\t\tenableStickyHeader: true,\n\t\tenableSortingRemoval: false,\n\t\tenablePagination,\n\t\tpaginationDisplayMode: 'pages',\n\t\tlayoutMode: 'grid',\n\n\t\tmuiPaginationProps: paginationProps,\n\t\tmuiEditTextFieldProps,\n\t\tmuiCircularProgressProps: CIRCULAR_PROGRESS_PROPS,\n\t\tmuiTableHeadCellProps,\n\t\tmuiTableBodyProps: BODY_PROPS,\n\t\tmuiTableHeadProps: HEAD_PROPS,\n\t\tmuiTableBodyCellProps,\n\t\tmuiTableBodyRowProps,\n\t\tmuiSelectCheckboxProps: selectCheckboxProps,\n\t\tmuiSelectAllCheckboxProps: selectAllCheckboxProps,\n\t\tmuiBottomToolbarProps: BOTTOM_TOOLBAR_PROPS,\n\t\ticons: TABLE_ICONS,\n\n\t\t...rest\n\t});\n\n\tconst tableRef = useLatestRef(table);\n\n\t/* ------------------------------------------------------------- effects */\n\n\t/**\n\t * Persist column widths on the *resize-end edge only*.\n\t * Previously this ran on every `columnSizing` change (i.e. every mousemove\n\t * in `onChange` mode) and on mount, pushing a page-state update that\n\t * re-rendered the whole page tree — the primary \"fluctuation\" source.\n\t */\n\tconst columnSizingRef = useLatestRef(columnSizing);\n\tconst wasResizingRef = useRef(false);\n\n\tuseEffect(() => {\n\t\tconst isResizing = Boolean(columnSizingInfo?.isResizingColumn);\n\t\tconst wasResizing = wasResizingRef.current;\n\t\twasResizingRef.current = isResizing;\n\n\t\tif (!wasResizing || isResizing) return;\n\n\t\tconst previous = activePage?.column_sizes ?? EMPTY_OBJECT;\n\t\tconst merged = { ...previous, ...columnSizingRef.current };\n\t\tif (shallowEqual(previous, merged)) return;\n\n\t\tupdatePageInfoRef.current?.({ column_sizes: merged });\n\t\thandleColumnResizingStable(columnSizingRef.current);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columnSizingInfo?.isResizingColumn]);\n\n\t/** Keep the controlled `columnSizes` prop in sync without clobbering drags. */\n\tuseEffect(() => {\n\t\tif (!columnSizes) return;\n\t\tsetColumnSizing((prev) => {\n\t\t\tconst next = { ...prev, ...columnSizes };\n\t\t\treturn shallowEqual(prev, next) ? prev : next;\n\t\t});\n\t}, [columnSizes]);\n\n\t/** Notify the parent about sorting — skipping the mount pass. */\n\tconst isFirstSortRun = useRef(true);\n\tuseEffect(() => {\n\t\tif (isFirstSortRun.current) {\n\t\t\tisFirstSortRun.current = false;\n\t\t\treturn;\n\t\t}\n\t\tif (typeof onSortingChange === 'function') {\n\t\t\tonSortingChange(sorting?.[0] ?? null);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [sorting]);\n\n\t/**\n\t * Hydrate selection from `selectedRowIds`. Applied once per distinct id set\n\t * (instead of the old one-shot latch), so later external changes are honoured\n\t * without clobbering the user's in-table selection on every data refresh.\n\t */\n\tconst selectedIdsKey = useMemo(\n\t\t() => selectedRowIds.map(String).sort().join('|'),\n\t\t[selectedRowIds]\n\t);\n\tconst appliedSelectionKeyRef = useRef<string | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!selectedIdsKey || !rows?.length) return;\n\t\tif (appliedSelectionKeyRef.current === selectedIdsKey) return;\n\n\t\tconst idSet = new Set(selectedRowIds.map(String));\n\t\tconst next: MRT_RowSelectionState = {};\n\t\trows.forEach((row) => {\n\t\t\tif (idSet.has(String(row?.id))) next[row.id] = true;\n\t\t});\n\t\tif (!Object.keys(next).length) return;\n\n\t\tappliedSelectionKeyRef.current = selectedIdsKey;\n\t\tsetRowSelection((prev) => (shallowEqual(prev, next) ? prev : next));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [selectedIdsKey, rows]);\n\n\t/**\n\t * Emit selection changes. Depends on `rowSelection` only — the old version\n\t * also depended on `table`, whose identity changes every render, which fired\n\t * the parent callback on every render and caused feedback re-render loops.\n\t */\n\tuseEffect(() => {\n\t\tconst instance = tableRef.current;\n\t\tif (!instance) return;\n\n\t\tif (enableRowSelection) {\n\t\t\tsetSelectedRowIdStable(instance.getSelectedRowModel().rows);\n\t\t}\n\n\t\tif (!onSelectRow) return;\n\n\t\tif (rest?.enableExpanding) {\n\t\t\tconst selected: any[] = [];\n\t\t\tconst selectionState = instance.getState().rowSelection;\n\t\t\tconst traverse = (rowList: any[], parentKey = '') => {\n\t\t\t\trowList.forEach((row, index) => {\n\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\n\t\t\t\t\tif (selectionState[rowKey]) selected.push(row);\n\t\t\t\t\tif (row.subRows?.length) traverse(row.subRows, rowKey);\n\t\t\t\t});\n\t\t\t};\n\t\t\ttraverse(instance.getRowModel().rows);\n\t\t\tonSelectRowStable(selected, rowSelection);\n\t\t} else {\n\t\t\tonSelectRowStable(instance.getSelectedRowModel().rows, rowSelection);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowSelection, enableRowSelection]);\n\n\t/** External reset. */\n\tuseEffect(() => {\n\t\tif (isResetRow) {\n\t\t\ttable?.resetRowSelection();\n\t\t\tappliedSelectionKeyRef.current = null;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isResetRow]);\n\n\t/* ------------------------------------------------------ context value */\n\n\tconst inlineEditContextValue = useMemo<InlineEditContextValue>(\n\t\t() => ({\n\t\t\terrors: validationErrors,\n\t\t\tvalidationSchema,\n\t\t\tsetValidationErrors,\n\t\t\tonChangeRowField: onChangeRowFieldStable,\n\t\t\tgetSelectedData: getSelectedDataStable\n\t\t}),\n\t\t[validationErrors, validationSchema, onChangeRowFieldStable, getSelectedDataStable]\n\t);\n\n\t/* ------------------------------------------------------------- render */\n\n\treturn (\n\t\t<InlineEditContext.Provider value={inlineEditContextValue}>\n\t\t\t<TableWrapper\n\t\t\t\tclassName='MRT-TableWrapper custom-table'\n\t\t\t\tdisableMaxHeight={disableMaxHeight}\n\t\t\t\tpinnedColumnBgColor={pinnedColumnBgColor}>\n\t\t\t\t<MaterialReactTable table={table} />\n\n\t\t\t\t<Menu\n\t\t\t\t\tanchorEl={menuAnchorEl}\n\t\t\t\t\topen={Boolean(menuAnchorEl)}\n\t\t\t\t\tonClose={handleHeaderClose}\n\t\t\t\t\tclassName='add-role-drp'>\n\t\t\t\t\t{showAddColumnPanel ? (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={() => setShowAddColumnPanel(false)}\n\t\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className='searchbar-box-list'>\n\t\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\t\tplaceholder={t('common.search', { defaultValue: 'Search' })}\n\t\t\t\t\t\t\t\t\thandleSearch={(value: any) =>\n\t\t\t\t\t\t\t\t\t\tsetColumnSearch(\n\t\t\t\t\t\t\t\t\t\t\ttypeof value === 'string' ? value : (value?.target?.value ?? '')\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className='all-attribute-title'>\n\t\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\n\t\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{filteredHiddenColumns.map((column) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tkey={String(column.accessorKey ?? column.id)}\n\t\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\n\t\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\n\t\t\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{enableAddCustomField && (\n\t\t\t\t\t\t\t\t<MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\n\t\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{visibleColumns.map((column) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tkey={String(column.accessorKey ?? column.id)}\n\t\t\t\t\t\t\t\t\tonClick={() => handleHideColumn(column)}\n\t\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Drag Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{!disableAddColumn && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => setShowAddColumnPanel(true)}\n\t\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\tvariant='body2'\n\t\t\t\t\t\t\t\t\t\tcolor='text.secondary'\n\t\t\t\t\t\t\t\t\t\tclassName='eye-icon'>\n\t\t\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</Menu>\n\n\t\t\t\t<Menu\n\t\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t\t{rowActionMenu?.map((option: any, index: number) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tkey={option.key ?? `row-action-${index}`}\n\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\tawait option.handleAction(activeMenuRow);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t? option.disabled(activeMenuRow)\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}>\n\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{typeof option.label === 'function'\n\t\t\t\t\t\t\t\t\t? option.label(activeMenuRow)\n\t\t\t\t\t\t\t\t\t: option.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\n\t\t\t\t\t{Boolean(destructiveActionMenu?.length) && [\n\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\tkey='destructive-divider'\n\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey='destructive-actions'\n\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveHeader'>\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any, index: number) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tkey={option.key ?? `destructive-action-${index}`}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(activeMenuRow);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(activeMenuRow)\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.label(activeMenuRow)\n\t\t\t\t\t\t\t\t\t\t\t: option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t]}\n\t\t\t\t</Menu>\n\n\t\t\t\t<ConfirmPopUp\n\t\t\t\t\topen={Boolean(rowToDelete)}\n\t\t\t\t\tonClose={() => setRowToDelete(null)}\n\t\t\t\t\tonConfirm={handleRowDelete}\n\t\t\t\t\ttitle={deleteConfirmTitle ?? t('common.deleteItem', { defaultValue: 'Delete Item' })}\n\t\t\t\t\tdescription={\n\t\t\t\t\t\tdeleteConfirmDescription ??\n\t\t\t\t\t\tt('common.deleteConfirm', {\n\t\t\t\t\t\t\tdefaultValue: 'Are you sure you want to delete entry ?'\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tloading={isDeletingRow}\n\t\t\t\t/>\n\t\t\t</TableWrapper>\n\t\t</InlineEditContext.Provider>\n\t);\n};\n\nexport const MaterialTable = memo(MaterialTableBase);\nMaterialTable.displayName = 'MaterialTable';\n\nexport default MaterialTable;\n","import { Box, DialogActions, DialogContent, DialogTitle, Divider, Grid, IconButton } from \"@mui/material\";\nimport Modal from '../modal/modal';\nimport Typography from \"../typography/typography\";\nimport DynamicInput from '../form-control/form-builder/form-builder-element/text';\nimport DynamicRadioButton from '../form-control/form-builder/form-builder-element/radio-button';\nimport { useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { generateValidationSchema, generateValidationSchema1 } from \"./validator\";\nimport DynamicSearchSelect from \"../form-control/form-builder/form-builder-element/dynamic-select\";\nimport DynamicPhone from '@/components/form-control/form-builder/form-builder-element/phone';\nimport Accordion from \"../accordion/accordion\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport _ from \"lodash\";\nimport './parties-modal.scss';\nimport { useAccountingSetting } from \"../../hooks/useAccountSetting\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { checkUniqueFields } from '../../utils/common';\nimport { getApiConfigSafe } from '../../utils/api-config';\nimport {\n addressColumns,\n addressOmitKeys,\n addressPayload,\n contactColumns,\n contactOmitKeys,\n contactPayload,\n ksaAddressPayload,\n PARTIES_FIELDS,\n PARTIES_FORM_ARRAY_NAME,\n partyType,\n processPartiesPayload\n} from \"./utils/constant\";\nimport MaterialTable from \"../material-table/material-table\";\nimport parsePhoneNumberFromString from \"libphonenumber-js\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport { transformTableColumns } from \"../../utils/common-utility\";\nimport { createParties } from \"../../redux/actionCreator\";\nimport { useDispatch } from \"react-redux\";\nimport { enqueueSnackbar } from 'notistack';\nimport { getErrorMessage } from \"../../utils/common\";\nimport ModalLoader from \"../loaders/modal-loader\";\nimport Button from \"../button/button\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface CustomerVendorModalProps {\n isOpen: boolean;\n handleModalClose?: () => void;\n modalProps?: any;\n type?: string;\n partyCreated?: () => void;\n isLoading?: boolean;\n onSave?: (payload: any) => Promise<void>;\n setIsOpen?: (value: boolean) => void;\n}\n\ninterface LocationState {\n state: any;\n country: any;\n}\n\nconst defaultLocationState: LocationState = { state: '', country: '' };\n\nexport default function CustomerVendorModal({\n isOpen,\n handleModalClose,\n modalProps,\n type,\n partyCreated,\n isLoading,\n onSave,\n setIsOpen\n}: CustomerVendorModalProps) {\n\n //Hooks\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { user } = useAuth();\n const isKSA = getApiConfigSafe()?.countryEnv === 'ksa';\n\n //Refs\n const locationRef = useRef<LocationState>(defaultLocationState);\n const isAddressInitialized = useRef(false);\n\n useEffect(() => {\n if (!isOpen) {\n isAddressInitialized.current = false;\n locationRef.current = { state: '', country: '' };\n }\n }, [isOpen]);\n\n //Local states\n const [addressRows, setAddressRows] = useState<any[]>([]);\n const [contactRows, setContactRows] = useState<any[]>([]);\n const [isCreating, setIsCreating] = useState(false);\n const [selectedCompanyData, setSelectedCompanyData] = useState<any[]>([]);\n const lastCheckedValues = useRef<Record<string, any>>({})\n\n //Form\n const {\n control,\n formState: { errors },\n trigger,\n getValues,\n handleSubmit,\n setValue,\n resetField,\n reset,\n watch,\n getFieldState,\n setError\n\n } = useForm({\n defaultValues: {\n status: true,\n parties: {\n account_type: 'Company',\n },\n },\n mode: 'all',\n resolver: generateValidationSchema1()\n });\n\n const fieldToUpdate = {\n [PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: 'receivable_account',\n [PARTIES_FIELDS.TAX_TEMPLATE]: type?.toLowerCase() === 'vendor' ? 'purchase_tax' : 'sales_tax',\n };\n\n useAccountingSetting({\n fieldToUpdate,\n companyField: PARTIES_FIELDS.COMPANY,\n fieldArrayName: PARTIES_FORM_ARRAY_NAME,\n formMethods: { control, setValue, watch, getFieldState },\n ...({ isUpdateAccount: true } as any),\n });\n\n\n const selectedType = useWatch({\n control,\n name: 'parties.account_type',\n });\n\n const responsiblePerson = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n });\n\n const mainContactNo = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n });\n\n const mainEmailIds = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n });\n\n const checkUniqueness = useCallback(async () => {\n const values = getValues()\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME]\n const fieldsToCheck = ['crn', 'email_ids', 'company_name']\n const allFields = ['crn', 'email_ids', 'contact_no', 'company_name']\n\n const nothingChanged = fieldsToCheck.every(\n (field) => lastCheckedValues.current[field] === formValues?.[field]\n )\n if (nothingChanged) return true\n\n const payload = {}\n allFields.forEach((field) => (payload[field] = formValues?.[field]))\n\n const response = await checkUniqueFields(payload)\n let isUnique = true\n\n for (const [field, exists] of Object.entries(response)) {\n if (exists) {\n setError(`${PARTIES_FORM_ARRAY_NAME}.${field}`, {\n type: 'manual',\n message: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n })\n isUnique = false\n }\n }\n\n lastCheckedValues.current = { ...formValues }\n\n return isUnique\n }, [getValues, setError])\n\n const handleFieldBlur = useCallback(\n async (fieldName: string) => {\n const uniquenessFields = ['crn', 'email_ids', 'company_name']\n if (!uniquenessFields.includes(fieldName)) return\n await checkUniqueness()\n },\n [checkUniqueness]\n )\n\n //Call Back functions\n const tableColumns = useCallback(\n (columns: any, tableRows: any) => {\n const phoneNumberCache = new Map();\n\n return transformTableColumns({\n columns,\n currencySymbol: undefined,\n translationFn: t,\n enableFooter: false,\n redirectionLink: undefined,\n redirectionLinkState: undefined,\n rows: tableRows,\n statusClasses: undefined,\n customizeValue: (row, columnAccessorKey, value) => {\n switch (columnAccessorKey) {\n case 'default_shipping_address':\n case 'default_billing_address': {\n return (\n <Box sx={{ display: \"flex\", gap: 1 }}>\n <Checkbox\n checked={Boolean(value)}\n sx={{ pointerEvents: 'none' }}\n />\n </Box>\n );\n }\n\n case 'phone':\n case 'contact_no': {\n if (!value) return '';\n const phoneKey = `phone-${value}`;\n if (!phoneNumberCache.has(phoneKey)) {\n const parsed = parsePhoneNumberFromString(`+${value}`);\n phoneNumberCache.set(phoneKey, parsed?.nationalNumber || '');\n }\n return phoneNumberCache.get(phoneKey);\n }\n\n case 'country_code': {\n const phone = row?.original?.phone || row?.original?.contact_no;\n if (!phone) return '';\n const countryCodeKey = `country-${phone}`;\n if (!phoneNumberCache.has(countryCodeKey)) {\n const parsed = parsePhoneNumberFromString(`+${phone}`);\n phoneNumberCache.set(countryCodeKey,\n parsed?.countryCallingCode ? `+${parsed.countryCallingCode}` : ''\n );\n }\n return phoneNumberCache.get(countryCodeKey);\n }\n\n default:\n return value;\n }\n }\n });\n },\n [t]\n );\n\n //Methods\n\n const handleRowOperation = async (\n eData: any,\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n isAddress: boolean\n ) => {\n try {\n const { values, row } = eData;\n const editRow = row.index >= 0;\n const payload = isAddress ? (isKSA ? ksaAddressPayload : addressPayload) : contactPayload;\n\n const processedValues: any = {};\n for (const key in payload) {\n if (_.has(values, key)) {\n processedValues[key] = values?.[key] ? values[key] : null;\n }\n }\n\n if (isAddress) {\n const dropdowns = {\n c: locationRef.current?.country,\n s: locationRef.current?.state,\n };\n\n const validatedValues = await validateAddressDefaults(processedValues, state, row.index);\n const addressValues = {\n ...validatedValues,\n ...(dropdowns.c?.id ? {\n country_name: dropdowns.c.name,\n country: dropdowns.c.id,\n country_data: dropdowns.c,\n country_id: dropdowns.c.id,\n } : {}),\n ...(dropdowns.s?.id ? {\n state_name: dropdowns.s.name,\n state: dropdowns.s.id,\n state_data: dropdowns.s,\n state_id: dropdowns.s.id,\n } : {}),\n };\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...addressValues } : ar));\n }\n return setState([...state, addressValues]);\n }\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...processedValues } : ar));\n }\n return setState([...state, processedValues]);\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const validateAddressDefaults = async (values: any, state: any[], index: number) => {\n let updatedValues = { ...values };\n const validate = (type: \"shipping\" | \"billing\") => {\n const u_data = [...state];\n const field = type === 'shipping' ? 'default_shipping_address' : 'default_billing_address';\n if (index >= 0) {\n u_data.splice(index, 1);\n }\n const hasDefault = u_data.some((d: any) => d?.[field]);\n\n if (hasDefault && values?.[field]) {\n throw new Error(\n `Another address is already marked as the default ${type} address. Please uncheck that before selecting this one`\n );\n }\n else if (!hasDefault) {\n updatedValues = {\n ...updatedValues,\n [field]: values?.[field] || state?.length == 0 ? 1 : 0,\n };\n }\n\n };\n\n await validate(\"shipping\");\n await validate(\"billing\");\n\n return updatedValues;\n };\n\n const deleteRow = async (\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n row: any\n ) => {\n const rowIndex = row.index;\n const updatedData = state.filter((_, i) => i !== rowIndex);\n setState(updatedData);\n return Promise.resolve();\n };\n\n const onChangeAddressTableField = async (e: any, t: any, r: any, col: any, selectedData: any) => {\n const fieldName = e?.target?.name;\n let updatedValues: any = null;\n\n if (col?.editProperties?.field_name) {\n locationRef.current = {\n ...locationRef.current,\n [col.editProperties.field_name]: selectedData,\n };\n }\n\n if (fieldName === 'country') {\n updatedValues = {\n ...r._valuesCache,\n country: selectedData?.id,\n country_id: selectedData?.id,\n state: null,\n state_id: null,\n state_name: null,\n };\n locationRef.current = {\n ...locationRef.current,\n state: null,\n };\n } else if (fieldName === 'state') {\n updatedValues = {\n ...r._valuesCache,\n state: selectedData?.id,\n state_id: selectedData?.id\n };\n } else if (fieldName === 'phone') {\n const p = parsePhoneNumberFromString(`+${e}`);\n updatedValues = {\n ...r._valuesCache,\n country_code: p?.countryCallingCode ? `+${p.countryCallingCode}` : '',\n };\n }\n\n const summaryFields = [\n 'contact_name',\n 'street_1',\n 'street_2',\n 'street_3',\n 'street_name',\n 'building_no',\n 'additional_no',\n 'national_address',\n 'zip_code',\n 'city',\n 'district_name',\n 'state',\n 'country'\n ];\n\n if (r._valuesCache) {\n const fieldValues = summaryFields.map(field => {\n if (field === 'country') {\n return locationRef.current?.country?.name || '';\n } else if (field === 'state') {\n return locationRef.current?.state?.name || '';\n } else if (field === fieldName) {\n return e.target?.value || '';\n }\n return r._valuesCache?.[field] || '';\n });\n\n const summary = fieldValues.reduce((acc, val, idx) => {\n if (!val) return acc;\n if (!acc) return val;\n\n val = val?.name || val;\n acc = acc?.name || acc;\n\n return [2, 3, 4, 5, 6, 7].includes(idx) ? `${acc} ${val}` : `${acc}, \\n${val}`;\n }, '');\n\n r._valuesCache.summary = summary;\n }\n\n if (updatedValues) {\n r.getAllCells().forEach((c: any) => {\n if (_.has(updatedValues, c.column.id)) {\n r._valuesCache[c.column.id] = updatedValues[c.column.id];\n }\n });\n }\n\n if (fieldName === 'country' && selectedData?.id) {\n r._valuesCache['country_id'] = selectedData.id;\n }\n\n return r._valuesCache;\n };\n\n\n\n const EMAIL_REGEX =\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst onSubmit = async () => {\n const isValid = await trigger();\n if (!isValid) return;\n\n const isUnique = await checkUniqueness()\n if (!isUnique) return\n\n const values = getValues();\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME];\n let emailArray: string[] = [];\n\n if (formValues?.email_ids) {\n emailArray = formValues?.email_ids\n ?.split(/\\s*,\\s*/)\n .map((email_id: any) => email_id?.replaceAll(',', '')?.trim())\n .filter((email_id: any) => email_id.match(EMAIL_REGEX));\n }\n\n const payload = {\n party: {\n ...processPartiesPayload(formValues),\n email_ids: emailArray,\n account_type: selectedType,\n status: 1,\n type,\n company_id: formValues?.[PARTIES_FIELDS.COMPANY] || null\n }\n };\n if (typeof onSave == 'function') {\n onSave?.(payload);\n return;\n }\n setIsCreating(true);\n try {\n\n const res = await dispatch(createParties(payload));\n\n if (res?.meta?.requestStatus === 'fulfilled') {\n enqueueSnackbar(`${type} ${t('common.party.msg.success')}`);\n closeModal();\n partyCreated();\n } else if (res?.meta?.requestStatus === 'rejected') {\n const errorMessage = getErrorMessage(res?.error?.message);\n enqueueSnackbar(errorMessage, { variant: 'error' });\n }\n } finally {\n setIsCreating(false);\n }\n };\n\n const closeModal = () => {\n resetForm()\n setAddressRows([]);\n setContactRows([]);\n locationRef.current = { state: '', country: '' };\n isAddressInitialized.current = false;\n handleModalClose?.();\n setIsOpen?.(false);\n }\n const resetForm = () => {\n reset();\n }\n\n //Use Effect\n useEffect(() => {\n const addressData = addressRows.map(a => _.omit(a, addressOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.ADDRESS}`, addressData);\n }, [addressRows, setValue]);\n\n useEffect(() => {\n const contactData = contactRows.map(c => _.omit(c, contactOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACTS}`, contactData);\n }, [contactRows, setValue]);\n\n useEffect(() => {\n setIsCreating(isLoading)\n }, [isLoading]);\n\n\n useEffect(() => {\n if (selectedType === 'Individual') {\n // Clear Company fields\n resetField('parties.company_name');\n resetField('parties.vat_number');\n resetField('parties.crn');\n }\n\n if (selectedType === 'Company') {\n // Clear Individual fields\n resetField('parties.first_name');\n resetField('parties.last_name');\n }\n }, [selectedType, resetField]);\n\n// Pre-fill company and currency from user data when modal opens\nuseEffect(() => {\n\t\tif (isOpen && user?.company_data) {\n\t\t\tconst companyId =\n\t\t\t\tuser?.entity_priority ||\n\t\t\t\tuser?.company_data?.id ||\n\t\t\t\t(Array.isArray(user?.company_data) && user?.company_data[0]?.id) ||\n\t\t\t\tnull;\n\n\n\t\t\tif (companyId) {\n\t\t\t\tsetValue('quotation.company_id', companyId);\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.COMPANY}`, companyId);\n\t\t\t}\n\t\t}\n }, [isOpen, user?.company_data, setValue]);\n\n useEffect(() => {\n if (isOpen && user?.company_currencies) {\n const currencies = Object.values(user.company_currencies);\n if (currencies.length > 0) {\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CURRENCY}`, [currencies[0].id]);\n }\n }\n }, [isOpen, user?.company_currencies , setValue]);\n\n // Auto fill first contact row\n useEffect(() => {\n const firstContactRow = contactRows[0];\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n const firstEmail = mainEmailIds\n ? mainEmailIds.split(/\\s*,\\s*/).map((e: string) => e.trim()).filter((e: string) => EMAIL_REGEX.test(e))[0] || ''\n : '';\n\n const updatedFirstRow = {\n name: responsiblePerson || '',\n contact_no: mainContactNo || '',\n email: firstEmail,\n country_code: parsedCountryCode,\n };\n\n if (firstContactRow) {\n const hasChanged = Object.keys(updatedFirstRow).some(\n (key) => firstContactRow[key] !== updatedFirstRow[key]\n );\n if (hasChanged) {\n const updatedRows = [...contactRows];\n updatedRows[0] = { ...updatedRows[0], ...updatedFirstRow };\n setContactRows(updatedRows);\n }\n } else {\n setContactRows([updatedFirstRow, ...contactRows]);\n }\n }, [responsiblePerson, mainContactNo, mainEmailIds]);\n\n // Auto fill first Address Row\n useEffect(() => {\n const firstRow = addressRows[0];\n const hasAddressDetails = firstRow?.street_1 || firstRow?.city;\n\n if (responsiblePerson && mainContactNo) {\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n // Create first row if doesn't exist yet\n if (!firstRow) {\n if (!isAddressInitialized.current) {\n setAddressRows([{\n ...(isKSA ? ksaAddressPayload : addressPayload),\n contact_name: responsiblePerson,\n phone: mainContactNo,\n country_code: parsedCountryCode,\n country: user?.country_data?.id || null,\n country_name: user?.country_data?.name || null,\n country_id: user?.country_data?.id || null,\n country_data: user?.country_data || null,\n }]);\n if (!locationRef.current?.country && user?.country_data) {\n locationRef.current = {\n ...locationRef.current,\n country: user.country_data,\n };\n }\n isAddressInitialized.current = true;\n }\n return;\n }\n\n // Update first row ONLY if address details are not yet filled\n if (!hasAddressDetails) {\n const contactChanged = firstRow?.contact_name !== responsiblePerson;\n const phoneChanged = firstRow?.phone !== mainContactNo;\n\n if (contactChanged || phoneChanged) {\n setAddressRows(prev => prev.map((row, idx) =>\n idx === 0\n ? { ...row, contact_name: responsiblePerson, phone: mainContactNo, country_code: parsedCountryCode }\n : row\n ));\n }\n }\n }\n }, [responsiblePerson, mainContactNo, user, addressRows]);\n\n // Auto-populate address row with country on modal open\n useEffect(() => {\n if (isOpen && user?.country_data && addressRows.length === 0 && !isAddressInitialized.current) {\n setAddressRows([{\n ...(isKSA ? ksaAddressPayload : addressPayload),\n country: user.country_data.id,\n country_name: user.country_data.name,\n country_id: user.country_data.id,\n country_data: user.country_data,\n default_shipping_address: true,\n default_billing_address: true,\n }]);\n if (!locationRef.current?.country) {\n locationRef.current = {\n ...locationRef.current,\n country: user.country_data,\n };\n }\n isAddressInitialized.current = true;\n }\n }, [isOpen, user, addressRows.length]);\n\n const basicDetailsSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.basic_details\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n\n <Grid item xs={12} sm={12}>\n <DynamicRadioButton\n label=''\n name={PARTIES_FIELDS.TYPE}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n options={partyType}\n display='row'\n title={t(t('common.party.fields.type'))}\n titlePosition='start'\n position={2} />\n </Grid>\n\n {selectedType === \"Individual\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.firstName_label')}\n name={PARTIES_FIELDS.FIRST_NAME}\n placeholder={t('common.party.fields.firstName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.lastName_label')}\n name={PARTIES_FIELDS.LAST_NAME}\n placeholder={t('common.party.fields.lastName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n </>\n )}\n\n\n {selectedType === \"Company\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.company_name_label')}\n name={PARTIES_FIELDS.COMPANY_NAME}\n placeholder={t('common.party.fields.company_name_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.COMPANY_NAME)}\n />\n </Grid>\n\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.vat_number_label')}\n name={PARTIES_FIELDS.VAT_NUMBER}\n placeholder={t('common.party.fields.vat_number_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={15}\n onlyNumbers\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.crn_label')}\n name={PARTIES_FIELDS.CRN}\n placeholder={t('common.party.fields.crn_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={10}\n onlyNumbers\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.CRN)}\n />\n </Grid>\n </>\n )}\n\n <Grid item xs={12} sm={6}>\n <DynamicPhone\n type=\"text\"\n label={t('common.party.fields.contact_label')}\n name={PARTIES_FIELDS.CONTACT_NO}\n placeholder={t('common.party.fields.contact_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.email_label')}\n name={PARTIES_FIELDS.EMAIL_IDS}\n placeholder={t('common.party.fields.email_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.EMAIL_IDS)}\n />\n </Grid>\n\n {/*Entity Name */}\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.company_label')}\n apiType=\"company\"\n selectedLabel='Companies'\n name={PARTIES_FIELDS.COMPANY}\n placeholder={t('common.party.fields.company_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.currency_label')}\n apiType='currency'\n selectedLabel='Currency'\n name={PARTIES_FIELDS.CURRENCY}\n placeholder={t('common.party.fields.currency_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n is_multiselect\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.responsible_person_label')}\n name={PARTIES_FIELDS.RESPONSIBLE_PERSON}\n placeholder={t('common.party.fields.responsible_person_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n\n </Grid>\n </Accordion>\n ), [t, control, selectedType]);\n\n const accountingSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.accounting\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.receivable_account_label')}\n apiType=\"accounts\"\n selectedLabel='Account'\n name={PARTIES_FIELDS.RECEIVABLE_ACCOUNT}\n placeholder={t('common.party.fields.receivable_account_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n customeFilter={{ '&account_type.eq': 'Receivable' }}\n options={[]}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.tax_template_label')}\n apiType=\"taxTemplate\"\n selectedLabel='Tax Template'\n name={PARTIES_FIELDS.TAX_TEMPLATE}\n placeholder={t('common.party.fields.tax_template_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n options={[]}\n />\n </Grid>\n </Grid>\n </Accordion>\n ), [t, control]);\n\n const memoizedAddressColumns = useMemo(() => tableColumns(addressColumns(isKSA)), [tableColumns, isKSA]);\n const memoizedContactColumns = useMemo(() => tableColumns(contactColumns), [tableColumns]);\n\n const addressSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.address\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n <MaterialTable\n rows={addressRows}\n columns={memoizedAddressColumns}\n paginationModel={{ pageNo: 1, limit: 20 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onEditRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onDeleteRow={(row) => deleteRow(addressRows, setAddressRows, row)}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, addressRows, tableColumns, errors]);\n\n const contactSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.contact\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n\n <MaterialTable\n rows={contactRows}\n columns={memoizedContactColumns}\n paginationModel={{ pageNo: 1, limit: 20 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, contactRows, setContactRows, false)}\n onEditRow={(data) => {\n handleRowOperation(data, contactRows, setContactRows, false);\n\n if (data.row.index === 0) {\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n data.values.name || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n data.values.contact_no || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n data.values.email || ''\n );\n }\n }}\n onDeleteRow={(row) => {\n if (row.index === 0) {\n enqueueSnackbar(t('common.party.errors.cannotDeleteResponsiblePerson'), { variant: 'error' });\n return Promise.resolve();\n }\n return deleteRow(contactRows, setContactRows, row);\n }}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, contactRows, tableColumns, errors]);\n\n return (\n <Modal\n open={isOpen}\n onClose={closeModal}\n maxWidth='lg'\n fullWidth\n sx={{ overflowY: 'hidden' }}\n {...modalProps}\n >\n {isCreating && <ModalLoader />}\n <form onSubmit={handleSubmit(onSubmit)} className=\"scroll-container\" style={{ position: 'relative', overflow: 'auto' }}>\n <DialogTitle className='itemEntryModal--DialogTitle'\n >\n <Typography type='s3' color='inherit' weight='medium'>\n {`Add ${type}`}\n </Typography>\n <IconButton onClick={closeModal}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n {basicDetailsSection}\n <Divider className='form--SectionDivider' />\n {addressSection}\n <Divider className='form--SectionDivider' />\n {contactSection}\n <Divider className='form--SectionDivider' />\n {accountingSection}\n </DialogContent>\n\n <DialogActions className='itemEntryModal--DialogAction' sx={{\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'white',\n zIndex: 1,\n padding: '8px 24px',\n justifyContent: 'end'\n }}>\n <Box display='flex' gap={1.5}>\n <Button\n className='itemEntryModal--DialogAction--WhiteBtn'\n onClick={closeModal}\n >\n {t('common.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleSubmit(onSubmit)}\n >\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n team: {\n name: string;\n department_id: string | null;\n team_lead_id: string | null;\n member_ids: string[] | null;\n description: string;\n };\n}\n\ninterface ITeamAddModalProps extends IModalComponentProps {\n initialValues?: {\n department_id?: string | number | null;\n };\n}\n\nconst teamValidationSchema = Yup.object().shape({\n team: Yup.object().shape({\n name: Yup.string().required('Team Name is required'),\n department_id: Yup.string().nullable(),\n team_lead_id: Yup.string().nullable().required('Team Lead is required'),\n member_ids: Yup.array().nullable(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: ITeamAddModalProps['initialValues']) => ({\n team: {\n name: '',\n department_id: initialValues?.department_id ?? null,\n team_lead_id: null,\n member_ids: null,\n description: '',\n }\n});\n\nexport const TeamAddModal: React.FC<ITeamAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, watch } = useForm<IFormValues>({\n mode: 'all',\n resolver: yupResolver(teamValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const selectedDepartmentId = watch('team.department_id');\n const selectedTeamLeadId = watch('team.team_lead_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n await onSave(values);\n handleModalClose();\n };\n\n const leadFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0\n }), [selectedDepartmentId]);\n\n const membersFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0,\n ...(selectedTeamLeadId ? { '&id.ne': selectedTeamLeadId } : {})\n }), [selectedDepartmentId, selectedTeamLeadId]);\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.teamModal.title', 'Add Team')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Team Name - Required */}\n <Grid item sm={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.name_label', 'Team Name')}\n name='name'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.name_placeholder', 'Enter Team Name')}\n required\n />\n </Grid>\n\n {/* Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.teamModal.department_placeholder', 'Select Department')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n />\n </Grid>\n\n {/* Team Lead - Required */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.team_lead_label', 'Team Lead')}\n name='team_lead_id'\n placeholder={t('hrms.organization_structure.teamModal.team_lead_placeholder', 'Select Team Lead')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required\n options={[]}\n customeFilter={leadFilter}\n />\n </Grid>\n\n {/* Members - Optional, multi-select */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.members_label', 'Members')}\n name='member_ids'\n placeholder={t('hrms.organization_structure.teamModal.members_placeholder', 'Select Members')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n is_multiselect\n customeFilter={membersFilter}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.description_label', 'Description')}\n name='description'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t('common.cancel')}\n </Button>\n <Button type='submit'>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n department: {\n company_id: string | null;\n department_code: string;\n name: string;\n parent_department_id: string | null;\n department_head_id: string | null;\n cost_code: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDepartmentAddModalProps extends IModalComponentProps {\n initialValues?: {\n parent_department_id?: string | number | null;\n company_id?: string | number | null;\n };\n}\n\nconst departmentValidationSchema = Yup.object().shape({\n department: Yup.object().shape({\n company_id: Yup.string().nullable().required('Company is required'),\n department_code: Yup.string().required('Department Code is required'),\n name: Yup.string().required('Department Name is required'),\n parent_department_id: Yup.string().nullable(),\n department_head_id: Yup.string().nullable(),\n cost_code: Yup.string(),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDepartmentAddModalProps['initialValues']) => ({\n department: {\n company_id: initialValues?.company_id ?? null,\n department_code: '',\n name: '',\n parent_department_id: initialValues?.parent_department_id ?? null,\n department_head_id: null,\n cost_code: '',\n status: true,\n description: '',\n }\n});\n\nexport const DepartmentAddModal: React.FC<IDepartmentAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(departmentValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('department.company_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.departmentModal.title', 'Add Department')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.departmentModal.company_placeholder', 'Select Company')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department Code - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.code_label', 'Department Code')}\n name='department_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.code_placeholder', 'Enter Department Code')}\n required\n />\n </Grid>\n\n {/* Department Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.name_label', 'Department Name')}\n name='name'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.name_placeholder', 'Enter Department Name')}\n required\n />\n </Grid>\n\n {/* Parent Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.parent_department_label', 'Parent Department')}\n name='parent_department_id'\n placeholder={t('hrms.organization_structure.departmentModal.parent_department_placeholder', 'Select Parent Department')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n customeFilter={{\n '&is_parent.eq': true,\n '&company_id.eq': rootCompanyId || 0\n }}\n />\n </Grid>\n\n {/* Department Head - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.department_head_label', 'Department Head')}\n name='department_head_id'\n placeholder={t('hrms.organization_structure.departmentModal.department_head_placeholder', 'Select Department Head')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Cost Code - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.cost_code_label', 'Cost Code')}\n name='cost_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.cost_code_placeholder', 'Enter Cost Code')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='department'\n label={t('hrms.organization_structure.departmentModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.description_label', 'Description')}\n name='description'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\n\nimport Modal from '../../../../modal/modal';\nimport Typography from '../../../../typography/typography';\nimport DynamicInput from '../text';\nimport Button from '../../../../button/button';\nimport ModalLoader from '../../../../loaders/modal-loader';\nimport Toast from '../../../../toast/toast';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogProps,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { useForm } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport './location-add-modal.scss';\nimport DynamicSearchSelect from '../dynamic-select';\ninterface BrandAddModalProps {\n isOpen: boolean;\n setIsOpen: () => void;\n modalProps?: DialogProps;\n onSave: (data: string) => void;\n isLoading?: boolean;\n}\n\ninterface IFormValues {\n location_data: {\n name: string;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst validationSchema = Yup.object().shape({\n location_data: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n short_name: Yup.string().required('Short name is required'),\n company_id: Yup.number().required('Company is required')\n })\n});\n\nconst LocationAddModal: React.FC<BrandAddModalProps> = ({\n isOpen,\n setIsOpen,\n modalProps,\n onSave,\n isLoading\n}) => {\n const { t } = useTranslation();\n const [toast, setToast] = useState<IToast | null>(null);\n const { control, handleSubmit, reset } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema)\n });\n const handleModalClose = () => {\n reset({ location_data: undefined });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n // handleModalClose();\n onSave(values?.location_data)\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}>\n <>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.item.locationModal.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_name_label\")}\n name='name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_name_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_code_label\")}\n name='short_name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_code_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\n \"accounting.authorize_commission.fields.company_label\"\n )}\n name=\"company_id\"\n placeholder={t(\n \"accounting.authorize_commission.fields.company_placeholder\"\n )}\n fieldArrayName='location_data'\n formControl={control}\n apiType='company'\n getSelectedData={(data: any) =>\n // setSelectedData(name, data)\n console.log(\"data\", data)\n }\n required={true}\n />\n </Grid>\n </Grid>\n\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}>\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\n </Box>\n </DialogActions>\n </form>\n </>\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </Modal>\n );\n};\n\nexport default LocationAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n designation: {\n company_id: number | null;\n designation_code: string;\n name: string;\n department_id: number | null;\n reports_to: string | null;\n level: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDesignationAddModalProps extends IModalComponentProps {\n initialValues?: {\n company_id?: number | null;\n department_id?: number | null;\n parent_designation_id?: number | null;\n };\n}\n\nconst designationValidationSchema = Yup.object().shape({\n designation: Yup.object().shape({\n company_id: Yup.number().nullable().required('Company is required'),\n designation_code: Yup.string(),\n name: Yup.string().required('Designation Name is required'),\n department_id: Yup.number().nullable().required('Department is required'),\n reports_to: Yup.string().nullable(),\n level: Yup.number().nullable().typeError('Level must be a number'),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDesignationAddModalProps['initialValues']) => ({\n designation: {\n company_id: initialValues?.company_id ?? null,\n designation_code: '',\n name: '',\n department_id: initialValues?.department_id ?? null,\n reports_to: initialValues?.parent_designation_id ?? null,\n level: null,\n status: true,\n description: '',\n }\n});\n\nexport const DesignationAddModal: React.FC<IDesignationAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(designationValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('designation.company_id');\n const rootDepartmentId = watch('designation.department_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.designationModal.title', 'Add Designation')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.designationModal.company_placeholder', 'Select Company')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.designationModal.department_placeholder', 'Select Department')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='department'\n required\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n // '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Designation Code */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.code_label', 'Designation Code')}\n name='designation_code'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.code_placeholder', 'Enter Designation Code')}\n />\n </Grid>\n\n {/* Designation Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.name_label', 'Designation Name')}\n name='name'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.name_placeholder', 'Enter Designation Name')}\n required\n />\n </Grid>\n\n {/* Reports To (Parent Designation) - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.reports_to_label', 'Reports To')}\n name='reports_to'\n placeholder={t('hrms.organization_structure.designationModal.reports_to_placeholder', 'Select Reports To')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='designation'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&department_id.eq': rootDepartmentId || 0,\n }}\n />\n </Grid>\n\n {/* Level - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.level_label', 'Level')}\n name='level'\n fieldArrayName='designation'\n disabled\n placeholder={t('hrms.organization_structure.designationModal.level_placeholder', 'Enter Level')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='designation'\n label={t('hrms.organization_structure.designationModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.description_label', 'Description')}\n name='description'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState, useEffect, useCallback } from 'react';\n\nimport Modal from '../../../../modal/modal';\nimport Typography from '../../../../typography/typography';\nimport DynamicInput from '../text';\nimport Button from '../../../../button/button';\nimport ModalLoader from '../../../../loaders/modal-loader';\nimport Toast from '../../../../toast/toast';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { FormProvider, useForm, useWatch } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport DynamicSearchSelect from '../dynamic-select';\nimport DynamicSelect from '../select';\nimport { IModalComponentProps } from '../../index';\nimport { fetchOptions, skuGenerator } from '../../../../../utils/common';\n\nimport './fixed-asset-item-add-modal.scss';\n\ninterface IFormValues {\n inventory_fixed_asset_item: {\n name: string;\n sku: string;\n category: number | null;\n base_unit: number | null;\n company: number[];\n unit_of_measurement: number | null;\n stock_unit: number | null;\n purchase_unit: number | null;\n sales_unit: number | null;\n costing_method: string;\n depreciation_method: string;\n computation_method: string;\n default_tax_id: number | null;\n income_account_id: number | null;\n asset_account_id: number | null;\n cogs_account_id: number | null;\n fixed_asset_account_id: number | null;\n depreciation_account_id: number | null;\n declining_factor: number | null;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst COSTING_METHODS = [\n { label: 'FIFO', value: 'FIFO' },\n { label: 'LIFO', value: 'LIFO' },\n { label: 'Weighted Average Cost', value: 'Weighted Average Cost' }\n];\n\nconst DEPRECIATION_METHODS = [\n { label: 'Straight line', value: 'Straight line' },\n { label: 'Declining', value: 'Declining' }\n];\n\nconst COMPUTATION_METHODS = [\n { label: 'Constant periods', value: 'Constant periods' },\n { label: 'Based on days per period', value: 'Based on days per period' }\n];\n\nconst validationSchema = Yup.object().shape({\n inventory_fixed_asset_item: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n sku: Yup.string().required('SKU is required'),\n category: Yup.mixed().required('Category is required'),\n base_unit: Yup.mixed().required('Base Unit is required'),\n company: Yup.array().min(1, 'At least one company is required').required('Company is required'),\n unit_of_measurement: Yup.mixed().required('Unit of Measurement is required'),\n stock_unit: Yup.mixed().nullable(),\n purchase_unit: Yup.mixed().nullable(),\n sales_unit: Yup.mixed().nullable(),\n costing_method: Yup.string().required('Costing Method is required'),\n depreciation_method: Yup.string().required('Depreciation Method is required'),\n computation_method: Yup.string().required('Computation Method is required'),\n default_tax_id: Yup.mixed().required('Default Tax is required'),\n income_account_id: Yup.mixed().required('Income Account is required'),\n asset_account_id: Yup.mixed().required('Asset Account is required'),\n cogs_account_id: Yup.mixed().required('COGS Account is required'),\n fixed_asset_account_id: Yup.mixed().required('Fixed Asset Account is required'),\n depreciation_account_id: Yup.mixed().required('Depreciation Account is required'),\n declining_factor: Yup.number()\n .nullable()\n .when('depreciation_method', {\n is: 'Declining',\n then: (schema) => schema.required('Declining Factor is required').min(0, 'Must be positive'),\n otherwise: (schema) => schema.nullable(),\n }),\n })\n});\n\nconst FixedAssetItemAddModal: React.FC<IModalComponentProps> = ({\n isOpen,\n setIsOpen,\n modalProps,\n onSave,\n isLoading\n}) => {\n const { t } = useTranslation();\n const [toast, setToast] = useState<IToast | null>(null);\n const [selectedCategoryData, setSelectedCategoryData] = useState<any>(null);\n const unitFields = ['stock_unit', 'purchase_unit', 'sales_unit', 'consumption_unit', 'base_unit'];\n const defaultValues = {\n inventory_fixed_asset_item: {\n name: '',\n sku: '',\n category: null,\n base_unit: null,\n company: [],\n unit_of_measurement: null,\n stock_unit: null,\n purchase_unit: null,\n sales_unit: null,\n costing_method: '',\n depreciation_method: '',\n computation_method: '',\n default_tax_id: null,\n income_account_id: null,\n asset_account_id: null,\n cogs_account_id: null,\n fixed_asset_account_id: null,\n depreciation_account_id: null,\n declining_factor: null,\n status: 1\n }\n }\n\n const methods = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: defaultValues,\n });\n const { control, handleSubmit, reset, setValue, trigger } = methods || {};\n\n // Watch name and category for auto-generating SKU\n const [watchedName, watchedCategory, watchedUom, watchedDepreciationMethod] = useWatch({\n control, name:\n ['inventory_fixed_asset_item.name',\n 'inventory_fixed_asset_item.category',\n 'inventory_fixed_asset_item.unit_of_measurement',\n 'inventory_fixed_asset_item.depreciation_method']\n });\n\n\n // Auto-generate SKU when name or category changes\n useEffect(() => {\n if (watchedName && selectedCategoryData?.category_name) {\n const generatedSku = skuGenerator({\n name: watchedName,\n category: selectedCategoryData.category_name\n });\n setValue('inventory_fixed_asset_item.sku', generatedSku);\n }\n }, [watchedName, selectedCategoryData, setValue]);\n\n const handleModalClose = () => {\n reset(defaultValues);\n setSelectedCategoryData(null);\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave({\n ...values.inventory_fixed_asset_item as any,\n type: 'inventory-fixed-asset',\n status: 1\n });\n handleModalClose();\n };\n\n const handleCategorySelect = useCallback((data: any) => {\n setSelectedCategoryData(data);\n }, []);\n\n const updateUomFields = useCallback(async () => {\n if (!watchedUom) return\n const filter = {\n '&template_id.eq': watchedUom,\n '&is_base_unit.eq': 1\n }\n const uomData = await fetchOptions('uom', filter, [], false)\n unitFields.forEach((item) => {\n setValue(`inventory_fixed_asset_item.${item}`, uomData?.id)\n })\n }, [watchedUom])\n useEffect(() => {\n updateUomFields()\n }, [updateUomFields])\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}>\n <>\n <FormProvider {...methods}>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='fixedAssetItemAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.fixed_asset_items.modal.title\", \"Add Fixed Asset Item\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='fixedAssetItemAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Name */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.name_label\", \"Name\")}\n name='name'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.name_placeholder\", \"Enter Name\")}\n required\n />\n </Grid>\n\n {/* SKU - Auto-generated */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.sku_label\", \"SKU\")}\n name='sku'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.sku_placeholder\", \"Auto-generated\")}\n required\n disabled\n />\n </Grid>\n\n {/* Category */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.category_label\", \"Category\")}\n name=\"category\"\n placeholder={t(\"inventory.fixed_asset_items.modal.category_placeholder\", \"Select Category\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='categoryItems'\n options={[]}\n required={true}\n getSelectedData={handleCategorySelect}\n />\n </Grid>\n\n\n {/* Company */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.company_label\", \"Company\")}\n name=\"company\"\n placeholder={t(\"inventory.fixed_asset_items.modal.company_placeholder\", \"Select Company\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='company'\n options={[]}\n is_multiselect={true}\n required={true}\n />\n </Grid>\n\n {/* Costing Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.costing_method_label\", \"Costing Method\")}\n name=\"costing_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.costing_method_placeholder\", \"Select Costing Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COSTING_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Unit of Measurement Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.uom_section\", \"Unit of Measurement\")}\n </Typography>\n </Grid>\n\n {/* UOM Template */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_label\", \"UOM Template\")}\n name=\"unit_of_measurement\"\n placeholder={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_placeholder\", \"Select UOM Template\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom_templates'\n required={true}\n />\n </Grid>\n\n {/* Stock Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.stock_unit_label\", \"Stock Unit\")}\n name=\"stock_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.stock_unit_placeholder\", \"Select Stock Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Purchase Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.purchase_unit_label\", \"Purchase Unit\")}\n name=\"purchase_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.purchase_unit_placeholder\", \"Select Purchase Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Sales Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"sales_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"consumption_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.base_unit_label\", \"Base Unit\")}\n name=\"base_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.base_unit_placeholder\", \"Select Base Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n disabled\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0,\n '&is_base_unit.eq': 1\n }}\n />\n </Grid>\n\n {/* Depreciation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_method_label\", \"Depreciation Method\")}\n name=\"depreciation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_method_placeholder\", \"Select Depreciation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={DEPRECIATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Declining Factor */}\n {watchedDepreciationMethod === 'Declining' && (\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.declining_factor_label\", \"Declining Factor\")}\n name='declining_factor'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.declining_factor_placeholder\", \"Enter Declining Factor\")}\n required\n />\n </Grid>\n )}\n\n {/* Computation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.computation_method_label\", \"Computation Method\")}\n name=\"computation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.computation_method_placeholder\", \"Select Computation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COMPUTATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Accounting Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.accounting_section\", \"Accounting\")}\n </Typography>\n </Grid>\n\n {/* Default Tax */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.default_tax_label\", \"Default Tax\")}\n name=\"default_tax_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.default_tax_placeholder\", \"Select Default Tax\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='taxTemplate'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Income Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.income_account_label\", \"Income Account\")}\n name=\"income_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.income_account_placeholder\", \"Select Income Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.in': ['Income', 'Assets'] }}\n />\n </Grid>\n\n {/* Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.asset_account_label\", \"Asset Account\")}\n name=\"asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.asset_account_placeholder\", \"Select Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* COGS Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.cogs_account_label\", \"COGS Account\")}\n name=\"cogs_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.cogs_account_placeholder\", \"Select COGS Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Fixed Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_label\", \"Fixed Asset Account\")}\n name=\"fixed_asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_placeholder\", \"Select Fixed Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* Depreciation Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_account_label\", \"Depreciation Account\")}\n name=\"depreciation_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_account_placeholder\", \"Select Depreciation Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='fixedAssetItemAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='fixedAssetItemAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}>\n {t(\"common.cancel\")}\n </Button>\n <Button type=\"button\" onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\n </Box>\n </DialogActions>\n </form>\n </FormProvider>\n </>\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </Modal>\n );\n};\n\nexport default FixedAssetItemAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSelect, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n payment_term: {\n name: string;\n due_date_based_on: number | null;\n credit_days: number | null;\n mode_of_payment: string;\n discount_type: string;\n discount: number | null;\n discount_due_date_based_on: number | null;\n discount_validity: number | null;\n description: string;\n };\n}\n\nconst validationSchema = Yup.object().shape({\n payment_term: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n due_date_based_on: Yup.number()\n .typeError('Due date based on is required')\n .required('Due date based on is required'),\n credit_days: Yup.number()\n .typeError('Credit days is required')\n .required('Credit days is required')\n .positive('Must be positive')\n .integer('Must be a whole number'),\n mode_of_payment: Yup.string().nullable(),\n discount_type: Yup.string().nullable(),\n discount: Yup.number().nullable().typeError('Must be a number'),\n discount_due_date_based_on: Yup.number().nullable().typeError('Must be a number'),\n discount_validity: Yup.number().nullable().typeError('Must be a number').integer('Must be a whole number'),\n description: Yup.string().nullable(),\n })\n});\n\nconst MODE_OF_PAYMENT_OPTIONS = [\n { label: 'Bank Draft', value: 'BANK_DRAFT' },\n { label: 'Cash', value: 'CASH' },\n { label: 'Credit Card', value: 'CREDIT_CARD' },\n { label: 'Wire Transfer', value: 'WIRE_TRANSFER' }\n];\n\nconst DISCOUNT_TYPE_OPTIONS = [\n { label: 'Percentage', value: 'PERCENTAGE' },\n { label: 'Amount', value: 'AMOUNT' }\n];\n\nexport const PaymentTermAddModal: React.FC<IModalComponentProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: {\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n }\n });\n\n const handleModalClose = () => {\n reset({\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values?.payment_term as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='paymentTermAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"common.paymentTerm.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='paymentTermAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.name_label\")}\n name='name'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.name_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.due_date_based_on_label\")}\n apiType='dueDateType'\n name='due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.due_date_based_on_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.credit_days_label\")}\n name='credit_days'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.credit_days_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.mode_of_payment_label\")}\n name='mode_of_payment'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.mode_of_payment_placeholder\")}\n options={MODE_OF_PAYMENT_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.discount_type_label\")}\n name='discount_type'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_type_placeholder\")}\n options={DISCOUNT_TYPE_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_label\")}\n name='discount'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.discount_due_date_based_on_label\")}\n apiType='dueDateType'\n name='discount_due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_due_date_based_on_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_validity_label\")}\n name='discount_validity'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_validity_placeholder\")}\n />\n </Grid>\n <Grid item xs={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.description_label\")}\n name='description'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.description_placeholder\")}\n is_multiline\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='paymentTermAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='paymentTermAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t(\"common.save\")}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","import { getErrorMessage, getToken } from '../../../../utils/common';\nimport { postV1WarehouseLocation, postV1InventoryFixedAssetItems, postV1CategoryItems, postV1Brand } from '../../../../api-client/api.inventory/api';\nimport { PostV1WarehouseLocationRequest } from '../../../../api-client/api.inventory/api-types';\nimport { enqueueSnackbar } from 'notistack';\nimport { postV1Parties, postV1PartiesIndustry, postV1JournalTypes, postV1PaymentTerms } from '../../../../api-client/api.accounting/api';\nimport { postV1Teams, postV1Designation, postV1Departments, postV1DepartmentsTeams } from '../../../../api-client/api.hrms/api';\nimport { postV1SourceTypes } from '../../../../api-client/api.sales/api';\nimport CustomerVendorModal from '@/components/parties-modal';\nimport { TeamAddModal } from '../../../team-add-modal';\nimport { DepartmentAddModal } from '@/components/department-add-modal';\nimport { LocationAddModal } from './location-add-modal';\nimport { DesignationAddModal } from '@/components/designation-add-modal';\nimport { FixedAssetItemAddModal } from './fixed-asset-item-add-modal';\nimport { DialogProps } from '@mui/material';\nimport { BrandAddModal } from '@/components/brand-add-modal';\nimport { CategoryAddModal } from '@/components/category-add-modal';\nimport { IndustryAddModal } from '@/components/industry-add-modal';\nimport { SourceTypeAddModal } from '@/components/source-type-add-modal/source-type-add-modal';\nimport { JournalTypeAddModal } from '@/components/journal-type-add-modal';\nimport { PaymentTermAddModal } from '@/components/payment-term-add-modal';\n\nexport const createApiThunk = async (api: (payload: any) => Promise<any>, payload: any) => {\n\ttry {\n\t\treturn await api({ ...payload, ...getToken() })\n\t} catch (error) {\n\t\ttry {\n\t\t\tenqueueSnackbar(getErrorMessage(error?.message), { variant: 'error' });\n\t\t} catch {\n\t\t\tconsole.error('[createApiThunk] enqueueSnackbar not available:', getErrorMessage(error?.message));\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport interface IAddConfig {\n\tapi: (payload: any) => Promise<any>;\n\tcomponent: any;\n}\n\nexport interface IModalComponentProps {\n\tisOpen: boolean;\n\tsetIsOpen: () => void;\n\tmodalProps?: DialogProps;\n\tonSave: (data: string) => void;\n\tisLoading?: boolean;\n}\n\nconst addMapper: Record<string, IAddConfig> = {\n\tlocation: {\n\t\tapi: (payload: PostV1WarehouseLocationRequest) => createApiThunk(postV1WarehouseLocation, payload),\n\t\tcomponent: LocationAddModal,\n\t},\n\tparty: {\n\t\tapi: (payload: any) => createApiThunk(postV1Parties, payload),\n\t\tcomponent: CustomerVendorModal,\n\t},\n\tdepartment: {\n\t\tapi: (payload: any) => createApiThunk(postV1Departments, payload),\n\t\tcomponent: DepartmentAddModal,\n\t},\n\tteam: {\n\t\tapi: (payload: any) => createApiThunk(postV1DepartmentsTeams, payload),\n\t\tcomponent: TeamAddModal,\n\t},\n\tdesignation: {\n\t\tapi: (payload: any) => createApiThunk(postV1Designation, payload),\n\t\tcomponent: DesignationAddModal,\n\t},\n\tfixedAssetItem: {\n\t\tapi: (payload: any) => createApiThunk(postV1InventoryFixedAssetItems, payload),\n\t\tcomponent: FixedAssetItemAddModal,\n\t},\n\tbrand: {\n\t\tapi: (payload: any) => createApiThunk(postV1Brand, payload),\n\t\tcomponent: BrandAddModal,\n\t},\n\tcategory: {\n\t\tapi: (payload: any) => createApiThunk(postV1CategoryItems, payload),\n\t\tcomponent: CategoryAddModal,\n\t},\n\tindustry: {\n\t\tapi: (payload: any) => createApiThunk(postV1PartiesIndustry, payload),\n\t\tcomponent: IndustryAddModal,\n\t},\n\tsourceType: {\n\t\tapi: (payload: any) => createApiThunk(postV1SourceTypes, payload),\n\t\tcomponent: SourceTypeAddModal,\n\t},\n\tjournalType: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tjournal_type: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tpaymentTerm: {\n\t\tapi: (payload: any) => createApiThunk(postV1PaymentTerms, payload),\n\t\tcomponent: PaymentTermAddModal,\n\t},\n};\n\nexport const dynamicSelectAdd = (addType: string): IAddConfig | null => {\n\tconst config = addMapper[addType];\n\n\tif (!config) {\n\t\tconsole.warn(`No configuration found for addType: ${addType}`);\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t...config\n\t};\n};\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n OutlinedInput,\n} from \"@mui/material\";\nimport Select from \"./select/select\";\nimport Checkbox from \"./checkbox/checkbox\";\nimport Typography from \"./typography/typography\";\nimport { Close } from \"./icons\";\nimport { debounce, sortBy } from \"lodash\";\nimport { fetchApi } from \"../utils/api\";\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\nimport { Add } from \"@mui/icons-material\";\nimport { useLanguage } from '@erpsquad/common/runtime';\nimport { useTranslation } from \"react-i18next\";\nimport { dynamicSelectAdd } from \"./form-control/form-builder/form-builder-element/select-configuration\";\nimport { useAuth } from '@erpsquad/common/runtime';\n\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\ninterface IMenuItems {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: any;\n disabledIds: any[];\n handleClear: () => void;\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface SearchableSelectProps {\n labelId: string;\n label: string;\n value: any;\n onChange?: (event: any, selectedData?: any) => void;\n options: IOption[];\n multiple?: boolean;\n placeholder?: string;\n size?: \"small\" | \"medium\";\n searchPlaceholder?: string;\n CustomDropDownIcon: React.ReactNode;\n customStyle: any;\n name?: string;\n defaultValue?: any;\n apiType?: string;\n isInternal?: boolean;\n autoFocus?: any;\n error?: any;\n disabled: any;\n customeFilter?: string;\n attributes?: string;\n getSelectedData?: (row: any) => void;\n disabledIds: any[];\n labelKey?: string;\n valueKey?: string;\n inputStyle?: any;\n onChipRemove?: (value: string) => void;\n selectedLabel?: string;\n is_loading?: boolean;\n hasParent?: boolean;\n sortOrder?: string;\n handleChange?: (value: string | string[]) => void;\n enable_footer?: boolean;\n onFooterClick?: () => void;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n addType?: string;\n isMergeOptions?: boolean;\n attributes?: string[];\n modalComponentProps?: any;\n}\n\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n field,\n disabledIds,\n handleClear,\n handleChange,\n hasParent = false,\n}: IMenuItems) => {\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{placeholder}</em>\n </Typography>\n </MenuItem>\n );\n }\n\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\n\n // Parent selection handlers\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n Array.isArray(options) && options?.length > 0 && options?.forEach((option, index) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={`${option?.value}-${index}`}\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value) || (hasParent && !multiple)}\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() =>\n hasParent\n ? handleParentChange(option.value, option.options || [])\n : handleChange?.(option.value)\n }\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option?.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n // Handle child options for grouped items\n if (option?.isGroup && Array.isArray(option?.options)) {\n option.options.forEach((opt, index) => {\n items.push(\n <MenuItem\n id={`${option.value}-${opt.value} ${index}`}\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\n sx={{ pl: 5 }}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n key={`${option.value}-${opt.value} ${index}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\n />\n )}\n <Typography\n id={`${option.value}-${opt.value} ${index}`}\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n\n // Footer item\n if (field.enable_footer || field.addType) {\n items.push(\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={() => {\n if (field.onFooterClick) {\n field.onFooterClick();\n } else if (field.handleModalOpen) {\n field.handleModalOpen();\n }\n }}>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {field.label}\n </Typography>\n </MenuItem>\n </Box>\n );\n }\n\n // No data fallback\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\n const {\n labelId,\n label,\n value,\n onChange,\n options,\n multiple = false,\n size = \"small\",\n searchPlaceholder,\n placeholder,\n name,\n defaultValue,\n apiType,\n isInternal = false,\n autoFocus,\n error,\n disabled,\n customeFilter,\n attributes,\n getSelectedData,\n disabledIds,\n onChipRemove,\n selectedLabel,\n is_loading,\n customStyle = {},\n CustomDropDownIcon,\n labelKey,\n valueKey,\n inputStyle,\n hasParent = false,\n sortOrder = 'id:-1',\n handleChange,\n enable_footer = false,\n onFooterClick,\n showCancelButton = true,\n customFetchApi,\n addType,\n isMergeOptions = false,\n } = props;\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState(false);\n const [initailLoading, setInitialLoading] = useState(false);\n const [searchInitiate, setSearchInitiate] = useState(false);\n const [open, setOpen] = useState(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [addConfig, setAddConfig] = useState<any>(null);\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n const { t } = useTranslation();\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n const { isRtl } = useLanguage();\n const limit = 25;\n\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return isInternal || (!apiType && !customFetchApi);\n }, [isInternal, apiType, customFetchApi, isMergeOptions]);\n\n // Local search function for internal options\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? options?.reduce((acc: IOption[], opt) => {\n const searchedOptions = opt.options?.filter((item) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, hasParent]);\n\n // Clear Selected Options\n const handleClear = () => {\n onChange?.({ target: { value: multiple ? [] : null } });\n if (getSelectedData && typeof getSelectedData === \"function\") {\n getSelectedData(null);\n }\n };\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n const selectedValues = Array.isArray(value) ? value : [value];\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index === -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Options with search and pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, value);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, value);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, customeFilter, nextPage, true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\n\n // Update Options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n setOptions((prevOptions) => {\n const oldOptions = append ? prevOptions : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n return uniqueOptions;\n });\n }, [selectedOptions, getUniqueOptions]);\n\n // Fetch Options with pagination support\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters,\n limit,\n skip: (page - 1) * limit,\n select: attributes,\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters,\n select: attributes,\n order: sortOrder\n },\n labelKey,\n valueKey\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n\n if (data?.length > 0) {\n setSelectedData();\n }\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions, dynamicOptions]);\n\n // Search Options with debounce\n const debounceSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', customeFilter, 1, false);\n }\n if (searchTerm?.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, customeFilter, 1, false);\n }\n }, 700),\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\n );\n\n // Initial fetch with filter change detection\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n\n if (condition && !isInternalOptions && !isAlreadyLoaded) {\n setPrevFilter(customeFilter);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, customeFilter, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlreadyLoaded]);\n\n // Set Selected Data\n const setSelectedData = useCallback(() => {\n let hasOptions = false;\n const isInOptions = filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n );\n\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\n hasOptions = true;\n }\n\n return hasOptions;\n }, [JSON.stringify(filteredOptions), value, multiple]);\n\n // Fetch Options for Selected Id\n const fetchIdOptions = useCallback(async () => {\n if (await setSelectedData()) return;\n if (open) return;\n\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\n const isNumericId = (v: any) =>\n v !== null && v !== undefined && v !== '' &&\n (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v))));\n const condition = (multiple ? fValue?.length > 0 : isNumericId(fValue)) && !isInternalOptions;\n\n if (condition) {\n setInitialLoading(true);\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\n setInitialLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, value, JSON.stringify(customeFilter)]);\n\n const hasValue = multiple\n ? Array.isArray(value) && value.length > 0\n : value !== null && value !== undefined && value !== \"\";\n\n // Effects\n useEffect(() => {\n if (open) {\n debounceSearch(searchQuery);\n }\n return () => debounceSearch.cancel();\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlreadyLoaded, debounceSearch]);\n\n useEffect(() => {\n setSelectedData();\n }, [setSelectedData]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n if (customeFilter && condition) {\n setIsAlreadyLoaded(false);\n }\n }, [customeFilter, prevFilter]);\n\n useEffect(() => {\n if (value && !open) {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n const selectedData = currentOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ) || [];\n setSelectedOptions(selectedData);\n }\n setSelectedOptions(filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ));\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open, options, multiple]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n setIsAddLoading(true);\n try {\n const result = await addConfig.api(payload);\n setIsAddLoading(false);\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', customeFilter, 1, false);\n }\n if (result && result.data) {\n const newValue = multiple\n ? [...(value || []), result.data.id]\n : result.data.id;\n }\n } catch (error) {\n console.log(\"error\", error);\n setIsAddLoading(false);\n }\n\n\n }, [addConfig, isInternalOptions, fetchOptions, customeFilter, multiple, name, value]);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType!);\n setAddConfig(config);\n }, [addType])\n\n const handleOnChange = (event: any) => {\n const { value } = event.target;\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\n\n const isSelected = (item: any) => {\n return multiple ? value?.includes(item?.value) : item?.value === value;\n };\n\n const selected = filteredOptions?.filter(isSelected);\n onChange?.(event, multiple ? selected : selected?.[0]);\n getSelectedData?.(multiple ? selected : selected?.[0]);\n\n };\n\n const removeUndefine = (selectOptions: any[]) => {\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\n };\n\n const showGroupLabel = (item: any) => {\n if (!item?.length) {\n return undefined\n }\n const mergedOptions = item?.flatMap((i: any) => i?.options)\n return mergedOptions?.find((option: any) => option?.value === value)?.label\n }\n\n return (\n <Select\n labelId={labelId}\n name={name}\n defaultValue={defaultValue || (multiple ? [] : '')}\n placeholder={t(placeholder)}\n className=\"filter-select\"\n size={size}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false);\n if (searchQuery?.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }}\n onChange={handleOnChange}\n showCancelButton={showCancelButton}\n multiple={multiple}\n label={t(label)}\n fullWidth\n displayEmpty\n autoFocus={autoFocus}\n error={Boolean(error)}\n disabled={disabled}\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\n searchPlaceholder={searchPlaceholder}\n CustomDropdownIcon={CustomDropDownIcon}\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 295, maxWidth: 250 }\n }\n }}\n input={\n !disabled ? (\n <OutlinedInput\n label=\"\"\n sx={inputStyle}\n endAdornment={\n <InputAdornment position=\"end\">\n {loading || is_loading ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n showCancelButton && hasValue && (\n <IconButton\n aria-label=\"clear selection\"\n onClick={handleClear}\n edge=\"end\"\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size=\"small\"\n >\n <Close fontSize=\"small\" color='theme.primary.800' />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n ) : undefined\n }\n renderValue={(selected?: string | string[]) => {\n return (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n selectedLabel={selectedLabel}\n data={removeUndefine(selected)}\n placeholder={placeholder}\n onDelete={onChipRemove}\n disabled={disabled}\n chipProps={{\n sx: {\n bgcolor: 'theme.primary.100',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: 'theme.primary.800',\n fontWeight: \"500\",\n }\n }\n }}\n />\n ) : (\n hasParent ? showGroupLabel(filteredOptions) :\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\n (option: any) => option?.value == value\n )?.label || selected || placeholder\n )}\n </>\n );\n }}\n handleSearch={(text) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(multiple),\n placeholder,\n values: value,\n with_checkboxes: true,\n field: {\n ...props,\n enable_footer,\n onFooterClick,\n label,\n handleModalOpen\n },\n disabledIds,\n handleClear,\n handleChange,\n hasParent,\n t: (key: string) => key\n })}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n </Select>\n );\n};\n\nexport default SearchableSelect;"],"names":["generateMenuItems","jsx","MenuItem","Typography","jsxs","Box","Checkbox","Chip","MoreIcon","useWatch","useApi","useFormContext","useCallback","_a","useTranslation","useLanguage","useAuth","useMemo","auth","useRef","useState","useDefaultConfig","filteredOptions","sortBy","fetchApi","updateOptions","debounce","useEffect","Controller","Fragment","Tooltip","Select","ChipOrPlaceholder","text","OutlinedInput","InputAdornment","CircularProgress","IconButton","Close","Divider","Add","shallowEqual","InlineEditFields","validationSchema","yup","TextField","DatePicker","DateTimePicker","UploadMedia","PhoneInput","PathnameAccounting","PathnameInventory","PathnameManufacturing","PathnamePurchase","PathnameCrm","PathnameUsers","PathnameRental","PathnameDocument","PathnameHrms","ArrowUpDown","Save","useLayoutEffect","createContext","memo","useContext","styled","useNavigate","useLocation","usePages","useDeepMemo","getApiConfigSafe","enqueueSnackbar","images","Button","cloneElement","RecgtangleIcon","CheckBoxIcon","table","Edit","Trash","useMaterialReactTable","MaterialReactTable","Menu","ListItemIcon","ListItemText","SearchBar","ConfirmPopUp","useDispatch","useForm","generateValidationSchema1","PARTIES_FIELDS","useAccountingSetting","PARTIES_FORM_ARRAY_NAME","checkUniqueFields","transformTableColumns","phone","ksaAddressPayload","addressPayload","contactPayload","type","_","t","_b","processPartiesPayload","createParties","getErrorMessage","addressOmitKeys","contactOmitKeys","Accordion","Grid","DynamicRadioButton","partyType","DynamicInput","DynamicPhone","addressColumns","contactColumns","Modal","ModalLoader","DialogTitle","DialogContent","DialogActions","Yup","getDefaultValues","yupResolver","DynamicToggleButton","toast","Toast","skuGenerator","fetchOptions","FormProvider","DynamicSelect","api","getToken","postV1WarehouseLocation","postV1Parties","postV1Departments","postV1DepartmentsTeams","postV1Designation","postV1InventoryFixedAssetItems","postV1Brand","BrandAddModal","postV1CategoryItems","CategoryAddModal","postV1PartiesIndustry","IndustryAddModal","postV1SourceTypes","SourceTypeAddModal","postV1JournalTypes","JournalTypeAddModal","postV1PaymentTerms","index","value","label","error"],"mappings":"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"}
1
+ {"version":3,"file":"searchable-select-_DCkITfk.js","sources":["../../src/components/form-control/form-builder/form-builder-element/dynamic-select.tsx","../../src/components/material-table/components/inline-edit-fields.tsx","../../src/components/material-table/material-table.tsx","../../src/components/parties-modal/parties-modal.tsx","../../src/components/team-add-modal.tsx","../../src/components/department-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/location-add-modal/location-add-modal.tsx","../../src/components/designation-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/fixed-asset-item-add-modal/fixed-asset-item-add-modal.tsx","../../src/components/payment-term-add-modal.tsx","../../src/components/form-control/form-builder/form-builder-element/select-configuration.tsx","../../src/components/searchable-select.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Controller, useFormContext, useWatch, Control } from 'react-hook-form';\nimport { dynamicSelectAdd } from './select-configuration';\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n MenuItemProps,\n OutlinedInput,\n Tooltip\n} from '@mui/material';\nimport { debounce } from 'lodash';\nimport { sortBy } from \"lodash\";\nimport { useTranslation } from \"react-i18next\";\nimport { Add, Close } from '@mui/icons-material';\n\nimport Select from '../../../select/select';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport Checkbox from '../../../checkbox/checkbox';\nimport Typography from '../../../typography/typography';\nimport Chip from '../../../chip/chip';\nimport { MoreIcon } from '../../../icons';\nimport { fetchApi } from '../../../../utils/api';\nimport './element.scss';\nimport { useAuth } from '@/contexts';\nimport { useApi, useLanguage } from '@/hooks';\nimport { useDefaultConfig } from '@/hooks/useSetDefaultConfig';\nimport { auth } from '../../../../constants/auth';\n\n\ninterface DynamicSelectProps {\n formControl: any;\n fieldArrayName: string;\n name: string;\n label?: string;\n placeholder?: string;\n defaultValue?: any;\n required?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n options?: Array<{ label: string; value: any }>;\n multiple?: boolean;\n searchable?: boolean;\n onSearch?: (query: string) => void;\n}\n\n// Types\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface IMenuItemsProps extends MenuItemProps {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: IDynamicSearchSelectProps;\n disabledIds: (string | number)[];\n onChange: (value: string | string[]) => void;\n handleChange?: (value: string | string[]) => void;\n hasParent: boolean;\n t: (key: string) => string;\n // onFooterClick?: () => void;\n}\n\ninterface IDynamicSearchSelectProps {\n name: string;\n placeholder: string;\n label: string;\n size?: 'small' | 'medium';\n options: IOption[];\n formControl: Control<any>;\n defaultValue?: string | string[];\n fieldArrayName: string;\n id?: string;\n required?: boolean;\n is_multiselect?: boolean;\n position?: number;\n formType?: string;\n typeOfField?: string;\n disabled?: boolean;\n onChipRemove?: (value: string) => void;\n enable_footer?: boolean;\n footer_action?: string;\n onFooterClick?: () => void;\n is_loading?: boolean;\n selectedLabel?: string;\n isInternal?: boolean;\n disabledIds?: (string | number)[];\n getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;\n attributes?: string[];\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n sortOrder?: string;\n apiType?: string;\n handleOptions?: (value: any) => void;\n filterKey?: string;\n customeFilter?: Record<string, any>;\n refresh?: boolean;\n addType?: string;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n isMergeOptions?: boolean;\n showItemTooltip?: boolean;\n modalComponentProps?: any;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\n// Helper function to generate menu items\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n // field,\n disabledIds,\n onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick\n}: IMenuItemsProps): React.ReactElement[] => {\n const itemDisabled = (id: string | number) => disabledIds?.includes(id);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{t(placeholder)}</em>\n </Typography>\n </MenuItem>\n );\n }\n const selectedValues = (Array.isArray(values) && values?.length > 0) ? values?.filter((value) => value) : values;\n\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n onChange(updatedValues);\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n if (Array.isArray(options) && options.length > 0) {\n options.forEach((option) => {\n items.push(\n <MenuItem\n value={option.value}\n key={option.value}\n disabled={Boolean(option.disabled) || itemDisabled(option.id || option.value)}\n className={option.isGroup ? 'select--MenuItemHeader' : ''}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(selectedValues) ? selectedValues.includes(option.value) : selectedValues == option.value)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() => hasParent ? handleParentChange(option.value, option.options || []) : handleChange?.(option.value)}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n if (option.isGroup && Array.isArray(option.options)) {\n option.options.forEach((opt) => {\n items.push(\n <MenuItem\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.id || opt.value)}\n sx={{ pl: 5 }}\n key={`${option.value}-${opt.value}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values.includes(opt.value))}\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n }\n\n // if (field.enable_footer) {\n\n // }\n\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\n// Selected items component\nconst SelectedItems: React.FC<{\n data: (string | number)[];\n options: IOption[];\n}> = ({ data, options }) => {\n const displayTitle = data.map(\n (selectedItem) =>\n options?.find((option) => option.value == selectedItem)?.label || ''\n );\n const filteredDisplayTitle = displayTitle.filter(Boolean);\n\n return (\n <Typography\n type='s4'\n color='inherit'\n sx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}\n >\n {filteredDisplayTitle.slice(0, 4).join(', ')}\n {data.length > 4 && (\n <Chip variant='outlined' type='normal' label={<MoreIcon />} />\n )}\n </Typography>\n );\n};\n\nconst Loading = () => (\n <Typography fontStyle='italic' color='inherit' type='s3'>Loading...</Typography>\n)\n\nconst DynamicSearchSelect: React.FC<IDynamicSearchSelectProps> = React.memo((props) => {\n const watchedValue = useWatch({\n control: props.formControl,\n name: `${props.fieldArrayName}.${props.name}`\n });\n\n const { callApi } = useApi()\n // In MFE mode each federated module ships its own copy of react-hook-form,\n // so the FormContext created by the host's FormProvider is invisible here\n // and useFormContext() returns null.\n // The internal `control` object (passed as formControl prop) does NOT expose\n // setValue — that lives only on the useForm() return value. We build a\n // stable fallback using useCallback so that useDefaultConfig's useEffect\n // (which has setValue as a dependency) does NOT re-fire on every render.\n const formContext = useFormContext();\n const { setValue: contextSetValue } = formContext || {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mfeFallbackSetValue = useCallback((fieldPath: string, value: any) => {\n const ctrl = props.formControl as any;\n if (!ctrl) return;\n // Write into internal form values\n const parts = fieldPath.split('.');\n let obj = ctrl._formValues;\n for (let i = 0; i < parts.length - 1; i++) {\n if (!obj[parts[i]]) obj[parts[i]] = {};\n obj = obj[parts[i]];\n }\n obj[parts[parts.length - 1]] = value;\n // Notify RHF subscribers so React re-renders\n ctrl._subjects?.state?.next({ name: fieldPath, values: { ...ctrl._formValues } });\n // props.formControl is stable for the lifetime of the form\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.formControl]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const setValue: any = contextSetValue ?? mfeFallbackSetValue;\n const { t } = useTranslation();\n const { isRtl } = useLanguage();\n const { user: authUser } = useAuth();\n const contextUser = useMemo(() => {\n if (authUser) return authUser;\n try {\n const stored = window.localStorage.getItem(auth.storageUserKeyName);\n return stored ? JSON.parse(stored) : null;\n } catch {\n return null;\n }\n }, [authUser]);\n const selectRef = useRef<HTMLDivElement>(null);\n\n // State management\n const [options, setOptions] = useState<IOption[]>([]);\n const [selectedValue, setSelectedValue] = useState<any>(null);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState<boolean>(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(false);\n const [searchQuery, setSearchQuery] = useState<string>(\"\");\n const [searchInitiate, setSearchInitiate] = useState<boolean>(false);\n const [addConfig, setAddConfig] = useState<any>(null);\n\n // Modal states\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n // Props destructuring with defaults\n const {\n handleOptions,\n isInternal = false,\n disabledIds = [],\n getSelectedData,\n attributes = [],\n filterKey = 'id',\n customeFilter = {},\n refresh,\n handleChange,\n hasParent = false,\n sortOrder = 'id:-1',\n apiType,\n addType,\n showCancelButton = true,\n customFetchApi,\n isMergeOptions = false,\n } = props;\n\n const showItemTooltip = props.showItemTooltip ?? (apiType === 'salesItems');\n\n const limit = 25;\n\n // Memoized values\n // Memoized values\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return (!apiType && !customFetchApi) || (isInternal ? (apiType || customFetchApi) && props.options?.length == 0 ? false : true : false);\n }, [isInternal, apiType, customFetchApi, props.options?.length, isMergeOptions]);\n\n\n //eslint-disable-next-line\n const cf = useMemo(() => customeFilter, [JSON.stringify(customeFilter)]);\n\n\n\n\n const { defaultOptions = [] } = useDefaultConfig({\n props,\n setValue,\n isInternalOptions,\n watchedValue\n });\n\n\n // Local search function\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (props.options && props.options.length > 0) ? props.options : (defaultOptions || []);\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? currentOptions?.reduce((acc: IOption[], opt: IOption) => {\n const searchedOptions = opt.options?.filter((item: IOption) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : currentOptions?.filter((opt: IOption) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n //eslint-disable-next-line\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line\n }, [props.options, hasParent, defaultOptions]);\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n let selectedValues = Array.isArray(value) ? value : [value];\n selectedValues = selectedValues.map((item) => Number(item));\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index == -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Filtered options with pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, watchedValue);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...options, ...selectedOptions]), watchedValue);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, watchedValue);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line\n }, [options, selectedOptions, isInternalOptions, props.options, watchedValue, searchQuery, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Helper to get selected item data for tooltip\n const getSelectedDataOptions = useMemo(() => {\n if (!watchedValue || !filteredOptions.length) return null;\n const selected = filteredOptions.find(opt =>\n opt.id === watchedValue || opt.value === watchedValue\n );\n return selected || null;\n }, [watchedValue, filteredOptions]);\n\n // API Functions\n const fetchOptions = useCallback(async (searchTerm = '', flt = cf, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters: flt,\n limit,\n skip: (page - 1) * limit,\n select: attributes?.join(','),\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters: flt,\n select: attributes,\n order: sortOrder\n }\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n const newOptions = append ? [...options, ...data] : data;\n\n updateOptions(newOptions, append);\n handleSelectedValue(data);\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line\n }, [apiType, customFetchApi, options, attributes, sortOrder, limit, cf]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, cf, nextPage, true);\n }\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, cf, fetchOptions]);\n\n // Update options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n const oldOptions = append ? options : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n setOptions(uniqueOptions);\n }, [options, selectedOptions, getUniqueOptions]);\n\n // Handle selected value\n const handleSelectedValue = useCallback(async (updateOptions: IOption[]) => {\n if (!watchedValue) return;\n let filterValue = props.is_multiselect ? watchedValue : [watchedValue];\n filterValue = Array.isArray(filterValue) ? filterValue?.filter(i => i) : [];\n filterValue = Array.isArray(filterValue) ? filterValue?.map((item) => Number(item)) : [];\n const isInOptions = updateOptions?.filter((item) =>\n Array.isArray(filterValue) ? filterValue.includes(item.id || item.value) : (item[filterKey] || item.value || item.id) == filterValue\n );\n\n if (Array.isArray(isInOptions) && isInOptions.length > 0) {\n getSelectedData?.(props.is_multiselect ? isInOptions : isInOptions[0], props.name);\n return true;\n }\n return false;\n //eslint-disable-next-line\n }, [props.is_multiselect, props.name, watchedValue, filterKey, getSelectedData, filteredOptions]);\n\n // Fetch options by ID\n const fetchIdOptions = useCallback(async () => {\n if (open) return;\n if (await handleSelectedValue(filteredOptions)) return;\n\n const condition = props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.length > 0 :\n Boolean(watchedValue);\n\n if (condition) {\n setInitialLoading(true);\n const response = await fetchOptions('', { ...cf, '&id.in': watchedValue }, 1, false);\n setInitialLoading(false);\n\n if (response.length == 0 && setValue && !isInternalOptions) {\n // setValue(`${props.fieldArrayName}.${props.name}`, props.is_multiselect ? [] : null);\n }\n }\n //eslint-disable-next-line\n }, [open, watchedValue, JSON.stringify(cf)]);\n\n // Initial fetch\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(cf) !== JSON.stringify(prevFilter);\n\n if (condition) {\n setPrevFilter(cf);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, cf, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [cf, isInternalOptions, isAlreadyLoaded]);\n\n // Debounced search\n const debouncedSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', cf, 1, false);\n }\n if (searchTerm.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, cf, 1, false);\n }\n }, 700),\n //eslint-disable-next-line\n [isInternalOptions, searchInitiate, cf]\n );\n\n // Reset value function\n const resetValue = useCallback((field: any) => {\n field.onChange(props.is_multiselect ? [] : null);\n if (getSelectedData) {\n getSelectedData(null, props.name);\n }\n }, [props.is_multiselect, props.name, getSelectedData]);\n\n // Handle close\n const handleClose = useCallback(() => {\n setOpen(false);\n if (searchQuery.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }, [searchQuery]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n\n callApi({\n apiFunc: () => addConfig.api(payload),\n successMessage: `${props.label} ${t('common.added_successfully')}`,\n loadingState: setIsAddLoading,\n onSuccess: async (result) => {\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', cf, 1, false);\n }\n if (result && result.data) {\n const newValue = props.is_multiselect\n ? [...(watchedValue || []), result.data.id]\n : result.data.id;\n setValue(`${props.fieldArrayName}.${props.name}`, newValue);\n if (getSelectedData) {\n getSelectedData(result.data, props.name, true);\n }\n }\n },\n onError: () => {\n setIsAddLoading(false);\n }\n })\n\n\n\n }, [addConfig, isInternalOptions, fetchOptions, cf, props.is_multiselect, props.fieldArrayName, props.name, watchedValue, setValue]);\n\n // Effects\n useEffect(() => {\n if (handleOptions) {\n handleOptions(selectedValue);\n }\n }, [handleOptions, selectedValue]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (refresh) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n fetchOptions('', cf, 1, false);\n }\n }, [refresh, fetchOptions, cf]);\n\n useEffect(() => {\n if (open) {\n debouncedSearch(searchQuery);\n }\n return () => debouncedSearch.cancel();\n }, [searchQuery, open, debouncedSearch]);\n\n useEffect(() => {\n if (watchedValue && !open) {\n const selectedData = options?.filter((item) =>\n props.is_multiselect ?\n Array.isArray(watchedValue) && watchedValue.includes(item.id || item.value) :\n (item.id || item.value) == watchedValue\n );\n setSelectedOptions(selectedData || []);\n }\n }, [watchedValue, options, props.is_multiselect]);\n\n const removeUndefined = useCallback((selectOptions: any[]) => {\n return Array.isArray(selectOptions) ? selectOptions.filter(Boolean) : [];\n }, []);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType);\n setAddConfig(config);\n }, [addType])\n\n\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props.placeholder == 'Select Currency' && setSelectedValue(field.value)}\n {showItemTooltip ? (\n <Tooltip\n title={getSelectedDataOptions?.label ? String(getSelectedDataOptions.label) : ''}\n placement='top'\n arrow\n slotProps={{\n popper: {\n modifiers: [{ name: 'offset', options: { offset: [0, -25] } }],\n },\n tooltip: {\n sx: { maxWidth: 500 },\n },\n }}\n >\n <span>\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n </span>\n </Tooltip>\n ) : (\n <Select\n {...field}\n ref={selectRef}\n open={open}\n onOpen={() => {\n setOpen(true);\n setTimeout(() => {\n const searchInput = document.querySelector(\n `input[placeholder=\"Search ${props.label}\"]`\n ) as HTMLInputElement;\n searchInput?.focus();\n }, 150);\n }}\n onClose={handleClose}\n fullWidth\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n placeholder={props.placeholder}\n label={props.label}\n defaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n searchValue={searchQuery}\n required={props.formType == 'builder' ? false : props.required}\n size={props.size || 'small'}\n multiple={props.is_multiselect || false}\n disabled={props.disabled}\n sx={(props.is_multiselect && field?.value?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important' } } : {}}\n variant='outlined'\n value={\n initialLoading\n ? (props.is_multiselect ? [] : '')\n : (field.value?.id || field.value || (props.is_multiselect ? [] : ''))\n }\n className={\n props.is_multiselect && removeUndefined(field.value)?.length\n ? 'MultiSelect filter-select'\n : ''\n }\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 300 }\n }\n }}\n\n renderValue={(selected: any) => {\n if (Array.isArray(selected)) {\n return (\n <ChipOrPlaceholder\n selectedLabel={props.selectedLabel}\n data={removeUndefined(selected)}\n placeholder={(loading || props.is_loading) ? <Loading /> : `${t('common.search')} ${props.label}`}\n onDelete={props.onChipRemove}\n disabled={props.disabled}\n chipProps={{\n sx: {\n background: '#ebf9f2',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: '#289b64',\n fontWeight: \"500\",\n }\n }\n }}\n />\n );\n } else {\n const selectedOption = filteredOptions.find(\n (option) => (option.value?.id || option.value) == selected\n );\n return (loading || props.is_loading) ? <Loading /> : selectedOption?.label ||\n (typeof props.label == 'string' ?\n `${t('common.search')} ${props.label}` :\n props.placeholder);\n }\n }}\n searchPlaceholder={`${t('common.search')} ${props.label}`}\n handleSearch={(text: string) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n error={Boolean(fieldState.error?.message)}\n helperText={fieldState.error?.message || ''}\n onBlur={field.onBlur}\n input={\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n {(loading || props.is_loading) ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n !props.disabled &&\n (props.is_multiselect ?\n (Array.isArray(field.value) && field.value.length > 0) :\n Boolean(field.value)) && showCancelButton && (\n <IconButton\n aria-label='clear selection'\n onClick={() => resetValue(field)}\n edge='end'\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size='small'\n >\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n }\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(props.is_multiselect),\n placeholder: props.placeholder,\n values: field.value,\n with_checkboxes: true,\n field: props,\n disabledIds,\n onChange: field.onChange,\n handleChange,\n hasParent,\n t,\n // onFooterClick: () => {\n // if (props?.onFooterClick) {\n // props?.onFooterClick();\n // } else {\n // handleModalOpen();\n // }\n // }\n })}\n {props?.enable_footer &&\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={\n () => {\n if (props?.onFooterClick) {\n props?.onFooterClick();\n } else {\n handleModalOpen();\n }\n }\n\n }>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {props.label}\n </Typography>\n </MenuItem>\n </Box>}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n </Select>\n )}\n\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n\n {props.is_multiselect && Array.isArray(field.value) && (\n <SelectedItems\n data={field.value}\n options={filteredOptions}\n />\n )}\n </>\n )}\n />\n );\n});\nexport default DynamicSearchSelect;","import React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseState\n} from 'react';\n\nimport { Box } from '@mui/material';\n\nimport Typography from '../../typography/typography';\nimport DatePicker from '../../date-picker/date-picker';\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\nimport TextField from '../../text-field/text-field';\nimport UploadMedia from '../../upload-media/upload-media';\n\nimport * as yup from 'yup';\nimport _ from 'lodash';\nimport dayjs from 'dayjs';\nimport PhoneInput from '../../phone-input/phone-input';\nimport Checkbox from '../../checkbox/checkbox';\nimport SearchableSelect from '../../searchable-select';\n\n/* ------------------------------------------------------------------ *\n * Types\n * ------------------------------------------------------------------ */\n\ntype ValuesCache = Record<string, any>;\n\ninterface IInlineEditFields {\n\tcell?: any;\n\tcolumn: any;\n\trow: any;\n\ttable?: any;\n\tcol: any;\n\tcallback?: (value: any, column: any, rowId: any) => any;\n\terrors: Record<string, string>;\n\tvalidationSchema: any;\n\tsetValidationErrors: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n\tonChangeRowField?: (\n\t\tevent: any,\n\t\ttype: string,\n\t\trow: any,\n\t\tcol: any,\n\t\tselectedData: any\n\t) => any;\n\tgetSelectedData?: (fieldName: string, selectedRow: any) => any;\n}\n\n/* ------------------------------------------------------------------ *\n * Module level constants and helpers (allocated once, not per render)\n * ------------------------------------------------------------------ */\n\nconst EMPTY_EDIT_PROPERTIES = Object.freeze({}) as Record<string, any>;\n\n/**\n * Marks a `_valuesCache` object as already normalised by this component.\n * A Symbol key is invisible to Object.keys / JSON.stringify / lodash, so it\n * never leaks into the payload sent to the API, yet it survives the object\n * spreads we do on every change. `Symbol.for` keeps it stable across module\n * federation remotes that each get their own copy of this bundle.\n */\nconst CACHE_NORMALISED = Symbol.for('erpsquad.inlineEdit.cacheNormalised');\n\nconst isCacheNormalised = (cache: any): boolean =>\n\tBoolean(cache && cache[CACHE_NORMALISED]);\n\nconst markCacheNormalised = (cache: ValuesCache): ValuesCache => {\n\t(cache as any)[CACHE_NORMALISED] = true;\n\treturn cache;\n};\n\nconst isBlank = (value: any): boolean =>\n\tvalue === undefined || value === null || value === '';\n\nconst shallowEqual = (a: ValuesCache = {}, b: ValuesCache = {}): boolean => {\n\tif (a === b) return true;\n\tconst aKeys = Object.keys(a);\n\tconst bKeys = Object.keys(b);\n\tif (aKeys.length !== bKeys.length) return false;\n\treturn aKeys.every((key) => Object.is(a[key], b[key]));\n};\n\n/* ------------------------------------------------------------------ *\n * Row scoped pub/sub\n * Replaces the global window CustomEvent bus. Only the cells belonging to\n * the same row are woken up, instead of every editing cell on the page.\n * ------------------------------------------------------------------ */\n\ntype CacheListener = (cache: ValuesCache) => void;\n\nconst rowSubscribers = new Map<string, Set<CacheListener>>();\n\nconst subscribeToRow = (rowId: string, listener: CacheListener) => {\n\tlet listeners = rowSubscribers.get(rowId);\n\tif (!listeners) {\n\t\tlisteners = new Set();\n\t\trowSubscribers.set(rowId, listeners);\n\t}\n\tlisteners.add(listener);\n\n\treturn () => {\n\t\tlisteners?.delete(listener);\n\t\tif (listeners && listeners.size === 0) rowSubscribers.delete(rowId);\n\t};\n};\n\nconst publishRowCache = (rowId: string, cache: ValuesCache) => {\n\trowSubscribers.get(rowId)?.forEach((listener) => listener(cache));\n};\n\n/* ------------------------------------------------------------------ *\n * Value resolution\n * ------------------------------------------------------------------ */\n\n/**\n * Resolves the value a field should start with, straight from `row.original`.\n *\n * THE FIX: when a column declares a `valueKey` that differs from its own\n * accessor id, the accessor holds the human readable label (`item` -> \"Steel\n * Coil\") while the bound value lives at the `valueKey` (`item_id` -> 42).\n * In that situation we must NEVER fall back to the accessor, otherwise the\n * label ends up in the payload as if it were the id. Date variants are the\n * one exception, where the accessor legitimately carries a date string.\n */\nconst readInitialValue = (mrtColumn: any, row: any): any => {\n\tconst columnDef = mrtColumn?.columnDef ?? {};\n\tconst columnId = mrtColumn?.id;\n\tconst {\n\t\tvalueKey,\n\t\tis_multiple: isMultiple,\n\t\tdefaultValue\n\t} = (columnDef.editProperties ?? EMPTY_EDIT_PROPERTIES) as Record<string, any>;\n\n\t// Per cell variant. The previous implementation leaked the host cell's\n\t// variant into every other column's resolution.\n\tconst variant = columnDef.editVariant;\n\n\tconst accessorValue = row?.original?.[columnId];\n\tconst boundValue = valueKey ? _.get(row?.original, valueKey) : accessorValue;\n\n\t// Fallback to the accessor only when it cannot be a label.\n\tconst accessorIsSafeFallback = !valueKey || valueKey === columnId;\n\tconst rawValue =\n\t\tboundValue !== undefined\n\t\t\t? boundValue\n\t\t\t: accessorIsSafeFallback\n\t\t\t\t? accessorValue\n\t\t\t\t: undefined;\n\n\tif (variant === 'select' && isMultiple) {\n\t\tif (isBlank(boundValue)) return defaultValue ?? [];\n\t\treturn Array.isArray(boundValue) ? boundValue : [boundValue];\n\t}\n\n\tif (variant === 'date' || variant === 'date_time') {\n\t\tconst dateSource = boundValue !== undefined ? boundValue : accessorValue;\n\t\tif (isBlank(dateSource)) return undefined;\n\t\treturn dayjs(dateSource).isValid() ? dayjs(dateSource) : undefined;\n\t}\n\n\tif (variant === 'select') {\n\t\treturn isBlank(boundValue) ? defaultValue ?? '' : boundValue;\n\t}\n\n\tif (variant === 'checkbox') {\n\t\treturn isBlank(rawValue) ? Boolean(defaultValue) : Boolean(rawValue);\n\t}\n\n\treturn isBlank(rawValue) && defaultValue !== undefined ? defaultValue : rawValue;\n};\n\n/** Builds the normalised cache for every editable cell of the row, once. */\nconst buildInitialCache = (row: any): ValuesCache => {\n\tconst cache: ValuesCache = {};\n\n\trow.getAllCells().forEach((cell: any) => {\n\t\tconst enableEditing = cell.column.columnDef?.enableEditing;\n\t\tif (enableEditing === undefined || enableEditing === true) {\n\t\t\tcache[cell.column.id] = readInitialValue(cell.column, row);\n\t\t}\n\t});\n\n\treturn markCacheNormalised(cache);\n};\n\n/** Normalises the many shapes the child components emit into a raw value. */\nconst extractValue = (event: any, type?: string): any => {\n\tswitch (type) {\n\t\tcase 'date':\n\t\tcase 'file':\n\t\tcase 'image':\n\t\tcase 'phone':\n\t\t\treturn event;\n\t\tcase 'checkbox':\n\t\t\treturn event?.target?.checked;\n\t\tdefault:\n\t\t\treturn event?.target ? event.target.value : event;\n\t}\n};\n\n/* ------------------------------------------------------------------ *\n * Component\n * ------------------------------------------------------------------ */\n\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\n\tcolumn,\n\trow,\n\tcol,\n\terrors,\n\tvalidationSchema,\n\tsetValidationErrors,\n\tonChangeRowField,\n\tgetSelectedData\n}) => {\n\tconst [values, setValues] = useState<ValuesCache>(() => row?._valuesCache ?? {});\n\tconst [customFilter, setCustomFilter] = useState<any>(null);\n\n\tconst editVariant = col?.editVariant;\n\t// Stable reference: `|| {}` allocated a fresh object on every render, which\n\t// invalidated every hook that depended on it.\n\tconst fieldProperties: Record<string, any> =\n\t\tcolumn.columnDef?.editProperties ?? EMPTY_EDIT_PROPERTIES;\n\n\tconst columnId = column.id;\n\tconst rowId = row.id;\n\n\t/* -------------------------------------------------------------- *\n\t * 1. Cross cell synchronisation (row scoped)\n\t * -------------------------------------------------------------- */\n\tuseEffect(\n\t\t() =>\n\t\t\tsubscribeToRow(rowId, (cache) => {\n\t\t\t\t// Bail out when nothing this cell can observe actually moved.\n\t\t\t\t// The cell reads its own value, but `disable()` and\n\t\t\t\t// `customeFilter()` receive the whole cache, so a shallow\n\t\t\t\t// compare of the cache is the correct granularity here.\n\t\t\t\tsetValues((prev) => (shallowEqual(prev, cache) ? prev : cache));\n\t\t\t}),\n\t\t[rowId]\n\t);\n\n\t/* -------------------------------------------------------------- *\n\t * 2. One time cache normalisation, per row instead of per cell\n\t * -------------------------------------------------------------- */\n\tuseEffect(() => {\n\t\tconst existing = row._valuesCache;\n\n\t\tif (isCacheNormalised(existing)) {\n\t\t\t// A sibling cell already normalised this row, just adopt it.\n\t\t\tsetValues(existing);\n\t\t\treturn;\n\t\t}\n\n\t\tconst seeded = buildInitialCache(row);\n\t\trow._valuesCache = seeded;\n\t\tsetValues(seeded);\n\t\tpublishRowCache(rowId, seeded);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowId]);\n\n\t/* -------------------------------------------------------------- *\n\t * 3. Custom filter resolution (state, not a ref, so the select\n\t * actually re-renders once the async filter resolves)\n\t * -------------------------------------------------------------- */\n\tconst rawCustomFilter = fieldProperties.customeFilter;\n\n\tuseEffect(() => {\n\t\tif (editVariant !== 'select' || rawCustomFilter === undefined) return;\n\n\t\tif (typeof rawCustomFilter !== 'function') {\n\t\t\tsetCustomFilter(rawCustomFilter ?? null);\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tconst filter = await rawCustomFilter(row, row._valuesCache);\n\t\t\t\tif (!cancelled) setCustomFilter(filter ?? null);\n\t\t\t} catch {\n\t\t\t\tif (!cancelled) setCustomFilter(null);\n\t\t\t}\n\t\t})();\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t\t// `values` is the dependency that represents \"some field in this row\n\t\t// changed\", which is what a dependent filter reacts to.\n\t}, [rawCustomFilter, editVariant, row, values]);\n\n\t/* -------------------------------------------------------------- *\n\t * 4. Derived state\n\t * -------------------------------------------------------------- */\n\n\tconst isFieldDisabled = useMemo(() => {\n\t\tconst { disable } = fieldProperties;\n\t\tif (typeof disable === 'function') {\n\t\t\treturn Boolean(disable(row, row._valuesCache));\n\t\t}\n\t\treturn Boolean(disable);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [fieldProperties, row, values]);\n\n\tconst shouldAutoFocus = useMemo(() => {\n\t\tconst firstEditable = row\n\t\t\t.getAllCells()\n\t\t\t.map((cell: any) => cell.column.columnDef)\n\t\t\t.find(\n\t\t\t\t(def: any) =>\n\t\t\t\t\tdef?.enableEditing === undefined || def?.enableEditing === true\n\t\t\t);\n\t\treturn firstEditable?.accessorKey === columnId;\n\t}, [row, columnId]);\n\n\t// Correct id based default, shared by the field and the initial paint,\n\t// so the inputs are never uncontrolled on the very first render.\n\tconst columnDefaultValue = useMemo(\n\t\t() => readInitialValue(column, row),\n\t\t[column, row]\n\t);\n\n\tconst currentValue =\n\t\tvalues?.[columnId] !== undefined ? values[columnId] : columnDefaultValue;\n\n\tconst dateValue = useMemo(() => {\n\t\tif (isBlank(currentValue)) return undefined;\n\t\treturn dayjs(currentValue).isValid() ? dayjs(currentValue) : undefined;\n\t}, [currentValue]);\n\n\tconst fieldError = errors?.[columnId];\n\n\t/* -------------------------------------------------------------- *\n\t * 5. Validation\n\t * -------------------------------------------------------------- */\n\tconst validate = useCallback(\n\t\tasync (value: any) => {\n\t\t\tif (!validationSchema) return;\n\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validateAt(\n\t\t\t\t\tcolumnId,\n\t\t\t\t\t{ [columnId]: value },\n\t\t\t\t\t{ abortEarly: false }\n\t\t\t\t);\n\n\t\t\t\t// Functional update: two sibling cells validating in the same\n\t\t\t\t// tick no longer overwrite each other's errors.\n\t\t\t\tsetValidationErrors((prev) => {\n\t\t\t\t\tif (!prev || prev[columnId] === undefined) return prev ?? {};\n\t\t\t\t\tconst next = { ...prev };\n\t\t\t\t\tdelete next[columnId];\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tconst fieldErrors: Record<string, string> = {};\n\t\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\t\tif (error.path) fieldErrors[error.path] = error.message;\n\t\t\t\t\t});\n\t\t\t\t\tif (!err.inner.length && err.path) {\n\t\t\t\t\t\tfieldErrors[err.path] = err.message;\n\t\t\t\t\t}\n\t\t\t\t\tsetValidationErrors((prev) => ({ ...(prev ?? {}), ...fieldErrors }));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[columnId, setValidationErrors, validationSchema]\n\t);\n\n\t/* -------------------------------------------------------------- *\n\t * 6. Change handling\n\t * -------------------------------------------------------------- */\n\tconst handleChange = useCallback(\n\t\tasync (event: any, type?: string, selectedData?: any) => {\n\t\t\tconst value = extractValue(event, type);\n\n\t\t\t// Commit synchronously first so a slow async `onChangeRowField`\n\t\t\t// can never swallow a keystroke.\n\t\t\tconst optimistic = { ...(row._valuesCache ?? {}), [columnId]: value };\n\t\t\trow._valuesCache = optimistic;\n\t\t\tsetValues(optimistic);\n\t\t\tpublishRowCache(rowId, optimistic);\n\n\t\t\tif (onChangeRowField) {\n\t\t\t\tconst patch = await onChangeRowField(event, type as string, row, col, selectedData);\n\t\t\t\tif (patch) {\n\t\t\t\t\t// The edited column keeps precedence over the patch, matching\n\t\t\t\t\t// the original ordering.\n\t\t\t\t\tconst merged = { ...row._valuesCache, ...patch, [columnId]: value };\n\t\t\t\t\trow._valuesCache = merged;\n\t\t\t\t\tsetValues(merged);\n\t\t\t\t\tpublishRowCache(rowId, merged);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait validate(value);\n\t\t},\n\t\t[col, columnId, onChangeRowField, row, rowId, validate]\n\t);\n\n\tconst resolveDateBoundary = useCallback(\n\t\t(boundary: any) => (typeof boundary === 'function' ? boundary(row) : boundary),\n\t\t[row]\n\t);\n\n\t/* -------------------------------------------------------------- *\n\t * 7. Render\n\t * -------------------------------------------------------------- */\n\n\tif (!editVariant || editVariant === 'number') {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\tonChange={(e: any) => handleChange(e, editVariant)}\n\t\t\t\tvalue={currentValue ?? ''}\n\t\t\t\tautoFocus={shouldAutoFocus}\n\t\t\t\ttype={editVariant || 'text'}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'select') {\n\t\tconst isMultiple = Boolean(fieldProperties?.is_multiple);\n\t\tconst selectValue = isMultiple\n\t\t\t? Array.isArray(currentValue)\n\t\t\t\t? currentValue\n\t\t\t\t: []\n\t\t\t: currentValue ?? '';\n\n\t\treturn (\n\t\t\t<Box display='flex' flexDirection='column' width='100%'>\n\t\t\t\t<SearchableSelect\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\tsearchPlaceholder={`Search ${col?.header ?? ''}`}\n\t\t\t\t\tonChange={(e: any, selectedRow: any) =>\n\t\t\t\t\t\thandleChange(e, 'select', selectedRow)\n\t\t\t\t\t}\n\t\t\t\t\tapiType={fieldProperties?.apiType}\n\t\t\t\t\tautoFocus={shouldAutoFocus}\n\t\t\t\t\toptions={col?.editSelectOptions}\n\t\t\t\t\tcustomeFilter={customFilter}\n\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\n\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\n\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\n\t\t\t\t\tattributes={fieldProperties?.attributes}\n\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\n\t\t\t\t\tmultiple={isMultiple}\n\t\t\t\t\tvalue={selectValue}\n\t\t\t\t\tgetSelectedData={(selectedRow: any) =>\n\t\t\t\t\t\tgetSelectedData?.(fieldProperties?.field_name, selectedRow)\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t\t/>\n\t\t\t\t{fieldError && (\n\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t{fieldError}\n\t\t\t\t\t</Typography>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t);\n\t}\n\n\tif (editVariant === 'date') {\n\t\treturn (\n\t\t\t<DatePicker\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'date')}\n\t\t\t\ttextFieldProps={{ autoFocus: shouldAutoFocus }}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || fieldProperties?.dateFormat}\n\t\t\t\tvalue={dateValue}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t\tminDate={() => resolveDateBoundary(fieldProperties?.min_date)}\n\t\t\t\tmaxDate={() => resolveDateBoundary(fieldProperties?.max_date)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'date_time') {\n\t\treturn (\n\t\t\t<DateTimePicker\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefaultValue={columnDefaultValue}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'date')}\n\t\t\t\ttextFieldProps={{ autoFocus: shouldAutoFocus }}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || fieldProperties?.dateFormat}\n\t\t\t\tvalue={dateValue}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'file' || editVariant === 'image') {\n\t\treturn (\n\t\t\t<Box display='flex' flexDirection='column'>\n\t\t\t\t<UploadMedia\n\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\n\t\t\t\t\tdataPosition={0}\n\t\t\t\t\tdataName='table_file'\n\t\t\t\t\tlabel=''\n\t\t\t\t\ttype={editVariant}\n\t\t\t\t\tmax_size={10}\n\t\t\t\t\tonChange={(v: any) => handleChange(v, 'file')}\n\t\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\t\tmultiple={Boolean(fieldProperties?.is_multiple ?? col?.is_multiple)}\n\t\t\t\t\tvalue={currentValue}\n\t\t\t\t/>\n\t\t\t\t{fieldError && (\n\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t{fieldError}\n\t\t\t\t\t</Typography>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t);\n\t}\n\n\tif (editVariant === 'phone') {\n\t\treturn (\n\t\t\t<PhoneInput\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefault_value={columnDefaultValue}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'phone')}\n\t\t\t\ttextFieldProps={{ autoFocus: shouldAutoFocus }}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\tplaceholder={fieldProperties?.placeholder || fieldProperties?.dateFormat}\n\t\t\t\tvalue={currentValue}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t\tisInlineEditing\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (editVariant === 'checkbox') {\n\t\treturn (\n\t\t\t<Checkbox\n\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\tdefaultChecked={Boolean(columnDefaultValue)}\n\t\t\t\tonChange={(v: any) => handleChange(v, 'checkbox')}\n\t\t\t\terror={Boolean(fieldError)}\n\t\t\t\thelperText={fieldError}\n\t\t\t\tplaceholder={fieldProperties?.placeholder}\n\t\t\t\tvalue={Boolean(currentValue)}\n\t\t\t\tdisabled={isFieldDisabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n};\n\nexport default React.memo(InlineEditFields);","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * MaterialTable\n * -----------------------------------------------------------------------------\n * Hardened / memoised rewrite of the custom Material React Table wrapper.\n *\n * Key engineering decisions (see PR notes for the full rationale):\n * - Zero work in render: no canvas text measurement, no per-render column\n * rebuild, no derived-state duplication of the `columns` prop.\n * - Every callback prop is wrapped in `useEventCallback` so that the memoised\n * column defs / table options never invalidate because a parent forgot to\n * memoise an inline arrow function.\n * - Inline-edit state (validation errors + schema) travels through context, so\n * typing / validating never invalidates the column definitions.\n * - All persistence side effects (`updatePageInfo`) are edge triggered.\n * -----------------------------------------------------------------------------\n */\n\nimport React, {\n\tcloneElement,\n\tcreateContext,\n\tmemo,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState\n} from 'react';\nimport {\n\tMRT_Cell,\n\tMRT_ColumnDef,\n\tMRT_ColumnPinningState,\n\tMRT_ColumnSizingInfoState,\n\tMRT_ColumnSizingState,\n\tMRT_Header,\n\tMRT_Row,\n\tMRT_RowData,\n\tMRT_RowSelectionState,\n\tMRT_SortingState,\n\tMRT_TableInstance,\n\tMRT_TableState,\n\tMaterialReactTable,\n\tMaterialReactTableProps,\n\tuseMaterialReactTable\n} from 'material-react-table';\nimport {\n\tBox,\n\tDivider,\n\tIconButton,\n\tListItemIcon,\n\tListItemText,\n\tMenuItem,\n\tSvgIconProps,\n\tstyled\n} from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport Add from '@mui/icons-material/Add';\nimport dayjs from 'dayjs';\nimport * as yup from 'yup';\nimport { useTranslation } from 'react-i18next';\nimport { enqueueSnackbar } from 'notistack';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { PageState, usePages } from '@erpsquad/common/runtime';\n\nimport { IPaginationModel } from '../../@types/pagination-model';\nimport { getApiConfigSafe } from '../../utils/api-config';\nimport Menu from '../menu/menu';\nimport Typography from '../typography/typography';\nimport SearchBar from '../search-bar/search-bar';\nimport images from '../../assets/images';\nimport {\n\tArrowUpDown,\n\tCheckBoxIcon,\n\tClose,\n\tEdit,\n\tRecgtangleIcon,\n\tSave,\n\tTrash\n} from '../icons';\nimport InlineEditFields from './components/inline-edit-fields';\nimport Tooltip from '../tooltip/Tooltip';\nimport Button from '../button/button';\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\nimport useDeepMemo from '../../hooks/use-deep-memo';\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\nimport { PathnameHrms } from '@/constants';\n\nimport './material-table.scss';\n\n/* ============================================================================\n * Types\n * ==========================================================================*/\n\ntype ExtraEditVariants =\n\t| 'file'\n\t| 'image'\n\t| 'date'\n\t| 'number'\n\t| 'time'\n\t| 'date_time'\n\t| 'phone'\n\t| 'checkbox';\n\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\n\nexport type TypeBooleanLabels = {\n\t1: string;\n\t0: string;\n\ttrue: string;\n\tfalse: string;\n};\n\nexport interface MaterialTableColumnProps\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\n\tvisible?: boolean;\n\ttype?: string;\n\trequired?: boolean;\n\tshowDefaultCurrency?: boolean;\n\tvalueGet?: string;\n\tcustom_class?: string;\n\t/** when type is an array of objects */\n\ttypeArrayAccessorKey?: string;\n\t/** when type is a boolean */\n\ttypeBooleanLabels?: TypeBooleanLabels;\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\n\teditProperties?: {\n\t\tfield_name?: string;\n\t\tvalueKey?: string;\n\t\tplaceholder?: string;\n\t\tdateFormat?: string;\n\t\tvalidations?: any[];\n\t\tis_multiple?: boolean;\n\t\tis_multiline?: boolean;\n\t\tdisable?: boolean | DisableFunction;\n\t};\n\tredirectionPathWithId?: string;\n\thandleRowClick?: (row: any) => void;\n\tidField?: string;\n}\n\nexport interface MaterialTableColumnHeaderProps {\n\tcolumn: MRT_ColumnDef<any, any>;\n\theader: MRT_Header<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\ntype RowSelectionCallback = (row: MRT_Row<any>) => boolean;\n\nexport interface MaterialTablePropsType {\n\trows: any[];\n\tcolumns: MaterialTableColumnProps[];\n\ttotalPages: number;\n\tpaginationModel: IPaginationModel;\n\tgetSelectedData: any;\n\n\tenablePagination?: boolean;\n\tdisableMaxHeight?: boolean;\n columnOrder?: string[];\n\tcolumnPinning?: MRT_ColumnPinningState;\n\tupdateData?: (value: any, column: any, rowId: any) => void;\n\thandleColumnOrdering?: (colOrder: any) => void;\n\tenableEditing?: boolean | ((row: MRT_Row<any>) => boolean);\n\tenableColumnDragging?: boolean;\n\trowActionMenu?: any[];\n\tdestructiveActionMenu?: any[];\n\tgetRowId?: (row: any, index: number) => string;\n\tstates?: Partial<MRT_TableState<any>>;\n\tonSortingChange?: any;\n\tdisableDefaultActionColumn?: boolean;\n\tenableRowSelection?: boolean | RowSelectionCallback;\n\tdefaultActionColumnItems?: React.ReactElement[];\n\tenableBottomToolbar?: boolean;\n\tSetSelectedRowId?: (rows: MRT_Row<any>[]) => void;\n\tisResetRow?: boolean;\n\tonCreateRow?: (data: any) => Promise<unknown>;\n\tonEditRow?: (data: any, action?: string) => Promise<unknown>;\n\tonDeleteRow?: (data: any) => Promise<unknown>;\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\n\tenableRowCreate?: boolean;\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\n\tonRowClick?: (row: MRT_Row<any>) => void;\n\tenableColumnResizing?: boolean;\n\t/**\n\t * `onEnd` (default) commits the width once the drag finishes: no per-mousemove\n\t * re-render of the whole table, which is the main source of visible jitter.\n\t * Pass `onChange` to restore the previous live-resize behaviour.\n\t */\n\tcolumnResizeMode?: 'onChange' | 'onEnd';\n\tselectedRowIds?: any[];\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void;\n\tenableAddCustomField?: boolean;\n\tdisableAddColumn?: boolean;\n\tdisabledDefaultActionColumnIcon?: boolean;\n\tenableRowDragging?: boolean;\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void;\n\tcolumnSizes?: MRT_ColumnSizingState;\n\tshowPreview?: boolean;\n\thandlePreview?: (row: MRT_RowData) => void;\n\t/** Opaque background applied to every pinned header/body cell. */\n\tpinnedColumnBgColor?: string;\n\tdefaultColumnProps?: Partial<MRT_ColumnDef<any>>;\n\tdeleteConfirmTitle?: string;\n\tdeleteConfirmDescription?: string;\n\t[key: string]: any;\n}\n\n/* ============================================================================\n * Module-level constants — hoisted so their identity never changes.\n * ==========================================================================*/\n\nconst EMPTY_ARRAY: any[] = [];\nconst EMPTY_OBJECT: any = Object.freeze({});\nconst DEFAULT_COLUMN_ORDER = ['mrt-row-select'];\nconst DEFAULT_PINNING = { left: ['actions', 'mrt-row-actions'] };\nconst SPAR_DECIMALS = 4;\n\nconst DEFAULT_COLUMN: Partial<MRT_ColumnDef<any>> = {\n\t// `minSize: 0` allowed columns to collapse to zero width mid-drag; 40 keeps\n\t// the grid layout stable without preventing narrow columns.\n\tminSize: 40,\n\tmaxSize: 800\n};\n\nconst DEFAULT_SIZING_INFO: MRT_ColumnSizingInfoState = {\n\tcolumnSizingStart: [],\n\tdeltaOffset: null,\n\tdeltaPercentage: null,\n\tisResizingColumn: false,\n\tstartOffset: null,\n\tstartSize: null\n};\n\nconst CUSTOM_FORM_PATH_BY_MODULE: Record<string, string> = {\n\taccounting: PathnameAccounting.CUSTOM_FORM,\n\tinventory: PathnameInventory.CUSTOM_FORM,\n\tmanufacturing: PathnameManufacturing.CUSTOM_FORM,\n\tprocurement: PathnamePurchase.CUSTOM_FORM,\n\tcrm: PathnameCrm.CUSTOM_FORM,\n\tuser: PathnameUsers.CUSTOM_FORM,\n\trental: PathnameRental.CUSTOM_FORM,\n\tdrive: PathnameDocument.ADD_CUSTOM_FIELDS,\n\thrms: PathnameHrms.CUSTOM_FORM\n};\n\nconst DISPLAY_COLUMN_DEF_OPTIONS = {\n\t'mrt-row-expand': { size: 70 },\n\t'mrt-row-select': { size: 50 }\n};\n\nconst HEAD_CELL_SX: Record<string, any> = {\n\tlineHeight: '140%',\n\tletterSpacing: '-0.28px',\n\tfontWeight: '500',\n\tfontSize: '0.875rem',\n\t'& .Mui-TableHeadCell-Content': { height: '100%' },\n\t'& .Mui-TableHeadCell-Content-Labels': {\n\t\twidth: '100%',\n\t\tjustifyContent: 'space-between'\n\t},\n\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\n\t\tpadding: 0,\n\t\tmargin: 0,\n\t\tright: '-5px',\n\t\topacity: 0\n\t}\n};\n\nconst BODY_CELL_SX: Record<string, any> = {\n\tlineHeight: '140%',\n\tletterSpacing: '-0.26px',\n\tfontWeight: '400',\n\tfontSize: '0.8125rem',\n\t// NOTE: this is intentionally NOT applied to pinned cells — a transparent\n\t// hover background is exactly what makes a sticky column see-through.\n\t'&:hover': { backgroundColor: 'transparent' }\n};\n\n/**\n * Opaque-background overrides for a pinned (sticky) cell.\n *\n * Rather than guessing at DOM markers (`.pinned-column`, `[data-pinned]`), which\n * differ between MRT majors, these are applied per-cell based on MRT's own\n * `column.getIsPinned()`. MRT merges consumer `sx` AFTER its internal pinned\n * styles, so this wins regardless of version.\n *\n * Four things have to be neutralised for a sticky cell to be truly opaque:\n * 1. `backgroundColor` — MRT uses a semi-transparent `alpha(...)` value.\n * 2. `backgroundImage` — MRT sets `inherit`, pulling in the Paper gradient.\n * 3. `::before` — MRT v3 paints the pinned overlay here.\n * 4. `:hover` — must not fall back to `transparent`.\n */\nconst buildPinnedCellSx = (bg: string) => ({\n\tbackgroundColor: `${bg} !important`,\n\tbackgroundImage: 'none !important',\n\topacity: 1,\n\t'&::before': { backgroundColor: `${bg} !important`, opacity: 1 },\n\t'&:hover': { backgroundColor: `${bg} !important` }\n});\n\nconst BODY_PROPS = { sx: { zIndex: 500 } } as const;\nconst HEAD_PROPS = { sx: { zIndex: 600 } } as const;\nconst BOTTOM_TOOLBAR_PROPS = {\n\tsx: { boxShadow: 'none', '& .MuiBox-root': { paddingLeft: 0 } }\n} as const;\nconst CIRCULAR_PROGRESS_PROPS = {\n\tComponent: null,\n\tsx: { color: '#289B64' }\n} as const;\nconst CHECKBOX_SX = {\n\tcolor: 'theme.secondary.300',\n\t'&.Mui-checked': {\n\t\tcolor: 'theme.primary.600',\n\t\t'&:hover': { color: 'theme.primary.500' }\n\t},\n\t'&.Mui-disabled': { color: 'theme.secondary.200' }\n} as const;\nconst ICON_SX = { color: 'theme.secondary.1000' } as const;\nconst PINNED_HEAD_PROPS = { className: 'pinned-column' };\nconst PINNED_BODY_PROPS = { className: 'pinned-column' };\n// Column-level cell props replace the table-level ones wholesale for the same\n// key, so the shared typography has to be merged back in here explicitly.\nconst PINNED_BODY_PROPS_WRAP = {\n\tclassName: 'pinned-column',\n\tsx: { ...BODY_CELL_SX, whiteSpace: 'pre-wrap' }\n};\n\nconst TABLE_ICONS = {\n\tArrowDownwardIcon: (props: SvgIconProps) => (\n\t\t<ArrowUpDown fontSize='medium' {...props} />\n\t),\n\tSortIcon: (props: SvgIconProps) => <ArrowUpDown fontSize='medium' {...props} />,\n\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\n\tCancelIcon: (props: SvgIconProps) => (\n\t\t<Close fontSize='small' {...props} sx={ICON_SX} />\n\t),\n\tSaveIcon: (props: SvgIconProps) => (\n\t\t<Save {...props} fontSize='small' sx={ICON_SX} />\n\t)\n};\n\n/* ============================================================================\n * Pure helpers — hoisted out of the component (they closed over nothing).\n * ==========================================================================*/\n\nconst shallowEqual = (a: Record<string, any> = {}, b: Record<string, any> = {}) => {\n\tif (a === b) return true;\n\tconst aKeys = Object.keys(a);\n\tconst bKeys = Object.keys(b);\n\tif (aKeys.length !== bKeys.length) return false;\n\treturn aKeys.every((k) => a[k] === b[k]);\n};\n\nconst getValidationType = (column: MaterialTableColumnProps) => {\n\tswitch (column.editVariant) {\n\t\tcase 'select':\n\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\n\n\t\tcase 'number':\n\t\t\treturn yup\n\t\t\t\t.number()\n\t\t\t\t.nullable()\n\t\t\t\t.transform((value, originalValue) =>\n\t\t\t\t\toriginalValue === '' ? null : value\n\t\t\t\t);\n\n\t\tcase 'url':\n\t\t\treturn yup\n\t\t\t\t.string()\n\t\t\t\t.matches(\n\t\t\t\t\t/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/,\n\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\n\t\t\t\t);\n\n\t\tcase 'date':\n\t\tcase 'date_time':\n\t\tcase 'time':\n\t\t\treturn yup\n\t\t\t\t.date()\n\t\t\t\t.transform((value, originalValue) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\toriginalValue &&\n\t\t\t\t\t\ttypeof originalValue === 'object' &&\n\t\t\t\t\t\t'toDate' in originalValue\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn (originalValue as any).toDate();\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t})\n\t\t\t\t.typeError('Valid date is required');\n\n\t\tcase 'file':\n\t\tcase 'image':\n\t\t\treturn yup.mixed().nullable();\n\n\t\tdefault:\n\t\t\treturn yup.string();\n\t}\n};\n\nconst validationReducer = (\n\tvalidations: any,\n\tvalidation: any,\n\tcolumn: MaterialTableColumnProps\n): any => {\n\tlet vld = validations;\n\n\tswitch (validation.type) {\n\t\tcase 'required':\n\t\t\tvld = validation.value\n\t\t\t\t? validations.required(validation.msg_en).typeError(validation.msg_en)\n\t\t\t\t: column?.editProperties?.is_multiple\n\t\t\t\t\t? validations.min(1, validation.msg_en)\n\t\t\t\t\t: validations;\n\t\t\tbreak;\n\t\tcase 'min':\n\t\t\tvld = validations.min(validation.value, validation.msg_en);\n\t\t\tbreak;\n\t\tcase 'email':\n\t\t\tvld = validations.email(validation.value, validation.msg_en);\n\t\t\tbreak;\n\t\tcase 'max':\n\t\t\tvld = validations.max(validation.value, validation.msg_en);\n\t\t\tbreak;\n\t\tcase 'positive':\n\t\t\tvld =\n\t\t\t\tvalidation.value === true\n\t\t\t\t\t? validations.test(\n\t\t\t\t\t\t\t'is-positive-number',\n\t\t\t\t\t\t\t'Value must be a positive number',\n\t\t\t\t\t\t\t(value: any) => !value || value >= 0\n\t\t\t\t\t\t)\n\t\t\t\t\t: validations;\n\t\t\tbreak;\n\t\tcase 'when':\n\t\t\treturn validations.when(validation.relation, {\n\t\t\t\tis: (val: any) => val === validation.values,\n\t\t\t\tthen: () =>\n\t\t\t\t\tvalidation?.thenValidations?.reduce(\n\t\t\t\t\t\t(acc: any, v: any) => validationReducer(acc, v, column),\n\t\t\t\t\t\tvalidations\n\t\t\t\t\t) || validations,\n\t\t\t\totherwise: () =>\n\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\n\t\t\t\t\t\t(acc: any, v: any) => validationReducer(acc, v, column),\n\t\t\t\t\t\tvalidations\n\t\t\t\t\t) || validations\n\t\t\t});\n\t\tcase 'validate':\n\t\t\tif (typeof validation.callback === 'function') {\n\t\t\t\tvld = vld.test(\n\t\t\t\t\tvalidation.name || 'custom-validate',\n\t\t\t\t\tvalidation.msg_en || 'Validation failed',\n\t\t\t\t\tfunction (this: yup.TestContext, value: any) {\n\t\t\t\t\t\treturn validation.callback(value, this.parent);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tvld = validations;\n\t\t\tbreak;\n\t}\n\n\tif (\n\t\tvalidation.type === 'required' &&\n\t\tvalidation.value &&\n\t\t(!column?.editVariant || column?.editVariant === 'text')\n\t) {\n\t\tvld = vld.test(\n\t\t\t'no-blank-spaces',\n\t\t\t'Blank space is not allowed',\n\t\t\t(value: any) => {\n\t\t\t\tif (!value) return true; // let .required() handle empty\n\t\t\t\treturn String(value).trim().length > 0;\n\t\t\t}\n\t\t);\n\t}\n\n\treturn vld;\n};\n\nconst buildValidationSchema = (columns: MaterialTableColumnProps[]) => {\n\tconst schema: Record<string, any> = {};\n\tcolumns.forEach((clm) => {\n\t\tif (clm?.editProperties?.validations?.length && clm.accessorKey) {\n\t\t\tschema[clm.accessorKey] = clm.editProperties.validations.reduce(\n\t\t\t\t(acc: any, validation: any) => validationReducer(acc, validation, clm),\n\t\t\t\tgetValidationType(clm)\n\t\t\t);\n\t\t}\n\t});\n\treturn yup.object().shape(schema);\n};\n\nconst hasRequiredValidation = (editProperties?: MaterialTableColumnProps['editProperties']) =>\n\tBoolean(\n\t\teditProperties?.validations?.some((v: any) => v.type === 'required' && v.value !== false)\n\t);\n\nconst formatValues = (values: Record<string, any>, cells: any[]) => {\n\tconst result: Record<string, any> = {};\n\tconst cellByKey = new Map<string, any>(\n\t\tcells.map((c) => [c.accessorKey ?? c.id, c])\n\t);\n\n\tObject.keys(values).forEach((key) => {\n\t\tconst val = values[key];\n\t\tresult[key] = val;\n\t\tif (!val) return;\n\n\t\tconst cell = cellByKey.get(key);\n\t\tif (val instanceof File) {\n\t\t\tresult[key] = val.name;\n\t\t}\n\t\tif (cell?.editVariant === 'date') {\n\t\t\tresult[key] = dayjs(val).format(\n\t\t\t\tcell?.editProperties?.dateFormat || cell?.dateFormat || 'DD-MM-YYYY'\n\t\t\t);\n\t\t}\n\t});\n\n\treturn result;\n};\n\nconst collectYupErrors = (err: yup.ValidationError) => {\n\tconst errors: Record<string, string> = {};\n\terr.inner.forEach((error) => {\n\t\tif (error.path) errors[error.path] = error.message;\n\t});\n\treturn errors;\n};\n\n/* ============================================================================\n * Hooks\n * ==========================================================================*/\n\n/**\n * Returns a referentially stable function that always calls the latest `fn`.\n * Lets callers pass inline arrows without invalidating memoised column defs.\n */\nfunction useEventCallback<T extends (...args: any[]) => any>(fn?: T) {\n\tconst ref = useRef(fn);\n\tuseLayoutEffect(() => {\n\t\tref.current = fn;\n\t});\n\treturn useCallback(\n\t\t(...args: Parameters<T>): ReturnType<T> | undefined => ref.current?.(...args),\n\t\t[]\n\t);\n}\n\nfunction useLatestRef<T>(value: T) {\n\tconst ref = useRef(value);\n\tref.current = value;\n\treturn ref;\n}\n\n/* ============================================================================\n * Inline-edit context\n *\n * Validation errors change on every save attempt / keystroke-driven revalidation.\n * Passing them through context (instead of closing over them in the column defs)\n * keeps the memoised `columns` array stable while still re-rendering edit cells.\n * ==========================================================================*/\n\ninterface InlineEditContextValue {\n\terrors: Record<string, string>;\n\tvalidationSchema: yup.ObjectSchema<any>;\n\tsetValidationErrors: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n\tonChangeRowField: (e: any, type: string, row: any) => void;\n\tgetSelectedData: (name: any, row: any) => any;\n}\n\nconst InlineEditContext = createContext<InlineEditContextValue | null>(null);\n\ninterface EditCellProps {\n\tcol: MaterialTableColumnProps;\n\tcell: MRT_Cell<any>;\n\tcolumn: any;\n\trow: MRT_Row<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\nconst EditCell = memo(({ col, cell, column, row, table }: EditCellProps) => {\n\tconst ctx = useContext(InlineEditContext);\n\tif (!ctx) return null;\n\n\treturn (\n\t\t<InlineEditFields\n\t\t\tcell={cell}\n\t\t\tcolumn={column}\n\t\t\tcol={col}\n\t\t\trow={row}\n\t\t\ttable={table}\n\t\t\terrors={ctx.errors}\n\t\t\tvalidationSchema={ctx.validationSchema}\n\t\t\tsetValidationErrors={ctx.setValidationErrors}\n\t\t\tonChangeRowField={ctx.onChangeRowField}\n\t\t\tgetSelectedData={ctx.getSelectedData}\n\t\t/>\n\t);\n});\nEditCell.displayName = 'EditCell';\n\n/* ============================================================================\n * Small presentational pieces\n * ==========================================================================*/\n\nconst ColumnHeaderLabel = memo(\n\t({ label, required }: { label: React.ReactNode; required: boolean }) => (\n\t\t<Box display='flex' alignItems='center'>\n\t\t\t{label}\n\t\t\t{required && (\n\t\t\t\t<Typography type='s5' color='theme.error.600'>\n\t\t\t\t\t*\n\t\t\t\t</Typography>\n\t\t\t)}\n\t\t</Box>\n\t)\n);\nColumnHeaderLabel.displayName = 'ColumnHeaderLabel';\n\nconst SparCurrencyCell = ({ cell }: { cell: MRT_Cell<any> }) => {\n\tconst raw = cell.getValue<any>();\n\tif (raw === null || raw === undefined || raw === '') return '-';\n\tconst num = Number(raw);\n\treturn Number.isNaN(num) ? '-' : num.toFixed(SPAR_DECIMALS);\n};\n\n/**\n * Belt-and-braces CSS layer for pinned cells.\n *\n * The authoritative fix lives in `muiTableHeadCellProps` / `muiTableBodyCellProps`,\n * which key off `column.getIsPinned()`. These selectors additionally cover cells\n * that carry a pinned marker but are not pinned through MRT state (e.g. the\n * `preview` column, which ships the `.pinned-column` class), and any markup that\n * a future MRT major renders. `box-shadow` is deliberately left alone so MRT's\n * separator between the pinned block and the scrolling area survives.\n */\nconst PINNED_CELL_SELECTORS = [\n\t'.MuiTableCell-root[data-pinned=\"true\"]',\n\t'.MuiTableCell-root.pinned-column',\n\t'th[data-pinned=\"true\"]',\n\t'td[data-pinned=\"true\"]'\n].join(', ');\n\nconst TableWrapper = styled(Box, {\n\tshouldForwardProp: (prop) =>\n\t\tprop !== 'disableMaxHeight' && prop !== 'pinnedColumnBgColor'\n})<{ disableMaxHeight?: boolean; pinnedColumnBgColor?: string }>(\n\t({ theme: { palette }, disableMaxHeight, pinnedColumnBgColor = '#fff' }) => ({\n\t\t[PINNED_CELL_SELECTORS]: {\n\t\t\tbackgroundColor: `${pinnedColumnBgColor} !important`,\n\t\t\tbackgroundImage: 'none !important',\n\t\t\topacity: 1,\n\t\t\t'&::before': {\n\t\t\t\tbackgroundColor: `${pinnedColumnBgColor} !important`,\n\t\t\t\topacity: 1\n\t\t\t},\n\t\t\t'&:hover': { backgroundColor: `${pinnedColumnBgColor} !important` }\n\t\t},\n\t\t'.MuiTableCell-root': {\n\t\t\tborder: '1px solid #efefef',\n\t\t\tborderBottom: 0,\n\t\t\tborderLeft: 0,\n\t\t\tpadding: '0 0.5rem',\n\t\t\tlineHeight: '19px',\n\t\t\tfontSize: '14px',\n\t\t\tminHeight: 32\n\t\t},\n\t\t'.MuiTableCell-head': {\n\t\t\tbackgroundColor: palette.theme?.secondary[100]\n\t\t},\n\t\t'.MuiTableContainer-root': {\n\t\t\t...(!disableMaxHeight && {\n\t\t\t\tmaxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important'\n\t\t\t})\n\t\t},\n\t\t'.MuiPaper-root': { boxShadow: 'none' },\n\t\t'.MuiPaginationItem-root': {\n\t\t\t'&.Mui-selected': {\n\t\t\t\tbackgroundColor: palette?.theme?.primary[700],\n\t\t\t\tcolor: 'white'\n\t\t\t}\n\t\t},\n\t\t'.MuiTableRow-root': {\n\t\t\t'&.Mui-selected': {\n\t\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\n\t\t\t\tcolor: 'white'\n\t\t\t}\n\t\t},\n\t\t'.MuiCheckbox-indeterminate': {\n\t\t\tcolor: `${palette?.theme?.primary[700]} !important`,\n\t\t\t'& svg': { height: '20px !important', width: '20px !important' }\n\t\t}\n\t})\n);\n\n/* ============================================================================\n * Component\n * ==========================================================================*/\n\nconst MaterialTableBase = ({\n\trows,\n\tcolumns,\n\ttotalPages,\n\tpaginationModel,\n\tgetSelectedData,\n\n\tenablePagination = false,\n columnOrder = DEFAULT_COLUMN_ORDER,\n\tcolumnPinning = DEFAULT_PINNING,\n\tupdateData,\n\thandleColumnOrdering,\n\tenableEditing,\n\tenableColumnDragging,\n\tstates,\n\trowActionMenu,\n\tdestructiveActionMenu,\n\tdisableDefaultActionColumn,\n\tenableRowSelection,\n\tdefaultActionColumnItems = EMPTY_ARRAY,\n\tenableBottomToolbar,\n\tSetSelectedRowId,\n\tisResetRow,\n\tonCreateRow,\n\tonEditRow,\n\tonDeleteRow,\n\teditDisplayMode,\n\tenableRowCreate,\n\tonChangeRowField,\n\tonSelectRow,\n\tonRowClick,\n\tenableColumnResizing = true,\n\tcolumnResizeMode = 'onEnd',\n\tselectedRowIds = EMPTY_ARRAY,\n\tonColumnVisibility,\n\tonSortingChange,\n\tdisabledDefaultActionColumnIcon = false,\n\tenableAddCustomField = true,\n\tdisableAddColumn = false,\n\tenableRowDragging = false,\n\thandleColumnResizing,\n\tcolumnSizes,\n\tdisableMaxHeight = false,\n\tshowPreview = false,\n\thandlePreview,\n\tpinnedColumnBgColor = '#fff',\n\tgetRowId,\n\tdefaultColumnProps,\n\tdeleteConfirmTitle,\n\tdeleteConfirmDescription,\n\t...rest\n}: MaterialTablePropsType) => {\n\tconst { t } = useTranslation();\n\tconst navigate = useNavigate();\n\tconst location = useLocation();\n\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages();\n\tconst activePage = useDeepMemo<PageState>(aPage);\n\tconst { pageNo } = paginationModel;\n\n\t/* ---------------------------------------------------------------- config */\n\n\tconst isSpar = useMemo(() => getApiConfigSafe()?.countryEnv === 'spar', []);\n\n\tconst customFieldPath = useMemo(() => {\n\t\tconst currentModule = location.pathname.split('/')[2];\n\t\treturn `/dashboard/${currentModule}${CUSTOM_FORM_PATH_BY_MODULE[currentModule] ?? ''}`;\n\t}, [location.pathname]);\n\n\t/* ------------------------------------------------------- stable callbacks */\n\n\tconst onColumnVisibilityStable = useEventCallback(onColumnVisibility);\n\tconst onChangeRowFieldStable = useEventCallback(onChangeRowField);\n\tconst getSelectedDataStable = useEventCallback(getSelectedData);\n\tconst handlePreviewStable = useEventCallback(handlePreview);\n\tconst handleColumnResizingStable = useEventCallback(handleColumnResizing);\n\tconst handleColumnOrderingStable = useEventCallback(handleColumnOrdering);\n\tconst updateDataStable = useEventCallback(updateData);\n\tconst onSelectRowStable = useEventCallback(onSelectRow);\n\tconst setSelectedRowIdStable = useEventCallback(SetSelectedRowId);\n\tconst onRowClickStable = useEventCallback(onRowClick);\n\tconst updatePageInfoRef = useLatestRef(updatePageInfo);\n\n\t/* ------------------------------------------------------------------ state */\n\n\t/**\n\t * Column visibility is stored as a sparse override map instead of a full\n\t * mirror of the `columns` prop. This removes the props->state duplication\n\t * (and the extra render it caused) while keeping fresh column defs — dynamic\n\t * select options, Cell renderers etc. — always up to date.\n\t */\n\tconst [visibilityOverrides, setVisibilityOverrides] = useState<\n\t\tRecord<string, boolean>\n\t>(EMPTY_OBJECT);\n\tconst [columnSearch, setColumnSearch] = useState('');\n\n\tconst [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [showAddColumnPanel, setShowAddColumnPanel] = useState(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [activeMenuRow, setActiveMenuRow] = useState<any>(EMPTY_OBJECT);\n\n\tconst [validationErrors, setValidationErrors] = useState<Record<string, string>>(\n\t\tEMPTY_OBJECT\n\t);\n\tconst [isCreatingRow, setIsCreatingRow] = useState(false);\n\tconst [isEditingRow, setIsEditingRow] = useState(false);\n\tconst [isDeletingRow, setIsDeletingRow] = useState(false);\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>(\n\t\tEMPTY_OBJECT\n\t);\n\tconst [sorting, setSorting] = useState<MRT_SortingState>(EMPTY_ARRAY);\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\n\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(() => ({\n\t\t...(aPage?.column_sizes ?? {}),\n\t\t...(columnSizes ?? {})\n\t}));\n\tconst [columnSizingInfo, setColumnSizingInfo] =\n\t\tuseState<MRT_ColumnSizingInfoState>(DEFAULT_SIZING_INFO);\n\n\t/* --------------------------------------------------- derived column model */\n\n\tconst resolvedColumns = useMemo<MaterialTableColumnProps[]>(\n\t\t() =>\n\t\t\t(columns ?? EMPTY_ARRAY).map((col) => {\n\t\t\t\tconst key = (col.accessorKey ?? col.id) as string;\n\t\t\t\tconst override = visibilityOverrides[key];\n\t\t\t\tif (override === undefined || override === Boolean(col.visible)) return col;\n\t\t\t\treturn { ...col, visible: override };\n\t\t\t}),\n\t\t[columns, visibilityOverrides]\n\t);\n\n\tconst visibleColumns = useMemo(\n\t\t() => resolvedColumns.filter((c) => Boolean(c.visible)),\n\t\t[resolvedColumns]\n\t);\n\n\tconst hiddenColumns = useMemo(\n\t\t() => resolvedColumns.filter((c) => !c.visible),\n\t\t[resolvedColumns]\n\t);\n\n\t/** Replaces the `filteredOptions` state, which went stale on column changes. */\n\tconst filteredHiddenColumns = useMemo(() => {\n\t\tconst q = columnSearch.trim().toLowerCase();\n\t\tif (!q) return hiddenColumns;\n\t\treturn hiddenColumns.filter((c) =>\n\t\t\tString(c.header ?? '').toLowerCase().includes(q)\n\t\t);\n\t}, [hiddenColumns, columnSearch]);\n\n\tconst validationSchema = useMemo(\n\t\t() => buildValidationSchema(resolvedColumns),\n\t\t[resolvedColumns]\n\t);\n\n\t/* -------------------------------------------------------- menu handlers */\n\n\tconst handleHeaderClick = useCallback((event: React.MouseEvent<HTMLElement>) => {\n\t\tsetMenuAnchorEl(event.currentTarget);\n\t}, []);\n\n\tconst handleHeaderClose = useCallback(() => {\n\t\tsetMenuAnchorEl(null);\n\t\tsetShowAddColumnPanel(false);\n\t\tsetColumnSearch('');\n\t}, []);\n\n\tconst emitColumnVisibility = useCallback(\n\t\t(overrides: Record<string, boolean>) => {\n\t\t\tif (!onColumnVisibilityStable) return;\n\t\t\tconst next = (columns ?? EMPTY_ARRAY).map((col) => {\n\t\t\t\tconst key = (col.accessorKey ?? col.id) as string;\n\t\t\t\tconst override = overrides[key];\n\t\t\t\treturn override === undefined ? { ...col } : { ...col, visible: override };\n\t\t\t});\n\t\t\tonColumnVisibilityStable(next);\n\t\t},\n\t\t[columns, onColumnVisibilityStable]\n\t);\n\n\tconst setColumnVisible = useCallback(\n\t\t(column: MaterialTableColumnProps, visible: boolean) => {\n\t\t\tconst key = (column.accessorKey ?? column.id) as string;\n\t\t\tsetVisibilityOverrides((prev) => {\n\t\t\t\tif (prev[key] === visible) return prev;\n\t\t\t\tconst next = { ...prev, [key]: visible };\n\t\t\t\temitColumnVisibility(next);\n\t\t\t\treturn next;\n\t\t\t});\n\t\t\tsetMenuAnchorEl(null);\n\t\t\tsetShowAddColumnPanel(false);\n\t\t\tsetColumnSearch('');\n\t\t},\n\t\t[emitColumnVisibility]\n\t);\n\n\tconst handleHideColumn = useCallback(\n\t\t(column: MaterialTableColumnProps) => setColumnVisible(column, false),\n\t\t[setColumnVisible]\n\t);\n\n\tconst handleAddColumn = useCallback(\n\t\t(column: MaterialTableColumnProps) => setColumnVisible(column, true),\n\t\t[setColumnVisible]\n\t);\n\n\tconst handleCustomAddColumn = useCallback(() => {\n\t\tnavigate(customFieldPath, { state: formData });\n\t\tsetMenuAnchorEl(null);\n\t\tsetShowAddColumnPanel(false);\n\t}, [navigate, customFieldPath, formData]);\n\n\tconst handleActionsClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>, data: any) => {\n\t\t\tsetActiveMenuRow(data);\n\t\t\tsetRowAnchorEl(event.currentTarget);\n\t\t},\n\t\t[]\n\t);\n\n\tconst handleActionsClose = useCallback(() => setRowAnchorEl(null), []);\n\n\tconst handlePreviewClick = useCallback(\n\t\t(row: MRT_RowData) => handlePreviewStable(row),\n\t\t[handlePreviewStable]\n\t);\n\n\t/* ------------------------------------------------------------ row delete */\n\n\tconst handleRowDelete = useCallback(async () => {\n\t\tif (!rowToDelete) return;\n\t\tsetIsDeletingRow(true);\n\t\ttry {\n\t\t\tawait onDeleteRow?.(rowToDelete);\n\t\t\tsetRowToDelete(null);\n\t\t} catch (err) {\n\t\t\tenqueueSnackbar(\n\t\t\t\terr instanceof Error ? err.message : 'Something went wrong',\n\t\t\t\t{ variant: 'error' }\n\t\t\t);\n\t\t} finally {\n\t\t\tsetIsDeletingRow(false);\n\t\t}\n\t}, [rowToDelete, onDeleteRow]);\n\n\tconst resetEditingState = useCallback(() => {\n\t\tsetRowSelection(EMPTY_OBJECT);\n\t\tsetDisableNextEdit(false);\n\t\tsetValidationErrors(EMPTY_OBJECT);\n\t}, []);\n\n\t/* ------------------------------------------------------ save handlers */\n\n\tconst handleSaveError = useCallback((err: unknown) => {\n\t\tif (err instanceof yup.ValidationError) {\n\t\t\tsetValidationErrors(collectYupErrors(err));\n\t\t} else if (err instanceof Error) {\n\t\t\tenqueueSnackbar(err.message, { variant: 'error' });\n\t\t} else {\n\t\t\tenqueueSnackbar('Something went wrong', { variant: 'error' });\n\t\t}\n\t}, []);\n\n\tconst handleEditingRowSave = useCallback(\n\t\tasync (data: any) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, { abortEarly: false });\n\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\tsetIsEditingRow(true);\n\t\t\t\tsetDisableNextEdit(false);\n\n\t\t\t\tconst cells = data.row.getAllCells().map((c: any) => c.column.columnDef);\n\t\t\t\tdata.row._valuesCache = formatValues(data.values, cells);\n\n\t\t\t\tawait onEditRow?.(data, 'edit');\n\t\t\t\tdata.table.setEditingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\thandleSaveError(err);\n\t\t\t} finally {\n\t\t\t\tsetIsEditingRow(false);\n\t\t\t}\n\t\t},\n\t\t[validationSchema, onEditRow, handleSaveError]\n\t);\n\n\tconst handleCreatingRowSave = useCallback(\n\t\tasync (data: any) => {\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(data.values, { abortEarly: false });\n\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\tsetIsCreatingRow(true);\n\t\t\t\tsetDisableNextEdit(false);\n\n\t\t\t\tconst cells = data.row.getAllCells().map((c: any) => c.column.columnDef);\n\t\t\t\tdata.row._valuesCache = formatValues(data.values, cells);\n\n\t\t\t\tawait onCreateRow?.(data);\n\t\t\t\tdata.table.setCreatingRow(null);\n\t\t\t} catch (err) {\n\t\t\t\thandleSaveError(err);\n\t\t\t} finally {\n\t\t\t\tsetIsCreatingRow(false);\n\t\t\t}\n\t\t},\n\t\t[validationSchema, onCreateRow, handleSaveError]\n\t);\n\n\t/* ---------------------------------------------------------- column defs */\n\n\tconst tableColumnDefs = useMemo(() => {\n\t\tconst isRowEdit = editDisplayMode === 'row';\n\n\t\tconst dataColumns = visibleColumns.map((c) => {\n\t\t\tconst isCurrency = c.type === 'currency' || c.type === 'amount';\n\n\t\t\treturn {\n\t\t\t\t...c,\n\t\t\t\t...(isSpar && isCurrency && !c.Cell ? { Cell: SparCurrencyCell } : {}),\n\t\t\t\t...(isRowEdit\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tEdit: (props: any) => <EditCell {...props} col={c} />\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tHeader: (\n\t\t\t\t\t<ColumnHeaderLabel\n\t\t\t\t\t\tlabel={c.header}\n\t\t\t\t\t\trequired={Boolean(c.required) || hasRequiredValidation(c.editProperties)}\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tenableColumnDragging: c.id !== 'actions',\n\t\t\t\tsize: undefined,\n\t\t\t\tmaxSize: 800\n\t\t\t} as MRT_ColumnDef<any>;\n\t\t});\n\n\t\tconst previewColumn = showPreview\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'preview',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: 70,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\tsx={{ ml: '20px', '&:hover': { backgroundColor: 'transparent' } }}>\n\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: PINNED_HEAD_PROPS,\n\t\t\t\t\t\tmuiTableBodyCellProps: PINNED_BODY_PROPS_WRAP,\n\t\t\t\t\t\tCell: ({ row }: any) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\tvariant='outlined'\n\t\t\t\t\t\t\t\tonClick={() => handlePreviewClick(row.original)}>\n\t\t\t\t\t\t\t\t{t('common.preview', { defaultValue: 'Preview' })}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)\n\t\t\t\t\t} as unknown as MRT_ColumnDef<any>\n\t\t\t\t]\n\t\t\t: EMPTY_ARRAY;\n\n\t\tconst hasAnyRowMenu =\n\t\t\tBoolean(rowActionMenu?.length) || Boolean(destructiveActionMenu?.length);\n\n\t\tconst actionColumn = !disableDefaultActionColumn\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'actions',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: defaultActionColumnItems.length > 1 ? 80 : 50,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\tsx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }}\n\t\t\t\t\t\t\t\tonClick={handleHeaderClick}>\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: PINNED_HEAD_PROPS,\n\t\t\t\t\t\tmuiTableBodyCellProps: PINNED_BODY_PROPS,\n\t\t\t\t\t\tCell: (props: any) =>\n\t\t\t\t\t\t\tdefaultActionColumnItems.length\n\t\t\t\t\t\t\t\t? defaultActionColumnItems.map((item, index) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement(item, {\n\t\t\t\t\t\t\t\t\t\t\t...item.props,\n\t\t\t\t\t\t\t\t\t\t\tkey: item.key ?? `default-action-${index}`,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => item.props?.onClick?.(props)\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: !disabledDefaultActionColumnIcon && (\n\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={!hasAnyRowMenu}>\n\t\t\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t} as unknown as MRT_ColumnDef<any>\n\t\t\t\t]\n\t\t\t: EMPTY_ARRAY;\n\n\t\treturn [...dataColumns, ...previewColumn, ...actionColumn];\n\t}, [\n\t\tvisibleColumns,\n\t\tisSpar,\n\t\teditDisplayMode,\n\t\tshowPreview,\n\t\thandlePreviewClick,\n\t\tdisableDefaultActionColumn,\n\t\tdefaultActionColumnItems,\n\t\tdisabledDefaultActionColumnIcon,\n\t\trowActionMenu,\n\t\tdestructiveActionMenu,\n\t\thandleHeaderClick,\n\t\thandleActionsClick,\n\t\tt\n\t]);\n\n\t/* --------------------------------------------------------- table options */\n\n\tconst tableState = useMemo<Partial<MRT_TableState<any>>>(\n\t\t() => ({\n\t\t\tcolumnOrder,\n\t\t\tcolumnPinning,\n\t\t\tisSaving: isCreatingRow || isEditingRow,\n\t\t\tshowProgressBars: false,\n\t\t\trowSelection,\n\t\t\t...states,\n\t\t\tsorting: Array.isArray(states?.sorting)\n\t\t\t\t? states.sorting\n\t\t\t\t: Array.isArray(sorting)\n\t\t\t\t\t? sorting\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\tcolumnSizing,\n\t\t\tshowLoadingOverlay: false\n\t\t}),\n\t\t[columnOrder, isCreatingRow, isEditingRow, rowSelection, states, sorting, columnSizing, columnPinning]\n\t);\n\n\tconst mergedDefaultColumn = useMemo(\n\t\t() => ({ ...DEFAULT_COLUMN, ...defaultColumnProps }),\n\t\t[defaultColumnProps]\n\t);\n\n\tconst containerProps = useMemo(\n\t\t() => ({ sx: { ...(disableMaxHeight && { maxHeight: 'none !important' }) } }),\n\t\t[disableMaxHeight]\n\t);\n\n\t/**\n\t * Four cached props objects (pinned / unpinned × head / body). The per-cell\n\t * callbacks below only pick between these references, so making them\n\t * functions costs nothing: no object is allocated during render or scroll.\n\t */\n\tconst cellPropVariants = useMemo(() => {\n\t\tconst pinned = buildPinnedCellSx(pinnedColumnBgColor);\n\t\treturn {\n\t\t\thead: { sx: HEAD_CELL_SX },\n\t\t\theadPinned: { sx: { ...HEAD_CELL_SX, ...pinned } },\n\t\t\tbody: { sx: BODY_CELL_SX },\n\t\t\tbodyPinned: { sx: { ...BODY_CELL_SX, ...pinned } }\n\t\t};\n\t}, [pinnedColumnBgColor]);\n\n\tconst muiTableHeadCellProps = useCallback(\n\t\t({ column }: any) =>\n\t\t\tcolumn?.getIsPinned?.() ? cellPropVariants.headPinned : cellPropVariants.head,\n\t\t[cellPropVariants]\n\t);\n\n\tconst muiTableBodyCellProps = useCallback(\n\t\t({ column }: any) =>\n\t\t\tcolumn?.getIsPinned?.() ? cellPropVariants.bodyPinned : cellPropVariants.body,\n\t\t[cellPropVariants]\n\t);\n\n\tconst paginationProps = useMemo(\n\t\t() => ({\n\t\t\tshape: 'rounded' as const,\n\t\t\tpage: pageNo,\n\t\t\tcount: totalPages,\n\t\t\tshowRowsPerPage: false,\n\t\t\tboundaryCount: 3\n\t\t}),\n\t\t[pageNo, totalPages]\n\t);\n\n\tconst selectCheckboxProps = useMemo(\n\t\t() => ({\n\t\t\tsx: CHECKBOX_SX,\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t}),\n\t\t[]\n\t);\n\n\tconst selectAllCheckboxProps = useMemo(\n\t\t() => ({\n\t\t\tsx: { ...CHECKBOX_SX, '&.Mui-disabled': { color: 'theme.secondary.600' } },\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t}),\n\t\t[]\n\t);\n\n\tconst displayColumnDefOptions = useMemo(\n\t\t() => ({\n\t\t\t...DISPLAY_COLUMN_DEF_OPTIONS,\n\t\t\t'mrt-row-actions': {\n\t\t\t\tHeader: (\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t</IconButton>\n\t\t\t\t),\n\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\tsx: { '& .MuiBox-root': { gap: 0 }, backgroundColor: '#fff' }\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\t[handleHeaderClick]\n\t);\n\n\tconst renderRowActions = useCallback(\n\t\t({ row, table }: { row: MRT_Row<any>; table: MRT_TableInstance<any> }) => {\n\t\t\tconst startEditing = () => {\n\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\ttable.setEditingRow(row);\n\t\t\t\tsetDisableNextEdit(true);\n\t\t\t};\n\n\t\t\tconst actions = (\n\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t<Tooltip title={t('common.edit', { defaultValue: 'Edit' })}>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={startEditing} size='small'>\n\t\t\t\t\t\t\t\t<Edit fontSize='small' sx={ICON_SX} />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{onDeleteRow && (\n\t\t\t\t\t\t<Tooltip title={t('common.delete', { defaultValue: 'Delete' })}>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\t\t\t\t\t\tonClick={() => setRowToDelete(row)}\n\t\t\t\t\t\t\t\t\tsize='small'>\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={ICON_SX} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t);\n\n\t\t\tif (rest?.enableExpanding) return row?.parentId ? actions : null;\n\t\t\treturn actions;\n\t\t},\n\t\t[disableNextEdit, onDeleteRow, rest?.enableExpanding, t]\n\t);\n\n\tconst renderBottomToolbarCustomActions = useCallback(\n\t\t({ table }: { table: MRT_TableInstance<any> }) => (\n\t\t\t<Button\n\t\t\t\tvariant='outlined'\n\t\t\t\tstartIcon={<Add />}\n\t\t\t\tclassName='add-row-btn'\n\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tsetValidationErrors(EMPTY_OBJECT);\n\t\t\t\t\ttable.setCreatingRow(true);\n\t\t\t\t\tsetDisableNextEdit(true);\n\t\t\t\t}}>\n\t\t\t\t{t('common.add')}\n\t\t\t</Button>\n\t\t),\n\t\t[disableNextEdit, t]\n\t);\n\n\tconst renderEmptyRowsFallback = useCallback(\n\t\t() => (\n\t\t\t<Box className='no-data'>\n\t\t\t\t<img src={images.common.tableNoData} alt='' />\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t{t('common.noData')}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t),\n\t\t[t]\n\t);\n\n\tconst muiTableBodyRowProps = useCallback(\n\t\t({ row, table }: { row: MRT_Row<any>; table: MRT_TableInstance<any> }) => {\n\t\t\tconst tState = table.getState();\n\t\t\tconst isRowBeingEdited = Boolean(tState?.editingRow?.id || tState?.creatingRow?.id);\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error);\n\n\t\t\treturn {\n\t\t\t\t...(onRowClick ? { onClick: () => onRowClickStable(row) } : {}),\n\t\t\t\tsx: {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\tbackgroundColor: !isRowBeingEdited\n\t\t\t\t\t\t? isErrorRow\n\t\t\t\t\t\t\t? 'theme.error.100'\n\t\t\t\t\t\t\t: 'inherit'\n\t\t\t\t\t\t: 'inherit',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: isRowBeingEdited\n\t\t\t\t\t\t\t? 'transparent'\n\t\t\t\t\t\t\t: isErrorRow\n\t\t\t\t\t\t\t\t? 'theme.error.200'\n\t\t\t\t\t\t\t\t: '#e8e8e8'\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover td:after': { backgroundColor: 'transparent' }\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t[onRowClick, onRowClickStable]\n\t);\n\n\tconst muiEditTextFieldProps = useCallback(\n\t\t({ row, column }: any) => ({\n\t\t\tInputProps: { disableUnderline: true },\n\t\t\tonBlur: (e: React.FocusEvent<HTMLInputElement>) =>\n\t\t\t\tupdateDataStable(e.target.value, column, row.id),\n\t\t\tvariant: 'outlined' as const,\n\t\t\tsx: ({ palette }: any) => ({\n\t\t\t\t'& .MuiOutlinedInput-root': {\n\t\t\t\t\t'& fieldset': {\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}),\n\t\t[updateDataStable]\n\t);\n\n\tconst resolvedGetRowId = useCallback(\n\t\t(row: any, index: number) =>\n\t\t\tgetRowId ? getRowId(row, index) : (row?.id ?? `row-${index}`),\n\t\t[getRowId]\n\t);\n\n\tconst table = useMaterialReactTable({\n\t\tcolumns: tableColumnDefs,\n\t\tdata: rows ?? EMPTY_ARRAY,\n\t\tdefaultColumn: mergedDefaultColumn,\n\t\tstate: tableState,\n\t\tgetRowId: resolvedGetRowId,\n\n\t\tmuiTableContainerProps: containerProps,\n\t\tcolumnResizeMode,\n\n\t\tonEditingRowSave: handleEditingRowSave,\n\t\tonCreatingRowSave: handleCreatingRowSave,\n\t\tonCreatingRowCancel: resetEditingState,\n\t\tonEditingRowCancel: resetEditingState,\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\n\t\tonRowSelectionChange: setRowSelection,\n\t\tonColumnOrderChange: handleColumnOrderingStable,\n\t\tonColumnSizingChange: setColumnSizing,\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\n\n\t\tdisplayColumnDefOptions,\n\t\trenderRowActions,\n\t\trenderEmptyRowsFallback,\n\t\t...(enableRowCreate ? { renderBottomToolbarCustomActions } : {}),\n\n\t\tenableColumnOrdering: true,\n\t\tenableRowSelection: enableRowSelection ?? true,\n\t\tenableEditing: enableEditing ?? true,\n\t\teditDisplayMode: editDisplayMode ?? 'cell',\n\t\tcreateDisplayMode: 'row',\n\t\tenableColumnResizing,\n\t\tenableRowDragging,\n\t\tenableTopToolbar: false,\n\t\tenableColumnActions: false,\n\t\tenableSorting: true,\n\t\tenableGrouping: true,\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\n\t\tenableColumnDragging: enableColumnDragging ?? true,\n\t\tenableStickyHeader: true,\n\t\tenableSortingRemoval: false,\n\t\tenablePagination,\n\t\tpaginationDisplayMode: 'pages',\n\t\tlayoutMode: 'grid',\n\n\t\tmuiPaginationProps: paginationProps,\n\t\tmuiEditTextFieldProps,\n\t\tmuiCircularProgressProps: CIRCULAR_PROGRESS_PROPS,\n\t\tmuiTableHeadCellProps,\n\t\tmuiTableBodyProps: BODY_PROPS,\n\t\tmuiTableHeadProps: HEAD_PROPS,\n\t\tmuiTableBodyCellProps,\n\t\tmuiTableBodyRowProps,\n\t\tmuiSelectCheckboxProps: selectCheckboxProps,\n\t\tmuiSelectAllCheckboxProps: selectAllCheckboxProps,\n\t\tmuiBottomToolbarProps: BOTTOM_TOOLBAR_PROPS,\n\t\ticons: TABLE_ICONS,\n\n\t\t...rest\n\t});\n\n\tconst tableRef = useLatestRef(table);\n\n\t/* ------------------------------------------------------------- effects */\n\n\t/**\n\t * Persist column widths on the *resize-end edge only*.\n\t * Previously this ran on every `columnSizing` change (i.e. every mousemove\n\t * in `onChange` mode) and on mount, pushing a page-state update that\n\t * re-rendered the whole page tree — the primary \"fluctuation\" source.\n\t */\n\tconst columnSizingRef = useLatestRef(columnSizing);\n\tconst wasResizingRef = useRef(false);\n\n\tuseEffect(() => {\n\t\tconst isResizing = Boolean(columnSizingInfo?.isResizingColumn);\n\t\tconst wasResizing = wasResizingRef.current;\n\t\twasResizingRef.current = isResizing;\n\n\t\tif (!wasResizing || isResizing) return;\n\n\t\tconst previous = activePage?.column_sizes ?? EMPTY_OBJECT;\n\t\tconst merged = { ...previous, ...columnSizingRef.current };\n\t\tif (shallowEqual(previous, merged)) return;\n\n\t\tupdatePageInfoRef.current?.({ column_sizes: merged });\n\t\thandleColumnResizingStable(columnSizingRef.current);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columnSizingInfo?.isResizingColumn]);\n\n\t/** Keep the controlled `columnSizes` prop in sync without clobbering drags. */\n\tuseEffect(() => {\n\t\tif (!columnSizes) return;\n\t\tsetColumnSizing((prev) => {\n\t\t\tconst next = { ...prev, ...columnSizes };\n\t\t\treturn shallowEqual(prev, next) ? prev : next;\n\t\t});\n\t}, [columnSizes]);\n\n\t/** Notify the parent about sorting — skipping the mount pass. */\n\tconst isFirstSortRun = useRef(true);\n\tuseEffect(() => {\n\t\tif (isFirstSortRun.current) {\n\t\t\tisFirstSortRun.current = false;\n\t\t\treturn;\n\t\t}\n\t\tif (typeof onSortingChange === 'function') {\n\t\t\tonSortingChange(sorting?.[0] ?? null);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [sorting]);\n\n\t/**\n\t * Hydrate selection from `selectedRowIds`. Applied once per distinct id set\n\t * (instead of the old one-shot latch), so later external changes are honoured\n\t * without clobbering the user's in-table selection on every data refresh.\n\t */\n\tconst selectedIdsKey = useMemo(\n\t\t() => selectedRowIds.map(String).sort().join('|'),\n\t\t[selectedRowIds]\n\t);\n\tconst appliedSelectionKeyRef = useRef<string | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!selectedIdsKey || !rows?.length) return;\n\t\tif (appliedSelectionKeyRef.current === selectedIdsKey) return;\n\n\t\tconst idSet = new Set(selectedRowIds.map(String));\n\t\tconst next: MRT_RowSelectionState = {};\n\t\trows.forEach((row) => {\n\t\t\tif (idSet.has(String(row?.id))) next[row.id] = true;\n\t\t});\n\t\tif (!Object.keys(next).length) return;\n\n\t\tappliedSelectionKeyRef.current = selectedIdsKey;\n\t\tsetRowSelection((prev) => (shallowEqual(prev, next) ? prev : next));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [selectedIdsKey, rows]);\n\n\t/**\n\t * Emit selection changes. Depends on `rowSelection` only — the old version\n\t * also depended on `table`, whose identity changes every render, which fired\n\t * the parent callback on every render and caused feedback re-render loops.\n\t */\n\tuseEffect(() => {\n\t\tconst instance = tableRef.current;\n\t\tif (!instance) return;\n\n\t\tif (enableRowSelection) {\n\t\t\tsetSelectedRowIdStable(instance.getSelectedRowModel().rows);\n\t\t}\n\n\t\tif (!onSelectRow) return;\n\n\t\tif (rest?.enableExpanding) {\n\t\t\tconst selected: any[] = [];\n\t\t\tconst selectionState = instance.getState().rowSelection;\n\t\t\tconst traverse = (rowList: any[], parentKey = '') => {\n\t\t\t\trowList.forEach((row, index) => {\n\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\n\t\t\t\t\tif (selectionState[rowKey]) selected.push(row);\n\t\t\t\t\tif (row.subRows?.length) traverse(row.subRows, rowKey);\n\t\t\t\t});\n\t\t\t};\n\t\t\ttraverse(instance.getRowModel().rows);\n\t\t\tonSelectRowStable(selected, rowSelection);\n\t\t} else {\n\t\t\tonSelectRowStable(instance.getSelectedRowModel().rows, rowSelection);\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowSelection, enableRowSelection]);\n\n\t/** External reset. */\n\tuseEffect(() => {\n\t\tif (isResetRow) {\n\t\t\ttable?.resetRowSelection();\n\t\t\tappliedSelectionKeyRef.current = null;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isResetRow]);\n\n\t/* ------------------------------------------------------ context value */\n\n\tconst inlineEditContextValue = useMemo<InlineEditContextValue>(\n\t\t() => ({\n\t\t\terrors: validationErrors,\n\t\t\tvalidationSchema,\n\t\t\tsetValidationErrors,\n\t\t\tonChangeRowField: onChangeRowFieldStable,\n\t\t\tgetSelectedData: getSelectedDataStable\n\t\t}),\n\t\t[validationErrors, validationSchema, onChangeRowFieldStable, getSelectedDataStable]\n\t);\n\n\t/* ------------------------------------------------------------- render */\n\n\treturn (\n\t\t<InlineEditContext.Provider value={inlineEditContextValue}>\n\t\t\t<TableWrapper\n\t\t\t\tclassName='MRT-TableWrapper custom-table'\n\t\t\t\tdisableMaxHeight={disableMaxHeight}\n\t\t\t\tpinnedColumnBgColor={pinnedColumnBgColor}>\n\t\t\t\t<MaterialReactTable table={table} />\n\n\t\t\t\t<Menu\n\t\t\t\t\tanchorEl={menuAnchorEl}\n\t\t\t\t\topen={Boolean(menuAnchorEl)}\n\t\t\t\t\tonClose={handleHeaderClose}\n\t\t\t\t\tclassName='add-role-drp'>\n\t\t\t\t\t{showAddColumnPanel ? (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={() => setShowAddColumnPanel(false)}\n\t\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div className='searchbar-box-list'>\n\t\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\t\tplaceholder={t('common.search', { defaultValue: 'Search' })}\n\t\t\t\t\t\t\t\t\thandleSearch={(value: any) =>\n\t\t\t\t\t\t\t\t\t\tsetColumnSearch(\n\t\t\t\t\t\t\t\t\t\t\ttypeof value === 'string' ? value : (value?.target?.value ?? '')\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className='all-attribute-title'>\n\t\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\n\t\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{filteredHiddenColumns.map((column) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tkey={String(column.accessorKey ?? column.id)}\n\t\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\n\t\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\n\t\t\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{enableAddCustomField && (\n\t\t\t\t\t\t\t\t<MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\n\t\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{visibleColumns.map((column) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tkey={String(column.accessorKey ?? column.id)}\n\t\t\t\t\t\t\t\t\tonClick={() => handleHideColumn(column)}\n\t\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Drag Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{!disableAddColumn && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => setShowAddColumnPanel(true)}\n\t\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\tvariant='body2'\n\t\t\t\t\t\t\t\t\t\tcolor='text.secondary'\n\t\t\t\t\t\t\t\t\t\tclassName='eye-icon'>\n\t\t\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</Menu>\n\n\t\t\t\t<Menu\n\t\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t\t{rowActionMenu?.map((option: any, index: number) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tkey={option.key ?? `row-action-${index}`}\n\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\tawait option.handleAction(activeMenuRow);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t? option.disabled(activeMenuRow)\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}>\n\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{typeof option.label === 'function'\n\t\t\t\t\t\t\t\t\t? option.label(activeMenuRow)\n\t\t\t\t\t\t\t\t\t: option.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\n\t\t\t\t\t{Boolean(destructiveActionMenu?.length) && [\n\t\t\t\t\t\t<Divider\n\t\t\t\t\t\t\tkey='destructive-divider'\n\t\t\t\t\t\t\tflexItem\n\t\t\t\t\t\t\tsx={{ mt: '0.25rem !important', mb: '0.25rem !important' }}\n\t\t\t\t\t\t/>,\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey='destructive-actions'\n\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveHeader'>\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any, index: number) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tkey={option.key ?? `destructive-action-${index}`}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(activeMenuRow);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(activeMenuRow)\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.label(activeMenuRow)\n\t\t\t\t\t\t\t\t\t\t\t: option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t]}\n\t\t\t\t</Menu>\n\n\t\t\t\t<ConfirmPopUp\n\t\t\t\t\topen={Boolean(rowToDelete)}\n\t\t\t\t\tonClose={() => setRowToDelete(null)}\n\t\t\t\t\tonConfirm={handleRowDelete}\n\t\t\t\t\ttitle={deleteConfirmTitle ?? t('common.deleteItem', { defaultValue: 'Delete Item' })}\n\t\t\t\t\tdescription={\n\t\t\t\t\t\tdeleteConfirmDescription ??\n\t\t\t\t\t\tt('common.deleteConfirm', {\n\t\t\t\t\t\t\tdefaultValue: 'Are you sure you want to delete entry ?'\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tloading={isDeletingRow}\n\t\t\t\t/>\n\t\t\t</TableWrapper>\n\t\t</InlineEditContext.Provider>\n\t);\n};\n\nexport const MaterialTable = memo(MaterialTableBase);\nMaterialTable.displayName = 'MaterialTable';\n\nexport default MaterialTable;\n","import { Box, DialogActions, DialogContent, DialogTitle, Divider, Grid, IconButton } from \"@mui/material\";\nimport Modal from '../modal/modal';\nimport Typography from \"../typography/typography\";\nimport DynamicInput from '../form-control/form-builder/form-builder-element/text';\nimport DynamicRadioButton from '../form-control/form-builder/form-builder-element/radio-button';\nimport { useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { generateValidationSchema, generateValidationSchema1 } from \"./validator\";\nimport DynamicSearchSelect from \"../form-control/form-builder/form-builder-element/dynamic-select\";\nimport DynamicPhone from '@/components/form-control/form-builder/form-builder-element/phone';\nimport Accordion from \"../accordion/accordion\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport _ from \"lodash\";\nimport './parties-modal.scss';\nimport { useAccountingSetting } from \"../../hooks/useAccountSetting\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { checkUniqueFields } from '../../utils/common';\nimport { getApiConfigSafe } from '../../utils/api-config';\nimport {\n addressColumns,\n addressOmitKeys,\n addressPayload,\n contactColumns,\n contactOmitKeys,\n contactPayload,\n ksaAddressPayload,\n PARTIES_FIELDS,\n PARTIES_FORM_ARRAY_NAME,\n partyType,\n processPartiesPayload\n} from \"./utils/constant\";\nimport MaterialTable from \"../material-table/material-table\";\nimport parsePhoneNumberFromString from \"libphonenumber-js\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport { transformTableColumns } from \"../../utils/common-utility\";\nimport { createParties } from \"../../redux/actionCreator\";\nimport { useDispatch } from \"react-redux\";\nimport { enqueueSnackbar } from 'notistack';\nimport { getErrorMessage } from \"../../utils/common\";\nimport ModalLoader from \"../loaders/modal-loader\";\nimport Button from \"../button/button\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface CustomerVendorModalProps {\n isOpen: boolean;\n handleModalClose?: () => void;\n modalProps?: any;\n type?: string;\n partyCreated?: () => void;\n isLoading?: boolean;\n onSave?: (payload: any) => Promise<void>;\n setIsOpen?: (value: boolean) => void;\n}\n\ninterface LocationState {\n state: any;\n country: any;\n}\n\nconst defaultLocationState: LocationState = { state: '', country: '' };\n\nexport default function CustomerVendorModal({\n isOpen,\n handleModalClose,\n modalProps,\n type,\n partyCreated,\n isLoading,\n onSave,\n setIsOpen\n}: CustomerVendorModalProps) {\n\n //Hooks\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { user } = useAuth();\n const isKSA = getApiConfigSafe()?.countryEnv === 'ksa';\n\n //Refs\n const locationRef = useRef<LocationState>(defaultLocationState);\n const isAddressInitialized = useRef(false);\n\n useEffect(() => {\n if (!isOpen) {\n isAddressInitialized.current = false;\n locationRef.current = { state: '', country: '' };\n }\n }, [isOpen]);\n\n //Local states\n const [addressRows, setAddressRows] = useState<any[]>([]);\n const [contactRows, setContactRows] = useState<any[]>([]);\n const [isCreating, setIsCreating] = useState(false);\n const [selectedCompanyData, setSelectedCompanyData] = useState<any[]>([]);\n const lastCheckedValues = useRef<Record<string, any>>({})\n\n //Form\n const {\n control,\n formState: { errors },\n trigger,\n getValues,\n handleSubmit,\n setValue,\n resetField,\n reset,\n watch,\n getFieldState,\n setError\n\n } = useForm({\n defaultValues: {\n status: true,\n parties: {\n account_type: 'Company',\n },\n },\n mode: 'all',\n resolver: generateValidationSchema1()\n });\n\n const fieldToUpdate = {\n [PARTIES_FIELDS.RECEIVABLE_ACCOUNT]: 'receivable_account',\n [PARTIES_FIELDS.TAX_TEMPLATE]: type?.toLowerCase() === 'vendor' ? 'purchase_tax' : 'sales_tax',\n };\n\n useAccountingSetting({\n fieldToUpdate,\n companyField: PARTIES_FIELDS.COMPANY,\n fieldArrayName: PARTIES_FORM_ARRAY_NAME,\n formMethods: { control, setValue, watch, getFieldState },\n ...({ isUpdateAccount: true } as any),\n });\n\n\n const selectedType = useWatch({\n control,\n name: 'parties.account_type',\n });\n\n const responsiblePerson = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n });\n\n const mainContactNo = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n });\n\n const mainEmailIds = useWatch({\n control,\n name: `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n });\n\n const checkUniqueness = useCallback(async () => {\n const values = getValues()\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME]\n const fieldsToCheck = ['crn', 'email_ids', 'company_name']\n const allFields = ['crn', 'email_ids', 'contact_no', 'company_name']\n\n const nothingChanged = fieldsToCheck.every(\n (field) => lastCheckedValues.current[field] === formValues?.[field]\n )\n if (nothingChanged) return true\n\n const payload = {}\n allFields.forEach((field) => (payload[field] = formValues?.[field]))\n\n const response = await checkUniqueFields(payload)\n let isUnique = true\n\n for (const [field, exists] of Object.entries(response)) {\n if (exists) {\n setError(`${PARTIES_FORM_ARRAY_NAME}.${field}`, {\n type: 'manual',\n message: `${field.replace(/_/g, ' ').toLowerCase()} already exists`,\n })\n isUnique = false\n }\n }\n\n lastCheckedValues.current = { ...formValues }\n\n return isUnique\n }, [getValues, setError])\n\n const handleFieldBlur = useCallback(\n async (fieldName: string) => {\n const uniquenessFields = ['crn', 'email_ids', 'company_name']\n if (!uniquenessFields.includes(fieldName)) return\n await checkUniqueness()\n },\n [checkUniqueness]\n )\n\n //Call Back functions\n const tableColumns = useCallback(\n (columns: any, tableRows: any) => {\n const phoneNumberCache = new Map();\n\n return transformTableColumns({\n columns,\n currencySymbol: undefined,\n translationFn: t,\n enableFooter: false,\n redirectionLink: undefined,\n redirectionLinkState: undefined,\n rows: tableRows,\n statusClasses: undefined,\n customizeValue: (row, columnAccessorKey, value) => {\n switch (columnAccessorKey) {\n case 'default_shipping_address':\n case 'default_billing_address': {\n return (\n <Box sx={{ display: \"flex\", gap: 1 }}>\n <Checkbox\n checked={Boolean(value)}\n sx={{ pointerEvents: 'none' }}\n />\n </Box>\n );\n }\n\n case 'phone':\n case 'contact_no': {\n if (!value) return '';\n const phoneKey = `phone-${value}`;\n if (!phoneNumberCache.has(phoneKey)) {\n const parsed = parsePhoneNumberFromString(`+${value}`);\n phoneNumberCache.set(phoneKey, parsed?.nationalNumber || '');\n }\n return phoneNumberCache.get(phoneKey);\n }\n\n case 'country_code': {\n const phone = row?.original?.phone || row?.original?.contact_no;\n if (!phone) return '';\n const countryCodeKey = `country-${phone}`;\n if (!phoneNumberCache.has(countryCodeKey)) {\n const parsed = parsePhoneNumberFromString(`+${phone}`);\n phoneNumberCache.set(countryCodeKey,\n parsed?.countryCallingCode ? `+${parsed.countryCallingCode}` : ''\n );\n }\n return phoneNumberCache.get(countryCodeKey);\n }\n\n default:\n return value;\n }\n }\n });\n },\n [t]\n );\n\n //Methods\n\n const handleRowOperation = async (\n eData: any,\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n isAddress: boolean\n ) => {\n try {\n const { values, row } = eData;\n const editRow = row.index >= 0;\n const payload = isAddress ? (isKSA ? ksaAddressPayload : addressPayload) : contactPayload;\n\n const processedValues: any = {};\n for (const key in payload) {\n if (_.has(values, key)) {\n processedValues[key] = values?.[key] ? values[key] : null;\n }\n }\n\n if (isAddress) {\n const dropdowns = {\n c: locationRef.current?.country,\n s: locationRef.current?.state,\n };\n\n const validatedValues = await validateAddressDefaults(processedValues, state, row.index);\n const addressValues = {\n ...validatedValues,\n ...(dropdowns.c?.id ? {\n country_name: dropdowns.c.name,\n country: dropdowns.c.id,\n country_data: dropdowns.c,\n country_id: dropdowns.c.id,\n } : {}),\n ...(dropdowns.s?.id ? {\n state_name: dropdowns.s.name,\n state: dropdowns.s.id,\n state_data: dropdowns.s,\n state_id: dropdowns.s.id,\n } : {}),\n };\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...addressValues } : ar));\n }\n return setState([...state, addressValues]);\n }\n\n if (editRow) {\n return setState(state.map((ar, i) => i === row.index ? { ...ar, ...processedValues } : ar));\n }\n return setState([...state, processedValues]);\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n const validateAddressDefaults = async (values: any, state: any[], index: number) => {\n let updatedValues = { ...values };\n const validate = (type: \"shipping\" | \"billing\") => {\n const u_data = [...state];\n const field = type === 'shipping' ? 'default_shipping_address' : 'default_billing_address';\n if (index >= 0) {\n u_data.splice(index, 1);\n }\n const hasDefault = u_data.some((d: any) => d?.[field]);\n\n if (hasDefault && values?.[field]) {\n throw new Error(\n `Another address is already marked as the default ${type} address. Please uncheck that before selecting this one`\n );\n }\n else if (!hasDefault) {\n updatedValues = {\n ...updatedValues,\n [field]: values?.[field] || state?.length == 0 ? 1 : 0,\n };\n }\n\n };\n\n await validate(\"shipping\");\n await validate(\"billing\");\n\n return updatedValues;\n };\n\n const deleteRow = async (\n state: any[],\n setState: React.Dispatch<React.SetStateAction<any[]>>,\n row: any\n ) => {\n const rowIndex = row.index;\n const updatedData = state.filter((_, i) => i !== rowIndex);\n setState(updatedData);\n return Promise.resolve();\n };\n\n const onChangeAddressTableField = async (e: any, t: any, r: any, col: any, selectedData: any) => {\n const fieldName = e?.target?.name;\n let updatedValues: any = null;\n\n if (col?.editProperties?.field_name) {\n locationRef.current = {\n ...locationRef.current,\n [col.editProperties.field_name]: selectedData,\n };\n }\n\n if (fieldName === 'country') {\n updatedValues = {\n ...r._valuesCache,\n country: selectedData?.id,\n country_id: selectedData?.id,\n state: null,\n state_id: null,\n state_name: null,\n };\n locationRef.current = {\n ...locationRef.current,\n state: null,\n };\n } else if (fieldName === 'state') {\n updatedValues = {\n ...r._valuesCache,\n state: selectedData?.id,\n state_id: selectedData?.id\n };\n } else if (fieldName === 'phone') {\n const p = parsePhoneNumberFromString(`+${e}`);\n updatedValues = {\n ...r._valuesCache,\n country_code: p?.countryCallingCode ? `+${p.countryCallingCode}` : '',\n };\n }\n\n const summaryFields = [\n 'contact_name',\n 'street_1',\n 'street_2',\n 'street_3',\n 'street_name',\n 'building_no',\n 'additional_no',\n 'national_address',\n 'zip_code',\n 'city',\n 'district_name',\n 'state',\n 'country'\n ];\n\n if (r._valuesCache) {\n const fieldValues = summaryFields.map(field => {\n if (field === 'country') {\n return locationRef.current?.country?.name || '';\n } else if (field === 'state') {\n return locationRef.current?.state?.name || '';\n } else if (field === fieldName) {\n return e.target?.value || '';\n }\n return r._valuesCache?.[field] || '';\n });\n\n const summary = fieldValues.reduce((acc, val, idx) => {\n if (!val) return acc;\n if (!acc) return val;\n\n val = val?.name || val;\n acc = acc?.name || acc;\n\n return [2, 3, 4, 5, 6, 7].includes(idx) ? `${acc} ${val}` : `${acc}, \\n${val}`;\n }, '');\n\n r._valuesCache.summary = summary;\n }\n\n if (updatedValues) {\n r.getAllCells().forEach((c: any) => {\n if (_.has(updatedValues, c.column.id)) {\n r._valuesCache[c.column.id] = updatedValues[c.column.id];\n }\n });\n }\n\n if (fieldName === 'country' && selectedData?.id) {\n r._valuesCache['country_id'] = selectedData.id;\n }\n\n return r._valuesCache;\n };\n\n\n\n const EMAIL_REGEX =\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst onSubmit = async () => {\n const isValid = await trigger();\n if (!isValid) return;\n\n const isUnique = await checkUniqueness()\n if (!isUnique) return\n\n const values = getValues();\n const formValues = values?.[PARTIES_FORM_ARRAY_NAME];\n let emailArray: string[] = [];\n\n if (formValues?.email_ids) {\n emailArray = formValues?.email_ids\n ?.split(/\\s*,\\s*/)\n .map((email_id: any) => email_id?.replaceAll(',', '')?.trim())\n .filter((email_id: any) => email_id.match(EMAIL_REGEX));\n }\n\n const payload = {\n party: {\n ...processPartiesPayload(formValues),\n email_ids: emailArray,\n account_type: selectedType,\n status: 1,\n type,\n company_id: formValues?.[PARTIES_FIELDS.COMPANY] || null\n }\n };\n if (typeof onSave == 'function') {\n onSave?.(payload);\n return;\n }\n setIsCreating(true);\n try {\n\n const res = await dispatch(createParties(payload));\n\n if (res?.meta?.requestStatus === 'fulfilled') {\n enqueueSnackbar(`${type} ${t('common.party.msg.success')}`);\n closeModal();\n partyCreated();\n } else if (res?.meta?.requestStatus === 'rejected') {\n const errorMessage = getErrorMessage(res?.error?.message);\n enqueueSnackbar(errorMessage, { variant: 'error' });\n }\n } finally {\n setIsCreating(false);\n }\n };\n\n const closeModal = () => {\n resetForm()\n setAddressRows([]);\n setContactRows([]);\n locationRef.current = { state: '', country: '' };\n isAddressInitialized.current = false;\n handleModalClose?.();\n setIsOpen?.(false);\n }\n const resetForm = () => {\n reset();\n }\n\n //Use Effect\n useEffect(() => {\n const addressData = addressRows.map(a => _.omit(a, addressOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.ADDRESS}`, addressData);\n }, [addressRows, setValue]);\n\n useEffect(() => {\n const contactData = contactRows.map(c => _.omit(c, contactOmitKeys));\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACTS}`, contactData);\n }, [contactRows, setValue]);\n\n useEffect(() => {\n setIsCreating(isLoading)\n }, [isLoading]);\n\n\n useEffect(() => {\n if (selectedType === 'Individual') {\n // Clear Company fields\n resetField('parties.company_name');\n resetField('parties.vat_number');\n resetField('parties.crn');\n }\n\n if (selectedType === 'Company') {\n // Clear Individual fields\n resetField('parties.first_name');\n resetField('parties.last_name');\n }\n }, [selectedType, resetField]);\n\n// Pre-fill company and currency from user data when modal opens\nuseEffect(() => {\n\t\tif (isOpen && user?.company_data) {\n\t\t\tconst companyId =\n\t\t\t\tuser?.entity_priority ||\n\t\t\t\tuser?.company_data?.id ||\n\t\t\t\t(Array.isArray(user?.company_data) && user?.company_data[0]?.id) ||\n\t\t\t\tnull;\n\n\n\t\t\tif (companyId) {\n\t\t\t\tsetValue('quotation.company_id', companyId);\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.COMPANY}`, companyId);\n\t\t\t}\n\t\t}\n }, [isOpen, user?.company_data, setValue]);\n\n useEffect(() => {\n if (isOpen && user?.company_currencies) {\n const currencies = Object.values(user.company_currencies);\n if (currencies.length > 0) {\n setValue(`${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CURRENCY}`, [currencies[0].id]);\n }\n }\n }, [isOpen, user?.company_currencies , setValue]);\n\n // Auto fill first contact row\n useEffect(() => {\n const firstContactRow = contactRows[0];\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n const firstEmail = mainEmailIds\n ? mainEmailIds.split(/\\s*,\\s*/).map((e: string) => e.trim()).filter((e: string) => EMAIL_REGEX.test(e))[0] || ''\n : '';\n\n const updatedFirstRow = {\n name: responsiblePerson || '',\n contact_no: mainContactNo || '',\n email: firstEmail,\n country_code: parsedCountryCode,\n };\n\n if (firstContactRow) {\n const hasChanged = Object.keys(updatedFirstRow).some(\n (key) => firstContactRow[key] !== updatedFirstRow[key]\n );\n if (hasChanged) {\n const updatedRows = [...contactRows];\n updatedRows[0] = { ...updatedRows[0], ...updatedFirstRow };\n setContactRows(updatedRows);\n }\n } else {\n setContactRows([updatedFirstRow, ...contactRows]);\n }\n }, [responsiblePerson, mainContactNo, mainEmailIds]);\n\n // Auto fill first Address Row\n useEffect(() => {\n const firstRow = addressRows[0];\n const hasAddressDetails = firstRow?.street_1 || firstRow?.city;\n\n if (responsiblePerson && mainContactNo) {\n const parsedCountryCode = mainContactNo\n ? `+${parsePhoneNumberFromString(`+${mainContactNo}`)?.countryCallingCode || ''}`\n : '';\n\n // Create first row if doesn't exist yet\n if (!firstRow) {\n if (!isAddressInitialized.current) {\n setAddressRows([{\n ...(isKSA ? ksaAddressPayload : addressPayload),\n contact_name: responsiblePerson,\n phone: mainContactNo,\n country_code: parsedCountryCode,\n country: user?.country_data?.id || null,\n country_name: user?.country_data?.name || null,\n country_id: user?.country_data?.id || null,\n country_data: user?.country_data || null,\n }]);\n if (!locationRef.current?.country && user?.country_data) {\n locationRef.current = {\n ...locationRef.current,\n country: user.country_data,\n };\n }\n isAddressInitialized.current = true;\n }\n return;\n }\n\n // Update first row ONLY if address details are not yet filled\n if (!hasAddressDetails) {\n const contactChanged = firstRow?.contact_name !== responsiblePerson;\n const phoneChanged = firstRow?.phone !== mainContactNo;\n\n if (contactChanged || phoneChanged) {\n setAddressRows(prev => prev.map((row, idx) =>\n idx === 0\n ? { ...row, contact_name: responsiblePerson, phone: mainContactNo, country_code: parsedCountryCode }\n : row\n ));\n }\n }\n }\n }, [responsiblePerson, mainContactNo, user, addressRows]);\n\n // Auto-populate address row with country on modal open\n useEffect(() => {\n if (isOpen && user?.country_data && addressRows.length === 0 && !isAddressInitialized.current) {\n setAddressRows([{\n ...(isKSA ? ksaAddressPayload : addressPayload),\n country: user.country_data.id,\n country_name: user.country_data.name,\n country_id: user.country_data.id,\n country_data: user.country_data,\n default_shipping_address: true,\n default_billing_address: true,\n }]);\n if (!locationRef.current?.country) {\n locationRef.current = {\n ...locationRef.current,\n country: user.country_data,\n };\n }\n isAddressInitialized.current = true;\n }\n }, [isOpen, user, addressRows.length]);\n\n const basicDetailsSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.basic_details\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n\n <Grid item xs={12} sm={12}>\n <DynamicRadioButton\n label=''\n name={PARTIES_FIELDS.TYPE}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n options={partyType}\n display='row'\n title={t(t('common.party.fields.type'))}\n titlePosition='start'\n position={2} />\n </Grid>\n\n {selectedType === \"Individual\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.firstName_label')}\n name={PARTIES_FIELDS.FIRST_NAME}\n placeholder={t('common.party.fields.firstName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.lastName_label')}\n name={PARTIES_FIELDS.LAST_NAME}\n placeholder={t('common.party.fields.lastName_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n </>\n )}\n\n\n {selectedType === \"Company\" && (\n <>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.company_name_label')}\n name={PARTIES_FIELDS.COMPANY_NAME}\n placeholder={t('common.party.fields.company_name_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.COMPANY_NAME)}\n />\n </Grid>\n\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.vat_number_label')}\n name={PARTIES_FIELDS.VAT_NUMBER}\n placeholder={t('common.party.fields.vat_number_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={15}\n onlyNumbers\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.crn_label')}\n name={PARTIES_FIELDS.CRN}\n placeholder={t('common.party.fields.crn_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n type=\"number\"\n max={10}\n onlyNumbers\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.CRN)}\n />\n </Grid>\n </>\n )}\n\n <Grid item xs={12} sm={6}>\n <DynamicPhone\n type=\"text\"\n label={t('common.party.fields.contact_label')}\n name={PARTIES_FIELDS.CONTACT_NO}\n placeholder={t('common.party.fields.contact_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.email_label')}\n name={PARTIES_FIELDS.EMAIL_IDS}\n placeholder={t('common.party.fields.email_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n onBlur={() => handleFieldBlur(PARTIES_FIELDS.EMAIL_IDS)}\n />\n </Grid>\n\n {/*Entity Name */}\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.company_label')}\n apiType=\"company\"\n selectedLabel='Companies'\n name={PARTIES_FIELDS.COMPANY}\n placeholder={t('common.party.fields.company_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.currency_label')}\n apiType='currency'\n selectedLabel='Currency'\n name={PARTIES_FIELDS.CURRENCY}\n placeholder={t('common.party.fields.currency_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n is_multiselect\n />\n </Grid>\n\n <Grid item xs={12} sm={6}>\n <DynamicInput\n label={t('common.party.fields.responsible_person_label')}\n name={PARTIES_FIELDS.RESPONSIBLE_PERSON}\n placeholder={t('common.party.fields.responsible_person_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n />\n </Grid>\n\n\n </Grid>\n </Accordion>\n ), [t, control, selectedType]);\n\n const accountingSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.accounting\")}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.receivable_account_label')}\n apiType=\"accounts\"\n selectedLabel='Account'\n name={PARTIES_FIELDS.RECEIVABLE_ACCOUNT}\n placeholder={t('common.party.fields.receivable_account_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n customeFilter={{ '&account_type.eq': 'Receivable' }}\n options={[]}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t('common.party.fields.tax_template_label')}\n apiType=\"taxTemplate\"\n selectedLabel='Tax Template'\n name={PARTIES_FIELDS.TAX_TEMPLATE}\n placeholder={t('common.party.fields.tax_template_placeholder')}\n fieldArrayName={PARTIES_FORM_ARRAY_NAME}\n formControl={control}\n required\n options={[]}\n />\n </Grid>\n </Grid>\n </Accordion>\n ), [t, control]);\n\n const memoizedAddressColumns = useMemo(() => tableColumns(addressColumns(isKSA)), [tableColumns, isKSA]);\n const memoizedContactColumns = useMemo(() => tableColumns(contactColumns), [tableColumns]);\n\n const addressSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.address\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.ADDRESS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n <MaterialTable\n rows={addressRows}\n columns={memoizedAddressColumns}\n paginationModel={{ pageNo: 1, limit: 20 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onEditRow={(data) => handleRowOperation(data, addressRows, setAddressRows, true)}\n onDeleteRow={(row) => deleteRow(addressRows, setAddressRows, row)}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, addressRows, tableColumns, errors]);\n\n const contactSection = useMemo(() => (\n <Accordion\n title={\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {t(\"common.party.sections.contact\")}\n <span className='errorIndicator'>*</span>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS] && (\n <span className='error'>\n {errors?.[PARTIES_FORM_ARRAY_NAME]?.[PARTIES_FIELDS.CONTACTS]?.message}\n </span>\n )}\n </Typography>\n }\n accordionProps={{\n defaultExpanded: true,\n className: \"form--Accordion\",\n }}\n >\n <Grid spacing={4}>\n <Grid item xs={12}>\n\n <MaterialTable\n rows={contactRows}\n columns={memoizedContactColumns}\n paginationModel={{ pageNo: 1, limit: 20 }}\n totalPages={20}\n enableColumnDragging={false}\n isResetRow={false}\n columnOrder={['mrt-row-select']}\n enableRowSelection={false}\n enableBottomToolbar\n disableDefaultActionColumn\n editDisplayMode='row'\n enableRowCreate\n onCreateRow={(data) => handleRowOperation(data, contactRows, setContactRows, false)}\n onEditRow={(data) => {\n handleRowOperation(data, contactRows, setContactRows, false);\n\n if (data.row.index === 0) {\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.RESPONSIBLE_PERSON}`,\n data.values.name || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.CONTACT_NO}`,\n data.values.contact_no || ''\n );\n setValue(\n `${PARTIES_FORM_ARRAY_NAME}.${PARTIES_FIELDS.EMAIL_IDS}`,\n data.values.email || ''\n );\n }\n }}\n onDeleteRow={(row) => {\n if (row.index === 0) {\n enqueueSnackbar(t('common.party.errors.cannotDeleteResponsiblePerson'), { variant: 'error' });\n return Promise.resolve();\n }\n return deleteRow(contactRows, setContactRows, row);\n }}\n onChangeRowField={onChangeAddressTableField}\n />\n </Grid>\n </Grid>\n </Accordion>\n // eslint-disable-next-line\n ), [t, contactRows, tableColumns, errors]);\n\n return (\n <Modal\n open={isOpen}\n onClose={closeModal}\n maxWidth='lg'\n fullWidth\n sx={{ overflowY: 'hidden' }}\n {...modalProps}\n >\n {isCreating && <ModalLoader />}\n <form onSubmit={handleSubmit(onSubmit)} className=\"scroll-container\" style={{ position: 'relative', overflow: 'auto' }}>\n <DialogTitle className='itemEntryModal--DialogTitle'\n >\n <Typography type='s3' color='inherit' weight='medium'>\n {`Add ${type}`}\n </Typography>\n <IconButton onClick={closeModal}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n {basicDetailsSection}\n <Divider className='form--SectionDivider' />\n {addressSection}\n <Divider className='form--SectionDivider' />\n {contactSection}\n <Divider className='form--SectionDivider' />\n {accountingSection}\n </DialogContent>\n\n <DialogActions className='itemEntryModal--DialogAction' sx={{\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'white',\n zIndex: 1,\n padding: '8px 24px',\n justifyContent: 'end'\n }}>\n <Box display='flex' gap={1.5}>\n <Button\n className='itemEntryModal--DialogAction--WhiteBtn'\n onClick={closeModal}\n >\n {t('common.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleSubmit(onSubmit)}\n >\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n team: {\n name: string;\n department_id: string | null;\n team_lead_id: string | null;\n member_ids: string[] | null;\n description: string;\n };\n}\n\ninterface ITeamAddModalProps extends IModalComponentProps {\n initialValues?: {\n department_id?: string | number | null;\n };\n}\n\nconst teamValidationSchema = Yup.object().shape({\n team: Yup.object().shape({\n name: Yup.string().required('Team Name is required'),\n department_id: Yup.string().nullable(),\n team_lead_id: Yup.string().nullable().required('Team Lead is required'),\n member_ids: Yup.array().nullable(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: ITeamAddModalProps['initialValues']) => ({\n team: {\n name: '',\n department_id: initialValues?.department_id ?? null,\n team_lead_id: null,\n member_ids: null,\n description: '',\n }\n});\n\nexport const TeamAddModal: React.FC<ITeamAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, watch } = useForm<IFormValues>({\n mode: 'all',\n resolver: yupResolver(teamValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const selectedDepartmentId = watch('team.department_id');\n const selectedTeamLeadId = watch('team.team_lead_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n await onSave(values);\n handleModalClose();\n };\n\n const leadFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0\n }), [selectedDepartmentId]);\n\n const membersFilter = useMemo(() => ({\n '&department_id.eq': selectedDepartmentId || 0,\n ...(selectedTeamLeadId ? { '&id.ne': selectedTeamLeadId } : {})\n }), [selectedDepartmentId, selectedTeamLeadId]);\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.teamModal.title', 'Add Team')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Team Name - Required */}\n <Grid item sm={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.name_label', 'Team Name')}\n name='name'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.name_placeholder', 'Enter Team Name')}\n required\n />\n </Grid>\n\n {/* Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.teamModal.department_placeholder', 'Select Department')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n />\n </Grid>\n\n {/* Team Lead - Required */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.team_lead_label', 'Team Lead')}\n name='team_lead_id'\n placeholder={t('hrms.organization_structure.teamModal.team_lead_placeholder', 'Select Team Lead')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required\n options={[]}\n customeFilter={leadFilter}\n />\n </Grid>\n\n {/* Members - Optional, multi-select */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.teamModal.members_label', 'Members')}\n name='member_ids'\n placeholder={t('hrms.organization_structure.teamModal.members_placeholder', 'Select Members')}\n fieldArrayName='team'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n is_multiselect\n customeFilter={membersFilter}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.teamModal.description_label', 'Description')}\n name='description'\n fieldArrayName='team'\n placeholder={t('hrms.organization_structure.teamModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t('common.cancel')}\n </Button>\n <Button type='submit'>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n department: {\n company_id: string | null;\n department_code: string;\n name: string;\n parent_department_id: string | null;\n department_head_id: string | null;\n cost_code: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDepartmentAddModalProps extends IModalComponentProps {\n initialValues?: {\n parent_department_id?: string | number | null;\n company_id?: string | number | null;\n };\n}\n\nconst departmentValidationSchema = Yup.object().shape({\n department: Yup.object().shape({\n company_id: Yup.string().nullable().required('Company is required'),\n department_code: Yup.string().required('Department Code is required'),\n name: Yup.string().required('Department Name is required'),\n parent_department_id: Yup.string().nullable(),\n department_head_id: Yup.string().nullable(),\n cost_code: Yup.string(),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDepartmentAddModalProps['initialValues']) => ({\n department: {\n company_id: initialValues?.company_id ?? null,\n department_code: '',\n name: '',\n parent_department_id: initialValues?.parent_department_id ?? null,\n department_head_id: null,\n cost_code: '',\n status: true,\n description: '',\n }\n});\n\nexport const DepartmentAddModal: React.FC<IDepartmentAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(departmentValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('department.company_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.departmentModal.title', 'Add Department')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.departmentModal.company_placeholder', 'Select Company')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department Code - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.code_label', 'Department Code')}\n name='department_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.code_placeholder', 'Enter Department Code')}\n required\n />\n </Grid>\n\n {/* Department Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.name_label', 'Department Name')}\n name='name'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.name_placeholder', 'Enter Department Name')}\n required\n />\n </Grid>\n\n {/* Parent Department - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.parent_department_label', 'Parent Department')}\n name='parent_department_id'\n placeholder={t('hrms.organization_structure.departmentModal.parent_department_placeholder', 'Select Parent Department')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='department'\n required={false}\n options={[]}\n customeFilter={{\n '&is_parent.eq': true,\n '&company_id.eq': rootCompanyId || 0\n }}\n />\n </Grid>\n\n {/* Department Head - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.departmentModal.department_head_label', 'Department Head')}\n name='department_head_id'\n placeholder={t('hrms.organization_structure.departmentModal.department_head_placeholder', 'Select Department Head')}\n fieldArrayName='department'\n formControl={control as any}\n apiType='employees'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Cost Code - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.cost_code_label', 'Cost Code')}\n name='cost_code'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.cost_code_placeholder', 'Enter Cost Code')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='department'\n label={t('hrms.organization_structure.departmentModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.departmentModal.description_label', 'Description')}\n name='description'\n fieldArrayName='department'\n placeholder={t('hrms.organization_structure.departmentModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\n\nimport Modal from '../../../../modal/modal';\nimport Typography from '../../../../typography/typography';\nimport DynamicInput from '../text';\nimport Button from '../../../../button/button';\nimport ModalLoader from '../../../../loaders/modal-loader';\nimport Toast from '../../../../toast/toast';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogProps,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { useForm } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport './location-add-modal.scss';\nimport DynamicSearchSelect from '../dynamic-select';\ninterface BrandAddModalProps {\n isOpen: boolean;\n setIsOpen: () => void;\n modalProps?: DialogProps;\n onSave: (data: string) => void;\n isLoading?: boolean;\n}\n\ninterface IFormValues {\n location_data: {\n name: string;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst validationSchema = Yup.object().shape({\n location_data: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n short_name: Yup.string().required('Short name is required'),\n company_id: Yup.number().required('Company is required')\n })\n});\n\nconst LocationAddModal: React.FC<BrandAddModalProps> = ({\n isOpen,\n setIsOpen,\n modalProps,\n onSave,\n isLoading\n}) => {\n const { t } = useTranslation();\n const [toast, setToast] = useState<IToast | null>(null);\n const { control, handleSubmit, reset } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema)\n });\n const handleModalClose = () => {\n reset({ location_data: undefined });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n // handleModalClose();\n onSave(values?.location_data)\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}>\n <>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.item.locationModal.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_name_label\")}\n name='name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_name_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.item.locationModal.location_code_label\")}\n name='short_name'\n fieldArrayName='location_data'\n placeholder={t(\"inventory.item.locationModal.location_code_placeholder\")}\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\n \"accounting.authorize_commission.fields.company_label\"\n )}\n name=\"company_id\"\n placeholder={t(\n \"accounting.authorize_commission.fields.company_placeholder\"\n )}\n fieldArrayName='location_data'\n formControl={control}\n apiType='company'\n getSelectedData={(data: any) =>\n // setSelectedData(name, data)\n console.log(\"data\", data)\n }\n required={true}\n />\n </Grid>\n </Grid>\n\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}>\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\n </Box>\n </DialogActions>\n </form>\n </>\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </Modal>\n );\n};\n\nexport default LocationAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSearchSelect, DynamicToggleButton, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n designation: {\n company_id: number | null;\n designation_code: string;\n name: string;\n department_id: number | null;\n reports_to: string | null;\n level: string;\n status: boolean;\n description: string;\n };\n}\n\ninterface IDesignationAddModalProps extends IModalComponentProps {\n initialValues?: {\n company_id?: number | null;\n department_id?: number | null;\n parent_designation_id?: number | null;\n };\n}\n\nconst designationValidationSchema = Yup.object().shape({\n designation: Yup.object().shape({\n company_id: Yup.number().nullable().required('Company is required'),\n designation_code: Yup.string(),\n name: Yup.string().required('Designation Name is required'),\n department_id: Yup.number().nullable().required('Department is required'),\n reports_to: Yup.string().nullable(),\n level: Yup.number().nullable().typeError('Level must be a number'),\n status: Yup.boolean(),\n description: Yup.string(),\n })\n});\n\nconst getDefaultValues = (initialValues?: IDesignationAddModalProps['initialValues']) => ({\n designation: {\n company_id: initialValues?.company_id ?? null,\n designation_code: '',\n name: '',\n department_id: initialValues?.department_id ?? null,\n reports_to: initialValues?.parent_designation_id ?? null,\n level: null,\n status: true,\n description: '',\n }\n});\n\nexport const DesignationAddModal: React.FC<IDesignationAddModalProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n initialValues,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger, watch } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(designationValidationSchema),\n defaultValues: getDefaultValues(initialValues)\n });\n\n const rootCompanyId = watch('designation.company_id');\n const rootDepartmentId = watch('designation.department_id');\n\n useEffect(() => {\n if (isOpen) {\n reset(getDefaultValues(initialValues));\n }\n }, [isOpen]);\n\n const handleModalClose = () => {\n reset(getDefaultValues(initialValues));\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='sm'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='brandAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t('hrms.organization_structure.designationModal.title', 'Add Designation')}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='brandAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Company - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.company_label', 'Company')}\n name='company_id'\n placeholder={t('hrms.organization_structure.designationModal.company_placeholder', 'Select Company')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='company'\n required\n options={[]}\n />\n </Grid>\n\n {/* Department - Required */}\n <Grid item sm={12}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.department_label', 'Department')}\n name='department_id'\n placeholder={t('hrms.organization_structure.designationModal.department_placeholder', 'Select Department')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='department'\n required\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n // '&is_active.eq': 1\n }}\n />\n </Grid>\n\n {/* Designation Code */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.code_label', 'Designation Code')}\n name='designation_code'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.code_placeholder', 'Enter Designation Code')}\n />\n </Grid>\n\n {/* Designation Name - Required */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.name_label', 'Designation Name')}\n name='name'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.name_placeholder', 'Enter Designation Name')}\n required\n />\n </Grid>\n\n {/* Reports To (Parent Designation) - Optional */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t('hrms.organization_structure.designationModal.reports_to_label', 'Reports To')}\n name='reports_to'\n placeholder={t('hrms.organization_structure.designationModal.reports_to_placeholder', 'Select Reports To')}\n fieldArrayName='designation'\n formControl={control as any}\n apiType='designation'\n required={false}\n options={[]}\n customeFilter={{\n '&company_id.eq': rootCompanyId || 0,\n '&department_id.eq': rootDepartmentId || 0,\n }}\n />\n </Grid>\n\n {/* Level - Optional */}\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.level_label', 'Level')}\n name='level'\n fieldArrayName='designation'\n disabled\n placeholder={t('hrms.organization_structure.designationModal.level_placeholder', 'Enter Level')}\n />\n </Grid>\n\n {/* Status Toggle */}\n <Grid item sm={6}>\n <DynamicToggleButton\n formControl={control as any}\n name='status'\n fieldArrayName='designation'\n label={t('hrms.organization_structure.designationModal.status_label', 'Status')}\n title={t('common.active', 'Active')}\n titlePosition='end'\n position={3}\n />\n </Grid>\n\n {/* Description - Optional, full width */}\n <Grid item sm={12}>\n <DynamicInput\n type='textarea'\n formControl={control}\n label={t('hrms.organization_structure.designationModal.description_label', 'Description')}\n name='description'\n fieldArrayName='designation'\n placeholder={t('hrms.organization_structure.designationModal.description_placeholder', 'Enter Description')}\n is_multiline\n rows={3}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='brandAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='brandAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t('common.cancel')}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t('common.save')}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState, useEffect, useCallback } from 'react';\n\nimport Modal from '../../../../modal/modal';\nimport Typography from '../../../../typography/typography';\nimport DynamicInput from '../text';\nimport Button from '../../../../button/button';\nimport ModalLoader from '../../../../loaders/modal-loader';\nimport Toast from '../../../../toast/toast';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\n\nimport { FormProvider, useForm, useWatch } from 'react-hook-form';\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\n\nimport DynamicSearchSelect from '../dynamic-select';\nimport DynamicSelect from '../select';\nimport { IModalComponentProps } from '../../index';\nimport { fetchOptions, skuGenerator } from '../../../../../utils/common';\n\nimport './fixed-asset-item-add-modal.scss';\n\ninterface IFormValues {\n inventory_fixed_asset_item: {\n name: string;\n sku: string;\n category: number | null;\n base_unit: number | null;\n company: number[];\n unit_of_measurement: number | null;\n stock_unit: number | null;\n purchase_unit: number | null;\n sales_unit: number | null;\n costing_method: string;\n depreciation_method: string;\n computation_method: string;\n default_tax_id: number | null;\n income_account_id: number | null;\n asset_account_id: number | null;\n cogs_account_id: number | null;\n fixed_asset_account_id: number | null;\n depreciation_account_id: number | null;\n declining_factor: number | null;\n };\n}\n\ninterface IToast {\n type: 'normal' | 'alert';\n message: string;\n}\n\nconst COSTING_METHODS = [\n { label: 'FIFO', value: 'FIFO' },\n { label: 'LIFO', value: 'LIFO' },\n { label: 'Weighted Average Cost', value: 'Weighted Average Cost' }\n];\n\nconst DEPRECIATION_METHODS = [\n { label: 'Straight line', value: 'Straight line' },\n { label: 'Declining', value: 'Declining' }\n];\n\nconst COMPUTATION_METHODS = [\n { label: 'Constant periods', value: 'Constant periods' },\n { label: 'Based on days per period', value: 'Based on days per period' }\n];\n\nconst validationSchema = Yup.object().shape({\n inventory_fixed_asset_item: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n sku: Yup.string().required('SKU is required'),\n category: Yup.mixed().required('Category is required'),\n base_unit: Yup.mixed().required('Base Unit is required'),\n company: Yup.array().min(1, 'At least one company is required').required('Company is required'),\n unit_of_measurement: Yup.mixed().required('Unit of Measurement is required'),\n stock_unit: Yup.mixed().nullable(),\n purchase_unit: Yup.mixed().nullable(),\n sales_unit: Yup.mixed().nullable(),\n costing_method: Yup.string().required('Costing Method is required'),\n depreciation_method: Yup.string().required('Depreciation Method is required'),\n computation_method: Yup.string().required('Computation Method is required'),\n default_tax_id: Yup.mixed().required('Default Tax is required'),\n income_account_id: Yup.mixed().required('Income Account is required'),\n asset_account_id: Yup.mixed().required('Asset Account is required'),\n cogs_account_id: Yup.mixed().required('COGS Account is required'),\n fixed_asset_account_id: Yup.mixed().required('Fixed Asset Account is required'),\n depreciation_account_id: Yup.mixed().required('Depreciation Account is required'),\n declining_factor: Yup.number()\n .nullable()\n .when('depreciation_method', {\n is: 'Declining',\n then: (schema) => schema.required('Declining Factor is required').min(0, 'Must be positive'),\n otherwise: (schema) => schema.nullable(),\n }),\n })\n});\n\nconst FixedAssetItemAddModal: React.FC<IModalComponentProps> = ({\n isOpen,\n setIsOpen,\n modalProps,\n onSave,\n isLoading\n}) => {\n const { t } = useTranslation();\n const [toast, setToast] = useState<IToast | null>(null);\n const [selectedCategoryData, setSelectedCategoryData] = useState<any>(null);\n const unitFields = ['stock_unit', 'purchase_unit', 'sales_unit', 'consumption_unit', 'base_unit'];\n const defaultValues = {\n inventory_fixed_asset_item: {\n name: '',\n sku: '',\n category: null,\n base_unit: null,\n company: [],\n unit_of_measurement: null,\n stock_unit: null,\n purchase_unit: null,\n sales_unit: null,\n costing_method: '',\n depreciation_method: '',\n computation_method: '',\n default_tax_id: null,\n income_account_id: null,\n asset_account_id: null,\n cogs_account_id: null,\n fixed_asset_account_id: null,\n depreciation_account_id: null,\n declining_factor: null,\n status: 1\n }\n }\n\n const methods = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: defaultValues,\n });\n const { control, handleSubmit, reset, setValue, trigger } = methods || {};\n\n // Watch name and category for auto-generating SKU\n const [watchedName, watchedCategory, watchedUom, watchedDepreciationMethod] = useWatch({\n control, name:\n ['inventory_fixed_asset_item.name',\n 'inventory_fixed_asset_item.category',\n 'inventory_fixed_asset_item.unit_of_measurement',\n 'inventory_fixed_asset_item.depreciation_method']\n });\n\n\n // Auto-generate SKU when name or category changes\n useEffect(() => {\n if (watchedName && selectedCategoryData?.category_name) {\n const generatedSku = skuGenerator({\n name: watchedName,\n category: selectedCategoryData.category_name\n });\n setValue('inventory_fixed_asset_item.sku', generatedSku);\n }\n }, [watchedName, selectedCategoryData, setValue]);\n\n const handleModalClose = () => {\n reset(defaultValues);\n setSelectedCategoryData(null);\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave({\n ...values.inventory_fixed_asset_item as any,\n type: 'inventory-fixed-asset',\n status: 1\n });\n handleModalClose();\n };\n\n const handleCategorySelect = useCallback((data: any) => {\n setSelectedCategoryData(data);\n }, []);\n\n const updateUomFields = useCallback(async () => {\n if (!watchedUom) return\n const filter = {\n '&template_id.eq': watchedUom,\n '&is_base_unit.eq': 1\n }\n const uomData = await fetchOptions('uom', filter, [], false)\n unitFields.forEach((item) => {\n setValue(`inventory_fixed_asset_item.${item}`, uomData?.id)\n })\n }, [watchedUom])\n useEffect(() => {\n updateUomFields()\n }, [updateUomFields])\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}>\n <>\n <FormProvider {...methods}>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && (\n <ModalLoader />\n )}\n <DialogTitle className='fixedAssetItemAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"inventory.fixed_asset_items.modal.title\", \"Add Fixed Asset Item\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='fixedAssetItemAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n {/* Name */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.name_label\", \"Name\")}\n name='name'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.name_placeholder\", \"Enter Name\")}\n required\n />\n </Grid>\n\n {/* SKU - Auto-generated */}\n <Grid item sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.sku_label\", \"SKU\")}\n name='sku'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.sku_placeholder\", \"Auto-generated\")}\n required\n disabled\n />\n </Grid>\n\n {/* Category */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.category_label\", \"Category\")}\n name=\"category\"\n placeholder={t(\"inventory.fixed_asset_items.modal.category_placeholder\", \"Select Category\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='categoryItems'\n options={[]}\n required={true}\n getSelectedData={handleCategorySelect}\n />\n </Grid>\n\n\n {/* Company */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.company_label\", \"Company\")}\n name=\"company\"\n placeholder={t(\"inventory.fixed_asset_items.modal.company_placeholder\", \"Select Company\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='company'\n options={[]}\n is_multiselect={true}\n required={true}\n />\n </Grid>\n\n {/* Costing Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.costing_method_label\", \"Costing Method\")}\n name=\"costing_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.costing_method_placeholder\", \"Select Costing Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COSTING_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Unit of Measurement Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.uom_section\", \"Unit of Measurement\")}\n </Typography>\n </Grid>\n\n {/* UOM Template */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_label\", \"UOM Template\")}\n name=\"unit_of_measurement\"\n placeholder={t(\"inventory.fixed_asset_items.modal.unit_of_measurement_placeholder\", \"Select UOM Template\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom_templates'\n required={true}\n />\n </Grid>\n\n {/* Stock Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.stock_unit_label\", \"Stock Unit\")}\n name=\"stock_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.stock_unit_placeholder\", \"Select Stock Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Purchase Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.purchase_unit_label\", \"Purchase Unit\")}\n name=\"purchase_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.purchase_unit_placeholder\", \"Select Purchase Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n\n {/* Sales Unit */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"sales_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.sales_unit_label\", \"Consumption Unit\")}\n name=\"consumption_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.sales_unit_placeholder\", \"Select Sales Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0\n }}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.base_unit_label\", \"Base Unit\")}\n name=\"base_unit\"\n placeholder={t(\"inventory.fixed_asset_items.modal.base_unit_placeholder\", \"Select Base Unit\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n disabled\n apiType='uom'\n customFilter={{\n '&template_id.eq': watchedUom || 0,\n '&is_base_unit.eq': 1\n }}\n />\n </Grid>\n\n {/* Depreciation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_method_label\", \"Depreciation Method\")}\n name=\"depreciation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_method_placeholder\", \"Select Depreciation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={DEPRECIATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Declining Factor */}\n {watchedDepreciationMethod === 'Declining' && (\n <Grid item sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"inventory.fixed_asset_items.modal.declining_factor_label\", \"Declining Factor\")}\n name='declining_factor'\n fieldArrayName='inventory_fixed_asset_item'\n placeholder={t(\"inventory.fixed_asset_items.modal.declining_factor_placeholder\", \"Enter Declining Factor\")}\n required\n />\n </Grid>\n )}\n\n {/* Computation Method */}\n <Grid item sm={6}>\n <DynamicSelect\n label={t(\"inventory.fixed_asset_items.modal.computation_method_label\", \"Computation Method\")}\n name=\"computation_method\"\n placeholder={t(\"inventory.fixed_asset_items.modal.computation_method_placeholder\", \"Select Computation Method\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n options={COMPUTATION_METHODS}\n required={true}\n />\n </Grid>\n\n {/* Accounting Section Header */}\n <Grid item xs={12} pt={2}>\n <Typography type='s3' weight='medium' color='theme.neutral.900'>\n {t(\"inventory.fixed_asset_items.modal.accounting_section\", \"Accounting\")}\n </Typography>\n </Grid>\n\n {/* Default Tax */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.default_tax_label\", \"Default Tax\")}\n name=\"default_tax_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.default_tax_placeholder\", \"Select Default Tax\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='taxTemplate'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Income Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.income_account_label\", \"Income Account\")}\n name=\"income_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.income_account_placeholder\", \"Select Income Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.in': ['Income', 'Assets'] }}\n />\n </Grid>\n\n {/* Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.asset_account_label\", \"Asset Account\")}\n name=\"asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.asset_account_placeholder\", \"Select Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* COGS Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.cogs_account_label\", \"COGS Account\")}\n name=\"cogs_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.cogs_account_placeholder\", \"Select COGS Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n />\n </Grid>\n\n {/* Fixed Asset Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_label\", \"Fixed Asset Account\")}\n name=\"fixed_asset_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.fixed_asset_account_placeholder\", \"Select Fixed Asset Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n\n {/* Depreciation Account */}\n <Grid item sm={6}>\n <DynamicSearchSelect\n label={t(\"inventory.fixed_asset_items.modal.depreciation_account_label\", \"Depreciation Account\")}\n name=\"depreciation_account_id\"\n placeholder={t(\"inventory.fixed_asset_items.modal.depreciation_account_placeholder\", \"Select Depreciation Account\")}\n fieldArrayName='inventory_fixed_asset_item'\n formControl={control}\n apiType='accounts'\n options={[]}\n required={true}\n customeFilter={{ '&account_parent_type.eq': 'Assets' }}\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='fixedAssetItemAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='fixedAssetItemAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}>\n {t(\"common.cancel\")}\n </Button>\n <Button type=\"button\" onClick={handleSubmit(onSubmit)}>{t(\"common.save\")}</Button>\n </Box>\n </DialogActions>\n </form>\n </FormProvider>\n </>\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </Modal>\n );\n};\n\nexport default FixedAssetItemAddModal;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as Yup from 'yup';\nimport {\n Box,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton\n} from '@mui/material';\nimport Close from '@mui/icons-material/Close';\nimport { useTranslation } from 'react-i18next';\n\nimport Modal from './modal/modal';\nimport Typography from './typography/typography';\nimport Button from './button/button';\nimport ModalLoader from './loaders/modal-loader';\nimport { DynamicInput, DynamicSelect, DynamicSearchSelect, IModalComponentProps } from './form-control';\n\ninterface IFormValues {\n payment_term: {\n name: string;\n due_date_based_on: number | null;\n credit_days: number | null;\n mode_of_payment: string;\n discount_type: string;\n discount: number | null;\n discount_due_date_based_on: number | null;\n discount_validity: number | null;\n description: string;\n };\n}\n\nconst validationSchema = Yup.object().shape({\n payment_term: Yup.object().shape({\n name: Yup.string().required('Name is required'),\n due_date_based_on: Yup.number()\n .typeError('Due date based on is required')\n .required('Due date based on is required'),\n credit_days: Yup.number()\n .typeError('Credit days is required')\n .required('Credit days is required')\n .positive('Must be positive')\n .integer('Must be a whole number'),\n mode_of_payment: Yup.string().nullable(),\n discount_type: Yup.string().nullable(),\n discount: Yup.number().nullable().typeError('Must be a number'),\n discount_due_date_based_on: Yup.number().nullable().typeError('Must be a number'),\n discount_validity: Yup.number().nullable().typeError('Must be a number').integer('Must be a whole number'),\n description: Yup.string().nullable(),\n })\n});\n\nconst MODE_OF_PAYMENT_OPTIONS = [\n { label: 'Bank Draft', value: 'BANK_DRAFT' },\n { label: 'Cash', value: 'CASH' },\n { label: 'Credit Card', value: 'CREDIT_CARD' },\n { label: 'Wire Transfer', value: 'WIRE_TRANSFER' }\n];\n\nconst DISCOUNT_TYPE_OPTIONS = [\n { label: 'Percentage', value: 'PERCENTAGE' },\n { label: 'Amount', value: 'AMOUNT' }\n];\n\nexport const PaymentTermAddModal: React.FC<IModalComponentProps> = ({\n isOpen,\n setIsOpen,\n onSave,\n isLoading,\n modalProps,\n}) => {\n const { t } = useTranslation();\n\n const { control, handleSubmit, reset, trigger } = useForm<any>({\n mode: 'all',\n resolver: yupResolver(validationSchema),\n defaultValues: {\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n }\n });\n\n const handleModalClose = () => {\n reset({\n payment_term: {\n name: '',\n due_date_based_on: null,\n credit_days: null,\n mode_of_payment: '',\n discount_type: '',\n discount: null,\n discount_due_date_based_on: null,\n discount_validity: null,\n description: '',\n }\n });\n setIsOpen();\n };\n\n const onSubmit = async (values: IFormValues) => {\n const isValid = await trigger();\n if (!isValid) return;\n await onSave(values?.payment_term as any);\n handleModalClose();\n };\n\n return (\n <Modal\n open={isOpen}\n onClose={handleModalClose}\n maxWidth='md'\n fullWidth\n {...modalProps}\n >\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n {isLoading && <ModalLoader />}\n <DialogTitle className='paymentTermAddModal--DialogTitle'>\n <Typography type='s3' color='inherit' weight='medium'>\n {t(\"common.paymentTerm.title\")}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize='small' />\n </IconButton>\n </DialogTitle>\n <DialogContent className='paymentTermAddModal--DialogContents'>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.name_label\")}\n name='name'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.name_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.due_date_based_on_label\")}\n apiType='dueDateType'\n name='due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.due_date_based_on_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.credit_days_label\")}\n name='credit_days'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.credit_days_placeholder\")}\n required\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.mode_of_payment_label\")}\n name='mode_of_payment'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.mode_of_payment_placeholder\")}\n options={MODE_OF_PAYMENT_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSelect\n label={t(\"common.paymentTerm.fields.discount_type_label\")}\n name='discount_type'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_type_placeholder\")}\n options={DISCOUNT_TYPE_OPTIONS}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_label\")}\n name='discount'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicSearchSelect\n label={t(\"common.paymentTerm.fields.discount_due_date_based_on_label\")}\n apiType='dueDateType'\n name='discount_due_date_based_on'\n fieldArrayName='payment_term'\n formControl={control}\n placeholder={t(\"common.paymentTerm.fields.discount_due_date_based_on_placeholder\")}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <DynamicInput\n type='number'\n formControl={control}\n label={t(\"common.paymentTerm.fields.discount_validity_label\")}\n name='discount_validity'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.discount_validity_placeholder\")}\n />\n </Grid>\n <Grid item xs={12}>\n <DynamicInput\n type='text'\n formControl={control}\n label={t(\"common.paymentTerm.fields.description_label\")}\n name='description'\n fieldArrayName='payment_term'\n placeholder={t(\"common.paymentTerm.fields.description_placeholder\")}\n is_multiline\n />\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions className='paymentTermAddModal--DialogAction'>\n <span></span>\n <Box display='flex' gap={1.5}>\n <Button\n className='paymentTermAddModal--DialogAction--WhiteBtn'\n onClick={handleModalClose}\n >\n {t(\"common.cancel\")}\n </Button>\n <Button type='button' onClick={handleSubmit(onSubmit)}>\n {t(\"common.save\")}\n </Button>\n </Box>\n </DialogActions>\n </form>\n </>\n </Modal>\n );\n};\n","import { getErrorMessage, getToken } from '../../../../utils/common';\nimport { postV1WarehouseLocation, postV1InventoryFixedAssetItems, postV1CategoryItems, postV1Brand } from '../../../../api-client/api.inventory/api';\nimport { PostV1WarehouseLocationRequest } from '../../../../api-client/api.inventory/api-types';\nimport { enqueueSnackbar } from 'notistack';\nimport { postV1Parties, postV1PartiesIndustry, postV1JournalTypes, postV1PaymentTerms } from '../../../../api-client/api.accounting/api';\nimport { postV1Teams, postV1Designation, postV1Departments, postV1DepartmentsTeams } from '../../../../api-client/api.hrms/api';\nimport { postV1SourceTypes } from '../../../../api-client/api.sales/api';\nimport CustomerVendorModal from '@/components/parties-modal';\nimport { TeamAddModal } from '../../../team-add-modal';\nimport { DepartmentAddModal } from '@/components/department-add-modal';\nimport { LocationAddModal } from './location-add-modal';\nimport { DesignationAddModal } from '@/components/designation-add-modal';\nimport { FixedAssetItemAddModal } from './fixed-asset-item-add-modal';\nimport { DialogProps } from '@mui/material';\nimport { BrandAddModal } from '@/components/brand-add-modal';\nimport { CategoryAddModal } from '@/components/category-add-modal';\nimport { IndustryAddModal } from '@/components/industry-add-modal';\nimport { SourceTypeAddModal } from '@/components/source-type-add-modal/source-type-add-modal';\nimport { JournalTypeAddModal } from '@/components/journal-type-add-modal';\nimport { PaymentTermAddModal } from '@/components/payment-term-add-modal';\n\nexport const createApiThunk = async (api: (payload: any) => Promise<any>, payload: any) => {\n\ttry {\n\t\treturn await api({ ...payload, ...getToken() })\n\t} catch (error) {\n\t\ttry {\n\t\t\tenqueueSnackbar(getErrorMessage(error?.message), { variant: 'error' });\n\t\t} catch {\n\t\t\tconsole.error('[createApiThunk] enqueueSnackbar not available:', getErrorMessage(error?.message));\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport interface IAddConfig {\n\tapi: (payload: any) => Promise<any>;\n\tcomponent: any;\n}\n\nexport interface IModalComponentProps {\n\tisOpen: boolean;\n\tsetIsOpen: () => void;\n\tmodalProps?: DialogProps;\n\tonSave: (data: string) => void;\n\tisLoading?: boolean;\n}\n\nconst addMapper: Record<string, IAddConfig> = {\n\tlocation: {\n\t\tapi: (payload: PostV1WarehouseLocationRequest) => createApiThunk(postV1WarehouseLocation, payload),\n\t\tcomponent: LocationAddModal,\n\t},\n\tparty: {\n\t\tapi: (payload: any) => createApiThunk(postV1Parties, payload),\n\t\tcomponent: CustomerVendorModal,\n\t},\n\tdepartment: {\n\t\tapi: (payload: any) => createApiThunk(postV1Departments, payload),\n\t\tcomponent: DepartmentAddModal,\n\t},\n\tteam: {\n\t\tapi: (payload: any) => createApiThunk(postV1DepartmentsTeams, payload),\n\t\tcomponent: TeamAddModal,\n\t},\n\tdesignation: {\n\t\tapi: (payload: any) => createApiThunk(postV1Designation, payload),\n\t\tcomponent: DesignationAddModal,\n\t},\n\tfixedAssetItem: {\n\t\tapi: (payload: any) => createApiThunk(postV1InventoryFixedAssetItems, payload),\n\t\tcomponent: FixedAssetItemAddModal,\n\t},\n\tbrand: {\n\t\tapi: (payload: any) => createApiThunk(postV1Brand, payload),\n\t\tcomponent: BrandAddModal,\n\t},\n\tcategory: {\n\t\tapi: (payload: any) => createApiThunk(postV1CategoryItems, payload),\n\t\tcomponent: CategoryAddModal,\n\t},\n\tindustry: {\n\t\tapi: (payload: any) => createApiThunk(postV1PartiesIndustry, payload),\n\t\tcomponent: IndustryAddModal,\n\t},\n\tsourceType: {\n\t\tapi: (payload: any) => createApiThunk(postV1SourceTypes, payload),\n\t\tcomponent: SourceTypeAddModal,\n\t},\n\tjournalType: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tjournal_type: {\n\t\tapi: (payload: any) => createApiThunk(postV1JournalTypes, payload),\n\t\tcomponent: JournalTypeAddModal,\n\t},\n\tpaymentTerm: {\n\t\tapi: (payload: any) => createApiThunk(postV1PaymentTerms, payload),\n\t\tcomponent: PaymentTermAddModal,\n\t},\n};\n\nexport const dynamicSelectAdd = (addType: string): IAddConfig | null => {\n\tconst config = addMapper[addType];\n\n\tif (!config) {\n\t\tconsole.warn(`No configuration found for addType: ${addType}`);\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t...config\n\t};\n};\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n IconButton,\n InputAdornment,\n MenuItem,\n OutlinedInput,\n} from \"@mui/material\";\nimport Select from \"./select/select\";\nimport Checkbox from \"./checkbox/checkbox\";\nimport Typography from \"./typography/typography\";\nimport { Close } from \"./icons\";\nimport { debounce, sortBy } from \"lodash\";\nimport { fetchApi } from \"../utils/api\";\nimport ChipOrPlaceholder from \"./form-control/form-builder/form-builder-element/chip-or-placeholder\";\nimport { Add } from \"@mui/icons-material\";\nimport { useLanguage } from '@erpsquad/common/runtime';\nimport { useTranslation } from \"react-i18next\";\nimport { dynamicSelectAdd } from \"./form-control/form-builder/form-builder-element/select-configuration\";\nimport { useAuth } from '@erpsquad/common/runtime';\n\ninterface IOption {\n id: string | number;\n value: string | number;\n label: string | React.ReactNode;\n disabled?: boolean;\n isGroup?: boolean;\n options?: IOption[];\n searchLabel?: string;\n}\n\ninterface IPaginationState {\n page: number;\n hasMore: boolean;\n isLoadingMore: boolean;\n total: number;\n}\n\ninterface IMenuItems {\n options: IOption[];\n multiple: boolean;\n placeholder: string;\n with_checkboxes: boolean;\n values: string | string[];\n field: any;\n disabledIds: any[];\n handleClear: () => void;\n handleChange?: (value: string | string[]) => void;\n hasParent?: boolean;\n}\n\n// Custom API fetch function type for parent components\ninterface CustomFetchApiParams {\n search?: string;\n filters?: any;\n limit: number;\n skip: number;\n select?: string;\n order?: string;\n}\n\ninterface CustomFetchApiResponse {\n data: IOption[];\n pagination?: {\n totalCount: number;\n };\n}\n\ninterface SearchableSelectProps {\n labelId: string;\n label: string;\n value: any;\n onChange?: (event: any, selectedData?: any) => void;\n options: IOption[];\n multiple?: boolean;\n placeholder?: string;\n size?: \"small\" | \"medium\";\n searchPlaceholder?: string;\n CustomDropDownIcon: React.ReactNode;\n customStyle: any;\n name?: string;\n defaultValue?: any;\n apiType?: string;\n isInternal?: boolean;\n autoFocus?: any;\n error?: any;\n disabled: any;\n customeFilter?: string;\n attributes?: string;\n getSelectedData?: (row: any) => void;\n disabledIds: any[];\n labelKey?: string;\n valueKey?: string;\n inputStyle?: any;\n onChipRemove?: (value: string) => void;\n selectedLabel?: string;\n is_loading?: boolean;\n hasParent?: boolean;\n sortOrder?: string;\n handleChange?: (value: string | string[]) => void;\n enable_footer?: boolean;\n onFooterClick?: () => void;\n showCancelButton?: boolean;\n /** Custom API function to fetch options from parent component */\n customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;\n addType?: string;\n isMergeOptions?: boolean;\n attributes?: string[];\n modalComponentProps?: any;\n}\n\nconst generateMenuItems = ({\n options,\n multiple,\n placeholder,\n with_checkboxes,\n values,\n field,\n disabledIds,\n handleClear,\n handleChange,\n hasParent = false,\n}: IMenuItems) => {\n const itemDisabled = (ls: any) => disabledIds?.includes(ls);\n const items: React.ReactElement[] = [];\n\n if (!multiple) {\n items.push(\n <MenuItem disabled value='' key=\"placeholder\" sx={{ opacity: `0 !important`, height: `0 !important`, p: `0 !important`, m: `0 !important` }}>\n <Typography type='s3' color='theme.secondary.1000'>\n <em>{placeholder}</em>\n </Typography>\n </MenuItem>\n );\n }\n\n const selectedValues = Array.isArray(values) ? values?.filter((value) => value) : [];\n\n // Parent selection handlers\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n\n const isParentSelected = valueArray.includes(parentValue);\n const updatedValues = isParentSelected\n ? valueArray.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...new Set([...valueArray, parentValue, ...childValues])];\n\n handleChange?.(updatedValues);\n };\n\n const isAllOptionsSelected = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.every((childValue) => valueArray.includes(childValue));\n };\n\n const isSomeOptionsSelected = (childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n const valueArray = Array.isArray(selectedValues) ? selectedValues : [selectedValues];\n return childValues.some((childValue) => valueArray.includes(childValue));\n };\n\n Array.isArray(options) && options?.length > 0 && options?.forEach((option, index) => {\n items.push(\n <MenuItem\n value={option?.value}\n key={`${option?.value}-${index}`}\n disabled={Boolean(option?.disabled) || itemDisabled(option?.value) || (hasParent && !multiple)}\n className={option?.isGroup ? 'select--MenuItemHeader' : ''}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={\n hasParent\n ? isAllOptionsSelected(option.value, option.options || [])\n : Boolean(Array.isArray(values) && values?.indexOf(option?.value) > -1)\n }\n indeterminate={\n hasParent && isSomeOptionsSelected(option.options || [])\n }\n onChange={() =>\n hasParent\n ? handleParentChange(option.value, option.options || [])\n : handleChange?.(option.value)\n }\n />\n )}\n <Typography\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(option.value)}\n >\n {option?.label}\n </Typography>\n </Box>\n </MenuItem>\n );\n\n // Handle child options for grouped items\n if (option?.isGroup && Array.isArray(option?.options)) {\n option.options.forEach((opt, index) => {\n items.push(\n <MenuItem\n id={`${option.value}-${opt.value} ${index}`}\n value={opt.value}\n disabled={Boolean(opt.disabled) || itemDisabled(opt.value)}\n sx={{ pl: 5 }}\n onClick={() => {\n if (values?.length == 1) {\n handleClear();\n }\n }}\n key={`${option.value}-${opt.value} ${index}`}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n {multiple && with_checkboxes && (\n <Checkbox\n checked={Boolean(Array.isArray(values) && values?.indexOf(opt.value) > -1)}\n />\n )}\n <Typography\n id={`${option.value}-${opt.value} ${index}`}\n type='s3'\n color='theme.secondary.1000'\n onClick={() => handleChange?.(String(opt.value))}\n >\n {opt.label == \"Payment Entries\" ? \"Payment and Collection Entries\" : opt.label || opt.value}\n </Typography>\n </Box>\n </MenuItem>\n );\n });\n }\n });\n\n // Footer item\n if (field.enable_footer || field.addType) {\n items.push(\n <Box key=\"footer\" sx={{ position: 'sticky', bottom: 0, background: '#fff', zIndex: 1 }}>\n <Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n <MenuItem sx={{ gap: 1 }} onClick={() => {\n if (field.onFooterClick) {\n field.onFooterClick();\n } else if (field.handleModalOpen) {\n field.handleModalOpen();\n }\n }}>\n <Add fontSize='small' />\n <Typography type='s4' color='theme.secondary.1000'>\n Create New {field.label}\n </Typography>\n </MenuItem>\n </Box>\n );\n }\n\n // No data fallback\n if (!items.length || (items.length == 1 && !multiple)) {\n items.push(\n <MenuItem disabled key=\"no-data\">\n No data available\n </MenuItem>\n );\n }\n\n return items;\n};\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = (props) => {\n const {\n labelId,\n label,\n value,\n onChange,\n options,\n multiple = false,\n size = \"small\",\n searchPlaceholder,\n placeholder,\n name,\n defaultValue,\n apiType,\n isInternal = false,\n autoFocus,\n error,\n disabled,\n customeFilter,\n attributes,\n getSelectedData,\n disabledIds,\n onChipRemove,\n selectedLabel,\n is_loading,\n customStyle = {},\n CustomDropDownIcon,\n labelKey,\n valueKey,\n inputStyle,\n hasParent = false,\n sortOrder = 'id:-1',\n handleChange,\n enable_footer = false,\n onFooterClick,\n showCancelButton = true,\n customFetchApi,\n addType,\n isMergeOptions = false,\n } = props;\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [loading, setLoading] = useState<boolean>(false);\n const [dynamicOptions, setOptions] = useState<IOption[]>([]);\n const [selectedOptions, setSelectedOptions] = useState<IOption[]>([]);\n const [isAlreadyLoaded, setIsAlreadyLoaded] = useState(false);\n const [initailLoading, setInitialLoading] = useState(false);\n const [searchInitiate, setSearchInitiate] = useState(false);\n const [open, setOpen] = useState(false);\n const [prevFilter, setPrevFilter] = useState<any>(null);\n const [addConfig, setAddConfig] = useState<any>(null);\n const [isModalOpen, setIsModalOpen] = useState<boolean>(false);\n const [isAddLoading, setIsAddLoading] = useState<boolean>(false);\n const { t } = useTranslation();\n\n // Pagination state\n const [pagination, setPagination] = useState<IPaginationState>({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n\n const { isRtl } = useLanguage();\n const limit = 25;\n\n const isInternalOptions = useMemo(() => {\n if (isMergeOptions && (apiType || customFetchApi)) return false;\n return isInternal || (!apiType && !customFetchApi);\n }, [isInternal, apiType, customFetchApi, isMergeOptions]);\n\n // Local search function for internal options\n const searchOptionsLocally = useCallback((searchTerm: string, value: any): IOption[] => {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n if (!searchTerm) return currentOptions;\n\n const lowercasedSearchTerm = searchTerm.toLowerCase();\n\n const filteredOptions = hasParent\n ? options?.reduce((acc: IOption[], opt) => {\n const searchedOptions = opt.options?.filter((item) => {\n const label = React.isValidElement(item.label) ? item.searchLabel : String(item.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n });\n\n if (searchedOptions?.length) {\n acc.push({ ...opt, options: searchedOptions });\n }\n\n return acc;\n }, []) || []\n : options?.filter((opt) => {\n const label = React.isValidElement(opt.label) ? opt.searchLabel : String(opt.label);\n return label?.toLowerCase().includes(lowercasedSearchTerm);\n }) || [];\n\n return sortBySelectedValues(filteredOptions, value);\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options, hasParent]);\n\n // Clear Selected Options\n const handleClear = () => {\n onChange?.({ target: { value: multiple ? [] : null } });\n if (getSelectedData && typeof getSelectedData === \"function\") {\n getSelectedData(null);\n }\n };\n\n // Get unique options\n const getUniqueOptions = useCallback((data: IOption[]): IOption[] => {\n const uniqueOptions = [\n ...new Map(data?.map(item => [item.value, item])).values()\n ];\n return uniqueOptions;\n }, []);\n\n // Sort by selected values\n const sortBySelectedValues = useCallback((arrayToSort: IOption[], value: any): IOption[] => {\n const selectedValues = Array.isArray(value) ? value : [value];\n const sortedValue = sortBy(arrayToSort, (item) => {\n const index = selectedValues.indexOf(item.id || item.value);\n return index === -1 ? Infinity : index;\n });\n return sortedValue;\n }, []);\n\n // Options with search and pagination support\n const filteredOptions = useMemo(() => {\n if (isInternalOptions) {\n return searchOptionsLocally(searchQuery, value);\n }\n const apiOptions = sortBySelectedValues(getUniqueOptions([...dynamicOptions, ...selectedOptions]), value);\n if (isMergeOptions) {\n const localOptions = searchOptionsLocally(searchQuery, value);\n return getUniqueOptions([...localOptions, ...apiOptions]);\n }\n return apiOptions;\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, dynamicOptions, options, value, isInternalOptions, selectedOptions, searchOptionsLocally, sortBySelectedValues, getUniqueOptions, isMergeOptions]);\n\n // Handle scroll pagination\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n const isBottom = scrollHeight - scrollTop <= clientHeight + 10;\n\n if (isBottom && pagination.hasMore && !pagination.isLoadingMore && !isInternalOptions) {\n const nextPage = pagination.page + 1;\n fetchOptions(searchQuery, customeFilter, nextPage, true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagination.hasMore, pagination.isLoadingMore, pagination.page, isInternalOptions, searchQuery, JSON.stringify(customeFilter)]);\n\n // Update Options\n const updateOptions = useCallback((newOptions: IOption[], append = false) => {\n setOptions((prevOptions) => {\n const oldOptions = append ? prevOptions : selectedOptions;\n const uniqueOptions = getUniqueOptions([...oldOptions, ...newOptions]);\n return uniqueOptions;\n });\n }, [selectedOptions, getUniqueOptions]);\n\n // Fetch Options with pagination support\n const fetchOptions = useCallback(async (searchTerm: any = '', filters = customeFilter, page = 1, append = false) => {\n // Skip if neither apiType nor customFetchApi is provided\n if (!apiType && !customFetchApi) return [];\n\n setLoading(true);\n if (page > 1) {\n setPagination(prev => ({ ...prev, isLoadingMore: true }));\n }\n\n try {\n let data: IOption[] = [];\n let paginationResult: { totalCount?: number } = {};\n\n // Use custom API if provided, otherwise use default fetchApi\n if (customFetchApi) {\n const response = await customFetchApi({\n search: searchTerm,\n filters,\n limit,\n skip: (page - 1) * limit,\n select: attributes,\n order: sortOrder\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n } else {\n const response = await fetchApi({\n apiKey: apiType!,\n filters: {\n limit,\n skip: (page - 1) * limit,\n search: searchTerm,\n filters,\n select: attributes,\n order: sortOrder\n },\n labelKey,\n valueKey\n });\n data = response?.data || [];\n paginationResult = response?.pagination || {};\n }\n\n if (data && Array.isArray(data)) {\n updateOptions(data, append);\n\n // Update pagination\n setPagination(prev => ({\n ...prev,\n page,\n hasMore: (paginationResult?.totalCount || 0) > (page * limit),\n total: paginationResult?.totalCount || 0,\n isLoadingMore: false\n }));\n\n if (data?.length > 0) {\n setSelectedData();\n }\n }\n\n return data || [];\n } catch (error) {\n console.error('Error fetching options:', error);\n setPagination(prev => ({ ...prev, isLoadingMore: false }));\n return [];\n } finally {\n setLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiType, customFetchApi, attributes, sortOrder, limit, updateOptions, dynamicOptions]);\n\n // Search Options with debounce\n const debounceSearch = useMemo(\n () => debounce(async (searchTerm: string) => {\n if (loading) return;\n\n if (!searchTerm && !isInternalOptions && searchInitiate) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions('', customeFilter, 1, false);\n }\n if (searchTerm?.length > 1 && !isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n await fetchOptions(searchTerm, customeFilter, 1, false);\n }\n }, 700),\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [isInternalOptions, searchInitiate, JSON.stringify(customeFilter)]\n );\n\n // Initial fetch with filter change detection\n const initialFetch = useCallback(async () => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n\n if (condition && !isInternalOptions && !isAlreadyLoaded) {\n setPrevFilter(customeFilter);\n setOptions([]);\n setIsAlreadyLoaded(false);\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n }\n\n if (!isInternalOptions && !isAlreadyLoaded) {\n await fetchOptions(searchQuery, customeFilter, 1, false);\n setIsAlreadyLoaded(true);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(customeFilter), isInternalOptions, isAlreadyLoaded]);\n\n // Set Selected Data\n const setSelectedData = useCallback(() => {\n let hasOptions = false;\n const isInOptions = filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n );\n\n if ((Array.isArray(isInOptions) && isInOptions?.length > 0)) {\n getSelectedData?.(multiple ? isInOptions : isInOptions[0]);\n hasOptions = true;\n }\n\n return hasOptions;\n }, [JSON.stringify(filteredOptions), value, multiple]);\n\n // Fetch Options for Selected Id\n const fetchIdOptions = useCallback(async () => {\n if (await setSelectedData()) return;\n if (open) return;\n\n const fValue = multiple ? value && value?.filter(v => Boolean(Number(v))) : value ? value : null;\n const isNumericId = (v: any) =>\n v !== null && v !== undefined && v !== '' &&\n (typeof v === 'number' || (typeof v === 'string' && !isNaN(Number(v))));\n const condition = (multiple ? fValue?.length > 0 : isNumericId(fValue)) && !isInternalOptions;\n\n if (condition) {\n setInitialLoading(true);\n await fetchOptions('', { ...customeFilter, ...{ '&id.in': fValue } }, 1, false);\n setInitialLoading(false);\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, value, JSON.stringify(customeFilter)]);\n\n const hasValue = multiple\n ? Array.isArray(value) && value.length > 0\n : value !== null && value !== undefined && value !== \"\";\n\n // Effects\n useEffect(() => {\n if (open) {\n debounceSearch(searchQuery);\n }\n return () => debounceSearch.cancel();\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery, JSON.stringify(customeFilter), open, isAlreadyLoaded, debounceSearch]);\n\n useEffect(() => {\n setSelectedData();\n }, [setSelectedData]);\n\n useEffect(() => {\n fetchIdOptions();\n }, [fetchIdOptions]);\n\n useEffect(() => {\n if (open) {\n initialFetch();\n }\n }, [open, initialFetch]);\n\n useEffect(() => {\n const condition = JSON.stringify(customeFilter) !== JSON.stringify(prevFilter);\n if (customeFilter && condition) {\n setIsAlreadyLoaded(false);\n }\n }, [customeFilter, prevFilter]);\n\n useEffect(() => {\n if (value && !open) {\n const currentOptions: IOption[] = (options && options.length > 0) ? options : [];\n const selectedData = currentOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ) || [];\n setSelectedOptions(selectedData);\n }\n setSelectedOptions(filteredOptions?.filter((i: any) =>\n multiple ? value?.includes(i?.value) : i?.value == value\n ));\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open, options, multiple]);\n\n const handleModalOpen = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n // Handle modal save\n const handleModalSave = useCallback(async (payload: any) => {\n if (!addConfig || !addConfig.api) {\n console.error('Add configuration is not properly set');\n return;\n }\n\n setIsAddLoading(true);\n try {\n const result = await addConfig.api(payload);\n setIsAddLoading(false);\n setIsModalOpen(false);\n if (!isInternalOptions) {\n setPagination({\n page: 1,\n hasMore: true,\n isLoadingMore: false,\n total: 0\n });\n setIsAlreadyLoaded(false);\n await fetchOptions('', customeFilter, 1, false);\n }\n if (result && result.data) {\n const newValue = multiple\n ? [...(value || []), result.data.id]\n : result.data.id;\n }\n } catch (error) {\n console.log(\"error\", error);\n setIsAddLoading(false);\n }\n\n\n }, [addConfig, isInternalOptions, fetchOptions, customeFilter, multiple, name, value]);\n\n useEffect(() => {\n const config = dynamicSelectAdd(addType!);\n setAddConfig(config);\n }, [addType])\n\n const handleOnChange = (event: any) => {\n const { value } = event.target;\n if ((multiple && Array.isArray(value) && value?.filter(v => v).length == 0) || !value) return;\n\n const isSelected = (item: any) => {\n return multiple ? value?.includes(item?.value) : item?.value === value;\n };\n\n const selected = filteredOptions?.filter(isSelected);\n onChange?.(event, multiple ? selected : selected?.[0]);\n getSelectedData?.(multiple ? selected : selected?.[0]);\n\n };\n\n const removeUndefine = (selectOptions: any[]) => {\n return Array.isArray(selectOptions) && selectOptions?.length > 0 && selectOptions?.filter((option) => option);\n };\n\n const showGroupLabel = (item: any) => {\n if (!item?.length) {\n return undefined\n }\n const mergedOptions = item?.flatMap((i: any) => i?.options)\n return mergedOptions?.find((option: any) => option?.value === value)?.label\n }\n\n return (\n <Select\n labelId={labelId}\n name={name}\n defaultValue={defaultValue || (multiple ? [] : '')}\n placeholder={t(placeholder)}\n className=\"filter-select\"\n size={size}\n onOpen={() => setOpen(true)}\n onClose={() => {\n setOpen(false);\n if (searchQuery?.length > 0) {\n setIsAlreadyLoaded(false);\n }\n setSearchInitiate(false);\n setSearchQuery('');\n }}\n onChange={handleOnChange}\n showCancelButton={showCancelButton}\n multiple={multiple}\n label={t(label)}\n fullWidth\n displayEmpty\n autoFocus={autoFocus}\n error={Boolean(error)}\n disabled={disabled}\n value={initailLoading ? (multiple ? [] : '') : value?.id || value || (multiple ? [] : '')}\n searchPlaceholder={searchPlaceholder}\n CustomDropdownIcon={CustomDropDownIcon}\n sx={(multiple && value?.length) ? { ...customStyle, \"& .MuiSelect-select\": { padding: '5.5px !important' } } : customStyle}\n MenuProps={{\n PaperProps: {\n onScroll: handleScroll,\n style: { maxHeight: 295, maxWidth: 250 }\n }\n }}\n input={\n !disabled ? (\n <OutlinedInput\n label=\"\"\n sx={inputStyle}\n endAdornment={\n <InputAdornment position=\"end\">\n {loading || is_loading ? (\n <CircularProgress\n size={20}\n sx={{ mr: 3, color: \"#4AC08C\" }}\n />\n ) : (\n showCancelButton && hasValue && (\n <IconButton\n aria-label=\"clear selection\"\n onClick={handleClear}\n edge=\"end\"\n sx={isRtl ? { ml: 2.5 } : { mr: 1.5 }}\n size=\"small\"\n >\n <Close fontSize=\"small\" color='theme.primary.800' />\n </IconButton>\n )\n )}\n </InputAdornment>\n }\n />\n ) : undefined\n }\n renderValue={(selected?: string | string[]) => {\n return (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n selectedLabel={selectedLabel}\n data={removeUndefine(selected)}\n placeholder={placeholder}\n onDelete={onChipRemove}\n disabled={disabled}\n chipProps={{\n sx: {\n bgcolor: 'theme.primary.100',\n border: 0,\n // borderRadius: '15px',\n '& .MuiTypography-body1': {\n color: 'theme.primary.800',\n fontWeight: \"500\",\n }\n }\n }}\n />\n ) : (\n hasParent ? showGroupLabel(filteredOptions) :\n Array.isArray(filteredOptions) && filteredOptions?.length > 0 && filteredOptions?.find(\n (option: any) => option?.value == value\n )?.label || selected || placeholder\n )}\n </>\n );\n }}\n handleSearch={(text) => {\n setSearchQuery(text);\n setSearchInitiate(true);\n }}\n >\n {generateMenuItems({\n options: filteredOptions,\n multiple: Boolean(multiple),\n placeholder,\n values: value,\n with_checkboxes: true,\n field: {\n ...props,\n enable_footer,\n onFooterClick,\n label,\n handleModalOpen\n },\n disabledIds,\n handleClear,\n handleChange,\n hasParent,\n t: (key: string) => key\n })}\n {pagination.isLoadingMore && (\n <MenuItem disabled>\n <Box sx={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <CircularProgress size={20} />\n </Box>\n </MenuItem>\n )}\n {/* Modal for adding new items */}\n {addConfig && addConfig.component && (\n <>\n {React.createElement(addConfig.component, {\n isOpen: isModalOpen,\n setIsOpen: setIsModalOpen,\n isLoading: isAddLoading,\n onSave: handleModalSave,\n modalProps: {\n maxWidth: 'md',\n fullWidth: true\n },\n ...props?.modalComponentProps\n })}\n </>\n )}\n </Select>\n );\n};\n\nexport default SearchableSelect;"],"names":["generateMenuItems","jsx","MenuItem","Typography","jsxs","Box","Checkbox","Chip","MoreIcon","useWatch","useApi","useFormContext","useCallback","_a","useTranslation","useLanguage","useAuth","useMemo","auth","useRef","useState","useDefaultConfig","filteredOptions","sortBy","fetchApi","updateOptions","debounce","useEffect","Controller","Fragment","Tooltip","Select","ChipOrPlaceholder","text","OutlinedInput","InputAdornment","CircularProgress","IconButton","Close","Divider","Add","shallowEqual","InlineEditFields","validationSchema","yup","TextField","DatePicker","DateTimePicker","UploadMedia","PhoneInput","PathnameAccounting","PathnameInventory","PathnameManufacturing","PathnamePurchase","PathnameCrm","PathnameUsers","PathnameRental","PathnameDocument","PathnameHrms","ArrowUpDown","Save","useLayoutEffect","createContext","memo","useContext","styled","useNavigate","useLocation","usePages","useDeepMemo","getApiConfigSafe","enqueueSnackbar","images","Button","cloneElement","RecgtangleIcon","CheckBoxIcon","table","Edit","Trash","useMaterialReactTable","MaterialReactTable","Menu","ListItemIcon","ListItemText","SearchBar","ConfirmPopUp","useDispatch","useForm","generateValidationSchema1","PARTIES_FIELDS","useAccountingSetting","PARTIES_FORM_ARRAY_NAME","checkUniqueFields","transformTableColumns","phone","ksaAddressPayload","addressPayload","contactPayload","type","_","t","_b","processPartiesPayload","createParties","getErrorMessage","addressOmitKeys","contactOmitKeys","Accordion","Grid","DynamicRadioButton","partyType","DynamicInput","DynamicPhone","addressColumns","contactColumns","Modal","ModalLoader","DialogTitle","DialogContent","DialogActions","Yup","getDefaultValues","yupResolver","DynamicToggleButton","toast","Toast","skuGenerator","fetchOptions","FormProvider","DynamicSelect","api","getToken","postV1WarehouseLocation","postV1Parties","postV1Departments","postV1DepartmentsTeams","postV1Designation","postV1InventoryFixedAssetItems","postV1Brand","BrandAddModal","postV1CategoryItems","CategoryAddModal","postV1PartiesIndustry","IndustryAddModal","postV1SourceTypes","SourceTypeAddModal","postV1JournalTypes","JournalTypeAddModal","postV1PaymentTerms","index","value","label","error"],"mappings":"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"}