impact-ui 3.7.25 → 4.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/MIGRATION_GUIDE.md +328 -0
  2. package/README.md +154 -15
  3. package/bin/migrate-image-paths.cjs +127 -0
  4. package/bin/migrate.js +293 -0
  5. package/codemods/component-map.js +153 -0
  6. package/codemods/image-paths-transform.js +69 -0
  7. package/codemods/transform.js +136 -0
  8. package/dist/components/Accordion/index.js +2 -1
  9. package/dist/components/AccordionModern/index.js +2 -1
  10. package/dist/components/Alert/index.js +2 -1
  11. package/dist/components/Avatar/index.js +2 -1
  12. package/dist/components/Badge/filled/filledIconLabelBadges/index.js +2 -1
  13. package/dist/components/Badge/filled/filledOnlyIconBadges/index.js +2 -1
  14. package/dist/components/Badge/filled/filledOnlyLabelBadges/index.js +2 -1
  15. package/dist/components/Badge/index.js +3 -2
  16. package/dist/components/Badge/stroke/strokeIconLabelBadges/index.js +2 -1
  17. package/dist/components/Badge/stroke/strokeOnlyIconBadges/index.js +2 -1
  18. package/dist/components/Badge/stroke/strokeOnlyLabelBadges/index.js +2 -1
  19. package/dist/components/Badge/subtle/subtleIOnlyIconBadges/index.js +2 -1
  20. package/dist/components/Badge/subtle/subtleIconLabelBadges/index.js +2 -1
  21. package/dist/components/Badge/subtle/subtleOnlyLabelBadges/index.js +2 -1
  22. package/dist/components/BottomSheet/index.js +2 -1
  23. package/dist/components/Breadcrumbs/index.js +2 -1
  24. package/dist/components/Button/index.js +2 -1
  25. package/dist/components/ButtonGroup/index.js +2 -1
  26. package/dist/components/Card/index.js +2 -1
  27. package/dist/components/Chart/index.js +2 -1
  28. package/dist/components/Chatbot/index.js +2 -1
  29. package/dist/components/Checkbox/index.js +2 -1
  30. package/dist/components/Chips/index.js +2 -1
  31. package/dist/components/CreateItemFlow/index.js +2 -1
  32. package/dist/components/DatePicker/datePickerDropdown.js +2 -1
  33. package/dist/components/DatePicker/index.js +3 -2
  34. package/dist/components/DateRangePicker/dateRangePickerDropdown.js +2 -1
  35. package/dist/components/DateRangePicker/index.js +3 -2
  36. package/dist/components/DynamicLayout/index.js +2 -1
  37. package/dist/components/EmptyState/EmptyStateImage.d.ts.map +1 -1
  38. package/dist/components/EmptyState/EmptyStateImage.js +3 -2
  39. package/dist/components/EmptyState/index.js +2 -1
  40. package/dist/components/FileUpload/index.js +2 -1
  41. package/dist/components/FilterPanel/index.js +2 -1
  42. package/dist/components/FiltersStrip/index.js +2 -1
  43. package/dist/components/Header/index.js +2 -1
  44. package/dist/components/HomePage/index.js +2 -1
  45. package/dist/components/Input/index.js +2 -1
  46. package/dist/components/Loader/index.js +2 -1
  47. package/dist/components/Menu/IconMenuItem.js +2 -1
  48. package/dist/components/Menu/MenuHeaderInfo.js +2 -1
  49. package/dist/components/Menu/NestedMenuItem.js +2 -1
  50. package/dist/components/Menu/index.js +2 -1
  51. package/dist/components/Menu/nestedMenuItemsFromObject.js +2 -1
  52. package/dist/components/Modal/index.js +2 -1
  53. package/dist/components/Notification/NotificationBody/NotificationList/NotificationList.js +2 -1
  54. package/dist/components/Notification/index.js +2 -1
  55. package/dist/components/Panel/index.js +2 -1
  56. package/dist/components/Popover/index.js +2 -1
  57. package/dist/components/ProgressBar/index.js +2 -1
  58. package/dist/components/Prompt/index.js +2 -1
  59. package/dist/components/RadioButtonGroup/index.js +2 -1
  60. package/dist/components/Select/index.js +2 -1
  61. package/dist/components/Sidebar/index.js +2 -1
  62. package/dist/components/Slider/index.js +2 -1
  63. package/dist/components/Stepper/index.js +2 -1
  64. package/dist/components/Switch/index.js +2 -1
  65. package/dist/components/Table/TableImpl.js +4 -3
  66. package/dist/components/TableChat/EmptyContainer.js +2 -1
  67. package/dist/components/TableChat/TableChatSidePanel.js +2 -1
  68. package/dist/components/TableChat/components/ChatMessageSkeleton/ChatFooterSkeleton.js +2 -1
  69. package/dist/components/TableChat/components/ChatMessageSkeleton/ChatHeaderSkeleton.js +2 -1
  70. package/dist/components/TableChat/components/ChatMessageSkeleton/ChatMessageListSkeleton.js +2 -1
  71. package/dist/components/TableChat/components/ChatMessageSkeleton/ChatSkeleton.js +2 -1
  72. package/dist/components/TableChat/components/TableChatLeftSection/AddChatContainer/AddChatContainer.js +2 -1
  73. package/dist/components/TableChat/components/TableChatLeftSection/TableChatChannelHeader.js +2 -1
  74. package/dist/components/TableChat/components/TableChatRightSection/AvatarGroup/AvatarGroup.js +2 -1
  75. package/dist/components/TableChat/components/TableChatRightSection/ChatDefaultMessageType/ChatDefaultMessageType.js +2 -1
  76. package/dist/components/TableChat/components/TableChatRightSection/ChatDeleteMessageType/ChatDeletedMessageType.js +2 -1
  77. package/dist/components/TableChat/components/TableChatRightSection/ChatHeader/ChatHeader.js +2 -1
  78. package/dist/components/TableChat/components/TableChatRightSection/ChatInput/ChatInput.js +2 -1
  79. package/dist/components/TableChat/components/TableChatRightSection/ChatMessageAvatar/ChatMessageAvatar.js +2 -1
  80. package/dist/components/TableChat/components/TableChatRightSection/ChatMessages/ChatMessage.js +2 -1
  81. package/dist/components/TableChat/components/TableChatRightSection/ChatNotificationSettings/ChatNotificationSettings.js +2 -1
  82. package/dist/components/TableChat/components/TableChatRightSection/DateSeparator/DateSeparator.js +2 -1
  83. package/dist/components/TableChat/components/TableChatRightSection/PinedChatPanel/PinedChatPanel.js +2 -1
  84. package/dist/components/TableChat/components/TableChatRightSection/TableChatRightSection.js +2 -1
  85. package/dist/components/TableChat/components/TextEditor/EditorToolbar.js +2 -1
  86. package/dist/components/TableChat/components/TextEditor/Mention.js +2 -1
  87. package/dist/components/TableChat/components/TextEditor/MentionList.js +2 -1
  88. package/dist/components/Tabs/index.js +2 -1
  89. package/dist/components/Tag/index.js +2 -1
  90. package/dist/components/TagGroup/index.js +2 -1
  91. package/dist/components/TextArea/index.js +2 -1
  92. package/dist/components/Toast/index.js +2 -1
  93. package/dist/components/Tooltip/index.js +2 -1
  94. package/dist/components/common/HelperText/index.js +2 -1
  95. package/dist/components/index.d.ts +0 -1
  96. package/dist/components/index.d.ts.map +1 -1
  97. package/dist/components/index.js +0 -1
  98. package/dist/mcp-component-registry.json +1 -1
  99. package/dist/styles/entry.d.ts +2 -0
  100. package/dist/styles/entry.d.ts.map +1 -0
  101. package/dist/styles/entry.js +1 -0
  102. package/dist/styles/style.css +1 -1
  103. package/eslint-plugin/index.js +91 -0
  104. package/eslint-plugin/rules/no-barrel-import.js +224 -0
  105. package/package.json +153 -89
  106. package/dist/0db32db10ae1525f.svg +0 -9
  107. package/dist/2bc76319b1fa572e.svg +0 -9
  108. package/dist/39d49e4daed1a992.svg +0 -9
  109. package/dist/44beedf64dc29d19.svg +0 -9
  110. package/dist/49a4f914058314f1.svg +0 -9
  111. package/dist/6fc8a59d621a04a1.svg +0 -13
  112. package/dist/78f845dcfc981491.svg +0 -9
  113. package/dist/b31c0c2a19c1c19a.svg +0 -9
  114. package/dist/index.js +0 -308
  115. package/dist/index.js.map +0 -1
  116. package/src/components/Accordion/Accordion.styles.scss +0 -118
  117. package/src/components/Accordion/index.js +0 -104
  118. package/src/components/AccordionModern/AccordionModern.styles.scss +0 -121
  119. package/src/components/AccordionModern/SortableAccordionComp.js +0 -156
  120. package/src/components/AccordionModern/index.js +0 -103
  121. package/src/components/Alert/Alert.styles.scss +0 -131
  122. package/src/components/Alert/index.js +0 -71
  123. package/src/components/Avatar/Avatar.styles.scss +0 -25
  124. package/src/components/Avatar/index.js +0 -58
  125. package/src/components/Badge/Badges.style.scss +0 -55
  126. package/src/components/Badge/filled/filledIconLabelBadges/filledIconLabelBadges.styles.scss +0 -32
  127. package/src/components/Badge/filled/filledIconLabelBadges/index.js +0 -38
  128. package/src/components/Badge/filled/filledOnlyIconBadges/filledOnlyIconBadges.styles.scss +0 -26
  129. package/src/components/Badge/filled/filledOnlyIconBadges/index.js +0 -31
  130. package/src/components/Badge/filled/filledOnlyLabelBadges/filledOnlyLabelBadges.styles.scss +0 -66
  131. package/src/components/Badge/filled/filledOnlyLabelBadges/index.js +0 -31
  132. package/src/components/Badge/filled/index.js +0 -30
  133. package/src/components/Badge/index.js +0 -53
  134. package/src/components/Badge/stroke/index.js +0 -43
  135. package/src/components/Badge/stroke/strokeIconLabelBadges/index.js +0 -38
  136. package/src/components/Badge/stroke/strokeIconLabelBadges/strokeIconLabelBadges.styles.scss +0 -33
  137. package/src/components/Badge/stroke/strokeOnlyIconBadges/index.js +0 -31
  138. package/src/components/Badge/stroke/strokeOnlyIconBadges/strokeOnlyIconBadges.styles.scss +0 -27
  139. package/src/components/Badge/stroke/strokeOnlyLabelBadges/index.js +0 -31
  140. package/src/components/Badge/stroke/strokeOnlyLabelBadges/strokeOnlyLabelBadges.styles.scss +0 -89
  141. package/src/components/Badge/styles.css +0 -52
  142. package/src/components/Badge/subtle/index.js +0 -41
  143. package/src/components/Badge/subtle/subtleIOnlyIconBadges/index.js +0 -31
  144. package/src/components/Badge/subtle/subtleIOnlyIconBadges/subtleIOnlyIconBadges.scss +0 -26
  145. package/src/components/Badge/subtle/subtleIconLabelBadges/index.js +0 -38
  146. package/src/components/Badge/subtle/subtleIconLabelBadges/subtleIconLabelBadges.scss +0 -56
  147. package/src/components/Badge/subtle/subtleOnlyLabelBadges/index.js +0 -31
  148. package/src/components/Badge/subtle/subtleOnlyLabelBadges/subtleOnlyLabelBadges.scss +0 -70
  149. package/src/components/BottomSheet/BottomSheet.styles.scss +0 -46
  150. package/src/components/BottomSheet/index.js +0 -60
  151. package/src/components/Breadcrumbs/Breadcrumbs.styles.scss +0 -65
  152. package/src/components/Breadcrumbs/index.js +0 -121
  153. package/src/components/Button/Button.styles.scss +0 -345
  154. package/src/components/Button/index.js +0 -171
  155. package/src/components/ButtonGroup/ButtonGroup.styles.scss +0 -125
  156. package/src/components/ButtonGroup/index.js +0 -84
  157. package/src/components/Card/Card.styles.scss +0 -33
  158. package/src/components/Card/index.js +0 -21
  159. package/src/components/Chart/Chart.style.scss +0 -142
  160. package/src/components/Chart/index.js +0 -752
  161. package/src/components/ChatBot/bookMarkPanel.js +0 -74
  162. package/src/components/ChatBot/chatBot.style.scss +0 -1295
  163. package/src/components/ChatBot/chatBotFooter.js +0 -14
  164. package/src/components/ChatBot/chatBotLandingScreen.js +0 -26
  165. package/src/components/ChatBot/chatInput.js +0 -206
  166. package/src/components/ChatBot/chatbotModuleMenu.js +0 -278
  167. package/src/components/ChatBot/constant.js +0 -32
  168. package/src/components/ChatBot/conversationScreen.js +0 -281
  169. package/src/components/ChatBot/customScreen.js +0 -69
  170. package/src/components/ChatBot/historyPanel.js +0 -579
  171. package/src/components/ChatBot/index.js +0 -473
  172. package/src/components/ChatBot/newChatComponent.js +0 -105
  173. package/src/components/ChatBot/utils.js +0 -27
  174. package/src/components/Checkbox/Checkbox.styles.scss +0 -232
  175. package/src/components/Checkbox/dashed/index.js +0 -34
  176. package/src/components/Checkbox/default/index.js +0 -70
  177. package/src/components/Checkbox/index.js +0 -50
  178. package/src/components/Checkbox/withDropDown/index.js +0 -96
  179. package/src/components/Checkbox/withoutFormLabel/index.js +0 -46
  180. package/src/components/Chips/Chip.style.scss +0 -134
  181. package/src/components/Chips/index.js +0 -34
  182. package/src/components/CreateItemFlow/CreateItemFlow.styles.scss +0 -37
  183. package/src/components/CreateItemFlow/index.js +0 -145
  184. package/src/components/DatePicker/DatePicker.styles.scss +0 -519
  185. package/src/components/DatePicker/datePickerDropdown.js +0 -282
  186. package/src/components/DatePicker/datePickerFooter.js +0 -76
  187. package/src/components/DatePicker/datePickerInput.js +0 -333
  188. package/src/components/DatePicker/index.js +0 -288
  189. package/src/components/DatePicker/showMonthYearSelect.js +0 -119
  190. package/src/components/DateRangePicker/DateRangePicker.styles.scss +0 -635
  191. package/src/components/DateRangePicker/dateRangePickerCustom.js +0 -22
  192. package/src/components/DateRangePicker/dateRangePickerDropdown.js +0 -320
  193. package/src/components/DateRangePicker/dateRangePickerFooter.js +0 -50
  194. package/src/components/DateRangePicker/dateRangePickerInput.js +0 -544
  195. package/src/components/DateRangePicker/index.js +0 -393
  196. package/src/components/DateRangePicker/showMonthYearSelect.js +0 -103
  197. package/src/components/DateRangePicker/utils.js +0 -71
  198. package/src/components/DynamicLayout/DynamicLayout.styles.scss +0 -153
  199. package/src/components/DynamicLayout/index.js +0 -73
  200. package/src/components/EmptyState/EmptyState.styles.scss +0 -88
  201. package/src/components/EmptyState/EmptyStateImageComponent.jsx +0 -36
  202. package/src/components/EmptyState/index.js +0 -54
  203. package/src/components/FileUpload/FileUpload.styles.scss +0 -449
  204. package/src/components/FileUpload/index.js +0 -641
  205. package/src/components/FilterPanel/FilterPanel.styles.scss +0 -241
  206. package/src/components/FilterPanel/FilterPanelHeader.js +0 -15
  207. package/src/components/FilterPanel/PanelFooter.js +0 -65
  208. package/src/components/FilterPanel/PanelSidebar.js +0 -85
  209. package/src/components/FilterPanel/index.js +0 -147
  210. package/src/components/FiltersStrip/FiltersStrip.styles.scss +0 -343
  211. package/src/components/FiltersStrip/Slider/FilterSlider.styles.scss +0 -85
  212. package/src/components/FiltersStrip/Slider/Portal.js +0 -59
  213. package/src/components/FiltersStrip/Slider/index.js +0 -233
  214. package/src/components/FiltersStrip/appliedFilter.js +0 -180
  215. package/src/components/FiltersStrip/filterDropDown.js +0 -96
  216. package/src/components/FiltersStrip/index.js +0 -127
  217. package/src/components/FiltersStrip/mockData.js +0 -227
  218. package/src/components/Header/Header.styles.scss +0 -223
  219. package/src/components/Header/index.js +0 -156
  220. package/src/components/HomePage/HomePage.styles.scss +0 -1638
  221. package/src/components/HomePage/constant.js +0 -331
  222. package/src/components/HomePage/index.js +0 -675
  223. package/src/components/Input/Input.styles.scss +0 -318
  224. package/src/components/Input/helperText.js +0 -19
  225. package/src/components/Input/index.js +0 -60
  226. package/src/components/Input/inputWithIcon.js +0 -134
  227. package/src/components/Input/vanilaInput.js +0 -68
  228. package/src/components/Loader/Loader.styles.scss +0 -90
  229. package/src/components/Loader/index.js +0 -69
  230. package/src/components/Menu/IconMenuItem.js +0 -100
  231. package/src/components/Menu/Menu.styles.scss +0 -190
  232. package/src/components/Menu/MenuHeader.jsx +0 -84
  233. package/src/components/Menu/MenuHeaderInfo.jsx +0 -319
  234. package/src/components/Menu/MenuHeaderInfo.styles.scss +0 -123
  235. package/src/components/Menu/NestedMenuItem.js +0 -189
  236. package/src/components/Menu/index.js +0 -254
  237. package/src/components/Menu/nestedMenuItemsFromObject.js +0 -100
  238. package/src/components/Modal/Modal.styles.scss +0 -129
  239. package/src/components/Modal/index.js +0 -141
  240. package/src/components/MonthPicker/MonthPicker.styles.scss +0 -255
  241. package/src/components/MonthPicker/constant.js +0 -1
  242. package/src/components/MonthPicker/index.js +0 -373
  243. package/src/components/MonthRangePicker/MonthRangePicker.styles.scss +0 -383
  244. package/src/components/MonthRangePicker/constant.js +0 -1
  245. package/src/components/MonthRangePicker/index.js +0 -574
  246. package/src/components/Notification/Notification.styles.scss +0 -594
  247. package/src/components/Notification/NotificationBody/NotificationInfoList/chipsLists.js +0 -144
  248. package/src/components/Notification/NotificationBody/NotificationInfoList/index.js +0 -128
  249. package/src/components/Notification/NotificationBody/NotificationInfoList/notificationList.js +0 -165
  250. package/src/components/Notification/NotificationBody/NotificationPanels/chipsLists.js +0 -85
  251. package/src/components/Notification/NotificationBody/NotificationPanels/index.js +0 -259
  252. package/src/components/Notification/NotificationBody/NotificationPanels/notificationList.js +0 -637
  253. package/src/components/Notification/NotificationBody/index.js +0 -117
  254. package/src/components/Notification/index.js +0 -128
  255. package/src/components/Notification/mockData.js +0 -389
  256. package/src/components/Notification/notificationFooter.js +0 -31
  257. package/src/components/Notification/notificationHeader.js +0 -28
  258. package/src/components/Panel/Panel.styles.scss +0 -71
  259. package/src/components/Panel/index.js +0 -144
  260. package/src/components/Popover/Popover.styles.scss +0 -52
  261. package/src/components/Popover/index.js +0 -71
  262. package/src/components/Portal/index.js +0 -31
  263. package/src/components/ProgressBar/ProgressBar.styles.scss +0 -62
  264. package/src/components/ProgressBar/index.js +0 -40
  265. package/src/components/Prompt/Prompt.styles.scss +0 -107
  266. package/src/components/Prompt/index.js +0 -107
  267. package/src/components/RadioButtonGroup/RadioButtonGroup.styles.scss +0 -136
  268. package/src/components/RadioButtonGroup/index.js +0 -107
  269. package/src/components/Select/SearchFilter.js +0 -72
  270. package/src/components/Select/Select.styles.scss +0 -748
  271. package/src/components/Select/customGroupHeading.js +0 -24
  272. package/src/components/Select/dropdown.js +0 -65
  273. package/src/components/Select/hooks/index.js +0 -2
  274. package/src/components/Select/hooks/useClickOutside.js +0 -61
  275. package/src/components/Select/hooks/useMenuPosition.js +0 -288
  276. package/src/components/Select/index.js +0 -1307
  277. package/src/components/Select/menuList.js +0 -119
  278. package/src/components/Select/optionList.js +0 -215
  279. package/src/components/Select/selected-option-tags.js +0 -99
  280. package/src/components/Select/utils.js +0 -232
  281. package/src/components/Sidebar/Menus/childMenu.js +0 -88
  282. package/src/components/Sidebar/Menus/index.js +0 -130
  283. package/src/components/Sidebar/Menus/parentMenu.js +0 -173
  284. package/src/components/Sidebar/Sidebar.styles.scss +0 -411
  285. package/src/components/Sidebar/actions.js +0 -31
  286. package/src/components/Sidebar/index.js +0 -84
  287. package/src/components/Sidebar/mock.js +0 -202
  288. package/src/components/Slider/Sliders.styles.scss +0 -260
  289. package/src/components/Slider/index.js +0 -314
  290. package/src/components/Stepper/Stepper.styles.scss +0 -355
  291. package/src/components/Stepper/index.js +0 -101
  292. package/src/components/Switch/Switch.styles.scss +0 -96
  293. package/src/components/Switch/index.js +0 -59
  294. package/src/components/Table/AdvanceSearchModalItem.js +0 -392
  295. package/src/components/Table/AdvanceSortModal.js +0 -332
  296. package/src/components/Table/AgGridHeader.js +0 -1009
  297. package/src/components/Table/CommentsPortal.js +0 -428
  298. package/src/components/Table/NewAdvanceSearchModal/NewAdvanceSearchModal.js +0 -323
  299. package/src/components/Table/NewAdvanceSearchModal/NewAdvanceSearchModalItem.js +0 -476
  300. package/src/components/Table/NoComments.js +0 -295
  301. package/src/components/Table/Table.styles.scss +0 -3859
  302. package/src/components/Table/actionBar.js +0 -43
  303. package/src/components/Table/advanceSearchModal.js +0 -797
  304. package/src/components/Table/commentPanel.js +0 -421
  305. package/src/components/Table/filterUtils.js +0 -850
  306. package/src/components/Table/index.js +0 -2175
  307. package/src/components/Table/mockData.js +0 -1344
  308. package/src/components/Table/tableFunctions.js +0 -1676
  309. package/src/components/Table/tableHeader.js +0 -476
  310. package/src/components/Table/tableIcons.js +0 -61
  311. package/src/components/Table/tableMoreOptions.js +0 -293
  312. package/src/components/Table/tablePagination.js +0 -63
  313. package/src/components/Table/tableSettings.js +0 -287
  314. package/src/components/Table/withCommentIcon.js +0 -107
  315. package/src/components/TableChat/EmptyContainer.jsx +0 -13
  316. package/src/components/TableChat/README.md +0 -588
  317. package/src/components/TableChat/TableChatSidePanel.jsx +0 -832
  318. package/src/components/TableChat/TableChatSidePanel.styles.scss +0 -57
  319. package/src/components/TableChat/components/ChatMessageSkeleton/ChatFooterSkeleton.jsx +0 -43
  320. package/src/components/TableChat/components/ChatMessageSkeleton/ChatHeaderSkeleton.jsx +0 -55
  321. package/src/components/TableChat/components/ChatMessageSkeleton/ChatMessageListSkeleton.jsx +0 -94
  322. package/src/components/TableChat/components/ChatMessageSkeleton/ChatSkeleton.jsx +0 -22
  323. package/src/components/TableChat/components/ChatMessageSkeleton/ChatSkeleton.scss +0 -179
  324. package/src/components/TableChat/components/SkeletonList.jsx +0 -12
  325. package/src/components/TableChat/components/TableChatLeftSection/AddChatContainer/AddChatContainer.jsx +0 -171
  326. package/src/components/TableChat/components/TableChatLeftSection/AddChatContainer/AddChatContainer.styles.scss +0 -37
  327. package/src/components/TableChat/components/TableChatLeftSection/ChannelCheckbox/ChannelCheckbox.jsx +0 -28
  328. package/src/components/TableChat/components/TableChatLeftSection/ChatChannelItem.jsx +0 -116
  329. package/src/components/TableChat/components/TableChatLeftSection/ChatChannelList.jsx +0 -89
  330. package/src/components/TableChat/components/TableChatLeftSection/ChatHeaderButton/ChatHeaderButton.jsx +0 -27
  331. package/src/components/TableChat/components/TableChatLeftSection/ChatHeaderNavigation.jsx +0 -191
  332. package/src/components/TableChat/components/TableChatLeftSection/ChatIconButton/ChatIconButton.jsx +0 -23
  333. package/src/components/TableChat/components/TableChatLeftSection/TableChatChannelHeader.jsx +0 -117
  334. package/src/components/TableChat/components/TableChatLeftSection/TableChatChannelHeader.styles.scss +0 -469
  335. package/src/components/TableChat/components/TableChatLeftSection/UnreadBadge/UnreadBadge.jsx +0 -16
  336. package/src/components/TableChat/components/TableChatRightSection/AvatarGroup/AvatarGroup.jsx +0 -119
  337. package/src/components/TableChat/components/TableChatRightSection/AvatarGroup/AvatarGroup.styles.scss +0 -87
  338. package/src/components/TableChat/components/TableChatRightSection/ChatDefaultMessageType/ChatDefaultMessageType.jsx +0 -216
  339. package/src/components/TableChat/components/TableChatRightSection/ChatDefaultMessageType/ChatDefaultMessageType.styles.scss +0 -291
  340. package/src/components/TableChat/components/TableChatRightSection/ChatDeleteMessageType/ChatDeletedMessageType.jsx +0 -19
  341. package/src/components/TableChat/components/TableChatRightSection/ChatDeleteMessageType/DeletedMessage.styles.scss +0 -55
  342. package/src/components/TableChat/components/TableChatRightSection/ChatEditedMessageType/ChatEditedMessageType.jsx +0 -61
  343. package/src/components/TableChat/components/TableChatRightSection/ChatEditedMessageType/ChatEditedMessageType.styles.scss +0 -13
  344. package/src/components/TableChat/components/TableChatRightSection/ChatHeader/ChatHeader.jsx +0 -432
  345. package/src/components/TableChat/components/TableChatRightSection/ChatHeader/ChatHeaderAction.jsx +0 -365
  346. package/src/components/TableChat/components/TableChatRightSection/ChatHeader/ChatHeaderInfo.jsx +0 -42
  347. package/src/components/TableChat/components/TableChatRightSection/ChatHeader/chatHeader.styles.scss +0 -323
  348. package/src/components/TableChat/components/TableChatRightSection/ChatInput/ChatInput.jsx +0 -793
  349. package/src/components/TableChat/components/TableChatRightSection/ChatInput/ChatInput.styles.scss +0 -394
  350. package/src/components/TableChat/components/TableChatRightSection/ChatMessageActions/ChatMessageActions.jsx +0 -61
  351. package/src/components/TableChat/components/TableChatRightSection/ChatMessageActions/ChatMessageActions.styles.scss +0 -28
  352. package/src/components/TableChat/components/TableChatRightSection/ChatMessageAvatar/ChatMessageAvatar.jsx +0 -11
  353. package/src/components/TableChat/components/TableChatRightSection/ChatMessageAvatar/ChatMessageAvatar.styles.scss +0 -3
  354. package/src/components/TableChat/components/TableChatRightSection/ChatMessages/ChatMessage.jsx +0 -220
  355. package/src/components/TableChat/components/TableChatRightSection/ChatMessages/ChatMessage.styles.scss +0 -128
  356. package/src/components/TableChat/components/TableChatRightSection/ChatNotificationSettings/ChatNotificationSettings.jsx +0 -246
  357. package/src/components/TableChat/components/TableChatRightSection/ChatNotificationSettings/ChatNotificationSettings.styles.scss +0 -210
  358. package/src/components/TableChat/components/TableChatRightSection/DateSeparator/DateSeparator.jsx +0 -52
  359. package/src/components/TableChat/components/TableChatRightSection/DateSeparator/DateSeparator.styles.scss +0 -34
  360. package/src/components/TableChat/components/TableChatRightSection/EmojiPicker/EmojiPicker.jsx +0 -31
  361. package/src/components/TableChat/components/TableChatRightSection/FileUploader/FileUploader.jsx +0 -170
  362. package/src/components/TableChat/components/TableChatRightSection/ImageUploader/ImageUploader.jsx +0 -165
  363. package/src/components/TableChat/components/TableChatRightSection/PinedChatPanel/PinedChat.styles.scss +0 -587
  364. package/src/components/TableChat/components/TableChatRightSection/PinedChatPanel/PinedChatPanel.jsx +0 -244
  365. package/src/components/TableChat/components/TableChatRightSection/ReplyBadge/ReplyBadge.jsx +0 -29
  366. package/src/components/TableChat/components/TableChatRightSection/ReplyBadge/ReplyBadge.styles.scss +0 -47
  367. package/src/components/TableChat/components/TableChatRightSection/TableChatRightSection.jsx +0 -1340
  368. package/src/components/TableChat/components/TableChatRightSection/TableChatRightSection.styles.scss +0 -147
  369. package/src/components/TableChat/components/TextEditor/EditorToolbar.jsx +0 -209
  370. package/src/components/TableChat/components/TextEditor/EditorToolbar.styles.scss +0 -61
  371. package/src/components/TableChat/components/TextEditor/Mention.jsx +0 -234
  372. package/src/components/TableChat/components/TextEditor/MentionList.jsx +0 -118
  373. package/src/components/TableChat/components/TextEditor/MentionList.scss +0 -146
  374. package/src/components/TableChat/components/TextEditor/styles.scss +0 -278
  375. package/src/components/TableChat/components/TextEditor/suggestion.js +0 -124
  376. package/src/components/TableChat/components/chatConfig.js +0 -64
  377. package/src/components/TableChat/hooks/useInfiniteScroll.js +0 -256
  378. package/src/components/TableOld/AgGridHeader.js +0 -545
  379. package/src/components/TableOld/Table.styles.scss +0 -2192
  380. package/src/components/TableOld/actionBar.js +0 -43
  381. package/src/components/TableOld/index.js +0 -598
  382. package/src/components/TableOld/mockData.js +0 -1344
  383. package/src/components/TableOld/tableFunctions.js +0 -1734
  384. package/src/components/TableOld/tableHeader.js +0 -251
  385. package/src/components/TableOld/tableIcons.js +0 -61
  386. package/src/components/TableOld/tablePagination.js +0 -64
  387. package/src/components/TableOld/tableSettings.js +0 -166
  388. package/src/components/Tabs/Tabs.styles.scss +0 -120
  389. package/src/components/Tabs/index.js +0 -91
  390. package/src/components/Tabs/tabPanel.js +0 -38
  391. package/src/components/Tag/Tags.styles.scss +0 -71
  392. package/src/components/Tag/filled.js +0 -48
  393. package/src/components/Tag/index.js +0 -54
  394. package/src/components/Tag/solid.js +0 -47
  395. package/src/components/Tag/stroke.js +0 -47
  396. package/src/components/Tag/utils.js +0 -12
  397. package/src/components/TagGroup/TagGroup.styles.scss +0 -7
  398. package/src/components/TagGroup/index.js +0 -6
  399. package/src/components/TextArea/TextArea.styles.scss +0 -158
  400. package/src/components/TextArea/index.js +0 -121
  401. package/src/components/Toast/Toast.styles.scss +0 -66
  402. package/src/components/Toast/index.js +0 -35
  403. package/src/components/Tooltip/Tooltips.styles.scss +0 -111
  404. package/src/components/Tooltip/index.js +0 -68
  405. package/src/components/common/HelperText/HelperText.styles.scss +0 -18
  406. package/src/components/common/HelperText/index.js +0 -44
  407. package/src/components/common/MentionEditor/MentionEditor.styles.scss +0 -301
  408. package/src/components/common/MentionEditor/MentionList/MentionList.styles.scss +0 -146
  409. package/src/components/common/MentionEditor/MentionList/index.js +0 -130
  410. package/src/components/common/MentionEditor/index.js +0 -246
  411. package/src/components/common/MentionEditor/suggestion.js +0 -124
  412. package/src/components/index.js +0 -53
  413. package/src/stories/Accordion.stories.js +0 -151
  414. package/src/stories/AccordionModern.stories.js +0 -263
  415. package/src/stories/Alert.stories.js +0 -103
  416. package/src/stories/Avatar.stories.js +0 -79
  417. package/src/stories/Badge.stories.js +0 -112
  418. package/src/stories/BottomSheet.stories.js +0 -224
  419. package/src/stories/Breadcrumbs.stories.js +0 -143
  420. package/src/stories/Button.stories.js +0 -190
  421. package/src/stories/ButtonGroup.stories.js +0 -123
  422. package/src/stories/Card.stories.js +0 -73
  423. package/src/stories/Changelog.mdx +0 -1006
  424. package/src/stories/Chart.stories.js +0 -2017
  425. package/src/stories/ChatBot.stories.js +0 -668
  426. package/src/stories/Checkbox.stories.js +0 -209
  427. package/src/stories/Chips.stories.js +0 -106
  428. package/src/stories/CreateItemFlow.stories.js +0 -255
  429. package/src/stories/DatePicker.stories.js +0 -311
  430. package/src/stories/DateRangePicker.stories.js +0 -364
  431. package/src/stories/EmptyState.stories.js +0 -110
  432. package/src/stories/FileUpload.stories.js +0 -169
  433. package/src/stories/FilterPanel.stories.js +0 -309
  434. package/src/stories/FiltersStrip.stories.js +0 -244
  435. package/src/stories/GettingStarted.mdx +0 -153
  436. package/src/stories/Header.stories.js +0 -185
  437. package/src/stories/HomePage.stories.js +0 -201
  438. package/src/stories/Input.stories.js +0 -165
  439. package/src/stories/Loader.stories.js +0 -33
  440. package/src/stories/Menu.stories.js +0 -309
  441. package/src/stories/Modal.stories.js +0 -185
  442. package/src/stories/MonthPicker.stories.js +0 -313
  443. package/src/stories/MonthRangePicker.stories.js +0 -255
  444. package/src/stories/Notification.stories.js +0 -500
  445. package/src/stories/Panel.stories.js +0 -179
  446. package/src/stories/Popover.stories.js +0 -125
  447. package/src/stories/ProgressBar.stories.js +0 -93
  448. package/src/stories/Prompt.stories.js +0 -120
  449. package/src/stories/RadioButtonGroup.stories.js +0 -83
  450. package/src/stories/Select.stories.js +0 -753
  451. package/src/stories/Sidebar.stories.js +0 -177
  452. package/src/stories/Slider.stories.js +0 -226
  453. package/src/stories/Stepper.stories.js +0 -158
  454. package/src/stories/Switch.stories.js +0 -72
  455. package/src/stories/Table.stories.js +0 -4323
  456. package/src/stories/TableChat.mdx +0 -992
  457. package/src/stories/TableChat.stories.js +0 -1712
  458. package/src/stories/TableOld.stories.js +0 -954
  459. package/src/stories/Tabs.stories.js +0 -253
  460. package/src/stories/Tag.stories.js +0 -92
  461. package/src/stories/TagGroup.stories.js +0 -39
  462. package/src/stories/TextArea.stories.js +0 -148
  463. package/src/stories/Toast.stories.js +0 -113
  464. package/src/stories/Tooltip.stories.js +0 -86
  465. package/src/stories/storybookLinks.mdx +0 -20
@@ -1,1676 +0,0 @@
1
- import React, {
2
- forwardRef,
3
- useEffect,
4
- useState,
5
- useRef,
6
- useCallback,
7
- useMemo,
8
- } from "react";
9
- import { Checkbox } from "../Checkbox/index";
10
- import { Input } from "../Input";
11
- import { IconButton } from "@mui/material";
12
- import { DragIndicator } from "@mui/icons-material";
13
- import SearchIcon from "@mui/icons-material/Search";
14
- import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
15
- import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight";
16
- import saveViewIcon from "../../assets/saveViewIcon.svg";
17
- import { Button } from "../Button";
18
- import { Modal } from "../Modal";
19
- import { RadioButtonGroup } from "../RadioButtonGroup";
20
- import { Select } from "../Select";
21
- import { Badge } from "../Badge";
22
- import { Prompt } from "../Prompt";
23
- import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
24
- import { isViewNameUnique } from "../../utils/helper";
25
- import saveViewEditIcon from "../../assets/saveViewEditIcon.svg";
26
- import saveViewDeleteIcon from "../../assets/saveViewDeleteIcon.svg";
27
- import defaultViewIcon from "../../assets/defaultViewIcon.svg";
28
- import defaultViewActiveIcon from "../../assets/defaultViewIconActive.svg";
29
- import {
30
- DndContext,
31
- closestCenter,
32
- useSensor,
33
- useSensors,
34
- MouseSensor,
35
- TouchSensor,
36
- } from "@dnd-kit/core";
37
- import { SortableContext, useSortable, arrayMove } from "@dnd-kit/sortable";
38
- import { CSS } from "@dnd-kit/utilities";
39
- import { debounce } from "../../utils/debounce";
40
-
41
- export const onColMenuFreezeClick = (params) => {
42
- const { pinned } = params.column;
43
- // if column is pinned then unpin, vice-versa
44
- if (pinned) {
45
- freezeColumn(params, false);
46
- } else {
47
- freezeColumn(params, true);
48
- }
49
- };
50
-
51
- export const freezeColumn = (params, isPinned) => {
52
- const { colId } = params.column;
53
- params.api.applyColumnState({
54
- state: [{ colId, pinned: isPinned ? "left" : null }],
55
- });
56
- };
57
-
58
- export const onColMenuAutoAdjustClick = (params) => {
59
- let colDefExtra = { ...params.column.colDef.extra };
60
- // delete colDefExtra.width;
61
- params.column.colDef.extra = colDefExtra;
62
- params.api.autoSizeColumn(params.column);
63
- };
64
-
65
- export const sortFunc = (columnData, sortBy, api) => {
66
- // applyColumnState - to manually set the sort order for a particular column
67
- api.api.applyColumnState({
68
- state: [{ colId: columnData.colId, sort: sortBy }],
69
- defaultState: { sort: null },
70
- });
71
- };
72
-
73
- export const getMainMenuItems = (params) => {
74
- const { onFontSizeChange, onNumberFormatChange } = params;
75
- const { colDef, pinned, sort, actualWidth } = params.column;
76
- const columnMenuItems = [];
77
-
78
- // grid column menu title
79
- columnMenuItems.push(
80
- {
81
- name: "Column Settings",
82
- cssClasses: ["settings-main-container"],
83
- },
84
- "separator"
85
- );
86
-
87
- // ability to sort column
88
- columnMenuItems.push({
89
- name: "Sort",
90
- subMenu: [
91
- {
92
- name: "Sort A to Z",
93
- action: () => sortFunc(params.column, "asc", params),
94
- checked: sort === "asc",
95
- },
96
- {
97
- name: "Sort Z to A",
98
- checked: sort === "desc",
99
- action: () => sortFunc(params.column, "desc", params),
100
- },
101
- {
102
- name: "Reset",
103
- action: () => sortFunc(params.column, null, params),
104
- },
105
- ],
106
- disabled: !colDef?.sortable,
107
- });
108
-
109
- // ability to pin/unpin columns based on current state
110
- columnMenuItems.push({
111
- name: pinned ? "Unfreeze Column" : "Freeze Column",
112
- action: () => {
113
- onColMenuFreezeClick(params);
114
- },
115
- });
116
-
117
- // ability to adjust column width to custom or auto
118
- columnMenuItems.push({
119
- name: "Column width",
120
- subMenu: [
121
- {
122
- name: "Auto Adjust",
123
- action: () => {
124
- onColMenuAutoAdjustClick(params);
125
- },
126
- // if extra.width property is not present- column is auto adjusted
127
- checked: actualWidth !== colDef?.extra?.width,
128
- },
129
- {
130
- name: "Custom width",
131
- action: () => {
132
- // add extra.width property for custom width
133
- params.api.setColumnWidth(params.column.colDef, colDef?.extra?.width);
134
- },
135
- // if extra.width property is present- column has custom width
136
- checked: colDef?.extra?.width === actualWidth,
137
- disabled: !colDef?.extra?.width,
138
- },
139
- ],
140
- });
141
-
142
- // text wrap action
143
- columnMenuItems.push({
144
- name: "Wrap Text",
145
- disabled: true,
146
- });
147
-
148
- columnMenuItems.push(
149
- {
150
- name: "Format",
151
- cssClasses: ["format-main-container"],
152
- },
153
- "separator"
154
- );
155
-
156
- columnMenuItems.push({
157
- name: "Numeric Values",
158
- subMenu: [
159
- {
160
- name: "Full Number",
161
- action: () => onNumberFormatChange("full"),
162
- },
163
- {
164
- name: "In K",
165
-
166
- action: () => onNumberFormatChange("thousand"),
167
- },
168
- {
169
- name: "In Mn",
170
- action: () => onNumberFormatChange("million"),
171
- },
172
- {
173
- name: "In Bn",
174
- action: () => onNumberFormatChange("billion"),
175
- },
176
- ],
177
- disabled: !onFontSizeChange,
178
- });
179
- columnMenuItems.push({
180
- name: "Font Size",
181
- subMenu: [
182
- {
183
- name: "Small Font",
184
- action: () => onFontSizeChange("small"),
185
- },
186
- {
187
- name: "Medium Font",
188
-
189
- action: () => onFontSizeChange("medium"),
190
- },
191
- {
192
- name: "Large Font",
193
- action: () => onFontSizeChange("large"),
194
- },
195
- ],
196
- disabled: !onNumberFormatChange,
197
- });
198
-
199
- return columnMenuItems;
200
- };
201
-
202
- // Replace the existing `export const Columns = forwardRef((props, ref) => { ... })`
203
- // with the following corrected implementation.
204
-
205
- const SortableColumnItem = ({
206
- column,
207
- level,
208
- renderFn,
209
- dragIconClass,
210
- onToggle,
211
- ...props
212
- }) => {
213
- const {
214
- attributes,
215
- listeners,
216
- setNodeRef,
217
- transform,
218
- transition,
219
- isDragging,
220
- } = useSortable({
221
- id: column.colId,
222
- });
223
- const style = {
224
- transform: CSS.Transform.toString(transform),
225
- transition,
226
- opacity: isDragging ? 0.5 : 1,
227
- // background: isDragging ? '#f0f0f0' : undefined,
228
- zIndex: isDragging ? 100 : undefined,
229
- };
230
- return (
231
- <div ref={setNodeRef} style={style}>
232
- {renderFn({
233
- column,
234
- level,
235
- dragProps: { ...attributes, ...listeners },
236
- dragIconClass,
237
- onToggle,
238
- })}
239
- </div>
240
- );
241
- };
242
-
243
- export const Columns = forwardRef((props, ref) => {
244
- const [searchText, setSearchText] = useState("");
245
- const [collapsedScrollable, setCollapsedScrollable] = useState(false);
246
- const [collapsedColumn, setCollapsedcolumn] = useState(false);
247
- const [frozenColumn, setFrozenColumn] = useState([]);
248
- const [scrollableColumn, setScrollableColumn] = useState([]);
249
- const [filteredFrozenColumns, setFilteredFrozenColumns] = useState([]);
250
- const [filteredScrollableColumns, setFilteredScrollableColumns] = useState(
251
- []
252
- );
253
- const [allColumnVisibility, setAllColumnvisisbility] = useState(true);
254
- const [mainChecked, setMainChecked] = useState(true);
255
- const [collapsedScrollColumns, setCollapsedScrollColumns] = useState({});
256
- const [collapsedFrozenColumns, setCollapsedFrozenColumns] = useState({});
257
- const [openSaveViewModal, setOpenSaveViewModal] = useState(false);
258
- const [isDefaultView, setIsDefaultView] = useState(false);
259
- const [selectedViewType, setSelectedViewType] = useState(
260
- props?.saveViewCustomFilter?.selectedOption
261
- );
262
- const [savedViewsOptions, setSavedViewsOptions] = useState(
263
- props?.savedViewsOptions || []
264
- );
265
- const [filteredSavedViewsOptions, setFilteredSavedViewsOptions] = useState(
266
- props?.savedViewsOptions || []
267
- );
268
- const [currentSaveViewOptions, setCurrentSaveViewOptions] = useState([]);
269
- const [selectedSavedView, setSelectedSavedView] = useState(null);
270
- const [inputValue, setInputValue] = useState("");
271
- const [isOpen, setIsOpen] = useState(false);
272
- const [openSaveViewMenu, setOpenSaveViewMenu] = useState(false);
273
- const [selectedBadge, setSelectedBadge] = useState("All");
274
- const [isEditView, setIsEditView] = useState(false);
275
- const [editedView, setEditedView] = useState(null);
276
- const [saveViewSearchText, setSaveViewSearchText] = useState("");
277
- const [openDeletePrompt, setOpenDeletePrompt] = useState(false);
278
- const [deleteView, setDeleteView] = useState(null);
279
- const [selectedView, setSelectedView] = useState(null);
280
- const isColumnPinnedRef = useRef(false);
281
-
282
- useEffect(() => {
283
- if (props?.savedViewsOptions?.length > 0) {
284
- // Create options for Select: { label: viewName, value: viewName }
285
- const options = props?.savedViewsOptions.map((view) => ({
286
- label: view.viewName,
287
- value: view.viewName,
288
- disabled: view?.isDisabled,
289
- }));
290
- setCurrentSaveViewOptions(options);
291
- setSavedViewsOptions(props?.savedViewsOptions);
292
- setFilteredSavedViewsOptions(props?.savedViewsOptions);
293
- setSelectedView(props?.savedViewsOptions.filter((view) => view.isActive));
294
- }
295
- }, [props?.savedViewsOptions]);
296
-
297
- const getColumnDefs = useCallback((columns) => {
298
- return columns.map((column) => {
299
- if (column.children) {
300
- const updatedChildren = getColumnDefs(column.children);
301
- const allChildrenHidden = updatedChildren.every(
302
- (child) => child.hide === true
303
- );
304
- return {
305
- ...column,
306
- children: updatedChildren,
307
- hide: allChildrenHidden,
308
- };
309
- }
310
- return column;
311
- });
312
- }, []);
313
-
314
- const updateColumnState = useCallback(() => {
315
- const getColumnState = (columns) => {
316
- return columns.map((column) => {
317
- // Handle the parent column definition
318
- const columnState = {
319
- colId: column.colId || column.field || column.headerName,
320
- headerName: column.headerName || column.field || "N/A",
321
- isVisible: !column?.hide,
322
- isPinned: column.pinned ? true : false,
323
- children:
324
- column?.children?.length > 0
325
- ? getColumnState(column.children)
326
- : null, // Recursively handle child columns
327
- disabled: column?.disableColumnCheckboxInSettings,
328
- };
329
-
330
- return columnState;
331
- });
332
- };
333
-
334
- const columnDefs = getColumnDefs(
335
- ref?.current?.api?.getColumnDefs() || props.column
336
- );
337
-
338
- // Call the function to get the column state
339
- const columnState = getColumnState(columnDefs);
340
- const { frozColumn, scrollColumn } = (columnState || []).reduce(
341
- (acc, column) => {
342
- if (column.isPinned) {
343
- acc.frozColumn.push(column);
344
- } else {
345
- acc.scrollColumn.push(column);
346
- }
347
- return acc;
348
- },
349
- { frozColumn: [], scrollColumn: [] }
350
- );
351
- setFrozenColumn(frozColumn);
352
- setFilteredFrozenColumns(frozColumn);
353
- setScrollableColumn(scrollColumn);
354
- setFilteredScrollableColumns(scrollColumn);
355
- }, [getColumnDefs, ref, props.column]);
356
-
357
- const debouncedUpdateColumnState = useMemo(
358
- () => debounce(updateColumnState, 100),
359
- [updateColumnState]
360
- );
361
-
362
- useEffect(() => {
363
- if (props.showMenu || isColumnPinnedRef.current) {
364
- isColumnPinnedRef.current = false;
365
-
366
- updateColumnState();
367
-
368
- const onColumnPinned = () => {
369
- isColumnPinnedRef.current = true;
370
- debouncedUpdateColumnState();
371
- };
372
-
373
- if (ref?.current) {
374
- ref.current?.api?.addEventListener("columnPinned", onColumnPinned);
375
- ref.current?.api?.addEventListener("columnMoved", onColumnPinned);
376
- ref.current?.api?.addEventListener("columnVisible", onColumnPinned);
377
- }
378
-
379
- return () => {
380
- if (ref?.current) {
381
- ref.current?.api?.removeEventListener("columnPinned", onColumnPinned);
382
- ref.current?.api?.removeEventListener("columnMoved", onColumnPinned);
383
- ref.current?.api?.removeEventListener(
384
- "columnVisible",
385
- onColumnPinned
386
- );
387
- }
388
- };
389
- }
390
- }, [props.showMenu]);
391
-
392
- const [frozenColumnOrder, setFrozenColumnOrder] = useState([]);
393
- const [scrollableColumnOrder, setScrollableColumnOrder] = useState([]);
394
-
395
- // DnD sensors
396
- const sensors = useSensors(useSensor(MouseSensor), useSensor(TouchSensor));
397
-
398
- const getAllColumnIds = (columns) => {
399
- let ids = [];
400
- columns.forEach((col) => {
401
- ids.push(col.colId);
402
- if (col.children && col.children.length > 0) {
403
- ids = ids.concat(getAllColumnIds(col.children));
404
- }
405
- });
406
- return ids;
407
- };
408
-
409
- useEffect(() => {
410
- setFrozenColumnOrder(getAllColumnIds(filteredFrozenColumns));
411
- setScrollableColumnOrder(getAllColumnIds(filteredScrollableColumns));
412
- }, [filteredFrozenColumns, filteredScrollableColumns]);
413
-
414
- const handleSearchChange = (e) => {
415
- const searchText = e.target.value.toLowerCase();
416
-
417
- const filterColumns = (columns, searchText) => {
418
- return columns
419
- .map((column) => {
420
- // Check if the current column matches the search text
421
- const matches = column.headerName.toLowerCase().includes(searchText);
422
-
423
- // If the column has children, filter them recursively
424
- const filteredChildren = column.children
425
- ? filterColumns(column.children, searchText)
426
- : null;
427
-
428
- // Include the column if it matches or any of its children match
429
- if (matches || filteredChildren?.length > 0) {
430
- return {
431
- ...column,
432
- children: filteredChildren,
433
- isVisible: column.isVisible,
434
- };
435
- }
436
- return null;
437
- })
438
- .filter(Boolean);
439
- };
440
-
441
- const filteredFrozenColumns = filterColumns(frozenColumn, searchText);
442
- const filteredScrollableColumns = filterColumns(
443
- scrollableColumn,
444
- searchText
445
- );
446
-
447
- setSearchText(searchText);
448
- setFilteredFrozenColumns(filteredFrozenColumns);
449
- setFilteredScrollableColumns(filteredScrollableColumns);
450
- };
451
-
452
- useEffect(() => {
453
- const isAnyScrollableColumnVisible = filteredScrollableColumns.some(
454
- (column) => {
455
- if (column.children) {
456
- return column.children.some((child) => child.isVisible);
457
- }
458
- return column.isVisible;
459
- }
460
- );
461
- const isAnyFrozenColumnVisible = filteredFrozenColumns.some((column) => {
462
- if (column.children) {
463
- return column.children.some((child) => child.isVisible);
464
- }
465
- return column.isVisible;
466
- });
467
- setMainChecked(isAnyScrollableColumnVisible);
468
- setAllColumnvisisbility(
469
- isAnyFrozenColumnVisible || isAnyScrollableColumnVisible
470
- );
471
- }, [filteredFrozenColumns, filteredScrollableColumns]);
472
-
473
- // Handle visibility toggle for columns
474
- const toggleColumnVisibilityFrozen = (colId) => {
475
- const updateChildrenVisibility = (columns, parentVisibility = null) =>
476
- columns.map((column) => {
477
- const updatedChildren = column.children
478
- ? updateChildrenVisibility(column.children, parentVisibility)
479
- : null;
480
- ref?.current?.api.setColumnVisible(column.colId, parentVisibility);
481
- return {
482
- ...column,
483
- isVisible: parentVisibility,
484
- children: updatedChildren,
485
- };
486
- });
487
-
488
- const updateVisibility = (columns, parentVisibility = null) =>
489
- columns.map((column) => {
490
- // If the column matches the colId, toggle its visibility
491
- if (column.colId === colId) {
492
- const newVisibility =
493
- parentVisibility !== null ? parentVisibility : !column.isVisible;
494
-
495
- // Update children visibility if it's a parent toggle
496
- const updatedChildren = column.children
497
- ? updateChildrenVisibility(column.children, newVisibility)
498
- : null;
499
-
500
- // Reflect visibility change in grid API
501
- ref?.current?.api.setColumnVisible(column.colId, newVisibility);
502
-
503
- return {
504
- ...column,
505
- isVisible: newVisibility,
506
- children: updatedChildren,
507
- };
508
- }
509
-
510
- // If it doesn't match, process children if they exist
511
- if (column.children) {
512
- const updatedChildren = updateVisibility(column.children);
513
-
514
- // Update parent's visibility based on children's visibility
515
- const isAnyChildVisible = updatedChildren.some(
516
- (child) => child.isVisible
517
- );
518
- ref?.current?.api.setColumnVisible(column.colId, isAnyChildVisible);
519
-
520
- return {
521
- ...column,
522
- isVisible: isAnyChildVisible,
523
- children: updatedChildren,
524
- };
525
- }
526
-
527
- return column; // No changes for unmatched columns without children
528
- });
529
-
530
- // Update the state with the new visibility
531
- const updatedColumns = updateVisibility(filteredFrozenColumns);
532
- setFilteredFrozenColumns(updatedColumns);
533
- setFrozenColumn((prev) => {
534
- const updatedMap = Object.fromEntries(
535
- updatedColumns.map((col) => [col.colId, col])
536
- );
537
- const merged = prev.map((col) =>
538
- updatedMap[col.colId] ? updatedMap[col.colId] : col
539
- );
540
- const prevColIds = new Set(prev.map((col) => col.colId));
541
- const newCols = updatedColumns.filter(
542
- (col) => !prevColIds.has(col.colId)
543
- );
544
- return [...merged, ...newCols];
545
- });
546
- };
547
-
548
- const toggleColumnVisibilityScroll = (colId) => {
549
- const updateChildrenVisibility = (columns, parentVisibility = null) =>
550
- columns.map((column) => {
551
- const updatedChildren = column.children
552
- ? updateChildrenVisibility(column.children, parentVisibility)
553
- : null;
554
- ref?.current?.api.setColumnVisible(column.colId, parentVisibility);
555
- return {
556
- ...column,
557
- isVisible: parentVisibility,
558
- children: updatedChildren,
559
- };
560
- });
561
-
562
- const updateVisibility = (columns, parentVisibility = null) =>
563
- columns.map((column) => {
564
- // If the column matches the colId, toggle its visibility
565
- if (column.colId === colId) {
566
- const newVisibility =
567
- parentVisibility !== null ? parentVisibility : !column.isVisible;
568
-
569
- // Update children visibility if it's a parent toggle
570
- const updatedChildren = column.children
571
- ? updateChildrenVisibility(column.children, newVisibility)
572
- : null;
573
-
574
- // Reflect visibility change in grid API
575
- ref?.current?.api.setColumnVisible(column.colId, newVisibility);
576
-
577
- return {
578
- ...column,
579
- isVisible: newVisibility,
580
- children: updatedChildren,
581
- };
582
- }
583
-
584
- // If it doesn't match, process children if they exist
585
- if (column.children) {
586
- const updatedChildren = updateVisibility(column.children);
587
-
588
- // Update parent's visibility based on children's visibility
589
- const isAnyChildVisible = updatedChildren.some(
590
- (child) => child.isVisible
591
- );
592
- ref?.current?.api.setColumnVisible(column.colId, isAnyChildVisible);
593
-
594
- return {
595
- ...column,
596
- isVisible: isAnyChildVisible,
597
- children: updatedChildren,
598
- };
599
- }
600
-
601
- return column; // No changes for unmatched columns without children
602
- });
603
-
604
- // Update the state with the new visibility
605
- const updatedColumns = updateVisibility(filteredScrollableColumns);
606
- setFilteredScrollableColumns(updatedColumns);
607
- setScrollableColumn((prev) => {
608
- const updatedMap = Object.fromEntries(
609
- updatedColumns.map((col) => [col.colId, col])
610
- );
611
- const merged = prev.map((col) =>
612
- updatedMap[col.colId] ? updatedMap[col.colId] : col
613
- );
614
- const prevColIds = new Set(prev.map((col) => col.colId));
615
- const newCols = updatedColumns.filter(
616
- (col) => !prevColIds.has(col.colId)
617
- );
618
- return [...merged, ...newCols];
619
- });
620
- };
621
-
622
- const toggleScrollableCollapse = (e) => {
623
- e.stopPropagation();
624
- setCollapsedScrollable(!collapsedScrollable);
625
- };
626
-
627
- const toggleColumnCollapse = (e) => {
628
- e.stopPropagation();
629
- setCollapsedcolumn(!collapsedColumn);
630
- };
631
-
632
- const onMainCheckboxChange = () => {
633
- // Toggle the main checkbox state
634
- setMainChecked((prev) => !prev);
635
-
636
- // Helper function to recursively update visibility for all columns and children
637
- const updateVisibility = (columns, visibility) => {
638
- return columns.map((column) => {
639
- // Set column visibility
640
- ref?.current?.api?.setColumnVisible(column.colId, visibility);
641
-
642
- // If the column has children, recursively update their visibility
643
- if (column.children) {
644
- updateVisibility(column.children, visibility);
645
- }
646
-
647
- // Return the updated column with new visibility state
648
- return {
649
- ...column,
650
- isVisible: visibility,
651
- children: column.children
652
- ? updateVisibility(column.children, visibility)
653
- : null,
654
- };
655
- });
656
- };
657
-
658
- // Update the visibility for all columns (parent + children)
659
- const updatedColumns = updateVisibility(
660
- filteredScrollableColumns,
661
- !mainChecked
662
- );
663
- setFilteredScrollableColumns(updatedColumns);
664
- setScrollableColumn((prev) => {
665
- const updatedMap = Object.fromEntries(
666
- updatedColumns.map((col) => [col.colId, col])
667
- );
668
- const merged = prev.map((col) =>
669
- updatedMap[col.colId] ? updatedMap[col.colId] : col
670
- );
671
- const prevColIds = new Set(prev.map((col) => col.colId));
672
- const newCols = updatedColumns.filter(
673
- (col) => !prevColIds.has(col.colId)
674
- );
675
- return [...merged, ...newCols];
676
- });
677
- };
678
-
679
- const onAllColumnCheckBoxChange = () => {
680
- setAllColumnvisisbility((prev) => !prev); // Toggle visibility state
681
- setMainChecked(!allColumnVisibility);
682
- // Helper function to recursively update visibility for all columns and children
683
- const updateColumnVisibility = (columns, visibility) => {
684
- return columns.map((column) => {
685
- // Set column visibility in ag-Grid API
686
- ref?.current?.api?.setColumnVisible(column.colId, visibility);
687
-
688
- // If column has children, recursively update their visibility
689
- if (column.children) {
690
- updateColumnVisibility(column.children, visibility);
691
- }
692
-
693
- // Return the updated column with new visibility state
694
- return {
695
- ...column,
696
- isVisible: visibility,
697
- children: column.children
698
- ? updateColumnVisibility(column.children, visibility)
699
- : null,
700
- };
701
- });
702
- };
703
-
704
- // Update visibility for frozen columns
705
- const updatedFrozenColumns = updateColumnVisibility(
706
- filteredFrozenColumns,
707
- !allColumnVisibility
708
- );
709
-
710
- const updatedScrollableColumns = updateColumnVisibility(
711
- filteredScrollableColumns,
712
- !allColumnVisibility
713
- );
714
-
715
- // Update the state with the new visibility for all columns
716
- setFilteredFrozenColumns(updatedFrozenColumns);
717
- setFilteredScrollableColumns(updatedScrollableColumns);
718
- setFrozenColumn((prev) => {
719
- const updatedMap = Object.fromEntries(
720
- updatedFrozenColumns.map((col) => [col.colId, col])
721
- );
722
- const merged = prev.map((col) =>
723
- updatedMap[col.colId] ? updatedMap[col.colId] : col
724
- );
725
- const prevColIds = new Set(prev.map((col) => col.colId));
726
- const newCols = updatedFrozenColumns.filter(
727
- (col) => !prevColIds.has(col.colId)
728
- );
729
- return [...merged, ...newCols];
730
- });
731
- setScrollableColumn((prev) => {
732
- const updatedMap = Object.fromEntries(
733
- updatedScrollableColumns.map((col) => [col.colId, col])
734
- );
735
- const merged = prev.map((col) =>
736
- updatedMap[col.colId] ? updatedMap[col.colId] : col
737
- );
738
- const prevColIds = new Set(prev.map((col) => col.colId));
739
- const newCols = updatedScrollableColumns.filter(
740
- (col) => !prevColIds.has(col.colId)
741
- );
742
- return [...merged, ...newCols];
743
- });
744
- };
745
-
746
- const toggleScrollColumnCollapse = (colId) => {
747
- setCollapsedScrollColumns((prev) => ({
748
- ...prev,
749
- [colId]: !prev[colId], // Toggle collapse state for the specific column
750
- }));
751
- };
752
-
753
- const toggleFrozenColumnCollapse = (colId) => {
754
- setCollapsedFrozenColumns((prev) => ({
755
- ...prev,
756
- [colId]: !prev[colId], // Toggle collapse state for the specific frozen column
757
- }));
758
- };
759
-
760
- const reorderColDefsByColId = (colDefs, newOrder, type = "scrollable") => {
761
- // Helper to recursively reorder columns and their children
762
- const reorder = (columns) => {
763
- // Filter columns by type
764
- let filteredCols = [];
765
- if (type === "frozen") {
766
- filteredCols = columns.filter((col) => col.pinned === "left");
767
- } else {
768
- filteredCols = columns.filter((col) => col.pinned !== "left");
769
- }
770
- // Sort and map recursively
771
- const sorted = [...filteredCols]
772
- .filter((col) =>
773
- newOrder.includes(col.colId || col.field || col.headerName)
774
- )
775
- .sort(
776
- (a, b) =>
777
- newOrder.indexOf(a.colId || a.field || a.headerName) -
778
- newOrder.indexOf(b.colId || b.field || b.headerName)
779
- )
780
- .map((col) => {
781
- if (col.children && col.children.length > 0) {
782
- return {
783
- ...col,
784
- children: reorder(col.children),
785
- };
786
- }
787
- return col;
788
- });
789
- return sorted;
790
- };
791
-
792
- // Get the other type columns to append at the end
793
- let otherCols = [];
794
- if (type === "frozen") {
795
- otherCols = colDefs.filter((col) => col.pinned !== "left");
796
- } else {
797
- otherCols = colDefs.filter((col) => col.pinned === "left");
798
- }
799
-
800
- return [...otherCols, ...reorder(colDefs)];
801
- };
802
-
803
- const handleFrozenDragEnd = (event) => {
804
- const { active, over } = event;
805
- if (active.id !== over?.id) {
806
- const oldIndex = frozenColumnOrder.indexOf(active.id);
807
- const newIndex = frozenColumnOrder.indexOf(over.id);
808
- const newOrder = arrayMove(frozenColumnOrder, oldIndex, newIndex);
809
- setFrozenColumnOrder(newOrder);
810
- const reordered = newOrder
811
- .map((id) => frozenColumn.find((c) => c.colId === id))
812
- .filter(Boolean);
813
- setFrozenColumn(reordered);
814
- setFilteredFrozenColumns(reordered);
815
- let colDefs = ref?.current?.api?.getColumnDefs();
816
- if (colDefs) {
817
- const newColDefs = reorderColDefsByColId(colDefs, newOrder, "frozen");
818
- ref?.current?.api?.setGridOption("columnDefs", newColDefs);
819
- }
820
- }
821
- };
822
- const handleScrollableDragEnd = (event) => {
823
- const { active, over } = event;
824
- if (active.id !== over?.id) {
825
- const oldIndex = scrollableColumnOrder.indexOf(active.id);
826
- const newIndex = scrollableColumnOrder.indexOf(over.id);
827
- const newOrder = arrayMove(scrollableColumnOrder, oldIndex, newIndex);
828
- setScrollableColumnOrder(newOrder);
829
- const reordered = newOrder
830
- .map((id) => filteredScrollableColumns.find((c) => c.colId === id))
831
- .filter(Boolean);
832
- // const reordered = moveColumnById([...filteredScrollableColumns], active.id, over.id);
833
- setScrollableColumn(reordered);
834
- setFilteredScrollableColumns(reordered);
835
- let colDefs = ref?.current?.api?.getColumnDefs();
836
- if (colDefs) {
837
- const newColDefs = reorderColDefsByColId(
838
- colDefs,
839
- newOrder,
840
- "scrollable"
841
- );
842
- ref?.current?.api?.setGridOption("columnDefs", newColDefs);
843
- }
844
- }
845
- };
846
-
847
- // const moveColumnById = (columns, fromId, toId) => {
848
- // // Find and remove the column with fromId
849
- // let removed, parentFrom, indexFrom;
850
- // const remove = (cols, parent = null) => {
851
- // for (let i = 0; i < cols.length; i++) {
852
- // if (cols[i].colId === fromId) {
853
- // removed = cols.splice(i, 1)[0];
854
- // parentFrom = parent;
855
- // indexFrom = i;
856
- // return true;
857
- // }
858
- // if (cols[i].children) {
859
- // if (remove(cols[i].children, cols[i])) return true;
860
- // }
861
- // }
862
- // return false;
863
- // };
864
- // remove(columns);
865
-
866
- // // Find where to insert
867
- // const insert = (cols, toId) => {
868
- // for (let i = 0; i < cols.length; i++) {
869
- // if (cols[i].colId === toId) {
870
- // cols.splice(i, 0, removed);
871
- // return true;
872
- // }
873
- // if (cols[i].children) {
874
- // if (insert(cols[i].children, toId)) return true;
875
- // }
876
- // }
877
- // return false;
878
- // };
879
- // insert(columns, toId);
880
-
881
- // return columns;
882
- // };
883
-
884
- const updateColumnDefs = (order, type, movedId, pinDirection) => {
885
- let colDefs = ref?.current?.api?.getColumnDefs();
886
- if (!colDefs) return;
887
-
888
- const newColDefs = reorderColDefsByColId(colDefs, order, type);
889
- if (movedId) {
890
- const colDefToUpdate = newColDefs.find((c) => c.colId === movedId);
891
- if (colDefToUpdate) {
892
- colDefToUpdate.pinned = pinDirection;
893
- }
894
- }
895
-
896
- ref?.current?.api?.setGridOption("columnDefs", newColDefs);
897
- };
898
-
899
- const handleDragEnd = (event) => {
900
- const { active, over } = event;
901
- if (!over) return;
902
- const activeId = active.id;
903
- const overId = over.id;
904
-
905
- const isFrozenSource = frozenColumnOrder.includes(activeId);
906
- const isFrozenTarget = frozenColumnOrder.includes(overId);
907
-
908
- // If dragging within same list
909
- if (isFrozenSource && isFrozenTarget) {
910
- const oldIndex = frozenColumnOrder.indexOf(activeId);
911
- const newIndex = frozenColumnOrder.indexOf(overId);
912
- const newOrder = arrayMove(frozenColumnOrder, oldIndex, newIndex);
913
- setFrozenColumnOrder(newOrder);
914
- const reordered = newOrder
915
- .map((id) => frozenColumn.find((c) => c.colId === id))
916
- .filter(Boolean);
917
- setFrozenColumn(reordered);
918
- setFilteredFrozenColumns(reordered);
919
- updateColumnDefs(newOrder, "frozen");
920
- } else if (!isFrozenSource && !isFrozenTarget) {
921
- const oldIndex = scrollableColumnOrder.indexOf(activeId);
922
- const newIndex = scrollableColumnOrder.indexOf(overId);
923
- const newOrder = arrayMove(scrollableColumnOrder, oldIndex, newIndex);
924
- setScrollableColumnOrder(newOrder);
925
- const reordered = newOrder
926
- .map((id) => filteredScrollableColumns.find((c) => c.colId === id))
927
- .filter(Boolean);
928
- setScrollableColumn(reordered);
929
- setFilteredScrollableColumns(reordered);
930
- updateColumnDefs(newOrder, "scrollable");
931
- } else {
932
- // Handle move between frozen <--> scrollable
933
- // if (isFrozenSource) {
934
- // // Remove from frozen
935
- // const newFrozen = frozenColumnOrder.filter(id => id !== activeId);
936
- // const updatedFrozen = newFrozen.map(id => frozenColumn.find(c => c.colId === id)).filter(Boolean);
937
- // setFrozenColumnOrder(newFrozen);
938
- // setFrozenColumn(updatedFrozen);
939
- // setFilteredFrozenColumns(updatedFrozen);
940
-
941
- // // Add to scrollable
942
- // const insertAt = scrollableColumnOrder.indexOf(overId);
943
- // const newScrollable = [...scrollableColumnOrder];
944
- // newScrollable.splice(insertAt, 0, activeId);
945
- // const newScrollableCols = newScrollable.map(id =>
946
- // [...filteredFrozenColumns, ...filteredScrollableColumns].find(c => c.colId === id)
947
- // ).filter(Boolean);
948
- // setScrollableColumnOrder(newScrollable);
949
- // setScrollableColumn(newScrollableCols);
950
- // setFilteredScrollableColumns(newScrollableCols);
951
- // updateColumnDefs(newScrollable, "scrollable", activeId, null); // unpin
952
- // }
953
- if (isFrozenSource) {
954
- const updatedFrozenOrder = frozenColumnOrder.filter(
955
- (id) => id !== activeId
956
- );
957
- const updatedFrozenCols = updatedFrozenOrder
958
- .map((id) => frozenColumn.find((c) => c.colId === id))
959
- .filter(Boolean);
960
- setFrozenColumnOrder(updatedFrozenOrder);
961
- setFrozenColumn(updatedFrozenCols);
962
- setFilteredFrozenColumns(updatedFrozenCols);
963
-
964
- // Determine target insert index (safe fallback if overId is not in target list)
965
- const overIndex = scrollableColumnOrder.findIndex(
966
- (id) => id === overId
967
- );
968
- const insertAt =
969
- overIndex === -1 ? scrollableColumnOrder.length : overIndex;
970
- // Add to scrollable
971
- const newScrollableOrder = [...scrollableColumnOrder];
972
- newScrollableOrder.splice(insertAt, 0, activeId);
973
-
974
- const allColumns = [
975
- ...filteredFrozenColumns,
976
- ...filteredScrollableColumns,
977
- ];
978
- const updatedScrollableCols = newScrollableOrder
979
- .map((id) => allColumns.find((c) => c.colId === id))
980
- .filter(Boolean);
981
- setScrollableColumnOrder(newScrollableOrder);
982
- setScrollableColumn(updatedScrollableCols);
983
- setFilteredScrollableColumns(updatedScrollableCols);
984
-
985
- updateColumnDefs(newScrollableOrder, "scrollable", activeId, null); // unpin
986
- } else {
987
- // Remove from scrollable
988
- const newScrollable = scrollableColumnOrder.filter(
989
- (id) => id !== activeId
990
- );
991
- const updatedScrollable = newScrollable
992
- .map((id) => scrollableColumn.find((c) => c.colId === id))
993
- .filter(Boolean);
994
- setScrollableColumnOrder(newScrollable);
995
- setScrollableColumn(updatedScrollable);
996
- setFilteredScrollableColumns(updatedScrollable);
997
-
998
- // Add to frozen
999
- const overIndex = frozenColumnOrder.findIndex((id) => id === overId);
1000
- const insertAt =
1001
- overIndex === -1 ? frozenColumnOrder.length : overIndex;
1002
- const newFrozen = [...frozenColumnOrder];
1003
- newFrozen.splice(insertAt, 0, activeId);
1004
- const newFrozenCols = newFrozen
1005
- .map((id) =>
1006
- [...filteredFrozenColumns, ...filteredScrollableColumns].find(
1007
- (c) => c.colId === id
1008
- )
1009
- )
1010
- .filter(Boolean);
1011
- setFrozenColumnOrder(newFrozen);
1012
- setFrozenColumn(newFrozenCols);
1013
- setFilteredFrozenColumns(newFrozenCols);
1014
- updateColumnDefs(newFrozen, "frozen", activeId, "left"); // pin left
1015
- }
1016
- }
1017
- };
1018
-
1019
- const renderScrollColumn = (column, level = 0) => {
1020
- const isCollapsed = collapsedScrollColumns[column.colId] || false;
1021
- return (
1022
- <SortableColumnItem
1023
- key={column.colId}
1024
- column={column}
1025
- level={level}
1026
- renderFn={({ column, level, dragProps, dragIconClass, onToggle }) => (
1027
- <>
1028
- <div
1029
- className="table-setting-scroll-inner-column"
1030
- style={{ marginLeft: `${level * 20}px` }}
1031
- >
1032
- {Array.isArray(column.children) && column.children.length > 0 && (
1033
- <IconButton
1034
- onClick={(e) => {
1035
- e.stopPropagation();
1036
- toggleScrollColumnCollapse(column.colId);
1037
- }}
1038
- style={{ padding: "0px" }}
1039
- >
1040
- {isCollapsed ? (
1041
- <KeyboardArrowRightIcon />
1042
- ) : (
1043
- <KeyboardArrowUpIcon />
1044
- )}
1045
- </IconButton>
1046
- )}
1047
- <Checkbox
1048
- checked={column.isVisible}
1049
- onChange={() => toggleColumnVisibilityScroll(column.colId)}
1050
- disabled={column.disabled}
1051
- />
1052
- <span
1053
- {...dragProps}
1054
- style={{ cursor: "grab", display: "inline-flex" }}
1055
- >
1056
- <DragIndicator className="table-setting-scroll-columns-list-drag-icon" />
1057
- </span>
1058
- {column.headerName.charAt(0).toUpperCase() +
1059
- column.headerName.slice(1)}
1060
- </div>
1061
- {Array.isArray(column.children) &&
1062
- column.children.length > 0 &&
1063
- !isCollapsed && (
1064
- <div
1065
- style={{
1066
- marginLeft: "20px",
1067
- display: "flex",
1068
- flexDirection: "column",
1069
- gap: "4px",
1070
- marginTop: "4px",
1071
- }}
1072
- >
1073
- {column.children.map((child) => (
1074
- <div key={child.colId}>
1075
- {renderScrollColumn(child, level + 1)}
1076
- </div>
1077
- ))}
1078
- </div>
1079
- )}
1080
- </>
1081
- )}
1082
- dragIconClass="table-setting-scroll-columns-list-drag-icon"
1083
- onToggle={toggleScrollColumnCollapse}
1084
- />
1085
- );
1086
- };
1087
-
1088
- const renderFrozencolumn = (column, level = 0) => {
1089
- const isCollapsed = collapsedFrozenColumns[column.colId] || false;
1090
- return (
1091
- <SortableColumnItem
1092
- key={column.colId}
1093
- column={column}
1094
- level={level}
1095
- renderFn={({ column, level, dragProps, dragIconClass, onToggle }) => (
1096
- <>
1097
- <div
1098
- className="table-setting-frozen-columns-list-item"
1099
- style={{ marginLeft: `${level * 20}px` }}
1100
- >
1101
- {Array.isArray(column.children) && column.children.length > 0 && (
1102
- <IconButton
1103
- onClick={(e) => {
1104
- e.stopPropagation();
1105
- toggleFrozenColumnCollapse(column.colId);
1106
- }}
1107
- style={{ padding: "0px" }}
1108
- >
1109
- {isCollapsed ? (
1110
- <KeyboardArrowRightIcon />
1111
- ) : (
1112
- <KeyboardArrowUpIcon />
1113
- )}
1114
- </IconButton>
1115
- )}
1116
- <Checkbox
1117
- checked={column.isVisible}
1118
- onChange={() => toggleColumnVisibilityFrozen(column.colId)}
1119
- disabled={column?.disabled}
1120
- />
1121
- <span
1122
- {...dragProps}
1123
- style={{ cursor: "grab", display: "inline-flex" }}
1124
- >
1125
- <DragIndicator className="table-setting-frozen-columns-list-drag-icon" />
1126
- </span>
1127
- {column.headerName.charAt(0).toUpperCase() +
1128
- column.headerName.slice(1)}
1129
- </div>
1130
- {Array.isArray(column.children) &&
1131
- column.children.length > 0 &&
1132
- !isCollapsed && (
1133
- <div
1134
- style={{
1135
- marginLeft: "20px",
1136
- display: "flex",
1137
- flexDirection: "column",
1138
- gap: "4px",
1139
- marginTop: "4px",
1140
- }}
1141
- >
1142
- {column.children.map((child) => (
1143
- <div key={child.colId}>
1144
- {renderFrozencolumn(child, level + 1)}
1145
- </div>
1146
- ))}
1147
- </div>
1148
- )}
1149
- </>
1150
- )}
1151
- dragIconClass="table-setting-frozen-columns-list-drag-icon"
1152
- onToggle={toggleFrozenColumnCollapse}
1153
- />
1154
- );
1155
- };
1156
-
1157
- const handleSaveAndApply = () => {
1158
- if (isEditView) {
1159
- let newView = {
1160
- ...editedView,
1161
- viewName: inputValue,
1162
- viewType: selectedViewType,
1163
- isDefaultView: isDefaultView,
1164
- isActive: false,
1165
- };
1166
- props?.handleEditSaveView(newView, editedView);
1167
- if (!props?.isSavingViewLoading) {
1168
- setIsEditView(false);
1169
- setEditedView(null);
1170
- setOpenSaveViewModal(false);
1171
- setInputValue("");
1172
- setSelectedViewType(props?.saveViewCustomFilter?.selectedOption);
1173
- setIsDefaultView(false);
1174
- }
1175
- return;
1176
- }
1177
- let newView = {
1178
- viewName: inputValue,
1179
- viewType: selectedViewType,
1180
- isDefaultView: isDefaultView,
1181
- isActive: true,
1182
- };
1183
- setSavedViewsOptions((prev) => [
1184
- ...prev.map((view) => ({ ...view, isActive: false })),
1185
- newView,
1186
- ]);
1187
- setFilteredSavedViewsOptions((prev) => [
1188
- ...prev.map((view) => ({ ...view, isActive: false })),
1189
- newView,
1190
- ]);
1191
- props?.handleSaveAndApply?.(newView, selectedSavedView?.value);
1192
- };
1193
-
1194
- useEffect(() => {
1195
- if (!props?.isSavingViewLoading) {
1196
- setOpenSaveViewModal(false);
1197
- setSelectedSavedView(null);
1198
- setInputValue("");
1199
- setSelectedViewType(props?.saveViewCustomFilter?.selectedOption);
1200
- setIsDefaultView(false);
1201
- setOpenDeletePrompt(false);
1202
- setDeleteView(null);
1203
- setEditedView(null);
1204
- }
1205
- }, [props?.isSavingViewLoading]);
1206
-
1207
- const handleEditView = (view, e) => {
1208
- e.stopPropagation();
1209
- e.preventDefault();
1210
- setIsEditView(true);
1211
- setOpenSaveViewModal(true);
1212
- setInputValue(view.viewName);
1213
- setSelectedViewType(view.viewType);
1214
- setIsDefaultView(view.isDefaultView);
1215
- setEditedView(view);
1216
- };
1217
-
1218
- const handleCloseSaveViewModal = () => {
1219
- setOpenSaveViewModal(false);
1220
- setSelectedSavedView(null);
1221
- setInputValue("");
1222
- setSelectedViewType(props?.saveViewCustomFilter?.selectedOption);
1223
- setIsDefaultView(false);
1224
- setIsEditView(false);
1225
- };
1226
-
1227
- const handleSaveViewSearchChange = (e) => {
1228
- setSaveViewSearchText(e.target.value);
1229
- const filteredViews = savedViewsOptions.filter((view) =>
1230
- view.viewName.toLowerCase().includes(e.target.value.toLowerCase())
1231
- );
1232
- setFilteredSavedViewsOptions(filteredViews);
1233
- };
1234
-
1235
- const handleDeleteView = (view, e) => {
1236
- e.stopPropagation();
1237
- e.preventDefault();
1238
- setOpenDeletePrompt(true);
1239
- setDeleteView(view);
1240
- };
1241
-
1242
- useEffect(() => {
1243
- if (!props?.isDeleteViewLoading) {
1244
- setOpenDeletePrompt(false);
1245
- }
1246
- }, [props?.isDeleteViewLoading]);
1247
-
1248
- useEffect(() => {
1249
- if (selectedBadge === "All") {
1250
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1251
- } else {
1252
- setFilteredSavedViewsOptions(
1253
- savedViewsOptions.filter((view) => view.viewType === selectedBadge)
1254
- );
1255
- }
1256
- }, [selectedBadge, savedViewsOptions]);
1257
-
1258
- return (
1259
- <div className="table-setting-columns-settings">
1260
- {props?.isSaveViewEnabled && (
1261
- <div className="table-setting-save-view-container">
1262
- {savedViewsOptions.length === 0 ? (
1263
- <div className="save-view-icon-title">
1264
- <img src={saveViewIcon} alt="save-view-icon" />
1265
- <span className="save-view-title">No views saved yet</span>
1266
- </div>
1267
- ) : (
1268
- <div className="save-view-container-active-view">
1269
- <Badge
1270
- label={`${
1271
- savedViewsOptions.find((view) => view.isActive)?.viewName ||
1272
- "Not Applicable"
1273
- }`}
1274
- variant="stroke"
1275
- color="success"
1276
- />
1277
- <Button
1278
- icon={
1279
- openSaveViewMenu ? (
1280
- <KeyboardArrowUpIcon />
1281
- ) : (
1282
- <KeyboardArrowDownIcon />
1283
- )
1284
- }
1285
- variant="tertiary"
1286
- size="small"
1287
- onClick={() => {
1288
- setOpenSaveViewMenu(!openSaveViewMenu);
1289
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1290
- }}
1291
- />
1292
- </div>
1293
- )}
1294
- <Button
1295
- variant="tertiary"
1296
- size="small"
1297
- onClick={() => setOpenSaveViewModal(true)}
1298
- >
1299
- Save View
1300
- </Button>
1301
- </div>
1302
- )}
1303
- {openSaveViewMenu && (
1304
- <div className="save-view-menu">
1305
- <div className="save-view-menu-title">
1306
- <span>Saved views</span>
1307
- <div className="save-view-menu-default-view">
1308
- <img src={defaultViewActiveIcon} alt="default-view-icon" />
1309
- <span className="save-view-menu-default-view-text">Default</span>
1310
- </div>
1311
- </div>
1312
- <div className="save-view-menu-view-type">
1313
- <Badge
1314
- label={"All"}
1315
- variant="stroke"
1316
- color={selectedBadge === "All" ? "info" : "default"}
1317
- onClick={() => {
1318
- setSelectedBadge("All");
1319
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1320
- }}
1321
- size="small"
1322
- />
1323
- {props?.saveViewCustomFilter?.options?.map((option) => (
1324
- <Badge
1325
- label={option.label}
1326
- variant="stroke"
1327
- color={selectedBadge === option.value ? "info" : "default"}
1328
- onClick={() => {
1329
- setSelectedBadge(option.value);
1330
- setFilteredSavedViewsOptions(
1331
- savedViewsOptions.filter(
1332
- (view) => view.viewType === option.value
1333
- )
1334
- );
1335
- }}
1336
- size="small"
1337
- />
1338
- ))}
1339
- </div>
1340
- <div className="save-view-menu-search-container">
1341
- <Input
1342
- placeholder="Search here..."
1343
- leftIcon={<SearchIcon />}
1344
- value={saveViewSearchText}
1345
- onChange={handleSaveViewSearchChange}
1346
- />
1347
- </div>
1348
- <div className="save-view-menu-view-list-container">
1349
- {props?.customRenderSaveViewContent
1350
- ? props?.customRenderSaveViewContent
1351
- : filteredSavedViewsOptions.length > 0 &&
1352
- filteredSavedViewsOptions.map((view, idx) => (
1353
- <div
1354
- key={view.viewName + idx}
1355
- className={`save-view-menu-view-list-item ${
1356
- view.isActive ? "active" : ""
1357
- }`}
1358
- onClick={() => {
1359
- setFilteredSavedViewsOptions((prev) =>
1360
- prev.map((item) => {
1361
- if (item.viewName === view.viewName) {
1362
- return {
1363
- ...item,
1364
- isActive: true,
1365
- };
1366
- }
1367
- return {
1368
- ...item,
1369
- isActive: false,
1370
- };
1371
- })
1372
- );
1373
- setSelectedView(view);
1374
- }}
1375
- >
1376
- <span className="save-view-menu-view-list-item-name">
1377
- {view.viewName}
1378
- </span>
1379
- <div className="save-view-menu-view-list-item-actions">
1380
- {view?.isEditable && (
1381
- <img
1382
- src={saveViewEditIcon}
1383
- alt="save-view-edit-icon"
1384
- onClick={(e) => handleEditView(view, e)}
1385
- />
1386
- )}
1387
- {view?.isDeletable && (
1388
- <img
1389
- src={saveViewDeleteIcon}
1390
- alt="save-view-delete-icon"
1391
- onClick={(e) => handleDeleteView(view, e)}
1392
- />
1393
- )}
1394
- {!view?.notReqDefaultView &&
1395
- (view?.isDefaultView ? (
1396
- <img
1397
- src={defaultViewActiveIcon}
1398
- alt="default-view-icon"
1399
- onClick={(e) => {
1400
- e.stopPropagation();
1401
- e.preventDefault();
1402
- props?.handleSetDefaultView(view);
1403
- }}
1404
- className="default-view-active-icon"
1405
- />
1406
- ) : (
1407
- <img
1408
- src={defaultViewIcon}
1409
- alt="default-view-icon"
1410
- onClick={(e) => {
1411
- e.stopPropagation();
1412
- e.preventDefault();
1413
- props?.handleSetDefaultView(view);
1414
- }}
1415
- />
1416
- ))}
1417
- </div>
1418
- </div>
1419
- ))}
1420
- </div>
1421
- <hr className="save-view-menu-view-list-item-divider" />
1422
- <div className="save-view-menu-footer">
1423
- <Button
1424
- variant="tertiary"
1425
- size="medium"
1426
- onClick={() => {
1427
- setOpenSaveViewMenu(false);
1428
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1429
- }}
1430
- >
1431
- Cancel
1432
- </Button>
1433
- <Button
1434
- variant="primary"
1435
- size="medium"
1436
- onClick={() => {
1437
- props?.handleSavedViewClick?.(selectedView);
1438
- updateColumnState();
1439
- setOpenSaveViewMenu(false);
1440
- }}
1441
- disabled={props?.customRenderSaveViewContent}
1442
- >
1443
- Apply
1444
- </Button>
1445
- </div>
1446
- </div>
1447
- )}
1448
- <Modal
1449
- open={openSaveViewModal}
1450
- title={isEditView ? "Edit view" : "Save view"}
1451
- onClose={handleCloseSaveViewModal}
1452
- width={"422px"}
1453
- height={"542px"}
1454
- className="save-view-modal"
1455
- primaryButtonLabel={props?.isSavingViewLoading ? "Saving..." : "Save"}
1456
- secondaryButtonLabel={"Cancel"}
1457
- onPrimaryButtonClick={handleSaveAndApply}
1458
- onSecondaryButtonClick={handleCloseSaveViewModal}
1459
- primaryButtonProps={{
1460
- disabled:
1461
- ((inputValue === "" ||
1462
- savedViewsOptions.length >= props?.maxSavedViews) &&
1463
- selectedSavedView === null) ||
1464
- !isViewNameUnique(
1465
- inputValue,
1466
- selectedViewType,
1467
- isDefaultView,
1468
- savedViewsOptions
1469
- ) ||
1470
- props?.isSavingViewLoading,
1471
- loading: props?.isSavingViewLoading,
1472
- iconPlacement: "right",
1473
- }}
1474
- >
1475
- <div className="save-view-modal-children">
1476
- <div className="save-view-modal-children-header">
1477
- <span className="save-view-modal-children-header-text">{`${
1478
- props?.maxSavedViews - savedViewsOptions.length
1479
- }/${props?.maxSavedViews} views remaining`}</span>
1480
- </div>
1481
- <div className="save-view-modal-children-body">
1482
- <div className="save-view-modal-children-body-input">
1483
- <Input
1484
- placeholder="Enter here"
1485
- label={"New view name"}
1486
- value={inputValue}
1487
- onChange={(e) => {
1488
- setInputValue(e.target.value);
1489
- setSelectedSavedView(null);
1490
- }}
1491
- />
1492
- </div>
1493
- <div className="save-view-modal-children-body-radio-group">
1494
- <span className="save-view-modal-children-body-radio-group-text">
1495
- View type
1496
- </span>
1497
- <RadioButtonGroup
1498
- options={props?.saveViewCustomFilter?.options?.filter(
1499
- (option) => !option?.notReqInSaveView
1500
- )}
1501
- onChange={(event) => setSelectedViewType(event?.target?.value)}
1502
- orientation={"row"}
1503
- selectedOption={selectedViewType}
1504
- />
1505
- </div>
1506
- <div className="save-view-modal-children-body-checkbox">
1507
- <Checkbox
1508
- checked={isDefaultView}
1509
- onChange={() => setIsDefaultView(!isDefaultView)}
1510
- label={"Make it default view"}
1511
- />
1512
- </div>
1513
- <div className="save-view-modal-children-body-replace-view">
1514
- <span>Or replace with saved view</span>
1515
- </div>
1516
- <div className="save-view-modal-children-body-replace-view-select">
1517
- <Select
1518
- label={"Replace with"}
1519
- minWidth={"100%"}
1520
- currentOptions={currentSaveViewOptions}
1521
- setCurrentOptions={setCurrentSaveViewOptions}
1522
- selectedOptions={selectedSavedView}
1523
- setSelectedOptions={setSelectedSavedView}
1524
- withPortal
1525
- isDisabled={
1526
- savedViewsOptions.length === 0 ||
1527
- inputValue !== "" ||
1528
- isEditView
1529
- }
1530
- isOpen={isOpen}
1531
- setIsOpen={setIsOpen}
1532
- initialOptions={currentSaveViewOptions}
1533
- />
1534
- </div>
1535
- </div>
1536
- </div>
1537
- </Modal>
1538
- <Prompt
1539
- handleClose={(e) => {
1540
- e.stopPropagation();
1541
- setOpenDeletePrompt(false);
1542
- }}
1543
- onPrimaryButtonClick={(e) => {
1544
- e.stopPropagation();
1545
- props?.handleDeleteViewClick?.(deleteView);
1546
- }}
1547
- onSecondaryButtonClick={(e) => {
1548
- e.stopPropagation();
1549
- setOpenDeletePrompt(false);
1550
- }}
1551
- primaryButtonLabel="Yes,Delete"
1552
- secondaryButtonLabel="Cancel"
1553
- title="Delete, Are you sure?"
1554
- variant="error"
1555
- primaryButtonProps={{
1556
- loading: props?.isDeleteViewLoading,
1557
- iconPlacement: "right",
1558
- }}
1559
- isOpen={openDeletePrompt}
1560
- >
1561
- {props?.deleteViewPromptText}
1562
- </Prompt>
1563
- <div className="table-setting-column-search-container">
1564
- <IconButton onClick={toggleColumnCollapse} style={{ padding: "5px" }}>
1565
- {collapsedColumn ? (
1566
- <KeyboardArrowRightIcon />
1567
- ) : (
1568
- <KeyboardArrowUpIcon />
1569
- )}
1570
- </IconButton>
1571
- <Checkbox
1572
- checked={allColumnVisibility}
1573
- onChange={onAllColumnCheckBoxChange}
1574
- />
1575
- <Input
1576
- rightIcon={<SearchIcon />}
1577
- placeholder="Search"
1578
- value={searchText}
1579
- onChange={handleSearchChange}
1580
- />
1581
- </div>
1582
- {!collapsedColumn && (
1583
- <div
1584
- className={`table-setting-column-collapse-container ${
1585
- props?.isSaveViewEnabled ? "save-view-enabled" : ""
1586
- }`}
1587
- >
1588
- {/* Frozen Columns */}
1589
- <DndContext
1590
- sensors={sensors}
1591
- collisionDetection={closestCenter}
1592
- onDragEnd={handleDragEnd}
1593
- >
1594
- <SortableContext
1595
- items={[...scrollableColumnOrder, ...frozenColumnOrder]}
1596
- >
1597
- {frozenColumn.length > 0 &&
1598
- !(
1599
- frozenColumn.length === 1 &&
1600
- frozenColumn[0].headerName === "N/A"
1601
- ) && (
1602
- <div className="table-setting-collapse-columns-container">
1603
- <h3>Frozen columns</h3>
1604
- {/* {/* <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleFrozenDragEnd}> */}
1605
- {/* <SortableContext items={frozenColumnOrder}> */}
1606
- <div className="table-setting-frozen-columns-list">
1607
- {filteredFrozenColumns?.map(
1608
- (column) =>
1609
- column.headerName !== "N/A" &&
1610
- renderFrozencolumn(column)
1611
- )}
1612
- </div>
1613
- {/* </SortableContext> */}
1614
- {/* </DndContext> */}
1615
- </div>
1616
- )}
1617
- {/* Scrollable Columns */}
1618
- <div className="table-setting-scroll-columns-container">
1619
- <h3>Scrollable Columns</h3>
1620
- {/* {/* <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleScrollableDragEnd}> */}
1621
- {/* <SortableContext items={scrollableColumnOrder}> */}
1622
- <div className="table-setting-scroll-main-column-list">
1623
- <div className="table-setting-scroll-main-column">
1624
- <IconButton
1625
- onClick={toggleScrollableCollapse}
1626
- style={{ padding: "0px" }}
1627
- >
1628
- {collapsedScrollable ? (
1629
- <KeyboardArrowRightIcon />
1630
- ) : (
1631
- <KeyboardArrowUpIcon />
1632
- )}
1633
- </IconButton>
1634
- <Checkbox
1635
- checked={mainChecked}
1636
- onChange={onMainCheckboxChange}
1637
- />
1638
- Main Column
1639
- </div>
1640
- <div className="table-setting-scroll-inner-column-list">
1641
- {!collapsedScrollable &&
1642
- filteredScrollableColumns?.map(
1643
- (column) =>
1644
- column.headerName !== "N/A" &&
1645
- renderScrollColumn(column)
1646
- )}
1647
- </div>
1648
- </div>
1649
- {/* </SortableContext> */}
1650
- {/* </DndContext> */}
1651
- </div>
1652
- </SortableContext>
1653
- </DndContext>
1654
- </div>
1655
- )}
1656
- </div>
1657
- );
1658
- });
1659
-
1660
- export const updateFontSizeOnToolPanel = (fontSizeType) => {
1661
- let fontSize;
1662
- switch (fontSizeType) {
1663
- case "small":
1664
- fontSize = "12px";
1665
- break;
1666
- case "medium":
1667
- fontSize = "14px";
1668
- break;
1669
- case "large":
1670
- fontSize = "16px";
1671
- break;
1672
- default:
1673
- fontSize = "14px";
1674
- }
1675
- return fontSize;
1676
- };