@solidxai/core-ui 0.1.8-beta.9 → 0.1.9-alpha.0

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 (457) hide show
  1. package/README.md +2 -2
  2. package/dist/adapters/auth/getSession.d.ts.map +1 -1
  3. package/dist/adapters/auth/getSession.js +1 -1
  4. package/dist/adapters/auth/getSession.js.map +1 -1
  5. package/dist/adapters/auth/getSession.ts +1 -0
  6. package/dist/adapters/auth/helper.d.ts.map +1 -1
  7. package/dist/adapters/auth/helper.js +1 -0
  8. package/dist/adapters/auth/helper.js.map +1 -1
  9. package/dist/adapters/auth/helper.ts +3 -1
  10. package/dist/adapters/auth/signIn.d.ts.map +1 -1
  11. package/dist/adapters/auth/signIn.js +1 -0
  12. package/dist/adapters/auth/signIn.js.map +1 -1
  13. package/dist/adapters/auth/signIn.ts +3 -1
  14. package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts +1 -0
  15. package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts.map +1 -1
  16. package/dist/adapters/auth/signInWithOAuthAccessCode.js +10 -9
  17. package/dist/adapters/auth/signInWithOAuthAccessCode.js.map +1 -1
  18. package/dist/adapters/auth/signInWithOAuthAccessCode.ts +6 -3
  19. package/dist/adapters/auth/signOut.d.ts.map +1 -1
  20. package/dist/adapters/auth/signOut.js +7 -1
  21. package/dist/adapters/auth/signOut.js.map +1 -1
  22. package/dist/adapters/auth/signOut.ts +7 -1
  23. package/dist/adapters/auth/types.d.ts +1 -0
  24. package/dist/adapters/auth/types.d.ts.map +1 -1
  25. package/dist/adapters/auth/types.js.map +1 -1
  26. package/dist/adapters/auth/types.ts +1 -0
  27. package/dist/components/auth/AuthLayout.d.ts +1 -1
  28. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  29. package/dist/components/auth/AuthLayout.js +92 -22
  30. package/dist/components/auth/AuthLayout.js.map +1 -1
  31. package/dist/components/auth/AuthLayout.tsx +38 -12
  32. package/dist/components/auth/AuthSettingsContext.d.ts +10 -0
  33. package/dist/components/auth/AuthSettingsContext.d.ts.map +1 -0
  34. package/dist/components/auth/AuthSettingsContext.js +49 -0
  35. package/dist/components/auth/AuthSettingsContext.js.map +1 -0
  36. package/dist/components/auth/AuthSettingsContext.tsx +19 -0
  37. package/dist/components/auth/FacebookAuthChecking.d.ts +2 -0
  38. package/dist/components/auth/FacebookAuthChecking.d.ts.map +1 -0
  39. package/dist/components/auth/FacebookAuthChecking.js +98 -0
  40. package/dist/components/auth/FacebookAuthChecking.js.map +1 -0
  41. package/dist/components/auth/FacebookAuthChecking.tsx +59 -0
  42. package/dist/components/auth/ForgotPasswordThankYou.d.ts.map +1 -1
  43. package/dist/components/auth/ForgotPasswordThankYou.js +3 -7
  44. package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
  45. package/dist/components/auth/ForgotPasswordThankYou.tsx +4 -9
  46. package/dist/components/auth/GoogleAuthChecking.d.ts.map +1 -1
  47. package/dist/components/auth/GoogleAuthChecking.js +10 -16
  48. package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
  49. package/dist/components/auth/GoogleAuthChecking.tsx +2 -7
  50. package/dist/components/auth/MicrosoftAuthChecking.d.ts +2 -0
  51. package/dist/components/auth/MicrosoftAuthChecking.d.ts.map +1 -0
  52. package/dist/components/auth/MicrosoftAuthChecking.js +98 -0
  53. package/dist/components/auth/MicrosoftAuthChecking.js.map +1 -0
  54. package/dist/components/auth/MicrosoftAuthChecking.tsx +59 -0
  55. package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
  56. package/dist/components/auth/SolidForgotPassword.js +3 -7
  57. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  58. package/dist/components/auth/SolidForgotPassword.tsx +4 -9
  59. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  60. package/dist/components/auth/SolidInitialLoginOtp.js +21 -30
  61. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  62. package/dist/components/auth/SolidInitialLoginOtp.tsx +5 -13
  63. package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
  64. package/dist/components/auth/SolidInitiateRegisterOtp.js +35 -22
  65. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  66. package/dist/components/auth/SolidInitiateRegisterOtp.tsx +28 -16
  67. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  68. package/dist/components/auth/SolidLogin.js +25 -31
  69. package/dist/components/auth/SolidLogin.js.map +1 -1
  70. package/dist/components/auth/SolidLogin.tsx +19 -16
  71. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  72. package/dist/components/auth/SolidRegister.js +59 -31
  73. package/dist/components/auth/SolidRegister.js.map +1 -1
  74. package/dist/components/auth/SolidRegister.tsx +91 -38
  75. package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
  76. package/dist/components/auth/SolidResetPassword.js +2 -6
  77. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  78. package/dist/components/auth/SolidResetPassword.tsx +2 -6
  79. package/dist/components/common/AuthBanner.js.map +1 -1
  80. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  81. package/dist/components/common/GeneralSettings.js +235 -151
  82. package/dist/components/common/GeneralSettings.js.map +1 -1
  83. package/dist/components/common/GeneralSettings.tsx +1109 -776
  84. package/dist/components/common/SettingsComponent.d.ts +2 -0
  85. package/dist/components/common/SettingsComponent.d.ts.map +1 -0
  86. package/dist/components/common/SettingsComponent.js +351 -0
  87. package/dist/components/common/SettingsComponent.js.map +1 -0
  88. package/dist/components/common/SettingsComponent.module.css +421 -0
  89. package/dist/components/common/SettingsComponent.tsx +582 -0
  90. package/dist/components/common/SocialMediaLogin.d.ts +8 -1
  91. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  92. package/dist/components/common/SocialMediaLogin.js +6 -13
  93. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  94. package/dist/components/common/SocialMediaLogin.tsx +120 -58
  95. package/dist/components/common/SolidExport.d.ts.map +1 -1
  96. package/dist/components/common/SolidExport.js +1 -1
  97. package/dist/components/common/SolidExport.js.map +1 -1
  98. package/dist/components/common/SolidExport.tsx +2 -1
  99. package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
  100. package/dist/components/common/SolidFormStepper.js +2 -1
  101. package/dist/components/common/SolidFormStepper.js.map +1 -1
  102. package/dist/components/common/SolidFormStepper.tsx +2 -1
  103. package/dist/components/common/solid-export.css +26 -0
  104. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  105. package/dist/components/core/card/SolidCardView.js +24 -25
  106. package/dist/components/core/card/SolidCardView.js.map +1 -1
  107. package/dist/components/core/card/SolidCardView.tsx +22 -27
  108. package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
  109. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  110. package/dist/components/core/card/SolidCardViewConfigure.tsx +1 -1
  111. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  112. package/dist/components/core/chatter/SolidChatter.js +39 -9
  113. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  114. package/dist/components/core/chatter/SolidChatter.tsx +42 -7
  115. package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts.map +1 -1
  116. package/dist/components/core/chatter/SolidChatterAuditMessage.js +19 -1
  117. package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
  118. package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +22 -1
  119. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +3 -0
  120. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  121. package/dist/components/core/chatter/SolidChatterMessageBox.js +68 -4
  122. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  123. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +45 -3
  124. package/dist/components/core/chatter/chatter.module.css +0 -3
  125. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.d.ts.map +1 -1
  126. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js +3 -1
  127. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
  128. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +149 -0
  129. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +3 -1
  130. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
  131. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +9 -8
  132. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
  133. package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +4 -2
  134. package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.d.ts.map +1 -1
  135. package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.js +21 -4
  136. package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.js.map +1 -1
  137. package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.tsx +128 -1
  138. package/dist/components/core/common/SolidGlobalSearchElement.js +1 -1
  139. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  140. package/dist/components/core/common/SolidGlobalSearchElement.tsx +1 -1
  141. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts +7 -0
  142. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts.map +1 -0
  143. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js +75 -0
  144. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js.map +1 -0
  145. package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.ts +45 -0
  146. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts +3 -0
  147. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts.map +1 -0
  148. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js +81 -0
  149. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js.map +1 -0
  150. package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.tsx +114 -0
  151. package/dist/components/core/form/SolidFormActionHeader.d.ts +1 -1
  152. package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
  153. package/dist/components/core/form/SolidFormActionHeader.js +10 -5
  154. package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
  155. package/dist/components/core/form/SolidFormActionHeader.tsx +33 -4
  156. package/dist/components/core/form/SolidFormLayouts.js +1 -1
  157. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  158. package/dist/components/core/form/SolidFormLayouts.tsx +1 -1
  159. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  160. package/dist/components/core/form/SolidFormView.js +122 -28
  161. package/dist/components/core/form/SolidFormView.js.map +1 -1
  162. package/dist/components/core/form/SolidFormView.tsx +111 -10
  163. package/dist/components/core/form/fields/SolidComputedField.d.ts +25 -0
  164. package/dist/components/core/form/fields/SolidComputedField.d.ts.map +1 -0
  165. package/dist/components/core/form/fields/SolidComputedField.js +128 -0
  166. package/dist/components/core/form/fields/SolidComputedField.js.map +1 -0
  167. package/dist/components/core/form/fields/SolidComputedField.tsx +134 -0
  168. package/dist/components/core/form/fields/SolidDateTimeField.js +1 -1
  169. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  170. package/dist/components/core/form/fields/SolidDateTimeField.tsx +1 -1
  171. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  172. package/dist/components/core/form/fields/SolidJsonField.js +4 -1
  173. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  174. package/dist/components/core/form/fields/SolidJsonField.tsx +4 -1
  175. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  176. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +35 -24
  177. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  178. package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +30 -14
  179. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  180. package/dist/components/core/form/fields/SolidSelectionStaticField.js +29 -28
  181. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  182. package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +17 -12
  183. package/dist/components/core/form/fields/SolidTimeField.js +1 -1
  184. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  185. package/dist/components/core/form/fields/SolidTimeField.tsx +1 -1
  186. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
  187. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  188. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +2 -2
  189. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.d.ts.map +1 -1
  190. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +3 -3
  191. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
  192. package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +0 -5
  193. package/dist/components/core/kanban/KanbanBoard.js +1 -1
  194. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  195. package/dist/components/core/kanban/KanbanBoard.tsx +1 -1
  196. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  197. package/dist/components/core/kanban/SolidKanbanView.js +216 -102
  198. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  199. package/dist/components/core/kanban/SolidKanbanView.tsx +204 -72
  200. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
  201. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  202. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +1 -1
  203. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
  204. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
  205. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +1 -2
  206. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
  207. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
  208. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  209. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +21 -10
  210. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
  211. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
  212. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  213. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +18 -10
  214. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
  215. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +3 -6
  216. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  217. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +30 -24
  218. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
  219. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
  220. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  221. package/dist/components/core/list/SolidDataTable.js +6 -5
  222. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  223. package/dist/components/core/list/SolidDataTable.tsx +6 -5
  224. package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
  225. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
  226. package/dist/components/core/list/SolidDataTablePagination.js +22 -0
  227. package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
  228. package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
  229. package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
  230. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -3
  231. package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
  232. package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +1 -0
  233. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  234. package/dist/components/core/list/SolidListView.js +60 -63
  235. package/dist/components/core/list/SolidListView.js.map +1 -1
  236. package/dist/components/core/list/SolidListView.tsx +43 -48
  237. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  238. package/dist/components/core/list/SolidListViewConfigure.js +32 -3
  239. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  240. package/dist/components/core/list/SolidListViewConfigure.tsx +35 -3
  241. package/dist/components/core/list/SolidListViewRowActionsMenu.js +2 -2
  242. package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
  243. package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +2 -2
  244. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
  245. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
  246. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +6 -7
  247. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
  248. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +9 -10
  249. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +1 -1
  250. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  251. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -1
  252. package/dist/components/core/tree/SolidTreeTable.d.ts +1 -1
  253. package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
  254. package/dist/components/core/tree/SolidTreeTable.js +78 -78
  255. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  256. package/dist/components/core/tree/SolidTreeTable.tsx +1 -10
  257. package/dist/components/core/users/CreateUser.css +27 -2
  258. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  259. package/dist/components/core/users/CreateUser.js +14 -12
  260. package/dist/components/core/users/CreateUser.js.map +1 -1
  261. package/dist/components/core/users/CreateUser.tsx +18 -2
  262. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  263. package/dist/components/layout/user-profile-menu.js +17 -15
  264. package/dist/components/layout/user-profile-menu.js.map +1 -1
  265. package/dist/components/layout/user-profile-menu.tsx +30 -33
  266. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  267. package/dist/components/shad-cn-ui/SolidAutocomplete.js +9 -1
  268. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  269. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +10 -1
  270. package/dist/components/shad-cn-ui/SolidButton.d.ts +14 -15
  271. package/dist/components/shad-cn-ui/SolidButton.d.ts.map +1 -1
  272. package/dist/components/shad-cn-ui/SolidButton.js +13 -3
  273. package/dist/components/shad-cn-ui/SolidButton.js.map +1 -1
  274. package/dist/components/shad-cn-ui/SolidButton.tsx +24 -4
  275. package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
  276. package/dist/components/shad-cn-ui/SolidDatePicker.js +1 -1
  277. package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
  278. package/dist/components/shad-cn-ui/SolidDatePicker.tsx +2 -0
  279. package/dist/components/shad-cn-ui/SolidDialog.d.ts +1 -1
  280. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  281. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  282. package/dist/components/shad-cn-ui/SolidDialog.tsx +1 -1
  283. package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -2
  284. package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
  285. package/dist/components/shad-cn-ui/SolidIcon.js +3 -4
  286. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  287. package/dist/components/shad-cn-ui/SolidIcon.tsx +12 -15
  288. package/dist/components/shad-cn-ui/SolidRichTextEditor.d.ts.map +1 -1
  289. package/dist/components/shad-cn-ui/SolidRichTextEditor.js +9 -1
  290. package/dist/components/shad-cn-ui/SolidRichTextEditor.js.map +1 -1
  291. package/dist/components/shad-cn-ui/SolidRichTextEditor.tsx +8 -1
  292. package/dist/components/shad-cn-ui/SolidTabs.d.ts +2 -1
  293. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  294. package/dist/components/shad-cn-ui/SolidTabs.js +2 -2
  295. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  296. package/dist/components/shad-cn-ui/SolidTabs.tsx +12 -1
  297. package/dist/components/solid-ui/SolidButton.d.ts +14 -0
  298. package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
  299. package/dist/components/solid-ui/SolidButton.js +36 -0
  300. package/dist/components/solid-ui/SolidButton.js.map +1 -0
  301. package/dist/components/solid-ui/SolidButton.tsx +54 -0
  302. package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
  303. package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
  304. package/dist/components/solid-ui/SolidTabs.js +22 -0
  305. package/dist/components/solid-ui/SolidTabs.js.map +1 -0
  306. package/dist/components/solid-ui/SolidTabs.tsx +73 -0
  307. package/dist/components/solid-ui/index.d.ts +3 -0
  308. package/dist/components/solid-ui/index.d.ts.map +1 -0
  309. package/dist/components/solid-ui/index.js +3 -0
  310. package/dist/components/solid-ui/index.js.map +1 -0
  311. package/dist/components/solid-ui/index.ts +2 -0
  312. package/dist/helpers/hydrateRelationRules.js +1 -1
  313. package/dist/helpers/hydrateRelationRules.js.map +1 -1
  314. package/dist/helpers/hydrateRelationRules.ts +1 -1
  315. package/dist/helpers/permissions.js +2 -2
  316. package/dist/helpers/permissions.js.map +1 -1
  317. package/dist/helpers/permissions.ts +2 -2
  318. package/dist/helpers/registry.d.ts +2 -2
  319. package/dist/helpers/registry.d.ts.map +1 -1
  320. package/dist/helpers/registry.js +6 -0
  321. package/dist/helpers/registry.js.map +1 -1
  322. package/dist/helpers/registry.ts +9 -2
  323. package/dist/helpers/settingsPayload.d.ts +32 -0
  324. package/dist/helpers/settingsPayload.d.ts.map +1 -0
  325. package/dist/helpers/settingsPayload.js +72 -0
  326. package/dist/helpers/settingsPayload.js.map +1 -0
  327. package/dist/helpers/settingsPayload.ts +125 -0
  328. package/dist/index.d.ts +7 -0
  329. package/dist/index.d.ts.map +1 -1
  330. package/dist/index.js +6 -0
  331. package/dist/index.js.map +1 -1
  332. package/dist/index.ts +7 -0
  333. package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
  334. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  335. package/dist/redux/api/solidChatterMessageApi.js +11 -1
  336. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  337. package/dist/redux/api/solidChatterMessageApi.ts +10 -1
  338. package/dist/redux/api/solidEntityApi.d.ts.map +1 -1
  339. package/dist/redux/api/solidEntityApi.js +14 -1
  340. package/dist/redux/api/solidEntityApi.js.map +1 -1
  341. package/dist/redux/api/solidEntityApi.tsx +17 -1
  342. package/dist/redux/store/createSolidStore.d.ts +1 -1
  343. package/dist/redux/store/createSolidStore.d.ts.map +1 -1
  344. package/dist/redux/store/createSolidStore.js +20 -11
  345. package/dist/redux/store/createSolidStore.js.map +1 -1
  346. package/dist/redux/store/createSolidStore.ts +20 -11
  347. package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
  348. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  349. package/dist/redux/store/dynamicEntityApiMiddleware.d.ts +10 -0
  350. package/dist/redux/store/dynamicEntityApiMiddleware.d.ts.map +1 -0
  351. package/dist/redux/store/dynamicEntityApiMiddleware.js +44 -0
  352. package/dist/redux/store/dynamicEntityApiMiddleware.js.map +1 -0
  353. package/dist/redux/store/dynamicEntityApiMiddleware.ts +58 -0
  354. package/dist/redux/store/dynamicReducerManager.d.ts +10 -0
  355. package/dist/redux/store/dynamicReducerManager.d.ts.map +1 -0
  356. package/dist/redux/store/dynamicReducerManager.js +51 -0
  357. package/dist/redux/store/dynamicReducerManager.js.map +1 -0
  358. package/dist/redux/store/dynamicReducerManager.ts +51 -0
  359. package/dist/redux/store/solidEntityApiPool.d.ts +31 -0
  360. package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -0
  361. package/dist/redux/store/solidEntityApiPool.js +123 -0
  362. package/dist/redux/store/solidEntityApiPool.js.map +1 -0
  363. package/dist/redux/store/solidEntityApiPool.ts +167 -0
  364. package/dist/resources/globals.css +26 -6
  365. package/dist/resources/shadcn-base.css +269 -92
  366. package/dist/resources/solid-responsive.css +22 -4
  367. package/dist/routes/AppEventListener.js +1 -1
  368. package/dist/routes/AppEventListener.js.map +1 -1
  369. package/dist/routes/AppEventListener.tsx +1 -1
  370. package/dist/routes/SolidRouteMetadataBoundary.d.ts +5 -0
  371. package/dist/routes/SolidRouteMetadataBoundary.d.ts.map +1 -0
  372. package/dist/routes/SolidRouteMetadataBoundary.js +72 -0
  373. package/dist/routes/SolidRouteMetadataBoundary.js.map +1 -0
  374. package/dist/routes/SolidRouteMetadataBoundary.tsx +77 -0
  375. package/dist/routes/pages/admin/core/CardPage.js +1 -1
  376. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  377. package/dist/routes/pages/admin/core/CardPage.tsx +1 -1
  378. package/dist/routes/pages/admin/core/DiagnosticsPage.d.ts +2 -0
  379. package/dist/routes/pages/admin/core/DiagnosticsPage.d.ts.map +1 -0
  380. package/dist/routes/pages/admin/core/DiagnosticsPage.js +48 -0
  381. package/dist/routes/pages/admin/core/DiagnosticsPage.js.map +1 -0
  382. package/dist/routes/pages/admin/core/DiagnosticsPage.tsx +167 -0
  383. package/dist/routes/pages/admin/core/FormPage.js +1 -1
  384. package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
  385. package/dist/routes/pages/admin/core/FormPage.tsx +1 -1
  386. package/dist/routes/pages/admin/core/KanbanPage.js +1 -1
  387. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  388. package/dist/routes/pages/admin/core/KanbanPage.tsx +1 -1
  389. package/dist/routes/pages/admin/core/ListPage.js +1 -1
  390. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  391. package/dist/routes/pages/admin/core/ListPage.tsx +1 -1
  392. package/dist/routes/pages/admin/core/SettingsPage.js +2 -2
  393. package/dist/routes/pages/admin/core/SettingsPage.js.map +1 -1
  394. package/dist/routes/pages/admin/core/SettingsPage.tsx +2 -2
  395. package/dist/routes/pages/admin/core/TreePage.js +1 -1
  396. package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
  397. package/dist/routes/pages/admin/core/TreePage.tsx +1 -1
  398. package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts +2 -0
  399. package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts.map +1 -0
  400. package/dist/routes/pages/auth/InitiateFacebookOauthPage.js +6 -0
  401. package/dist/routes/pages/auth/InitiateFacebookOauthPage.js.map +1 -0
  402. package/dist/routes/pages/auth/InitiateFacebookOauthPage.tsx +5 -0
  403. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts +2 -0
  404. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts.map +1 -0
  405. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js +6 -0
  406. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js.map +1 -0
  407. package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.tsx +5 -0
  408. package/dist/routes/pages/studio/StudioLandingPage.d.ts.map +1 -1
  409. package/dist/routes/pages/studio/StudioLandingPage.js +35 -7
  410. package/dist/routes/pages/studio/StudioLandingPage.js.map +1 -1
  411. package/dist/routes/pages/studio/StudioLandingPage.tsx +42 -6
  412. package/dist/routes/solidRoutes.d.ts.map +1 -1
  413. package/dist/routes/solidRoutes.js +49 -24
  414. package/dist/routes/solidRoutes.js.map +1 -1
  415. package/dist/routes/solidRoutes.tsx +49 -24
  416. package/dist/routes/types.d.ts +8 -1
  417. package/dist/routes/types.d.ts.map +1 -1
  418. package/dist/routes/types.js.map +1 -1
  419. package/dist/routes/types.ts +10 -0
  420. package/dist/types/extension-registry.d.ts +1 -0
  421. package/dist/types/extension-registry.d.ts.map +1 -1
  422. package/dist/types/extension-registry.js +1 -0
  423. package/dist/types/extension-registry.js.map +1 -1
  424. package/dist/types/extension-registry.ts +1 -0
  425. package/dist/types/index.d.ts +2 -0
  426. package/dist/types/solid-core.d.ts +11 -0
  427. package/package.json +1 -2
  428. package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
  429. package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
  430. package/dist/components/auth/SolidOTPVerify.js +0 -67
  431. package/dist/components/auth/SolidOTPVerify.js.map +0 -1
  432. package/dist/components/auth/SolidOTPVerify.tsx +0 -133
  433. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
  434. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
  435. package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
  436. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
  437. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
  438. package/dist/nextAuth/authProviders.d.ts +0 -4
  439. package/dist/nextAuth/authProviders.d.ts.map +0 -1
  440. package/dist/nextAuth/authProviders.js +0 -198
  441. package/dist/nextAuth/authProviders.js.map +0 -1
  442. package/dist/nextAuth/authProviders.tsx +0 -232
  443. package/dist/nextAuth/handleLogout.d.ts +0 -2
  444. package/dist/nextAuth/handleLogout.d.ts.map +0 -1
  445. package/dist/nextAuth/handleLogout.js +0 -36
  446. package/dist/nextAuth/handleLogout.js.map +0 -1
  447. package/dist/nextAuth/handleLogout.tsx +0 -39
  448. package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
  449. package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
  450. package/dist/nextAuth/refreshAccessToken.js +0 -24
  451. package/dist/nextAuth/refreshAccessToken.js.map +0 -1
  452. package/dist/nextAuth/refreshAccessToken.tsx +0 -28
  453. package/dist/redux/features/settingsSlice.d.ts +0 -20
  454. package/dist/redux/features/settingsSlice.d.ts.map +0 -1
  455. package/dist/redux/features/settingsSlice.js +0 -39
  456. package/dist/redux/features/settingsSlice.js.map +0 -1
  457. package/dist/redux/features/settingsSlice.ts +0 -60
@@ -1 +1 @@
1
- {"version":3,"file":"SolidGlobalSearchElement.js","sourceRoot":"","sources":["../../../../src/components/core/common/SolidGlobalSearchElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from \"../../../components/core/common/FilterComponent\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport qs from \"qs\";\nimport { SolidSaveCustomFilterForm } from \"./SolidSaveCustomFilterForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { hydrateRelationRules } from \"../../../helpers/hydrateRelationRules\";\nimport { useSession } from '../../../hooks/useSession'\nimport GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from \"./GroupingComponent\";\nimport { Bookmark, Check, Filter, Pencil, Plus, Search, SearchX, Trash2, X } from \"lucide-react\";\nimport { SolidButton } from \"../../shad-cn-ui/SolidButton\";\nimport { SolidInput } from \"../../shad-cn-ui/SolidInput\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../shad-cn-ui/SolidDialog\";\n\n\nconst getRandomInt = (min: number, max: number) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\ninterface PredefinedSearch {\n name: string;\n description?: string;\n filters: Record<string, any>;\n}\n\nexport type SearchableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n}\n\nexport type GroupableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n type: string;\n ormType: string;\n relationType: string;\n computedFieldValueType: string;\n}\n\nconst extractFields = (nodes: any[] = []): any[] => {\n const result: any[] = [];\n\n for (const node of nodes) {\n if (node?.type === \"field\") {\n result.push(node);\n }\n\n if (Array.isArray(node?.children)) {\n result.push(...extractFields(node.children));\n }\n }\n\n return result;\n};\n\n\nconst transformFiltersToRules = (filter: any, parentRule: number | null = null): FilterRule => {\n if (!filter || typeof filter !== \"object\" || Object.keys(filter).length === 0) {\n throw new Error(\"Invalid filter: expected a non-null object with properties\");\n }\n if (!filter || typeof filter !== \"object\") {\n throw new Error(\"Invalid filter: expected a non-null object\");\n }\n const currentId = idCounter++;\n if (filter[\"$or\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule,\n children: filter[\"$or\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n if (filter[\"$and\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.AND,\n parentRule,\n children: filter[\"$and\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n // Handle single rule condition\n for (const fieldName in filter) {\n const condition = filter[fieldName];\n if (!condition || typeof condition !== \"object\") {\n throw new Error(`Invalid condition for field '${fieldName}'`);\n }\n\n // CASE 1: relation filter → unwrap first\n if (condition?.id && typeof condition?.id === \"object\") {\n for (const matchMode in condition.id) {\n const rawValue = condition.id[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n }\n\n // CASE 2: normal field → loop stays\n for (const matchMode in condition) {\n const rawValue = condition[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n\n\n }\n throw new Error(ERROR_MESSAGES.INVALID_FILTER_STRUCTURE);\n}\n\n\n\n\nlet idCounter = 1;\nconst generateId = () => Date.now() + Math.floor(Math.random() * 1000);\n\n\nconst transformRulesToFilters = (input: any, viewData: any) => {\n\n // Helper function to process individual rules\n const processRule = (rule: any) => {\n if (rule.value !== undefined && rule.value !== null) {\n\n // Ensure rule.value is always an array\n let values = typeof rule.value[0] === \"object\" ? rule.value.map((i: any) => i?.value ? i?.value : i) : rule?.value;\n if (rule.matchMode !== '$in' && rule.matchMode !== '$notIn' && rule.matchMode !== '$between' && rule.matchMode !== '$null' && rule.matchMode !== '$notNull') {\n values = values[0];\n }\n\n\n const fieldMeta = viewData?.data?.solidFieldsMetadata?.[rule.fieldName];\n const isManyToMany = fieldMeta?.type === 'relation' && fieldMeta?.relationType === 'many-to-many';\n\n\n let transformedRule;\n if (isManyToMany) {\n // For many-to-many relations, always use array format for $in/$notIn\n transformedRule = {\n [rule.fieldName]: {\n id: {\n [rule.matchMode]: values // Keep as array\n }\n }\n };\n } else {\n // Rule transformation\n transformedRule = {\n [rule.fieldName]: {\n [rule.matchMode]: values // Assuming `value` is always an array with `value` and `label`\n }\n };\n }\n\n let processedFields;\n if (rule.children && rule.children.length > 0) {\n processedFields = rule.children.map((child: any) => processRuleGroup(child)).filter((child: any) => child != null);;\n }\n if (processedFields) {\n return { ...transformedRule, processedFields }\n }\n return { ...transformedRule }\n\n }\n\n };\n\n // Helper function to process rule groups\n const processRuleGroup = (ruleGroup: any) => {\n const operator = ruleGroup.matchOperator === 'or' ? '$or' : '$and';\n const children = ruleGroup.children.map((child: any) => {\n if (child.type === 'rule') {\n // Process the rule\n return processRule(child);\n } else if (child.type === 'rule_group') {\n // Process the rule group recursively\n return processRuleGroup(child);\n }\n }).filter((child: any) => child != null);\n // If no valid children, return null\n // if (children.length === 0) {\n // return null;\n // }\n\n // If only one child, return it directly without wrapping in operator\n // if (children.length === 1) {\n // return children[0];\n // }\n\n return {\n [operator]: children\n };\n };\n\n\n // Start processing the root rule group\n const filterObject = processRuleGroup(input);\n\n if (!filterObject) {\n return {};\n }\n\n function liftProcessedFields(filters: any) {\n if (!filters || typeof filters !== 'object') return filters;\n\n const processArray = (arr: any) => {\n let newArr = [];\n for (let obj of arr) {\n if (obj && obj.processedFields) {\n let processed: any = processArray(obj.processedFields); // Recursively process nested processedFields\n delete obj.processedFields;\n newArr.push(obj, ...processed);\n } else {\n newArr.push(obj);\n }\n\n for (let key in obj) {\n if (Array.isArray(obj[key])) {\n obj[key] = processArray(obj[key]);\n }\n }\n }\n return newArr;\n }\n\n for (let key in filters) {\n if (Array.isArray(filters[key])) {\n filters[key] = processArray(filters[key]);\n }\n }\n\n return filters;\n }\n\n\n return liftProcessedFields(filterObject)\n\n}\n\n\ntype GroupedType = {\n values: string[];\n searchField: any;\n matchMode: string;\n}\n\n// Build nested condition for relation fields\nfunction buildNestedCondition(path: string, operatorKey: string, value: any) {\n const keys = path.split(\".\").filter(Boolean);\n const leaf = { [operatorKey]: value };\n return keys.reduceRight((acc, key) => ({ [key]: acc }), leaf);\n}\n\nconst tranformSearchToFilters = (input: any) => {\n if (!input || !input.$and) return input;\n\n const grouped: Record<string, GroupedType> = {};\n\n input.$and.forEach(({ fieldName, value, searchField, matchMode }: any) => {\n const val = Array.isArray(value) && value.length === 1 ? value[0] : value;\n\n if (!grouped[fieldName]) {\n grouped[fieldName] = { values: [], searchField: searchField || \"\", matchMode: matchMode || \"$containsi\" };\n }\n\n if (Array.isArray(val)) {\n grouped[fieldName]?.values.push(...val);\n } else {\n grouped[fieldName]?.values.push(val);\n }\n });\n\n // return {\n // $and: Object.entries(grouped).map(([fieldName, values]) => ({\n // [fieldName]: {\n // $containsi: values.length === 1 ? values[0] : values\n // }\n // }))\n // };\n\n const andFilters: any[] = [];\n\n Object.entries(grouped).forEach(([fieldName, value]) => {\n\n const isNested = value.searchField ? value.searchField.includes(\".\") : false;\n\n if (isNested) {\n\n // NESTED: use $eq and expand dot-notation into nested objects\n if (value.values.length === 1) {\n andFilters.push(buildNestedCondition(value.searchField, value.matchMode, value.values[0]));\n } else {\n andFilters.push({\n $or: value.values.map(v => buildNestedCondition(value.searchField, value.matchMode, v)),\n });\n }\n } else {\n\n if (value.values.length === 1) {\n andFilters.push({\n [fieldName]: {\n $containsi: value.values[0]\n }\n });\n } else {\n andFilters.push({\n $or: value.values.map((v) => ({\n [fieldName]: { $containsi: v }\n }))\n });\n }\n }\n });\n\n return {\n $and: andFilters\n };\n}\n\nexport const mergeSearchAndCustomFilters = (transformedFilter: any, newFilter: any, transformedFilterName: string, newFilterName: string) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (transformedFilter && Object.keys(transformedFilter).length > 0) {\n filters[transformedFilterName] = transformedFilter;\n }\n if (newFilter && Object.keys(newFilter).length > 0) {\n filters[newFilterName] = newFilter;\n }\n\n // Return the combined filters object\n return filters;\n}\n\n\nexport const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedFilter: any, preDefinedFilter?: any, groupingRules?: GroupingRule[], aggregationRules?: AggregationRule[]) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (customFilter && Object.keys(customFilter).length > 0) {\n filters[\"custom_filter_predicate\"] = customFilter;\n }\n if (searchFilter && Object.keys(searchFilter).length > 0) {\n filters[\"search_predicate\"] = searchFilter;\n }\n if (savedFilter && Object.keys(savedFilter).length > 0) {\n filters[\"saved_filter_predicate\"] = savedFilter;\n }\n if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {\n filters[\"predefined_search_predicate\"] = preDefinedFilter;\n }\n if (groupingRules && Object.keys(groupingRules).length > 0) {\n filters[\"grouping_rules\"] = groupingRules;\n }\n if (aggregationRules && Object.keys(aggregationRules).length > 0) {\n filters[\"aggregation_rules\"] = aggregationRules;\n }\n // Return the combined filters object\n return filters;\n}\n\nconst SavedFilterList = ({ savedfilter, activeSavedFilter, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter }: any) => {\n const isActive = Number(activeSavedFilter) == savedfilter.id;\n\n return (\n <div className=\"solid-saved-filter-item\" onMouseEnter={onMouseEnter}>\n <div className=\"solid-saved-filter-main-wrap\">\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className={`solid-saved-filter-main w-full ${isActive ? \"is-active\" : \"\"} ${isFocused ? \"solid-search-overlay-option-active\" : \"\"}`}\n onClick={() => applySavedFilter(savedfilter)}\n title={savedfilter?.description}\n >\n {savedfilter.name}\n </SolidButton>\n </div>\n <div className=\"solid-saved-filter-actions\">\n {savedfilter.isSeeded !== true &&\n <>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn\"\n onClick={() => openSavedCustomFilter(savedfilter)}\n >\n <Pencil size={14} />\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn is-danger\"\n onClick={() => {\n setSavedFilterTobeDeleted(savedfilter.id),\n setIsDeleteSQDialogVisible(true);\n }}\n >\n <Trash2 size={14} />\n </SolidButton>\n </>\n }\n\n </div>\n </div>\n )\n}\n\nconst replacePlaceholders = (obj: any, searchValue: string): any => {\n if (typeof obj === 'string') {\n return obj.replace(/\\{\\{search\\}\\}/g, searchValue);\n }\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, searchValue));\n }\n if (obj && typeof obj === 'object') {\n const newObj: any = {};\n for (const key in obj) {\n newObj[key] = replacePlaceholders(obj[key], searchValue);\n }\n return newObj;\n }\n return obj;\n};\n\n\nconst extractChips = (node: any): any[] => {\n if (!node) return [];\n\n // If node has $and\n if (node.$and && Array.isArray(node.$and)) {\n return node.$and.flatMap(extractChips);\n }\n\n // If node has $or\n if (node.$or && Array.isArray(node.$or)) {\n return node.$or.flatMap(extractChips);\n }\n\n // Leaf condition\n const field = Object.keys(node)[0];\n const operatorObj = node[field];\n\n // ✅ Normal case\n if (operatorObj?.$containsi) {\n return [{\n columnName: field,\n value: operatorObj.$containsi,\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: field,\n matchMode: \"$containsi\"\n }];\n }\n // ✅ Nested case (like city.name)\n else if (typeof operatorObj === \"object\") {\n const nestedField = Object.keys(operatorObj)[0];\n const nestedOperatorObj = operatorObj[nestedField];\n\n const operatorKey = nestedOperatorObj\n ? Object.keys(nestedOperatorObj).find(k => k.startsWith(\"$\"))\n : null;\n\n if (operatorKey) {\n return [{\n columnName: field,\n value: nestedOperatorObj[operatorKey],\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: `${field}.${nestedField}`,\n matchMode: operatorKey\n }];\n }\n }\n\n return [];\n};\n\n\n\ntype RelationCache = Map<string, { label: string; value: number }>;\n\n\n\nexport const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handleApplyCustomFilter, showSaveFilterPopup, setShowSaveFilterPopup, filterPredicates }: any, ref) => {\n type OverlayOption =\n | { id: string; kind: \"field\"; field: any }\n | { id: string; kind: \"predefined\"; predefined: any }\n | { id: string; kind: \"saved\"; saved: any };\n type ManagedChipItem = {\n id: string;\n type: \"saved\" | \"search\" | \"predefined\" | \"custom\" | \"grouping\";\n label: string;\n onRemove: () => void;\n onOpen?: () => void;\n };\n\n const defaultState: FilterRule[] = [\n {\n id: 1,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule: null,\n children: [\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n },\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n }\n ]\n }\n ];\n\n const defaultAggregationRules: AggregationRule[] = [\n {\n id: 1,\n operator: \"count\",\n fieldName: \"id\",\n locked: true\n }\n ];\n\n const defaultGroupingRules: GroupingRule[] = [\n { id: 1, fieldName: null, dateGrouping: null }\n ];\n\n const [initialState, setInitialState] = useState(defaultState);\n const pathname = usePathname();\n const searchableEntityLabel =\n viewData?.data?.solidView?.displayName ||\n viewData?.data?.solidView?.model?.displayName ||\n \"records\";\n\n\n const searchParams = useSearchParams() // Converts the query params to a string\n const activeSavedFilter = searchParams?.get(\"savedQuery\");\n\n const router = useRouter();\n\n const chipsRef = useRef<HTMLDivElement | null | any>(null);\n\n // filterRules is used to maintian the ui of custom filter \n // customFilter is used to maintian the transformed filter object of custom filter\n const [filterRules, setFilterRules] = useState<FilterRule[]>(initialState);\n const [customFilter, setCustomFilter] = useState<any | null>(null);\n\n const [fields, setFields] = useState<any[]>([]);\n const [searchableFields, setSearchableFields] = useState<any[]>([]);\n const [groupableFields, setGroupableFields] = useState<GroupableField[]>([]);\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>(defaultGroupingRules);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>(defaultAggregationRules);\n\n // used to show the list of predefined searches \n const [predefinedSearches, setPredefinedSearches] = useState<PredefinedSearch[]>([]);\n\n // used to open / close the custom fitler popup \n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n\n // used to open / close the group fitler popup \n const [showGroupFilterElement, setShowGroupFilterElement] = useState<boolean>(false);\n\n\n // searchChips maintain the ui to display searched query \n // searchFilter maintain the transformed filter of the searched query \n const [searchChips, setSearchChips] = useState<{ columnName?: string; value: string }[]>([]);\n const [searchFilter, setSearchFilter] = useState<any | null>(null);\n\n // predefinedSearchChip maintain the ui to display predefined searches query \n const [predefinedSearchChip, setPredefinedSearchChip] = useState<{ name: string; value: string } | null>(null);\n\n // state to maintain the text typed in the search input box\n const [inputValue, setInputValue] = useState<string | null>(\"\");\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n // flag to prevent un necessary re renders\n const [hasSearched, setHasSearched] = useState<boolean>(false);\n\n // currentSavedFilterData is used to save the whole object of saved filter \n const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();\n const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();\n const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();\n const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);\n\n\n const [savedFilterTobeDeleted, setSavedFilterTobeDeleted] = useState<any>();\n const [isDeleteSQDialogVisible, setIsDeleteSQDialogVisible] = useState<boolean>(false);\n const [savedFilterQueryString, setSavedFilterQueryString] = useState<string>();\n const [showOverlay, setShowOverlay] = useState(false);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const [showChipManager, setShowChipManager] = useState(false);\n const chipManagerRef = useRef<HTMLDivElement | null>(null);\n const chipManagerTriggerRef = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n if (focusedIndex >= 0 && showOverlay) {\n const activeElement = document.querySelector(`.solid-search-overlay-option-active`);\n if (activeElement) {\n activeElement.scrollIntoView({\n block: 'nearest',\n inline: 'start'\n });\n }\n }\n }, [focusedIndex, showOverlay]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const [refreshKey, setRefreshKey] = useState(0);\n\n const [predefinedSearchBaseFilter, setPredefinedSearchBaseFilter] = useState<any>(null);\n\n const [savedFilters, setSavedFilters] = useState([]);\n const [savedFiltersLoaded, setSavedFiltersLoaded] = useState(false);\n\n const entityApi = createSolidEntityApi(\"savedFilters\");\n const {\n useCreateSolidEntityMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n useLazyGetSolidEntitiesQuery\n } = entityApi;\n\n const [\n createEntity,\n { isSuccess: isEntityCreateSuccess, isError: isEntityCreateError, error: entityCreateError },\n ] = useCreateSolidEntityMutation();\n\n const [\n updateEntity,\n { isSuccess: isEntityUpdateSuceess, isError: isEntityUpdateError, error: entityUpdateError },\n ] = useUpdateSolidEntityMutation();\n\n const [\n deleteEntity,\n { isSuccess: isEntityDeleteSuceess, isError: isEntityDeleteError, error: entityDeleteError },\n ] = useDeleteSolidEntityMutation();\n\n const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading: isSavedFilterLoading, error }] = useLazyGetSolidEntitiesQuery();\n\n const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);\n\n\n\n useEffect(() => {\n const fn = async () => {\n if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {\n return;\n }\n setSavedFiltersLoaded(false)\n const filters = {\n $or: [\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { user: { $in: [user?.id] } },\n { isPrivate: { $eq: true } }\n ]\n },\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { isPrivate: { $eq: false } }\n ]\n }\n\n ]\n }\n const queryData: any = {\n offset: 0,\n limit: 10,\n filters: filters,\n populate: [\"model\", \"view\", \"user\"],\n sort: [\"id:desc\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n setSavedFilterQueryString(queryString)\n const savedFilter = await triggerGetSolidEntities(queryString).unwrap();\n\n if (savedFilter) {\n // console.log(\"savedFilter\", savedFilter);\n setSavedFilters(savedFilter?.records)\n }\n setSavedFiltersLoaded(true);\n }\n fn()\n }, [\n activeSavedFilter,\n savedFilterFetchDataRefreshKey,\n viewData?.data?.solidView?.id,\n viewData?.data?.solidView?.model?.id,\n user?.id\n ])\n\n useImperativeHandle(ref, () => ({\n clearFilter: () => {\n setFilterRules(initialState);\n },\n openGroupingDialog: () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n },\n openCustomFilterDialog: () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n }\n }));\n\n useEffect(() => {\n const fn = async () => {\n let searchChips: any;\n let customChips: any;\n if (savedFiltersLoaded) {\n\n if (activeSavedFilter && savedFilters.length === 0) return;\n\n const queryObject = getFilterObjectFromLocalStorage();\n // const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (activeSavedFilter) {\n const currentSavedFilterId = Number(activeSavedFilter);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === currentSavedFilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n }\n }\n } else {\n setCurrentSavedFilterData(null)\n setCurrentSavedFilterQuery(null)\n }\n if (queryObject) {\n if (queryObject) {\n searchChips = queryObject?.search_predicate || null;\n customChips = queryObject?.custom_filter_predicate || null;\n }\n }\n if (searchChips) {\n setSearchFilter(searchChips);\n // const formattedChips = searchChips?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n\n const formattedChips = extractChips(searchChips);\n setSearchChips(formattedChips);\n\n }\n if (customChips && Object.keys(customChips).length !== 0) {\n setCustomFilter(customChips);\n const rules: FilterRule = transformFiltersToRules(customChips);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n const hasGroupingRules = (queryObject?.grouping_rules?.some((rule: any) => rule.fieldName !== null));\n\n if (hasGroupingRules) {\n setGroupingRules(queryObject?.grouping_rules);\n } else {\n // If no grouping rules in localStorage check layout\n const layoutGroupBy = viewData?.data?.solidView?.layout?.attrs?.groupBy;\n\n if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {\n const initialGroupingRules: GroupingRule[] = layoutGroupBy.map((groupStr: string, index: number) => {\n const [fieldName, dateGrouping] = groupStr.split(\":\");\n return {\n id: Date.now() + index,\n fieldName: fieldName || null,\n dateGrouping: (dateGrouping as DateGroupingFormat) || null\n };\n });\n setGroupingRules(initialGroupingRules);\n }\n }\n\n if (queryObject?.aggregation_rules && queryObject?.aggregation_rules !== aggregationRules) {\n setAggregationRules(queryObject?.aggregation_rules);\n }\n\n\n setRefreshKey((prev) => prev + 1)\n setHasSearched(true);\n }\n }\n fn()\n }, [viewData?.data?.solidView?.id, activeSavedFilter, savedFiltersLoaded])\n\n useEffect(() => {\n const fn = async () => {\n if (filterPredicates) {\n if (filterPredicates?.custom_filter_predicate && filterPredicates?.custom_filter_predicate !== customFilter) {\n setCustomFilter(filterPredicates?.custom_filter_predicate);\n const rules: FilterRule = transformFiltersToRules(filterPredicates.custom_filter_predicate);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n if (filterPredicates?.search_predicate && filterPredicates?.search_predicate !== searchFilter) {\n setSearchFilter(filterPredicates?.search_predicate);\n // const formattedChips = filterPredicates.search_predicate?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n const formattedChips = extractChips(filterPredicates.search_predicate);\n setSearchChips(formattedChips);\n\n }\n }\n }\n fn()\n }, [filterPredicates])\n\n useEffect(() => {\n if (viewData?.data?.solidFieldsMetadata) {\n // Reset search state when switching views\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setInputValue(\"\");\n\n\n let fieldsData = viewData?.data?.solidFieldsMetadata;\n // console.log(`fiels data while rendering solid global search element: `);\n // console.log(fieldsData);\n\n const layoutChildren = viewData?.data?.solidView?.layout?.children ?? [];\n const fieldElements = extractFields(layoutChildren);\n\n\n const fieldsList = Object.entries(fieldsData ?? {}).map(([key, value]: any) => {\n const viewFieldElement = fieldElements.find(\n (f: any) => f?.attrs?.name === key\n );\n return {\n name: value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: viewFieldElement?.attrs?.searchMatchMode,\n searchField: viewFieldElement?.attrs?.searchField ?? null,\n isSearchable: viewFieldElement?.attrs?.isSearchable ?? false,\n relationType: value?.relationType ?? null,\n };\n });\n\n const filterableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"mediaSingle\":\n case \"mediaMultiple\":\n return false;\n default:\n return true;\n }\n });\n\n setFields(filterableFieldsList);\n\n const searchableFieldsList = fieldsList.filter((field: any) => {\n if (!field.isSearchable) return false;\n\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n return !!field.searchField;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n const groupableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n if (field.relationType === \"many-to-one\")\n return true;\n return false;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n case \"int\":\n case \"float\":\n case \"boolean\":\n case \"date\":\n case \"datetime\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n // Optionally map to a minimal structure if needed for UI\n let finalSearchableFieldsList: any = searchableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode\n }));\n\n setSearchableFields(finalSearchableFieldsList);\n\n let finalGroupableFieldsList: any = groupableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode,\n type: field.type,\n ormType: field.ormType,\n relationType: field.relationType,\n computedFieldValueType: field.computedFieldValueType\n }));\n\n setGroupableFields(finalGroupableFieldsList)\n\n const predefinedSearchesList = viewData?.data?.solidView?.layout?.attrs?.predefinedSearches || [];\n setPredefinedSearches(predefinedSearchesList);\n }\n // used to open the \n }, [viewData])\n\n useEffect(() => {\n if (chipsRef.current) {\n const inputElement = chipsRef.current.querySelector(\"input\");\n if (inputElement) {\n inputElement.addEventListener(\"input\", (e: any) => {\n setInputValue((e.target as HTMLInputElement).value);\n });\n }\n }\n }, []);\n\n\n const handleAddChip = (columnName?: string) => {\n if (inputValue?.trim()) {\n const fallbackField = searchableFields[0]; // guaranteed object\n if (!fallbackField) return;\n // Support comma-separated values: split, trim and add as separate chips\n const values = inputValue.split(\",\").map(v => v.trim()).filter(v => v !== \"\");\n const fieldName = columnName || fallbackField.fieldName;\n const chipsToAdd = values.map(v => ({\n columnName: fieldName,\n value: v,\n columnDisplayName: fallbackField.displayName,\n searchField: fallbackField.searchField,\n matchMode: fallbackField.matchMode\n }));\n\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n };\n\n const clearCustomFilter = () => {\n setFilterRules(initialState);\n setCustomFilter(null)\n // setPredefinedSearchChip(null)\n // setPredefinedSearchBaseFilter(null)\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n\n const transformCustomFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCustomFilter(finalCustomFilter);\n setShowGlobalSearchElement(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n }\n\n const transformSavedFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCurrentSavedFilterQuery(finalCustomFilter);\n setShowSavedFilterComponent(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n\n }\n\n const applyGrouping = (groupingRules: GroupingRule[], aggregationRules: AggregationRule[]) => {\n setHasSearched(true)\n setShowGroupFilterElement(false);\n setGroupingRules(groupingRules);\n setAggregationRules(aggregationRules);\n setRefreshKey((prev) => prev + 1)\n }\n\n const openCustomFilterDialog = () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n };\n\n const openGroupingDialog = () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n };\n\n useEffect(() => {\n if (refreshKey > 0 && hasSearched) {\n\n const formattedChips = {\n $and: searchChips.map((chip: any) => ({\n fieldName: chip.columnName,\n matchMode: chip.matchMode,\n value: [chip.value],\n searchField: chip.searchField ?? \"\",\n }))\n };\n\n\n const finalSearchFilter = tranformSearchToFilters(formattedChips);\n setSearchFilter(finalSearchFilter);\n\n let finalSavedFilter: any = currentSavedFilterQuery\n const finalPredefinedFilter = predefinedSearchBaseFilter\n\n const finalCustomFilter = customFilter\n const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)\n handleApplyCustomFilter(finalFilter, true);\n setHasSearched(false)\n // }\n }\n }, [refreshKey]);\n\n\n // Handle predefined search selection\n\n const hasCustomFilterChanged = () => {\n if (!predefinedSearchChip || !customFilter || !predefinedSearchBaseFilter) {\n return false;\n }\n // Deep comparison to check if filter has changed\n return JSON.stringify(customFilter) !== JSON.stringify(predefinedSearchBaseFilter);\n };\n\n const openSavedCustomFilter = async (savedfilter: any) => {\n //Open custom filter popup \n // router.push(`?savedQuery=${savedfilter.id}`);\n // setShowGlobalSearchElement(true);\n // // dont refetch the data yet\n // const customFilter = JSON.parse(savedfilter.filterQueryJson);\n // setCustomFilter(customFilter ? customFilter : null);\n // if (customFilter) {\n // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);\n // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);\n // }\n\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n const savedfilterId = savedfilter.id;\n // router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n const rules: FilterRule = transformFiltersToRules(finalSavedFilter ? finalSavedFilter : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const deleteSavedFilter = async () => {\n // delte the saved filter with id \n await deleteEntity(savedFilterTobeDeleted);\n // triggerGetSolidEntities(savedFilterQueryString);\n let parsedSearchParams = searchParams;\n const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (savedFilterTobeDeleted == savedQuery) {\n const urlParams = new URLSearchParams(window.location.search);\n urlParams.delete(\"savedQuery\");\n router.push(`?${urlParams.toString()}`);\n }\n setIsDeleteSQDialogVisible(false);\n setTimeout(() => {\n setSavedFilterFetchDataRefreshKey(prev => prev + 1)\n }, 500)\n }\n const handleSaveFilter = async (formValues: any) => {\n setShowSaveFilterPopup(false)\n\n try {\n if (formValues.id) {\n const filterJson = currentSavedFilterQuery;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n\n await updateEntity({ id: +formValues.id, data: formData }).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setPredefinedSearchBaseFilter(null);\n setTimeout(() => {\n router.push(`?savedQuery=${formValues.id}`);\n }, 500)\n } else {\n\n const filterJson = customFilter;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n const result = await createEntity(formData).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setTimeout(() => {\n router.push(`?savedQuery=${result.data.id}`);\n }, 500)\n\n }\n } catch (error) {\n\n }\n }\n\n\n\n useEffect(() => {\n // Explicitly type the event as a MouseEvent\n function handleClickOutside(event: MouseEvent) {\n if (overlayRef.current && !overlayRef.current.contains(event.target as Node)) {\n setShowOverlay(false);\n }\n }\n if (showOverlay) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [showOverlay]);\n\n useEffect(() => {\n function handleChipManagerClickOutside(event: MouseEvent) {\n const targetNode = event.target as Node;\n if (chipManagerRef.current?.contains(targetNode)) return;\n if (chipManagerTriggerRef.current?.contains(targetNode)) return;\n setShowChipManager(false);\n }\n\n if (showChipManager) {\n document.addEventListener(\"mousedown\", handleChipManagerClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleChipManagerClickOutside);\n };\n }, [showChipManager]);\n\n const CustomChip = () => {\n // console.log(\"customFilter\", customFilter);\n const ruleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n setShowGlobalSearchElement(true)\n }\n }>\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{ruleCount}</strong> rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={clearCustomFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n //saved filter related code start\n\n const applySavedFilter = (savedfilter: any) => {\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const removeSavedFilter = () => {\n const params = new URLSearchParams(searchParams.toString());\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null)\n if (params.has(\"savedQuery\")) {\n params.delete(\"savedQuery\");\n const newUrl = params.toString()\n ? `${pathname}?${params.toString()}`\n : pathname;\n router.push(newUrl);\n }\n }\n\n const SavedFiltersChip = () => {\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n const fn = async () => {\n if (currentSavedFilterQuery) {\n const rules: FilterRule = transformFiltersToRules(currentSavedFilterQuery ? currentSavedFilterQuery : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n fn()\n }\n }\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{currentSavedFilterData?.name}</strong></span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeSavedFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n const removeGrouping = () => {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n\n const GroupingChip = () => {\n return (\n <li className=\"solid-global-search-chip\">\n <div className=\"flex align-items-center gap-2\">\n <div className=\"flex align-items-center gap-2\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\n onClick={() => setShowGroupFilterElement(true)}\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{groupingRules.length}</strong> Grouping rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeGrouping} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n\n\n //saved filter related code end\n\n\n // search related code start\n\n const handleRemoveChipGroup = (columnName: string) => {\n const updatedChips = searchChips.filter(chip => chip.columnName !== columnName);\n setSearchChips(updatedChips);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n\n };\n\n const groupedSearchChips = searchChips.reduce((acc: Record<string, string[]>, chip) => {\n const key = chip.columnName;\n if (!key) return acc; // skip if undefined\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(chip.value);\n return acc;\n }, {});\n\n const customRuleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n const managedChipItems = useMemo<ManagedChipItem[]>(() => {\n const items: ManagedChipItem[] = [];\n\n if (currentSavedFilterData?.name) {\n items.push({\n id: \"saved-filter\",\n type: \"saved\",\n label: `Saved: ${currentSavedFilterData.name}`,\n onRemove: () => removeSavedFilter(),\n });\n }\n\n if (predefinedSearchChip?.name && predefinedSearchChip?.value) {\n items.push({\n id: \"predefined-search\",\n type: \"predefined\",\n label: `Predefined: ${predefinedSearchChip.name} (${predefinedSearchChip.value})`,\n onRemove: () => removePredefinedSearchChip(),\n });\n }\n\n if (customFilter && customRuleCount > 0) {\n items.push({\n id: \"custom-filter\",\n type: \"custom\",\n label: `${customRuleCount} custom rules applied`,\n onRemove: () => clearCustomFilter(),\n onOpen:() => setShowGlobalSearchElement(true)\n });\n }\n\n if (groupingRules.length > 0 && groupingRules.some((r) => r.fieldName !== null)) {\n items.push({\n id: \"grouping-rules\",\n type: \"grouping\",\n label: `${groupingRules.length} grouping rules applied`,\n onRemove: () => removeGrouping(),\n onOpen:() => setShowGroupFilterElement(true)\n\n });\n }\n\n Object.entries(groupedSearchChips).forEach(([column, values]) => {\n const fieldMeta = searchableFields.find((field) => field.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n items.push({\n id: `search:${column}`,\n type: \"search\",\n label: `${columnDisplayName}: ${values.join(\" or \")}`,\n onRemove: () => handleRemoveChipGroup(column),\n });\n });\n\n return items;\n }, [\n currentSavedFilterData,\n predefinedSearchChip,\n customFilter,\n customRuleCount,\n groupingRules,\n groupedSearchChips,\n searchableFields,\n ]);\n\n const MAX_VISIBLE_CHIPS = 3;\n const visibleChipItems = managedChipItems.slice(0, MAX_VISIBLE_CHIPS);\n const hiddenChipItems = managedChipItems.slice(MAX_VISIBLE_CHIPS);\n const hiddenChipCount = hiddenChipItems.length;\n\n const clearAllAppliedChips = () => {\n if (managedChipItems.length === 0) return;\n\n if (activeSavedFilter || currentSavedFilterData) {\n removeSavedFilter();\n }\n\n setSearchChips([]);\n setSearchFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setCustomFilter(null);\n setFilterRules(initialState);\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setShowChipManager(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n };\n\n useEffect(() => {\n if (managedChipItems.length === 0 && showChipManager) {\n setShowChipManager(false);\n }\n }, [managedChipItems.length, showChipManager]);\n\n\n const overlayOptions = useMemo<OverlayOption[]>(() => {\n const currentValue = inputValue?.trim() || \"\";\n const fields: OverlayOption[] = currentValue\n ? searchableFields.map((field: any) => ({\n id: `field:${field.fieldName}`,\n kind: \"field\" as const,\n field\n }))\n : [];\n const predefined: OverlayOption[] =\n currentValue && predefinedSearches?.length\n ? predefinedSearches.map((p: any, idx: number) => ({\n id: `predefined:${p.name || idx}`,\n kind: \"predefined\" as const,\n predefined: p,\n }))\n : [];\n const saved: OverlayOption[] = (savedFilters || []).map((s: any) => ({\n id: `saved:${s.id}`,\n kind: \"saved\" as const,\n saved: s,\n }));\n\n return [...fields, ...predefined, ...saved];\n }, [inputValue, searchableFields, predefinedSearches, savedFilters]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const currentValue = inputValue?.trim() || \"\";\n\n const applyFieldOption = (value: any) => {\n const trimmed = inputValue?.trim();\n if (!trimmed) return;\n const values = trimmed.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n setShowOverlay(false);\n };\n\n if ((e.key === \"ArrowDown\" || e.key === \"ArrowUp\") && overlayOptions.length > 0) {\n e.preventDefault();\n setShowOverlay(true);\n const nextIndex =\n e.key === \"ArrowDown\"\n ? (focusedIndex + 1) % overlayOptions.length\n : (focusedIndex <= 0 ? overlayOptions.length - 1 : focusedIndex - 1);\n setFocusedIndex(nextIndex);\n return;\n }\n\n if (e.key === \"Enter\") {\n if (currentValue || focusedIndex >= 0) {\n e.preventDefault();\n const activeOption = overlayOptions[focusedIndex] || (currentValue ? overlayOptions[0] : null);\n\n if (activeOption?.kind === \"field\") {\n applyFieldOption(activeOption.field);\n } else if (activeOption?.kind === \"predefined\") {\n handlePredefinedSearch(activeOption.predefined);\n } else if (activeOption?.kind === \"saved\") {\n applySavedFilter(activeOption.saved);\n } else if (currentValue) {\n handleAddChip();\n setShowOverlay(false);\n }\n }\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n if (searchChips.length > 0) {\n setSearchChips((prev) => prev.slice(0, -1));\n } else if (customFilter) {\n setCustomFilter(null);\n setFilterRules(initialState);\n } else if (predefinedSearchChip) {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n } else if (activeSavedFilter) {\n removeSavedFilter();\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n }\n };\n\n useEffect(() => {\n if (!showOverlay) {\n setFocusedIndex(-1);\n }\n }, [showOverlay]);\n\n const SearchChip = () => (\n <>\n {Object.entries(groupedSearchChips).map(([column, values]) => {\n const fieldMeta = searchableFields.find(f => f.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n\n return (\n <li key={column}>\n <div className=\"search-filter-chip-type\">\n <div>{columnDisplayName}</div>\n {values.map((value, index) => (\n <React.Fragment>\n {/* displayname */}\n <span key={index} className=\"custom-chip-value\">{value}\n </span>\n {index < values.length - 1 &&\n <span className=\"custom-chip-or\">or</span>\n }\n </React.Fragment>\n ))}\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={() => handleRemoveChipGroup(column)}>\n <X size={14} />\n </button>\n </div>\n </li>\n )\n })}\n </>\n );\n\n // search related code end\n\n\n // predefinedfilter related code start\n\n const handlePredefinedSearch = (predefinedSearch: any) => {\n if (!inputValue?.trim()) return;\n\n if (!predefinedSearch?.filters) {\n console.error('Invalid predefined search: missing filters', predefinedSearch);\n return;\n }\n\n try {\n // Replace {{ search }} placeholders with actual search value\n const processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());\n\n // Clear all existing filters and searches\n // setSearchChips([]);\n // setSearchFilter(null);\n // setFilterRules(initialState);\n // setCustomFilter(null)\n // removeSavedFilter();\n // Set the predefined search chip\n setPredefinedSearchChip({\n name: predefinedSearch.name,\n value: inputValue.trim()\n });\n\n setPredefinedSearchBaseFilter(processedFilter);\n\n // Apply the predefined search filter as custom filter\n // setCustomFilter(processedFilter);\n\n // Clear input and close overlay\n setInputValue(\"\");\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n } catch (error) {\n console.error('Error applying predefined search:', error);\n // Optionally show user-friendly error message\n }\n };\n\n\n const removePredefinedSearchChip = () => {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null)\n setCustomFilter(null);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n };\n\n const PredefinedSearchChip = () => (\n <li>\n <div className=\"search-filter-chip-type\">\n <div className=\"flex align-items-center gap-2\">\n <strong>{predefinedSearchChip?.name}:</strong>\n <span className=\"custom-chip-value\">{predefinedSearchChip?.value}</span>\n </div>\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={removePredefinedSearchChip}>\n <X size={14} />\n </button>\n </div>\n </li>\n );\n\n // predefinedfilter related code end\n\n return (\n <>\n <div className=\"flex justify-content-center solid-custom-filter-wrapper relative\">\n <div className=\"solid-global-search-element\">\n <ul className=\"solid-global-search-chip-list\">\n {visibleChipItems.map((chip) => (\n <li key={chip.id}>\n <div className={`search-filter-chip-type solid-chip-pill solid-chip-tone-${chip.type}`}>\n <span className=\"custom-chip-value solid-chip-pill-label\" title={chip.label}>\n {chip.label}\n </span>\n <button\n type=\"button\"\n className=\"solid-chip-pill-remove\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n </li>\n ))}\n {hiddenChipCount > 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n +{hiddenChipCount} more\n </button>\n </li>\n )}\n {managedChipItems.length > 0 && hiddenChipCount === 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger solid-chip-manage-trigger-secondary\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n Manage\n </button>\n </li>\n )}\n <li ref={chipsRef} className=\"solid-global-search-input-item\">\n <div className=\"relative solid-global-search-element-wrapper\">\n <SolidInput\n className=\"solid-global-search-input\"\n value={inputValue || \"\"}\n placeholder=\"Search.\"\n onChange={(e) => {\n setInputValue(e.target.value);\n setShowChipManager(false);\n setShowOverlay(true);\n setFocusedIndex(-1);\n }}\n onFocus={() => {\n setShowChipManager(false);\n if (inputValue?.trim()) setShowOverlay(true);\n }}\n onBlur={() => {\n // Delay so you can click buttons inside overlay\n setTimeout(() => setShowOverlay(false), 150);\n }}\n\n onKeyDown={handleKeyDown}\n />\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setShowChipManager(false);\n setShowOverlay(true);\n }}\n className=\"custom-filter-button solid-global-search-trigger\"\n >\n <Search size={14} />\n </SolidButton>\n </div>\n </li>\n </ul>\n </div>\n\n {showChipManager && managedChipItems.length > 0 && (\n <div ref={chipManagerRef} className=\"absolute z-5 solid-chip-manager-panel\">\n <div className=\"solid-chip-manager-header\">\n <div className=\"solid-chip-manager-title\">Applied chips ({managedChipItems.length})</div>\n <button type=\"button\" className=\"solid-chip-manager-clear-btn\" onClick={clearAllAppliedChips}>\n Clear all\n </button>\n </div>\n <div className=\"solid-chip-manager-body\">\n {managedChipItems.map((chip) => (\n <div key={`manage-${chip.id}`} className={`solid-chip-manager-item solid-chip-tone-${chip.type}`} onClick={() => {\n if (chip.id == \"custom-filter\" || chip.id == \"grouping-rules\") {\n if(chip.onOpen){\n chip.onOpen()\n }\n }\n }\n }>\n <span className=\"solid-chip-manager-item-label\" title={chip.label}>\n {chip.label}\n </span>\n <button\n type=\"button\"\n className=\"solid-chip-manager-item-remove\"\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {showOverlay && (\n <div ref={overlayRef} className=\"absolute w-full z-5 shadow-2 solid-search-overlay-pannel\">\n <div className=\"solid-search-overlay-scroll\">\n {inputValue ? (\n <>\n <div className=\"custom-filter-search-options solid-search-overlay-section px-3 py-1 flex flex-column\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon\">\n <Search size={13} />\n <span>Search by fields</span>\n </h6>\n {searchableFields.length > 0 ? (\n searchableFields.map((value: any, index: number) => {\n return (\n <SolidButton\n key={index}\n variant=\"ghost\"\n size=\"sm\"\n className={`flex gap-1 text-color solid-search-overlay-option ${focusedIndex === index ? \"solid-search-overlay-option-active\" : \"\"} justify-content-start`}\n onMouseDown={(e) => {\n e.preventDefault();\n const currentValue = inputValue?.trim();\n if (currentValue) {\n const values = currentValue.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n setShowOverlay(false);\n }\n }}\n onMouseEnter={() => setFocusedIndex(index)}\n >\n Search <strong style={{paddingLeft:\"2px\"}}>{value.displayName}</strong> &nbsp; for:&nbsp; <span className=\"font-bold text-color\">{inputValue}</span>\n </SolidButton>\n )\n })\n ) : (\n <div className=\"solid-search-overlay-no-fields\">\n <div className=\"solid-search-overlay-no-fields-icon\">\n <SearchX size={14} />\n </div>\n <div className=\"solid-search-overlay-no-fields-text\">\n No fields configured for search.\n </div>\n </div>\n )}\n </div>\n {predefinedSearches && predefinedSearches.length > 0 && (\n <>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"custom-filter-search-options solid-search-overlay-section px-3 py-1 flex flex-column\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title\">Predefined searches</h6>\n {predefinedSearches.map((predefinedSearch: any, index: number) => (\n <SolidButton\n key={index}\n variant=\"ghost\"\n size=\"sm\"\n className={`flex flex-column align-items-start gap-1 text-color solid-search-overlay-option solid-search-overlay-option-stacked ${focusedIndex === searchableFields.length + index ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n handlePredefinedSearch(predefinedSearch);\n }}\n onMouseEnter={() => setFocusedIndex(searchableFields.length + index)}\n >\n <div className=\"flex gap-1 align-items-center\">\n <strong>{predefinedSearch.name}:</strong>\n <span className=\"font-bold text-color\">{inputValue}</span>\n </div>\n <div className=\"text-xs\">{predefinedSearch.description}</div>\n </SolidButton>\n ))}\n </div>\n </>\n )}\n </>\n ) :\n <>\n <div className=\"p-3 solid-search-overlay-empty\">\n <div className=\"solid-search-overlay-panel-callout\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Search size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-empty-title\">\n Start typing to search\n </div>\n <div className=\"solid-search-overlay-empty-subtitle\">\n Start typing in search input to see all fields on which you can search {searchableEntityLabel} by.\n </div>\n </div>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n </>\n }\n {savedFilters.length > 0 &&\n <>\n <div className=\"p-3 solid-search-overlay-section\">\n <div className=\"solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Bookmark size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <p className=\"solid-search-overlay-heading solid-search-overlay-section-title\">Saved filters</p>\n <div className=\"solid-search-overlay-empty-subtitle\">\n Reusable filter sets available for this view.\n </div>\n </div>\n </div>\n <div className=\"flex flex-column solid-search-overlay-saved-list\">\n {savedFilters.map((savedfilter: any, index: number) => (\n <SavedFilterList\n key={savedfilter.id}\n savedfilter={savedfilter}\n activeSavedFilter={activeSavedFilter}\n applySavedFilter={applySavedFilter}\n openSavedCustomFilter={openSavedCustomFilter}\n setSavedFilterTobeDeleted={setSavedFilterTobeDeleted}\n setIsDeleteSQDialogVisible={setIsDeleteSQDialogVisible}\n isFocused={overlayOptions[focusedIndex]?.id === `saved:${savedfilter.id}`}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex(o => o.id === `saved:${savedfilter.id}`);\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n />\n ))}\n </div>\n </div>\n </>\n }\n </div>\n\n <div className=\"solid-search-overlay-footer\">\n <button\n type=\"button\"\n className=\"px-3 py-2 flex flex-column solid-search-overlay-footer-action\"\n onClick={openCustomFilterDialog}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Filter size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Click here to apply custom filters\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Use custom filters to apply conditions on any field using any operator.\n </div>\n </div>\n </div>\n </button>\n {viewType === \"tree\" && (\n <button\n type=\"button\"\n className=\"px-3 py-2 flex flex-column solid-search-overlay-footer-action solid-search-overlay-footer-action-secondary\"\n onClick={openGroupingDialog}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Plus size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Click here to do custom grouping\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Configure grouping rules and aggregations for the tree view.\n </div>\n </div>\n </div>\n </button>\n )}\n </div>\n </div>\n )\n }\n <SolidDialog open={showGlobalSearchElement} onOpenChange={setShowGlobalSearchElement} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Add Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Apply conditions on any field with operators.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={filterRules} setFilterRules={setFilterRules} transformFilterRules={transformCustomFilterRules} closeDialog={() => setShowGlobalSearchElement(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showGroupFilterElement} onOpenChange={setShowGroupFilterElement} className=\"solid-global-search-filter solid-filter-dialog-shell solid-filter-dialog-shell-grouping\" style={{ width: \"min(560px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Grouping</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Configure grouping and aggregation.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {groupableFields.length > 0 &&\n <GroupingComponent\n viewData={viewData}\n fields={groupableFields}\n groupingRules={groupingRules}\n setGroupingRules={setGroupingRules}\n aggregationRules={aggregationRules}\n setAggregationRules={setAggregationRules}\n applyGrouping={applyGrouping}\n closeDialog={() => setShowGroupFilterElement(false)}\n ></GroupingComponent>\n }\n </SolidDialogBody>\n </SolidDialog >\n <SolidDialog open={showSavedFilterComponent} onOpenChange={setShowSavedFilterComponent} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Saved Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Review and refine the saved filter conditions.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={currentSavedFilterRules} setFilterRules={setCurrentSavedFilterRules} transformFilterRules={transformSavedFilterRules} closeDialog={() => setShowSavedFilterComponent(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showSaveFilterPopup} onOpenChange={setShowSaveFilterPopup} className=\"solid-custom-filter-dialog solid-save-filter-dialog\" style={{ width: \"min(420px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Save Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Name this filter so you can reuse it later.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <SolidSaveCustomFilterForm currentSavedFilterData={currentSavedFilterData} handleSaveFilter={handleSaveFilter} closeDialog={() => setShowSaveFilterPopup(false)}></SolidSaveCustomFilterForm>\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog open={isDeleteSQDialogVisible} onOpenChange={setIsDeleteSQDialogVisible} className=\"solid-confirm-dialog\" style={{ width: \"min(420px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogDescription>Are you sure you want to delete the {currentSavedFilterData?.name} saved query?</SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogFooter className=\"justify-content-center\">\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={deleteSavedFilter}>\n <Check size={14} />\n Yes\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setIsDeleteSQDialogVisible(false)}>\n <X size={14} />\n No\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div >\n </>\n )\n});\n"]}
1
+ {"version":3,"file":"SolidGlobalSearchElement.js","sourceRoot":"","sources":["../../../../src/components/core/common/SolidGlobalSearchElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from \"../../../components/core/common/FilterComponent\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport qs from \"qs\";\nimport { SolidSaveCustomFilterForm } from \"./SolidSaveCustomFilterForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { hydrateRelationRules } from \"../../../helpers/hydrateRelationRules\";\nimport { useSession } from '../../../hooks/useSession'\nimport GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from \"./GroupingComponent\";\nimport { Bookmark, Check, Filter, Pencil, Plus, Search, SearchX, Trash2, X } from \"lucide-react\";\nimport { SolidButton } from \"../../shad-cn-ui/SolidButton\";\nimport { SolidInput } from \"../../shad-cn-ui/SolidInput\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../shad-cn-ui/SolidDialog\";\n\n\nconst getRandomInt = (min: number, max: number) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\ninterface PredefinedSearch {\n name: string;\n description?: string;\n filters: Record<string, any>;\n}\n\nexport type SearchableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n}\n\nexport type GroupableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n type: string;\n ormType: string;\n relationType: string;\n computedFieldValueType: string;\n}\n\nconst extractFields = (nodes: any[] = []): any[] => {\n const result: any[] = [];\n\n for (const node of nodes) {\n if (node?.type === \"field\") {\n result.push(node);\n }\n\n if (Array.isArray(node?.children)) {\n result.push(...extractFields(node.children));\n }\n }\n\n return result;\n};\n\n\nconst transformFiltersToRules = (filter: any, parentRule: number | null = null): FilterRule => {\n if (!filter || typeof filter !== \"object\" || Object.keys(filter).length === 0) {\n throw new Error(\"Invalid filter: expected a non-null object with properties\");\n }\n if (!filter || typeof filter !== \"object\") {\n throw new Error(\"Invalid filter: expected a non-null object\");\n }\n const currentId = idCounter++;\n if (filter[\"$or\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule,\n children: filter[\"$or\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n if (filter[\"$and\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.AND,\n parentRule,\n children: filter[\"$and\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n // Handle single rule condition\n for (const fieldName in filter) {\n const condition = filter[fieldName];\n if (!condition || typeof condition !== \"object\") {\n throw new Error(`Invalid condition for field '${fieldName}'`);\n }\n\n // CASE 1: relation filter → unwrap first\n if (condition?.id && typeof condition?.id === \"object\") {\n for (const matchMode in condition.id) {\n const rawValue = condition.id[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n }\n\n // CASE 2: normal field → loop stays\n for (const matchMode in condition) {\n const rawValue = condition[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n\n\n }\n throw new Error(ERROR_MESSAGES.INVALID_FILTER_STRUCTURE);\n}\n\n\n\n\nlet idCounter = 1;\nconst generateId = () => Date.now() + Math.floor(Math.random() * 1000);\n\n\nconst transformRulesToFilters = (input: any, viewData: any) => {\n\n // Helper function to process individual rules\n const processRule = (rule: any) => {\n if (rule.value !== undefined && rule.value !== null) {\n\n // Ensure rule.value is always an array\n let values = typeof rule.value[0] === \"object\" ? rule.value.map((i: any) => i?.value ? i?.value : i) : rule?.value;\n if (rule.matchMode !== '$in' && rule.matchMode !== '$notIn' && rule.matchMode !== '$between' && rule.matchMode !== '$null' && rule.matchMode !== '$notNull') {\n values = values[0];\n }\n\n\n const fieldMeta = viewData?.data?.solidFieldsMetadata?.[rule.fieldName];\n const isManyToMany = fieldMeta?.type === 'relation' && fieldMeta?.relationType === 'many-to-many';\n\n\n let transformedRule;\n if (isManyToMany) {\n // For many-to-many relations, always use array format for $in/$notIn\n transformedRule = {\n [rule.fieldName]: {\n id: {\n [rule.matchMode]: values // Keep as array\n }\n }\n };\n } else {\n // Rule transformation\n transformedRule = {\n [rule.fieldName]: {\n [rule.matchMode]: values // Assuming `value` is always an array with `value` and `label`\n }\n };\n }\n\n let processedFields;\n if (rule.children && rule.children.length > 0) {\n processedFields = rule.children.map((child: any) => processRuleGroup(child)).filter((child: any) => child != null);;\n }\n if (processedFields) {\n return { ...transformedRule, processedFields }\n }\n return { ...transformedRule }\n\n }\n\n };\n\n // Helper function to process rule groups\n const processRuleGroup = (ruleGroup: any) => {\n const operator = ruleGroup.matchOperator === 'or' ? '$or' : '$and';\n const children = ruleGroup.children.map((child: any) => {\n if (child.type === 'rule') {\n // Process the rule\n return processRule(child);\n } else if (child.type === 'rule_group') {\n // Process the rule group recursively\n return processRuleGroup(child);\n }\n }).filter((child: any) => child != null);\n // If no valid children, return null\n // if (children.length === 0) {\n // return null;\n // }\n\n // If only one child, return it directly without wrapping in operator\n // if (children.length === 1) {\n // return children[0];\n // }\n\n return {\n [operator]: children\n };\n };\n\n\n // Start processing the root rule group\n const filterObject = processRuleGroup(input);\n\n if (!filterObject) {\n return {};\n }\n\n function liftProcessedFields(filters: any) {\n if (!filters || typeof filters !== 'object') return filters;\n\n const processArray = (arr: any) => {\n let newArr = [];\n for (let obj of arr) {\n if (obj && obj.processedFields) {\n let processed: any = processArray(obj.processedFields); // Recursively process nested processedFields\n delete obj.processedFields;\n newArr.push(obj, ...processed);\n } else {\n newArr.push(obj);\n }\n\n for (let key in obj) {\n if (Array.isArray(obj[key])) {\n obj[key] = processArray(obj[key]);\n }\n }\n }\n return newArr;\n }\n\n for (let key in filters) {\n if (Array.isArray(filters[key])) {\n filters[key] = processArray(filters[key]);\n }\n }\n\n return filters;\n }\n\n\n return liftProcessedFields(filterObject)\n\n}\n\n\ntype GroupedType = {\n values: string[];\n searchField: any;\n matchMode: string;\n}\n\n// Build nested condition for relation fields\nfunction buildNestedCondition(path: string, operatorKey: string, value: any) {\n const keys = path.split(\".\").filter(Boolean);\n const leaf = { [operatorKey]: value };\n return keys.reduceRight((acc, key) => ({ [key]: acc }), leaf);\n}\n\nconst tranformSearchToFilters = (input: any) => {\n if (!input || !input.$and) return input;\n\n const grouped: Record<string, GroupedType> = {};\n\n input.$and.forEach(({ fieldName, value, searchField, matchMode }: any) => {\n const val = Array.isArray(value) && value.length === 1 ? value[0] : value;\n\n if (!grouped[fieldName]) {\n grouped[fieldName] = { values: [], searchField: searchField || \"\", matchMode: matchMode || \"$containsi\" };\n }\n\n if (Array.isArray(val)) {\n grouped[fieldName]?.values.push(...val);\n } else {\n grouped[fieldName]?.values.push(val);\n }\n });\n\n // return {\n // $and: Object.entries(grouped).map(([fieldName, values]) => ({\n // [fieldName]: {\n // $containsi: values.length === 1 ? values[0] : values\n // }\n // }))\n // };\n\n const andFilters: any[] = [];\n\n Object.entries(grouped).forEach(([fieldName, value]) => {\n\n const isNested = value.searchField ? value.searchField.includes(\".\") : false;\n\n if (isNested) {\n\n // NESTED: use $eq and expand dot-notation into nested objects\n if (value.values.length === 1) {\n andFilters.push(buildNestedCondition(value.searchField, value.matchMode, value.values[0]));\n } else {\n andFilters.push({\n $or: value.values.map(v => buildNestedCondition(value.searchField, value.matchMode, v)),\n });\n }\n } else {\n\n if (value.values.length === 1) {\n andFilters.push({\n [fieldName]: {\n $containsi: value.values[0]\n }\n });\n } else {\n andFilters.push({\n $or: value.values.map((v) => ({\n [fieldName]: { $containsi: v }\n }))\n });\n }\n }\n });\n\n return {\n $and: andFilters\n };\n}\n\nexport const mergeSearchAndCustomFilters = (transformedFilter: any, newFilter: any, transformedFilterName: string, newFilterName: string) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (transformedFilter && Object.keys(transformedFilter).length > 0) {\n filters[transformedFilterName] = transformedFilter;\n }\n if (newFilter && Object.keys(newFilter).length > 0) {\n filters[newFilterName] = newFilter;\n }\n\n // Return the combined filters object\n return filters;\n}\n\n\nexport const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedFilter: any, preDefinedFilter?: any, groupingRules?: GroupingRule[], aggregationRules?: AggregationRule[]) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (customFilter && Object.keys(customFilter).length > 0) {\n filters[\"custom_filter_predicate\"] = customFilter;\n }\n if (searchFilter && Object.keys(searchFilter).length > 0) {\n filters[\"search_predicate\"] = searchFilter;\n }\n if (savedFilter && Object.keys(savedFilter).length > 0) {\n filters[\"saved_filter_predicate\"] = savedFilter;\n }\n if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {\n filters[\"predefined_search_predicate\"] = preDefinedFilter;\n }\n if (groupingRules && Object.keys(groupingRules).length > 0) {\n filters[\"grouping_rules\"] = groupingRules;\n }\n if (aggregationRules && Object.keys(aggregationRules).length > 0) {\n filters[\"aggregation_rules\"] = aggregationRules;\n }\n // Return the combined filters object\n return filters;\n}\n\nconst SavedFilterList = ({ savedfilter, activeSavedFilter, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter }: any) => {\n const isActive = Number(activeSavedFilter) == savedfilter.id;\n\n return (\n <div className=\"solid-saved-filter-item\" onMouseEnter={onMouseEnter}>\n <div className=\"solid-saved-filter-main-wrap\">\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className={`solid-saved-filter-main w-full ${isActive ? \"is-active\" : \"\"} ${isFocused ? \"solid-search-overlay-option-active\" : \"\"}`}\n onClick={() => applySavedFilter(savedfilter)}\n title={savedfilter?.description}\n >\n {savedfilter.name}\n </SolidButton>\n </div>\n <div className=\"solid-saved-filter-actions\">\n {savedfilter.isSeeded !== true &&\n <>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn\"\n onClick={() => openSavedCustomFilter(savedfilter)}\n >\n <Pencil size={14} />\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn is-danger\"\n onClick={() => {\n setSavedFilterTobeDeleted(savedfilter.id),\n setIsDeleteSQDialogVisible(true);\n }}\n >\n <Trash2 size={14} />\n </SolidButton>\n </>\n }\n\n </div>\n </div>\n )\n}\n\nconst replacePlaceholders = (obj: any, searchValue: string): any => {\n if (typeof obj === 'string') {\n return obj.replace(/\\{\\{search\\}\\}/g, searchValue);\n }\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, searchValue));\n }\n if (obj && typeof obj === 'object') {\n const newObj: any = {};\n for (const key in obj) {\n newObj[key] = replacePlaceholders(obj[key], searchValue);\n }\n return newObj;\n }\n return obj;\n};\n\n\nconst extractChips = (node: any): any[] => {\n if (!node) return [];\n\n // If node has $and\n if (node.$and && Array.isArray(node.$and)) {\n return node.$and.flatMap(extractChips);\n }\n\n // If node has $or\n if (node.$or && Array.isArray(node.$or)) {\n return node.$or.flatMap(extractChips);\n }\n\n // Leaf condition\n const field = Object.keys(node)[0];\n const operatorObj = node[field];\n\n // ✅ Normal case\n if (operatorObj?.$containsi) {\n return [{\n columnName: field,\n value: operatorObj.$containsi,\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: field,\n matchMode: \"$containsi\"\n }];\n }\n // ✅ Nested case (like city.name)\n else if (typeof operatorObj === \"object\") {\n const nestedField = Object.keys(operatorObj)[0];\n const nestedOperatorObj = operatorObj[nestedField];\n\n const operatorKey = nestedOperatorObj\n ? Object.keys(nestedOperatorObj).find(k => k.startsWith(\"$\"))\n : null;\n\n if (operatorKey) {\n return [{\n columnName: field,\n value: nestedOperatorObj[operatorKey],\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: `${field}.${nestedField}`,\n matchMode: operatorKey\n }];\n }\n }\n\n return [];\n};\n\n\n\ntype RelationCache = Map<string, { label: string; value: number }>;\n\n\n\nexport const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handleApplyCustomFilter, showSaveFilterPopup, setShowSaveFilterPopup, filterPredicates }: any, ref) => {\n type OverlayOption =\n | { id: string; kind: \"field\"; field: any }\n | { id: string; kind: \"predefined\"; predefined: any }\n | { id: string; kind: \"saved\"; saved: any };\n type ManagedChipItem = {\n id: string;\n type: \"saved\" | \"search\" | \"predefined\" | \"custom\" | \"grouping\";\n label: string;\n onRemove: () => void;\n onOpen?: () => void;\n };\n\n const defaultState: FilterRule[] = [\n {\n id: 1,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule: null,\n children: [\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n },\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n }\n ]\n }\n ];\n\n const defaultAggregationRules: AggregationRule[] = [\n {\n id: 1,\n operator: \"count\",\n fieldName: \"id\",\n locked: true\n }\n ];\n\n const defaultGroupingRules: GroupingRule[] = [\n { id: 1, fieldName: null, dateGrouping: null }\n ];\n\n const [initialState, setInitialState] = useState(defaultState);\n const pathname = usePathname();\n const searchableEntityLabel =\n viewData?.data?.solidView?.displayName ||\n viewData?.data?.solidView?.model?.displayName ||\n \"records\";\n\n\n const searchParams = useSearchParams() // Converts the query params to a string\n const activeSavedFilter = searchParams?.get(\"savedQuery\");\n\n const router = useRouter();\n\n const chipsRef = useRef<HTMLDivElement | null | any>(null);\n\n // filterRules is used to maintian the ui of custom filter \n // customFilter is used to maintian the transformed filter object of custom filter\n const [filterRules, setFilterRules] = useState<FilterRule[]>(initialState);\n const [customFilter, setCustomFilter] = useState<any | null>(null);\n\n const [fields, setFields] = useState<any[]>([]);\n const [searchableFields, setSearchableFields] = useState<any[]>([]);\n const [groupableFields, setGroupableFields] = useState<GroupableField[]>([]);\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>(defaultGroupingRules);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>(defaultAggregationRules);\n\n // used to show the list of predefined searches \n const [predefinedSearches, setPredefinedSearches] = useState<PredefinedSearch[]>([]);\n\n // used to open / close the custom fitler popup \n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n\n // used to open / close the group fitler popup \n const [showGroupFilterElement, setShowGroupFilterElement] = useState<boolean>(false);\n\n\n // searchChips maintain the ui to display searched query \n // searchFilter maintain the transformed filter of the searched query \n const [searchChips, setSearchChips] = useState<{ columnName?: string; value: string }[]>([]);\n const [searchFilter, setSearchFilter] = useState<any | null>(null);\n\n // predefinedSearchChip maintain the ui to display predefined searches query \n const [predefinedSearchChip, setPredefinedSearchChip] = useState<{ name: string; value: string } | null>(null);\n\n // state to maintain the text typed in the search input box\n const [inputValue, setInputValue] = useState<string | null>(\"\");\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n // flag to prevent un necessary re renders\n const [hasSearched, setHasSearched] = useState<boolean>(false);\n\n // currentSavedFilterData is used to save the whole object of saved filter \n const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();\n const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();\n const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();\n const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);\n\n\n const [savedFilterTobeDeleted, setSavedFilterTobeDeleted] = useState<any>();\n const [isDeleteSQDialogVisible, setIsDeleteSQDialogVisible] = useState<boolean>(false);\n const [savedFilterQueryString, setSavedFilterQueryString] = useState<string>();\n const [showOverlay, setShowOverlay] = useState(false);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const [showChipManager, setShowChipManager] = useState(false);\n const chipManagerRef = useRef<HTMLDivElement | null>(null);\n const chipManagerTriggerRef = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n if (focusedIndex >= 0 && showOverlay) {\n const activeElement = document.querySelector(`.solid-search-overlay-option-active`);\n if (activeElement) {\n activeElement.scrollIntoView({\n block: 'nearest',\n inline: 'start'\n });\n }\n }\n }, [focusedIndex, showOverlay]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const [refreshKey, setRefreshKey] = useState(0);\n\n const [predefinedSearchBaseFilter, setPredefinedSearchBaseFilter] = useState<any>(null);\n\n const [savedFilters, setSavedFilters] = useState([]);\n const [savedFiltersLoaded, setSavedFiltersLoaded] = useState(false);\n\n const entityApi = createSolidEntityApi(\"savedFilters\");\n const {\n useCreateSolidEntityMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n useLazyGetSolidEntitiesQuery\n } = entityApi;\n\n const [\n createEntity,\n { isSuccess: isEntityCreateSuccess, isError: isEntityCreateError, error: entityCreateError },\n ] = useCreateSolidEntityMutation();\n\n const [\n updateEntity,\n { isSuccess: isEntityUpdateSuceess, isError: isEntityUpdateError, error: entityUpdateError },\n ] = useUpdateSolidEntityMutation();\n\n const [\n deleteEntity,\n { isSuccess: isEntityDeleteSuceess, isError: isEntityDeleteError, error: entityDeleteError },\n ] = useDeleteSolidEntityMutation();\n\n const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading: isSavedFilterLoading, error }] = useLazyGetSolidEntitiesQuery();\n\n const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);\n\n\n\n useEffect(() => {\n const fn = async () => {\n if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {\n return;\n }\n setSavedFiltersLoaded(false)\n const filters = {\n $or: [\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { user: { $in: [user?.id] } },\n { isPrivate: { $eq: true } }\n ]\n },\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { isPrivate: { $eq: false } }\n ]\n }\n\n ]\n }\n const queryData: any = {\n offset: 0,\n limit: 10,\n filters: filters,\n populate: [\"model\", \"view\", \"user\"],\n sort: [\"id:desc\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n setSavedFilterQueryString(queryString)\n const savedFilter = await triggerGetSolidEntities(queryString).unwrap();\n\n if (savedFilter) {\n // console.log(\"savedFilter\", savedFilter);\n setSavedFilters(savedFilter?.records)\n }\n setSavedFiltersLoaded(true);\n }\n fn()\n }, [\n activeSavedFilter,\n savedFilterFetchDataRefreshKey,\n viewData?.data?.solidView?.id,\n viewData?.data?.solidView?.model?.id,\n user?.id\n ])\n\n useImperativeHandle(ref, () => ({\n clearFilter: () => {\n setFilterRules(initialState);\n },\n openGroupingDialog: () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n },\n openCustomFilterDialog: () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n }\n }));\n\n useEffect(() => {\n const fn = async () => {\n let searchChips: any;\n let customChips: any;\n if (savedFiltersLoaded) {\n\n if (activeSavedFilter && savedFilters.length === 0) return;\n\n const queryObject = getFilterObjectFromLocalStorage();\n // const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (activeSavedFilter) {\n const currentSavedFilterId = Number(activeSavedFilter);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === currentSavedFilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n }\n }\n } else {\n setCurrentSavedFilterData(null)\n setCurrentSavedFilterQuery(null)\n }\n if (queryObject) {\n if (queryObject) {\n searchChips = queryObject?.search_predicate || null;\n customChips = queryObject?.custom_filter_predicate || null;\n }\n }\n if (searchChips) {\n setSearchFilter(searchChips);\n // const formattedChips = searchChips?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n\n const formattedChips = extractChips(searchChips);\n setSearchChips(formattedChips);\n\n }\n if (customChips && Object.keys(customChips).length !== 0) {\n setCustomFilter(customChips);\n const rules: FilterRule = transformFiltersToRules(customChips);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n const hasGroupingRules = (queryObject?.grouping_rules?.some((rule: any) => rule.fieldName !== null));\n\n if (hasGroupingRules) {\n setGroupingRules(queryObject?.grouping_rules);\n } else {\n // If no grouping rules in localStorage check layout\n const layoutGroupBy = viewData?.data?.solidView?.layout?.attrs?.groupBy;\n\n if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {\n const initialGroupingRules: GroupingRule[] = layoutGroupBy.map((groupStr: string, index: number) => {\n const [fieldName, dateGrouping] = groupStr.split(\":\");\n return {\n id: Date.now() + index,\n fieldName: fieldName || null,\n dateGrouping: (dateGrouping as DateGroupingFormat) || null\n };\n });\n setGroupingRules(initialGroupingRules);\n }\n }\n\n if (queryObject?.aggregation_rules && queryObject?.aggregation_rules !== aggregationRules) {\n setAggregationRules(queryObject?.aggregation_rules);\n }\n\n\n setRefreshKey((prev) => prev + 1)\n setHasSearched(true);\n }\n }\n fn()\n }, [viewData?.data?.solidView?.id, activeSavedFilter, savedFiltersLoaded])\n\n useEffect(() => {\n const fn = async () => {\n if (filterPredicates) {\n if (filterPredicates?.custom_filter_predicate && filterPredicates?.custom_filter_predicate !== customFilter) {\n setCustomFilter(filterPredicates?.custom_filter_predicate);\n const rules: FilterRule = transformFiltersToRules(filterPredicates.custom_filter_predicate);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n if (filterPredicates?.search_predicate && filterPredicates?.search_predicate !== searchFilter) {\n setSearchFilter(filterPredicates?.search_predicate);\n // const formattedChips = filterPredicates.search_predicate?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n const formattedChips = extractChips(filterPredicates.search_predicate);\n setSearchChips(formattedChips);\n\n }\n }\n }\n fn()\n }, [filterPredicates])\n\n useEffect(() => {\n if (viewData?.data?.solidFieldsMetadata) {\n // Reset search state when switching views\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setInputValue(\"\");\n\n\n let fieldsData = viewData?.data?.solidFieldsMetadata;\n // console.log(`fiels data while rendering solid global search element: `);\n // console.log(fieldsData);\n\n const layoutChildren = viewData?.data?.solidView?.layout?.children ?? [];\n const fieldElements = extractFields(layoutChildren);\n\n\n const fieldsList = Object.entries(fieldsData ?? {}).map(([key, value]: any) => {\n const viewFieldElement = fieldElements.find(\n (f: any) => f?.attrs?.name === key\n );\n return {\n name: value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: viewFieldElement?.attrs?.searchMatchMode,\n searchField: viewFieldElement?.attrs?.searchField ?? null,\n isSearchable: viewFieldElement?.attrs?.isSearchable ?? false,\n relationType: value?.relationType ?? null,\n };\n });\n\n const filterableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"mediaSingle\":\n case \"mediaMultiple\":\n return false;\n default:\n return true;\n }\n });\n\n setFields(filterableFieldsList);\n\n const searchableFieldsList = fieldsList.filter((field: any) => {\n if (!field.isSearchable) return false;\n\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n return !!field.searchField;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n const groupableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n if (field.relationType === \"many-to-one\")\n return true;\n return false;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n case \"int\":\n case \"float\":\n case \"boolean\":\n case \"date\":\n case \"datetime\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n // Optionally map to a minimal structure if needed for UI\n let finalSearchableFieldsList: any = searchableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode\n }));\n\n setSearchableFields(finalSearchableFieldsList);\n\n let finalGroupableFieldsList: any = groupableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode,\n type: field.type,\n ormType: field.ormType,\n relationType: field.relationType,\n computedFieldValueType: field.computedFieldValueType\n }));\n\n setGroupableFields(finalGroupableFieldsList)\n\n const predefinedSearchesList = viewData?.data?.solidView?.layout?.attrs?.predefinedSearches || [];\n setPredefinedSearches(predefinedSearchesList);\n }\n // used to open the \n }, [viewData])\n\n useEffect(() => {\n if (chipsRef.current) {\n const inputElement = chipsRef.current.querySelector(\"input\");\n if (inputElement) {\n inputElement.addEventListener(\"input\", (e: any) => {\n setInputValue((e.target as HTMLInputElement).value);\n });\n }\n }\n }, []);\n\n\n const handleAddChip = (columnName?: string) => {\n if (inputValue?.trim()) {\n const fallbackField = searchableFields[0]; // guaranteed object\n if (!fallbackField) return;\n // Support comma-separated values: split, trim and add as separate chips\n const values = inputValue.split(\",\").map(v => v.trim()).filter(v => v !== \"\");\n const fieldName = columnName || fallbackField.fieldName;\n const chipsToAdd = values.map(v => ({\n columnName: fieldName,\n value: v,\n columnDisplayName: fallbackField.displayName,\n searchField: fallbackField.searchField,\n matchMode: fallbackField.matchMode\n }));\n\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n };\n\n const clearCustomFilter = () => {\n setFilterRules(initialState);\n setCustomFilter(null)\n // setPredefinedSearchChip(null)\n // setPredefinedSearchBaseFilter(null)\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n\n const transformCustomFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCustomFilter(finalCustomFilter);\n setShowGlobalSearchElement(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n }\n\n const transformSavedFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCurrentSavedFilterQuery(finalCustomFilter);\n setShowSavedFilterComponent(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n\n }\n\n const applyGrouping = (groupingRules: GroupingRule[], aggregationRules: AggregationRule[]) => {\n setHasSearched(true)\n setShowGroupFilterElement(false);\n setGroupingRules(groupingRules);\n setAggregationRules(aggregationRules);\n setRefreshKey((prev) => prev + 1)\n }\n\n const openCustomFilterDialog = () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n };\n\n const openGroupingDialog = () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n };\n\n useEffect(() => {\n if (refreshKey > 0 && hasSearched) {\n\n const formattedChips = {\n $and: searchChips.map((chip: any) => ({\n fieldName: chip.columnName,\n matchMode: chip.matchMode,\n value: [chip.value],\n searchField: chip.searchField ?? \"\",\n }))\n };\n\n\n const finalSearchFilter = tranformSearchToFilters(formattedChips);\n setSearchFilter(finalSearchFilter);\n\n let finalSavedFilter: any = currentSavedFilterQuery\n const finalPredefinedFilter = predefinedSearchBaseFilter\n\n const finalCustomFilter = customFilter\n const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)\n handleApplyCustomFilter(finalFilter, true);\n setHasSearched(false)\n // }\n }\n }, [refreshKey]);\n\n\n // Handle predefined search selection\n\n const hasCustomFilterChanged = () => {\n if (!predefinedSearchChip || !customFilter || !predefinedSearchBaseFilter) {\n return false;\n }\n // Deep comparison to check if filter has changed\n return JSON.stringify(customFilter) !== JSON.stringify(predefinedSearchBaseFilter);\n };\n\n const openSavedCustomFilter = async (savedfilter: any) => {\n //Open custom filter popup \n // router.push(`?savedQuery=${savedfilter.id}`);\n // setShowGlobalSearchElement(true);\n // // dont refetch the data yet\n // const customFilter = JSON.parse(savedfilter.filterQueryJson);\n // setCustomFilter(customFilter ? customFilter : null);\n // if (customFilter) {\n // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);\n // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);\n // }\n\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n const savedfilterId = savedfilter.id;\n // router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n const rules: FilterRule = transformFiltersToRules(finalSavedFilter ? finalSavedFilter : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const deleteSavedFilter = async () => {\n // delte the saved filter with id \n await deleteEntity(savedFilterTobeDeleted);\n // triggerGetSolidEntities(savedFilterQueryString);\n let parsedSearchParams = searchParams;\n const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (savedFilterTobeDeleted == savedQuery) {\n const urlParams = new URLSearchParams(window.location.search);\n urlParams.delete(\"savedQuery\");\n router.push(`?${urlParams.toString()}`);\n }\n setIsDeleteSQDialogVisible(false);\n setTimeout(() => {\n setSavedFilterFetchDataRefreshKey(prev => prev + 1)\n }, 500)\n }\n const handleSaveFilter = async (formValues: any) => {\n setShowSaveFilterPopup(false)\n\n try {\n if (formValues.id) {\n const filterJson = currentSavedFilterQuery;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n\n await updateEntity({ id: +formValues.id, data: formData }).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setPredefinedSearchBaseFilter(null);\n setTimeout(() => {\n router.push(`?savedQuery=${formValues.id}`);\n }, 500)\n } else {\n\n const filterJson = customFilter;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n const result = await createEntity(formData).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setTimeout(() => {\n router.push(`?savedQuery=${result.data.id}`);\n }, 500)\n\n }\n } catch (error) {\n\n }\n }\n\n\n\n useEffect(() => {\n // Explicitly type the event as a MouseEvent\n function handleClickOutside(event: MouseEvent) {\n if (overlayRef.current && !overlayRef.current.contains(event.target as Node)) {\n setShowOverlay(false);\n }\n }\n if (showOverlay) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [showOverlay]);\n\n useEffect(() => {\n function handleChipManagerClickOutside(event: MouseEvent) {\n const targetNode = event.target as Node;\n if (chipManagerRef.current?.contains(targetNode)) return;\n if (chipManagerTriggerRef.current?.contains(targetNode)) return;\n setShowChipManager(false);\n }\n\n if (showChipManager) {\n document.addEventListener(\"mousedown\", handleChipManagerClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleChipManagerClickOutside);\n };\n }, [showChipManager]);\n\n const CustomChip = () => {\n // console.log(\"customFilter\", customFilter);\n const ruleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n setShowGlobalSearchElement(true)\n }\n }>\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{ruleCount}</strong> rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={clearCustomFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n //saved filter related code start\n\n const applySavedFilter = (savedfilter: any) => {\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const removeSavedFilter = () => {\n const params = new URLSearchParams(searchParams.toString());\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null)\n if (params.has(\"savedQuery\")) {\n params.delete(\"savedQuery\");\n const newUrl = params.toString()\n ? `${pathname}?${params.toString()}`\n : pathname;\n router.push(newUrl);\n }\n }\n\n const SavedFiltersChip = () => {\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n const fn = async () => {\n if (currentSavedFilterQuery) {\n const rules: FilterRule = transformFiltersToRules(currentSavedFilterQuery ? currentSavedFilterQuery : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n fn()\n }\n }\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{currentSavedFilterData?.name}</strong></span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeSavedFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n const removeGrouping = () => {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n\n const GroupingChip = () => {\n return (\n <li className=\"solid-global-search-chip\">\n <div className=\"flex align-items-center gap-2\">\n <div className=\"flex align-items-center gap-2\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\n onClick={() => setShowGroupFilterElement(true)}\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{groupingRules.length}</strong> Grouping rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeGrouping} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n\n\n //saved filter related code end\n\n\n // search related code start\n\n const handleRemoveChipGroup = (columnName: string) => {\n const updatedChips = searchChips.filter(chip => chip.columnName !== columnName);\n setSearchChips(updatedChips);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n\n };\n\n const groupedSearchChips = searchChips.reduce((acc: Record<string, string[]>, chip) => {\n const key = chip.columnName;\n if (!key) return acc; // skip if undefined\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(chip.value);\n return acc;\n }, {});\n\n const customRuleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n const managedChipItems = useMemo<ManagedChipItem[]>(() => {\n const items: ManagedChipItem[] = [];\n\n if (currentSavedFilterData?.name) {\n items.push({\n id: \"saved-filter\",\n type: \"saved\",\n label: `Saved: ${currentSavedFilterData.name}`,\n onRemove: () => removeSavedFilter(),\n });\n }\n\n if (predefinedSearchChip?.name && predefinedSearchChip?.value) {\n items.push({\n id: \"predefined-search\",\n type: \"predefined\",\n label: `Predefined: ${predefinedSearchChip.name} (${predefinedSearchChip.value})`,\n onRemove: () => removePredefinedSearchChip(),\n });\n }\n\n if (customFilter && customRuleCount > 0) {\n items.push({\n id: \"custom-filter\",\n type: \"custom\",\n label: `${customRuleCount} custom rules applied`,\n onRemove: () => clearCustomFilter(),\n onOpen:() => setShowGlobalSearchElement(true)\n });\n }\n\n if (groupingRules.length > 0 && groupingRules.some((r) => r.fieldName !== null)) {\n items.push({\n id: \"grouping-rules\",\n type: \"grouping\",\n label: `${groupingRules.length} grouping rules applied`,\n onRemove: () => removeGrouping(),\n onOpen:() => setShowGroupFilterElement(true)\n\n });\n }\n\n Object.entries(groupedSearchChips).forEach(([column, values]) => {\n const fieldMeta = searchableFields.find((field) => field.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n items.push({\n id: `search:${column}`,\n type: \"search\",\n label: `${columnDisplayName}: ${values.join(\" or \")}`,\n onRemove: () => handleRemoveChipGroup(column),\n });\n });\n\n return items;\n }, [\n currentSavedFilterData,\n predefinedSearchChip,\n customFilter,\n customRuleCount,\n groupingRules,\n groupedSearchChips,\n searchableFields,\n ]);\n\n const MAX_VISIBLE_CHIPS = 3;\n const visibleChipItems = managedChipItems.slice(0, MAX_VISIBLE_CHIPS);\n const hiddenChipItems = managedChipItems.slice(MAX_VISIBLE_CHIPS);\n const hiddenChipCount = hiddenChipItems.length;\n\n const clearAllAppliedChips = () => {\n if (managedChipItems.length === 0) return;\n\n if (activeSavedFilter || currentSavedFilterData) {\n removeSavedFilter();\n }\n\n setSearchChips([]);\n setSearchFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setCustomFilter(null);\n setFilterRules(initialState);\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setShowChipManager(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n };\n\n useEffect(() => {\n if (managedChipItems.length === 0 && showChipManager) {\n setShowChipManager(false);\n }\n }, [managedChipItems.length, showChipManager]);\n\n\n const overlayOptions = useMemo<OverlayOption[]>(() => {\n const currentValue = inputValue?.trim() || \"\";\n const fields: OverlayOption[] = currentValue\n ? searchableFields.map((field: any) => ({\n id: `field:${field.fieldName}`,\n kind: \"field\" as const,\n field\n }))\n : [];\n const predefined: OverlayOption[] =\n currentValue && predefinedSearches?.length\n ? predefinedSearches.map((p: any, idx: number) => ({\n id: `predefined:${p.name || idx}`,\n kind: \"predefined\" as const,\n predefined: p,\n }))\n : [];\n const saved: OverlayOption[] = (savedFilters || []).map((s: any) => ({\n id: `saved:${s.id}`,\n kind: \"saved\" as const,\n saved: s,\n }));\n\n return [...fields, ...predefined, ...saved];\n }, [inputValue, searchableFields, predefinedSearches, savedFilters]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const currentValue = inputValue?.trim() || \"\";\n\n const applyFieldOption = (value: any) => {\n const trimmed = inputValue?.trim();\n if (!trimmed) return;\n const values = trimmed.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n setShowOverlay(false);\n };\n\n if ((e.key === \"ArrowDown\" || e.key === \"ArrowUp\") && overlayOptions.length > 0) {\n e.preventDefault();\n setShowOverlay(true);\n const nextIndex =\n e.key === \"ArrowDown\"\n ? (focusedIndex + 1) % overlayOptions.length\n : (focusedIndex <= 0 ? overlayOptions.length - 1 : focusedIndex - 1);\n setFocusedIndex(nextIndex);\n return;\n }\n\n if (e.key === \"Enter\") {\n if (currentValue || focusedIndex >= 0) {\n e.preventDefault();\n const activeOption = overlayOptions[focusedIndex] || (currentValue ? overlayOptions[0] : null);\n\n if (activeOption?.kind === \"field\") {\n applyFieldOption(activeOption.field);\n } else if (activeOption?.kind === \"predefined\") {\n handlePredefinedSearch(activeOption.predefined);\n } else if (activeOption?.kind === \"saved\") {\n applySavedFilter(activeOption.saved);\n } else if (currentValue) {\n handleAddChip();\n setShowOverlay(false);\n }\n }\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n if (searchChips.length > 0) {\n setSearchChips((prev) => prev.slice(0, -1));\n } else if (customFilter) {\n setCustomFilter(null);\n setFilterRules(initialState);\n } else if (predefinedSearchChip) {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n } else if (activeSavedFilter) {\n removeSavedFilter();\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n }\n };\n\n useEffect(() => {\n if (!showOverlay) {\n setFocusedIndex(-1);\n }\n }, [showOverlay]);\n\n const SearchChip = () => (\n <>\n {Object.entries(groupedSearchChips).map(([column, values]) => {\n const fieldMeta = searchableFields.find(f => f.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n\n return (\n <li key={column}>\n <div className=\"search-filter-chip-type\">\n <div>{columnDisplayName}</div>\n {values.map((value, index) => (\n <React.Fragment>\n {/* displayname */}\n <span key={index} className=\"custom-chip-value\">{value}\n </span>\n {index < values.length - 1 &&\n <span className=\"custom-chip-or\">or</span>\n }\n </React.Fragment>\n ))}\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={() => handleRemoveChipGroup(column)}>\n <X size={14} />\n </button>\n </div>\n </li>\n )\n })}\n </>\n );\n\n // search related code end\n\n\n // predefinedfilter related code start\n\n const handlePredefinedSearch = (predefinedSearch: any) => {\n if (!inputValue?.trim()) return;\n\n if (!predefinedSearch?.filters) {\n console.error('Invalid predefined search: missing filters', predefinedSearch);\n return;\n }\n\n try {\n // Replace {{ search }} placeholders with actual search value\n const processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());\n\n // Clear all existing filters and searches\n // setSearchChips([]);\n // setSearchFilter(null);\n // setFilterRules(initialState);\n // setCustomFilter(null)\n // removeSavedFilter();\n // Set the predefined search chip\n setPredefinedSearchChip({\n name: predefinedSearch.name,\n value: inputValue.trim()\n });\n\n setPredefinedSearchBaseFilter(processedFilter);\n\n // Apply the predefined search filter as custom filter\n // setCustomFilter(processedFilter);\n\n // Clear input and close overlay\n setInputValue(\"\");\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n } catch (error) {\n console.error('Error applying predefined search:', error);\n // Optionally show user-friendly error message\n }\n };\n\n\n const removePredefinedSearchChip = () => {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null)\n setCustomFilter(null);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n };\n\n const PredefinedSearchChip = () => (\n <li>\n <div className=\"search-filter-chip-type\">\n <div className=\"flex align-items-center gap-2\">\n <strong>{predefinedSearchChip?.name}:</strong>\n <span className=\"custom-chip-value\">{predefinedSearchChip?.value}</span>\n </div>\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={removePredefinedSearchChip}>\n <X size={14} />\n </button>\n </div>\n </li>\n );\n\n // predefinedfilter related code end\n\n return (\n <>\n <div className=\"flex justify-content-center solid-custom-filter-wrapper relative\">\n <div className=\"solid-global-search-element\">\n <ul className=\"solid-global-search-chip-list\">\n {visibleChipItems.map((chip) => (\n <li key={chip.id}>\n <div className={`search-filter-chip-type solid-chip-pill solid-chip-tone-${chip.type}`}>\n <span className=\"custom-chip-value solid-chip-pill-label\" title={chip.label}>\n {chip.label}\n </span>\n <button\n type=\"button\"\n className=\"solid-chip-pill-remove\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n </li>\n ))}\n {hiddenChipCount > 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n +{hiddenChipCount} more\n </button>\n </li>\n )}\n {managedChipItems.length > 0 && hiddenChipCount === 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger solid-chip-manage-trigger-secondary\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n Manage\n </button>\n </li>\n )}\n <li ref={chipsRef} className=\"solid-global-search-input-item\">\n <div className=\"relative solid-global-search-element-wrapper\">\n <SolidInput\n className=\"solid-global-search-input\"\n value={inputValue || \"\"}\n placeholder=\"Search.\"\n onChange={(e) => {\n setInputValue(e.target.value);\n setShowChipManager(false);\n setShowOverlay(true);\n setFocusedIndex(-1);\n }}\n onFocus={() => {\n setShowChipManager(false);\n if (inputValue?.trim()) setShowOverlay(true);\n }}\n onBlur={() => {\n // Delay so you can click buttons inside overlay\n setTimeout(() => setShowOverlay(false), 150);\n }}\n\n onKeyDown={handleKeyDown}\n />\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setShowChipManager(false);\n setShowOverlay(true);\n }}\n className=\"custom-filter-button solid-global-search-trigger\"\n >\n <Search size={14} />\n </SolidButton>\n </div>\n </li>\n </ul>\n </div>\n\n {showChipManager && managedChipItems.length > 0 && (\n <div ref={chipManagerRef} className=\"absolute z-5 solid-chip-manager-panel\">\n <div className=\"solid-chip-manager-header\">\n <div className=\"solid-chip-manager-title\">Applied chips ({managedChipItems.length})</div>\n <button type=\"button\" className=\"solid-chip-manager-clear-btn\" onClick={clearAllAppliedChips}>\n Clear all\n </button>\n </div>\n <div className=\"solid-chip-manager-body\">\n {managedChipItems.map((chip) => (\n <div key={`manage-${chip.id}`} className={`solid-chip-manager-item solid-chip-tone-${chip.type}`} onClick={() => {\n if (chip.id == \"custom-filter\" || chip.id == \"grouping-rules\") {\n if(chip.onOpen){\n chip.onOpen()\n }\n }\n }\n }>\n <span className=\"solid-chip-manager-item-label\" title={chip.label}>\n {chip.label}\n </span>\n <button\n type=\"button\"\n className=\"solid-chip-manager-item-remove\"\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {showOverlay && (\n <div ref={overlayRef} className=\"absolute w-full shadow-2 solid-search-overlay-pannel\">\n <div className=\"solid-search-overlay-scroll\">\n {inputValue ? (\n <>\n <div className=\"custom-filter-search-options solid-search-overlay-section px-3 py-1 flex flex-column\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon\">\n <Search size={13} />\n <span>Search by fields</span>\n </h6>\n {searchableFields.length > 0 ? (\n searchableFields.map((value: any, index: number) => {\n return (\n <SolidButton\n key={index}\n variant=\"ghost\"\n size=\"sm\"\n className={`flex gap-1 text-color solid-search-overlay-option ${focusedIndex === index ? \"solid-search-overlay-option-active\" : \"\"} justify-content-start`}\n onMouseDown={(e) => {\n e.preventDefault();\n const currentValue = inputValue?.trim();\n if (currentValue) {\n const values = currentValue.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n setShowOverlay(false);\n }\n }}\n onMouseEnter={() => setFocusedIndex(index)}\n >\n Search <strong style={{paddingLeft:\"2px\"}}>{value.displayName}</strong> &nbsp; for:&nbsp; <span className=\"font-bold text-color\">{inputValue}</span>\n </SolidButton>\n )\n })\n ) : (\n <div className=\"solid-search-overlay-no-fields\">\n <div className=\"solid-search-overlay-no-fields-icon\">\n <SearchX size={14} />\n </div>\n <div className=\"solid-search-overlay-no-fields-text\">\n No fields configured for search.\n </div>\n </div>\n )}\n </div>\n {predefinedSearches && predefinedSearches.length > 0 && (\n <>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"custom-filter-search-options solid-search-overlay-section px-3 py-1 flex flex-column\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title\">Predefined searches</h6>\n {predefinedSearches.map((predefinedSearch: any, index: number) => (\n <SolidButton\n key={index}\n variant=\"ghost\"\n size=\"sm\"\n className={`flex flex-column align-items-start gap-1 text-color solid-search-overlay-option solid-search-overlay-option-stacked ${focusedIndex === searchableFields.length + index ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n handlePredefinedSearch(predefinedSearch);\n }}\n onMouseEnter={() => setFocusedIndex(searchableFields.length + index)}\n >\n <div className=\"flex gap-1 align-items-center\">\n <strong>{predefinedSearch.name}:</strong>\n <span className=\"font-bold text-color\">{inputValue}</span>\n </div>\n <div className=\"text-xs\">{predefinedSearch.description}</div>\n </SolidButton>\n ))}\n </div>\n </>\n )}\n </>\n ) :\n <>\n <div className=\"p-3 solid-search-overlay-empty\">\n <div className=\"solid-search-overlay-panel-callout\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Search size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-empty-title\">\n Start typing to search\n </div>\n <div className=\"solid-search-overlay-empty-subtitle\">\n Start typing in search input to see all fields on which you can search {searchableEntityLabel} by.\n </div>\n </div>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n </>\n }\n {savedFilters.length > 0 &&\n <>\n <div className=\"p-3 solid-search-overlay-section\">\n <div className=\"solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Bookmark size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <p className=\"solid-search-overlay-heading solid-search-overlay-section-title\">Saved filters</p>\n <div className=\"solid-search-overlay-empty-subtitle\">\n Reusable filter sets available for this view.\n </div>\n </div>\n </div>\n <div className=\"flex flex-column solid-search-overlay-saved-list\">\n {savedFilters.map((savedfilter: any, index: number) => (\n <SavedFilterList\n key={savedfilter.id}\n savedfilter={savedfilter}\n activeSavedFilter={activeSavedFilter}\n applySavedFilter={applySavedFilter}\n openSavedCustomFilter={openSavedCustomFilter}\n setSavedFilterTobeDeleted={setSavedFilterTobeDeleted}\n setIsDeleteSQDialogVisible={setIsDeleteSQDialogVisible}\n isFocused={overlayOptions[focusedIndex]?.id === `saved:${savedfilter.id}`}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex(o => o.id === `saved:${savedfilter.id}`);\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n />\n ))}\n </div>\n </div>\n </>\n }\n </div>\n\n <div className=\"solid-search-overlay-footer\">\n <button\n type=\"button\"\n className=\"px-3 py-2 flex flex-column solid-search-overlay-footer-action\"\n onClick={openCustomFilterDialog}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Filter size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Click here to apply custom filters\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Use custom filters to apply conditions on any field using any operator.\n </div>\n </div>\n </div>\n </button>\n {viewType === \"tree\" && (\n <button\n type=\"button\"\n className=\"px-3 py-2 flex flex-column solid-search-overlay-footer-action solid-search-overlay-footer-action-secondary\"\n onClick={openGroupingDialog}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Plus size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Click here to do custom grouping\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Configure grouping rules and aggregations for the tree view.\n </div>\n </div>\n </div>\n </button>\n )}\n </div>\n </div>\n )\n }\n <SolidDialog open={showGlobalSearchElement} onOpenChange={setShowGlobalSearchElement} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Add Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Apply conditions on any field with operators.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={filterRules} setFilterRules={setFilterRules} transformFilterRules={transformCustomFilterRules} closeDialog={() => setShowGlobalSearchElement(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showGroupFilterElement} onOpenChange={setShowGroupFilterElement} className=\"solid-global-search-filter solid-filter-dialog-shell solid-filter-dialog-shell-grouping\" style={{ width: \"min(560px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Grouping</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Configure grouping and aggregation.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {groupableFields.length > 0 &&\n <GroupingComponent\n viewData={viewData}\n fields={groupableFields}\n groupingRules={groupingRules}\n setGroupingRules={setGroupingRules}\n aggregationRules={aggregationRules}\n setAggregationRules={setAggregationRules}\n applyGrouping={applyGrouping}\n closeDialog={() => setShowGroupFilterElement(false)}\n ></GroupingComponent>\n }\n </SolidDialogBody>\n </SolidDialog >\n <SolidDialog open={showSavedFilterComponent} onOpenChange={setShowSavedFilterComponent} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Saved Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Review and refine the saved filter conditions.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={currentSavedFilterRules} setFilterRules={setCurrentSavedFilterRules} transformFilterRules={transformSavedFilterRules} closeDialog={() => setShowSavedFilterComponent(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showSaveFilterPopup} onOpenChange={setShowSaveFilterPopup} className=\"solid-custom-filter-dialog solid-save-filter-dialog\" style={{ width: \"min(420px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Save Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Name this filter so you can reuse it later.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <SolidSaveCustomFilterForm currentSavedFilterData={currentSavedFilterData} handleSaveFilter={handleSaveFilter} closeDialog={() => setShowSaveFilterPopup(false)}></SolidSaveCustomFilterForm>\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog open={isDeleteSQDialogVisible} onOpenChange={setIsDeleteSQDialogVisible} className=\"solid-confirm-dialog\" style={{ width: \"min(420px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogDescription>Are you sure you want to delete the {currentSavedFilterData?.name} saved query?</SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogFooter className=\"justify-content-center\">\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={deleteSavedFilter}>\n <Check size={14} />\n Yes\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setIsDeleteSQDialogVisible(false)}>\n <X size={14} />\n No\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div >\n </>\n )\n});\n"]}